@@ -209,7 +209,7 @@ rawFieldListItem minIndent = try $ do
209209fieldListItem :: Int -> RSTParser (Inlines, [Blocks])
210210fieldListItem minIndent = try $ do
211211 (name, raw) <- rawFieldListItem minIndent
212− let term = B.str name
212+ term <- parseInlineFromString name
213213 contents <- parseFromString parseBlocks raw
214214 optional blanklines
215215 return (term, [contents])
@@ -229,8 +229,7 @@ fieldList = try $ do
229229lineBlock :: RSTParser Blocks
230230lineBlock = try $ do
231231 lines' <- lineBlockLines
232− lines'' <- mapM (parseFromString
233− (trimInlines . mconcat <$> many inline)) lines'
232+ lines'' <- mapM parseInlineFromString lines'
234233 return $ B.para (mconcat $ intersperse B.linebreak lines'')
235234
236235--
@@ -549,39 +548,33 @@ directive' = do
549548 "role" -> addNewRole top $ map (\(k,v) -> (k, trim v)) fields
550549 "container" -> parseFromString parseBlocks body'
551550 "replace" -> B.para <$> -- consumed by substKey
552− parseFromString (trimInlines . mconcat <$> many inline)
553− (trim top)
551+ parseInlineFromString (trim top)
554552 "unicode" -> B.para <$> -- consumed by substKey
555− parseFromString (trimInlines . mconcat <$> many inline)
556− (trim $ unicodeTransform top)
553+ parseInlineFromString (trim $ unicodeTransform top)
557554 "compound" -> parseFromString parseBlocks body'
558555 "pull-quote" -> B.blockQuote <$> parseFromString parseBlocks body'
559556 "epigraph" -> B.blockQuote <$> parseFromString parseBlocks body'
560557 "highlights" -> B.blockQuote <$> parseFromString parseBlocks body'
561− "rubric" -> B.para . B.strong <$> parseFromString
562− (trimInlines . mconcat <$> many inline) top
558+ "rubric" -> B.para . B.strong <$> parseInlineFromString top
563559 _ | label `elem` ["attention","caution","danger","error","hint",
564560 "important","note","tip","warning"] ->
565561 do let tit = B.para $ B.strong $ B.str label
566562 bod <- parseFromString parseBlocks $ top ++ "\n\n" ++ body'
567563 return $ B.blockQuote $ tit <> bod
568564 "admonition" ->
569− do tit <- B.para . B.strong <$> parseFromString
570− (trimInlines . mconcat <$> many inline) top
565+ do tit <- B.para . B.strong <$> parseInlineFromString top
571566 bod <- parseFromString parseBlocks body'
572567 return $ B.blockQuote $ tit <> bod
573568 "sidebar" ->
574569 do let subtit = maybe "" trim $ lookup "subtitle" fields
575− tit <- B.para . B.strong <$> parseFromString
576− (trimInlines . mconcat <$> many inline)
570+ tit <- B.para . B.strong <$> parseInlineFromString
577571 (trim top ++ if null subtit
578572 then ""
579573 else (": " ++ subtit))
580574 bod <- parseFromString parseBlocks body'
581575 return $ B.blockQuote $ tit <> bod
582576 "topic" ->
583− do tit <- B.para . B.strong <$> parseFromString
584− (trimInlines . mconcat <$> many inline) top
577+ do tit <- B.para . B.strong <$> parseInlineFromString top
585578 bod <- parseFromString parseBlocks body'
586579 return $ tit <> bod
587580 "default-role" -> mempty <$ updateState (\s ->
@@ -962,6 +955,9 @@ inline = choice [ whitespace
962955 , escapedChar
963956 , symbol ] <?> "inline"
964957
958+parseInlineFromString :: String -> RSTParser Inlines
959+parseInlineFromString = parseFromString (trimInlines . mconcat <$> many inline)
960+
965961hyphens :: RSTParser Inlines
966962hyphens = do
967963 result <- many1 (char '-')