@@ -516,12 +516,6 @@ isListBlock (OrderedList _ _) = True
516isListBlock (DefinitionList _) = True
516isListBlock (DefinitionList _) = True
517isListBlock _ = False
517isListBlock _ = False
519−isLineBreakOrSpace :: Inline -> Bool
520−isLineBreakOrSpace LineBreak = True
521−isLineBreakOrSpace SoftBreak = True
522−isLineBreakOrSpace Space = True
523−isLineBreakOrSpace _ = False
525-- | Convert Pandoc block element to LaTeX.
519-- | Convert Pandoc block element to LaTeX.
526blockToLaTeX :: PandocMonad m
520blockToLaTeX :: PandocMonad m
527 => Block -- ^ Block to convert
521 => Block -- ^ Block to convert
@@ -599,7 +593,7 @@ blockToLaTeX (Div (identifier,classes,kvs) bs)
599 (wrapColumns . wrapColumn . wrapDir . wrapLang . wrapNotes)
593 (wrapColumns . wrapColumn . wrapDir . wrapLang . wrapNotes)
600 <$> blockListToLaTeX bs
594 <$> blockListToLaTeX bs
601blockToLaTeX (Plain lst) =
595blockToLaTeX (Plain lst) =
602− inlineListToLaTeX $ dropWhile isLineBreakOrSpace lst
596+ inlineListToLaTeX lst
603-- title beginning with fig: indicates that the image is a figure
597-- title beginning with fig: indicates that the image is a figure
604blockToLaTeX (Para [Image attr@(ident, _, _) txt (src,'f':'i':'g':':':tit)]) = do
598blockToLaTeX (Para [Image attr@(ident, _, _) txt (src,'f':'i':'g':':':tit)]) = do
605 (capt, captForLof, footnotes) <- getCaption True txt
599 (capt, captForLof, footnotes) <- getCaption True txt
@@ -623,7 +617,7 @@ blockToLaTeX (Para [Str ".",Space,Str ".",Space,Str "."]) = do
623 then blockToLaTeX (RawBlock "latex" "\\pause")
617 then blockToLaTeX (RawBlock "latex" "\\pause")
624 else inlineListToLaTeX [Str ".",Space,Str ".",Space,Str "."]
618 else inlineListToLaTeX [Str ".",Space,Str ".",Space,Str "."]
625blockToLaTeX (Para lst) =
619blockToLaTeX (Para lst) =
626− inlineListToLaTeX $ dropWhile isLineBreakOrSpace lst
620+ inlineListToLaTeX lst
627blockToLaTeX (LineBlock lns) =
621blockToLaTeX (LineBlock lns) =
628 blockToLaTeX $ linesToPara lns
622 blockToLaTeX $ linesToPara lns
629blockToLaTeX (BlockQuote lst) = do
623blockToLaTeX (BlockQuote lst) = do
@@ -1083,7 +1077,7 @@ inlineListToLaTeX :: PandocMonad m
1083 => [Inline] -- ^ Inlines to convert
1077 => [Inline] -- ^ Inlines to convert
1084 -> LW m Doc
1078 -> LW m Doc
1085inlineListToLaTeX lst =
1079inlineListToLaTeX lst =
1086− mapM inlineToLaTeX (fixLineInitialSpaces lst)
1080+ mapM inlineToLaTeX (fixLineInitialSpaces . fixInitialLineBreaks $ lst)
1087 >>= return . hcat
1081 >>= return . hcat
1088 -- nonbreaking spaces (~) in LaTeX don't work after line breaks,
1082 -- nonbreaking spaces (~) in LaTeX don't work after line breaks,
1089 -- so we turn nbsps after hard breaks to \hspace commands.
1083 -- so we turn nbsps after hard breaks to \hspace commands.
@@ -1095,6 +1089,12 @@ inlineListToLaTeX lst =
1095 fixNbsps s = let (ys,zs) = span (=='\160') s
1089 fixNbsps s = let (ys,zs) = span (=='\160') s
1096 in replicate (length ys) hspace ++ [Str zs]
1090 in replicate (length ys) hspace ++ [Str zs]
1097 hspace = RawInline "latex" "\\hspace*{0.333em}"
1091 hspace = RawInline "latex" "\\hspace*{0.333em}"
1092+ -- We need \hfill\break for a line break at the start
1093+ -- of a paragraph. See #5591.
1094+ fixInitialLineBreaks (LineBreak:xs) =
1095+ RawInline (Format "latex") "\\hfill\\break\n" :
1096+ fixInitialLineBreaks xs
1097+ fixInitialLineBreaks xs = xs
1099isQuoted :: Inline -> Bool
1099isQuoted :: Inline -> Bool
1100isQuoted (Quoted _ _) = True
1100isQuoted (Quoted _ _) = True