diff options
author | John MacFarlane <jgm@berkeley.edu> | 2018-10-29 22:20:14 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2018-10-29 22:20:14 -0700 |
commit | c51be5dfc85024e68a4bd62c9ced748b27f968c0 (patch) | |
tree | dbd4672da32fd268f7359f5c9284a5178e1e7ca3 | |
parent | 9e3a2b61ec46bc8a49eb7064a824a1f07d55144e (diff) | |
download | pandoc-c51be5dfc85024e68a4bd62c9ced748b27f968c0.tar.gz |
LaTeX reader: allow space at end of math after `\`.
Closes #5010.
Expose trimMath from T.P.Shared.
-rw-r--r-- | src/Text/Pandoc/Parsing.hs | 2 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/LaTeX.hs | 4 | ||||
-rw-r--r-- | src/Text/Pandoc/Shared.hs | 10 | ||||
-rw-r--r-- | test/command/5010.md | 21 |
4 files changed, 34 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Parsing.hs b/src/Text/Pandoc/Parsing.hs index da8cc6433..f6a9f530f 100644 --- a/src/Text/Pandoc/Parsing.hs +++ b/src/Text/Pandoc/Parsing.hs @@ -627,7 +627,7 @@ mathInlineWith op cl = try $ do return " " ) (try $ string cl) notFollowedBy digit -- to prevent capture of $5 - return $ trim $ concat words' + return $ trimMath $ concat words' where inBalancedBraces :: Stream s m Char => Int -> String -> ParserT s st m String inBalancedBraces 0 "" = do diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index 010cb3add..1d35cd662 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -605,10 +605,10 @@ accent combiningAccent fallBack = try $ do [] -> return $ str [fromMaybe combiningAccent fallBack] _ -> return ils mathDisplay :: String -> Inlines -mathDisplay = displayMath . trim +mathDisplay = displayMath . trimMath mathInline :: String -> Inlines -mathInline = math . trim +mathInline = math . trimMath dollarsMath :: PandocMonad m => LP m Inlines dollarsMath = do diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs index 78a5a6a54..5b88a7948 100644 --- a/src/Text/Pandoc/Shared.hs +++ b/src/Text/Pandoc/Shared.hs @@ -49,6 +49,7 @@ module Text.Pandoc.Shared ( trim, triml, trimr, + trimMath, stripFirstAndLast, camelCaseToHyphenated, toRomanNumeral, @@ -224,6 +225,15 @@ triml = dropWhile (`elem` " \r\n\t") trimr :: String -> String trimr = reverse . triml . reverse +-- | Trim leading space and trailing space unless after \. +trimMath :: String -> String +trimMath = triml . reverse . stripspace . reverse + where + stripspace (c1:c2:cs) + | c1 `elem` [' ','\t','\n','\r'] + , c2 /= '\\' = stripspace (c2:cs) + stripspace cs = cs + -- | Strip leading and trailing characters from string stripFirstAndLast :: String -> String stripFirstAndLast str = diff --git a/test/command/5010.md b/test/command/5010.md new file mode 100644 index 000000000..b95d548b3 --- /dev/null +++ b/test/command/5010.md @@ -0,0 +1,21 @@ +``` +% pandoc -f latex -t latex +\(\left\{ \begin{matrix} +y\,\,\,\, \geqq \,\,\, f\,(\, x\,)\,\, \\ +y\,\,\, \leqq \,\,\, g\,(\, x\,)\, \\ +\end{matrix} \right.\ \) +^D +\(\left\{ \begin{matrix} +y\,\,\,\, \geqq \,\,\, f\,(\, x\,)\,\, \\ +y\,\,\, \leqq \,\,\, g\,(\, x\,)\, \\ +\end{matrix} \right.\ \) +``` + +``` +% pandoc -f markdown -t latex +$x\ $ +^D +\(x\ \) +``` + + |