@@ -56,6 +56,7 @@ module Text.Pandoc.Shared (
5656 stringify,
5757 compactify,
5858 compactify',
59+ compactify'DL,
5960 Element (..),
6061 hierarchicalize,
6162 uniqueIdent,
@@ -82,7 +83,7 @@ module Text.Pandoc.Shared (
8283import Text.Pandoc.Definition
8384import Text.Pandoc.Walk
8485import Text.Pandoc.Generic
85−import Text.Pandoc.Builder (Blocks, ToMetaValue(..))
86+import Text.Pandoc.Builder (Inlines, Blocks, ToMetaValue(..))
8687import qualified Text.Pandoc.Builder as B
8788import qualified Text.Pandoc.UTF8 as UTF8
8889import System.Environment (getProgName)
@@ -435,6 +436,21 @@ compactify' items =
435436 _ -> items
436437 _ -> items
437438
439+-- | Like @compactify'@, but akts on items of definition lists.
440+compactify'DL :: [(Inlines, [Blocks])] -> [(Inlines, [Blocks])]
441+compactify'DL items =
442+ let defs = concatMap snd items
443+ defBlocks = reverse $ concatMap B.toList defs
444+ in case defBlocks of
445+ (Para x:_) -> if not $ any isPara (drop 1 defBlocks)
446+ then let (t,ds) = last items
447+ lastDef = B.toList $ last ds
448+ ds' = init ds ++
449+ [B.fromList $ init lastDef ++ [Plain x]]
450+ in init items ++ [(t, ds')]
451+ else items
452+ _ -> items
453+
438454isPara :: Block -> Bool
439455isPara (Para _) = True
440456isPara _ = False
@@ -698,5 +714,3 @@ safeRead s = case reads s of
698714 (d,x):_
699715 | all isSpace x -> return d
700716 _ -> fail $ "Could not read `" ++ s ++ "'"
701−
702−