summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-12-22 17:59:47 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2017-12-22 18:03:51 -0800
commit28b736bf957da0df79ffb211fc5e7ec4ff713c4b (patch)
tree5c8d905498626c2f32c49cacde3af7096485c21c /src
parent4a07977715021da241b1bf5ab3e1ee62fef89fa1 (diff)
`latex_macros` extension changes.
Don't pass through macro definitions themselves when `latex_macros` is set. The macros have already been applied. If `latex_macros` is enabled, then `rawLaTeXBlock` in Text.Pandoc.Readers.LaTeX will succeed in parsing a macro definition, and will update pandoc's internal macro map accordingly, but the empty string will be returned. Together with earlier changes, this closes #4179.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs6
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs10
2 files changed, 11 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
index 5299b964f..f7e45e01a 100644
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -272,8 +272,10 @@ rawLaTeXBlock = do
lookAhead (try (char '\\' >> letter))
-- we don't want to apply newly defined latex macros to their own
-- definitions:
- (snd <$> rawLaTeXParser macroDef) <|>
- ((snd <$> rawLaTeXParser (environment <|> blockCommand)) >>= applyMacros)
+ (do (_, raw) <- rawLaTeXParser macroDef
+ (guardDisabled Ext_latex_macros >> return raw) <|> return "")
+ <|> (do (_, raw) <- rawLaTeXParser (environment <|> blockCommand)
+ applyMacros raw)
rawLaTeXInline :: (PandocMonad m, HasMacros s, HasReaderOptions s)
=> ParserT String s m String
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index af020261b..e7ad9d8ba 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -1120,13 +1120,17 @@ rawVerbatimBlock = htmlInBalanced isVerbTag
rawTeXBlock :: PandocMonad m => MarkdownParser m (F Blocks)
rawTeXBlock = do
guardEnabled Ext_raw_tex
- result <- (B.rawBlock "context" . trimr . concat <$>
+ result <- (B.rawBlock "context" . trim . concat <$>
many1 ((++) <$> (rawConTeXtEnvironment <|> conTeXtCommand)
<*> (blanklines <|> many spaceChar)))
- <|> (B.rawBlock "latex" . trimr . concat <$>
+ <|> (B.rawBlock "latex" . trim . concat <$>
many1 ((++) <$> rawLaTeXBlock
<*> (blanklines <|> many spaceChar)))
- return $ return result
+ return $ case B.toList result of
+ [RawBlock _ cs]
+ | all (`elem` [' ','\t','\n']) cs -> return mempty
+ -- don't create a raw block for suppressed macro defs
+ _ -> return result
conTeXtCommand :: PandocMonad m => MarkdownParser m String
conTeXtCommand = oneOfStrings ["\\placeformula"]