LaTeX reader: Fixed dollar-math parsing...

...to ensure that space is left between a control seq and
a following word that would otherwise change its meaning.

Closes #5836.
This commit is contained in:
John MacFarlane 2019-11-02 12:44:48 -07:00
parent f39c44f0ba
commit 65593043c3
2 changed files with 17 additions and 9 deletions

View file

@ -629,28 +629,28 @@ dollarsMath :: PandocMonad m => LP m Inlines
dollarsMath = do
symbol '$'
display <- option False (True <$ symbol '$')
(do contents <- try $ T.unpack <$> pDollarsMath 0
(do contents <- try $ T.unpack . untokenize <$> pDollarsMath 0
if display
then (mathDisplay contents <$ symbol '$')
else return $ mathInline contents)
<|> (guard display >> return (mathInline ""))
-- Int is number of embedded groupings
pDollarsMath :: PandocMonad m => Int -> LP m Text
pDollarsMath :: PandocMonad m => Int -> LP m [Tok]
pDollarsMath n = do
Tok _ toktype t <- anyTok
tk@(Tok _ toktype t) <- anyTok
case toktype of
Symbol | t == "$"
, n == 0 -> return mempty
, n == 0 -> return []
| t == "\\" -> do
Tok _ _ t' <- anyTok
return (t <> t')
| t == "{" -> (t <>) <$> pDollarsMath (n+1)
tk' <- anyTok
((tk :) . (tk' :)) <$> pDollarsMath n
| t == "{" -> (tk :) <$> pDollarsMath (n+1)
| t == "}" ->
if n > 0
then (t <>) <$> pDollarsMath (n-1)
then (tk :) <$> pDollarsMath (n-1)
else mzero
_ -> (t <>) <$> pDollarsMath n
_ -> (tk :) <$> pDollarsMath n
-- citations

View file

@ -17,3 +17,11 @@ $\vara \varb$
^D
\(\alpha b\)
```
```
% pandoc -f latex -t latex
\newcommand{\vara}{\alpha}
\newcommand{\varb}{b}
\[\vara \varb\]
^D
\[\alpha b\]
```