From 0ef5484c8716141e683990ed5c8b57d76e423620 Mon Sep 17 00:00:00 2001 From: David Fox Date: Mon, 24 Oct 2016 09:54:56 -0700 Subject: [PATCH] Fix linebreak (\\) command formatting. The syntax, according to http://ftp.math.purdue.edu/mirrors/ctan.org/info/latex2e-help-texinfo/latex2e.html#g_t_005c_005c is either \\[measure] or \\*[measure]. --- Text/LaTeX/Base/Render.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Text/LaTeX/Base/Render.hs b/Text/LaTeX/Base/Render.hs index e3fae51..edd4a51 100644 --- a/Text/LaTeX/Base/Render.hs +++ b/Text/LaTeX/Base/Render.hs @@ -22,6 +22,7 @@ module Text.LaTeX.Base.Render , showFloat ) where +import Data.Maybe (fromMaybe) import Data.Text (Text,lines,unlines) import Text.LaTeX.Base.Syntax import Text.LaTeX.Base.Class @@ -127,7 +128,11 @@ instance Render LaTeX where render (TeXMath Square l) = "\\[" <> render l <> "\\]" render (TeXMath Parentheses l) = "\\(" <> render l <> "\\)" - render (TeXLineBreak m b) = "\\\\" <> maybe mempty (\x -> "[" <> render x <> "]") m <> ( if b then "*" else mempty ) + -- It is not safe to simply say \\, if the text following it starts + -- with a left square bracket or a star you will get an error or + -- something unexpected. I think this is why you see "\\%\n" so + -- often. Here I supply a zero "extra vertical space" argument. + render (TeXLineBreak m b) = "\\\\" <> (if b then "*" else mempty) <> "[" <> render (fromMaybe (Em 0.0) m) <> "]" render (TeXBraces l) = "{" <> render l <> "}"