aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Writers/LaTeX.hs14
-rw-r--r--test/command/4880.md7
2 files changed, 19 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
index 11d58b90a..a2c7ac34f 100644
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -1168,10 +1168,10 @@ inlineToLaTeX (Str str) = do
liftM text $ stringToLaTeX TextString str
inlineToLaTeX (Math InlineMath str) = do
setEmptyLine False
- return $ "\\(" <> text str <> "\\)"
+ return $ "\\(" <> text (handleMathComment str) <> "\\)"
inlineToLaTeX (Math DisplayMath str) = do
setEmptyLine False
- return $ "\\[" <> text str <> "\\]"
+ return $ "\\[" <> text (handleMathComment str) <> "\\]"
inlineToLaTeX il@(RawInline f str)
| f == Format "latex" || f == Format "tex"
= do
@@ -1272,6 +1272,16 @@ inlineToLaTeX (Note contents) = do
-- note: a \n before } needed when note ends with a Verbatim environment
else "\\footnote" <> beamerMark <> braces noteContents
+-- A comment at the end of math needs to be followed by a newline,
+-- or the closing delimiter gets swallowed.
+handleMathComment :: String -> String
+handleMathComment s =
+ let (xs, ys) = break (\c -> c == '\n' || c == '%') $ reverse s
+ in case ys of
+ '%':'\\':_ -> s
+ '%':_ -> s ++ "\n"
+ _ -> s
+
protectCode :: [Inline] -> [Inline]
protectCode [] = []
protectCode (x@(Code ("",[],[]) _) : xs) = x : protectCode xs
diff --git a/test/command/4880.md b/test/command/4880.md
new file mode 100644
index 000000000..638e3edee
--- /dev/null
+++ b/test/command/4880.md
@@ -0,0 +1,7 @@
+```
+% pandoc -t latex
+$x=y%comment$
+^D
+\(x=y%comment
+\)
+```