@@ -62,7 +62,7 @@ import Text.Pandoc.Shared (trim)
6262import Text.Pandoc.Readers.LaTeX ( rawLaTeXInline, rawLaTeXBlock )
6363import Text.HTML.TagSoup (parseTags, innerText, fromAttrib, Tag(..))
6464import Text.HTML.TagSoup.Match
65−import Data.List ( intercalate, transpose )
65+import Data.List ( intercalate, transpose, intersperse )
6666import Data.Char ( digitToInt, isUpper )
6767import Control.Monad ( guard, liftM, when )
6868import Text.Pandoc.Compat.Monoid ((<>))
@@ -273,13 +273,20 @@ listStart = genericListStart '*'
273273genericListStart :: Char -> Parser [Char] st ()
274274genericListStart c = () <$ try (many1 (char c) >> whitespace)
275275
276−definitionListStart :: Parser [Char] ParserState Inlines
277−definitionListStart = try $ do
276+basicDLStart :: Parser [Char] ParserState ()
277+basicDLStart = do
278278 char '-'
279279 whitespace
280280 notFollowedBy newline
281+
282+definitionListStart :: Parser [Char] ParserState Inlines
283+definitionListStart = try $ do
284+ basicDLStart
281285 trimInlines . mconcat <$>
282− many1Till inline (try (string ":=")) <* optional whitespace
286+ many1Till inline
287+ ( try (newline *> lookAhead basicDLStart)
288+ <|> try (lookAhead (() <$ string ":="))
289+ )
283290
284291listInline :: Parser [Char] ParserState Inlines
285292listInline = try (notFollowedBy newline >> inline)
@@ -291,8 +298,8 @@ listInline = try (notFollowedBy newline >> inline)
291298-- break.
292299definitionListItem :: Parser [Char] ParserState (Inlines, [Blocks])
293300definitionListItem = try $ do
294− term <- definitionListStart
295− def' <- multilineDef <|> inlineDef
301+ term <- (mconcat . intersperse B.linebreak) <$> many1 definitionListStart
302+ def' <- string ":=" *> optional whitespace *> (multilineDef <|> inlineDef)
296303 return (term, def')
297304 where inlineDef :: Parser [Char] ParserState [Blocks]
298305 inlineDef = liftM (\d -> [B.plain d])