aboutsummaryrefslogtreecommitdiff
path: root/src/Text
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2018-10-29 22:20:14 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2018-10-29 22:20:14 -0700
commitc51be5dfc85024e68a4bd62c9ced748b27f968c0 (patch)
treedbd4672da32fd268f7359f5c9284a5178e1e7ca3 /src/Text
parent9e3a2b61ec46bc8a49eb7064a824a1f07d55144e (diff)
downloadpandoc-c51be5dfc85024e68a4bd62c9ced748b27f968c0.tar.gz
LaTeX reader: allow space at end of math after `\`.
Closes #5010. Expose trimMath from T.P.Shared.
Diffstat (limited to 'src/Text')
-rw-r--r--src/Text/Pandoc/Parsing.hs2
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs4
-rw-r--r--src/Text/Pandoc/Shared.hs10
3 files changed, 13 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 =