@@ -72,6 +72,7 @@ data WriterState =
7272 , stEmptyLine :: Bool -- true if no content on line
7373 , stHasCslRefs :: Bool -- has a Div with class refs
7474 , stCslHangingIndent :: Bool -- use hanging indent for bib
75+ , stIsFirstInDefinition :: Bool -- first block in a defn list
7576 }
7677
7778startingState :: WriterOptions -> WriterState
@@ -102,7 +103,8 @@ startingState options = WriterState {
102103 , stBeamer = False
103104 , stEmptyLine = True
104105 , stHasCslRefs = False
105− , stCslHangingIndent = False }
106+ , stCslHangingIndent = False
107+ , stIsFirstInDefinition = False }
106108
107109-- | Convert Pandoc to LaTeX.
108110writeLaTeX :: PandocMonad m => WriterOptions -> Pandoc -> m Text
@@ -682,19 +684,25 @@ blockToLaTeX b@(RawBlock f x) = do
682684blockToLaTeX (BulletList []) = return empty -- otherwise latex error
683685blockToLaTeX (BulletList lst) = do
684686 incremental <- gets stIncremental
687+ isFirstInDefinition <- gets stIsFirstInDefinition
685688 beamer <- gets stBeamer
686689 let inc = if beamer && incremental then "[<+->]" else ""
687690 items <- mapM listItemToLaTeX lst
688691 let spacing = if isTightList lst
689692 then text "\\tightlist"
690693 else empty
691− return $ text ("\\begin{itemize}" <> inc) $$ spacing $$ vcat items $$
694+ return $ text ("\\begin{itemize}" <> inc) $$
695+ spacing $$
696+ -- force list at beginning of definition to start on new line
697+ (if isFirstInDefinition then "\\item[]" else mempty) $$
698+ vcat items $$
692699 "\\end{itemize}"
693700blockToLaTeX (OrderedList _ []) = return empty -- otherwise latex error
694701blockToLaTeX (OrderedList (start, numstyle, numdelim) lst) = do
695702 st <- get
696703 let inc = if stBeamer st && stIncremental st then "[<+->]" else ""
697704 let oldlevel = stOLLevel st
705+ isFirstInDefinition <- gets stIsFirstInDefinition
698706 put $ st {stOLLevel = oldlevel + 1}
699707 items <- mapM listItemToLaTeX lst
700708 modify (\s -> s {stOLLevel = oldlevel})
@@ -738,6 +746,8 @@ blockToLaTeX (OrderedList (start, numstyle, numdelim) lst) = do
738746 $$ stylecommand
739747 $$ resetcounter
740748 $$ spacing
749+ -- force list at beginning of definition to start on new line
750+ $$ (if isFirstInDefinition then "\\item[]" else mempty)
741751 $$ vcat items
742752 $$ "\\end{enumerate}"
743753blockToLaTeX (DefinitionList []) = return empty
@@ -948,7 +958,14 @@ defListItemToLaTeX (term, defs) = do
948958 let term'' = if any isInternalLink term
949959 then braces term'
950960 else term'
951− def' <- liftM vsep $ mapM blockListToLaTeX defs
961+ def' <- case concat defs of
962+ [] -> return mempty
963+ (x:xs) -> do
964+ modify $ \s -> s{stIsFirstInDefinition = True }
965+ firstitem <- blockToLaTeX x
966+ modify $ \s -> s{stIsFirstInDefinition = False }
967+ rest <- blockListToLaTeX xs
968+ return $ firstitem $+$ rest
952969 return $ case defs of
953970 ((Header{} : _) : _) ->
954971 "\\item" <> brackets term'' <> " ~ " $$ def'