aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs14
-rw-r--r--test/command/11270.md25
2 files changed, 38 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
index 11419b15f..f12c73d7b 100644
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -144,7 +144,8 @@ rawLaTeXBlock = do
toks <- getInputTokens
snd <$> (
rawLaTeXParser toks
- (macroDef (const mempty) <|>
+ (makeAtLetterSection <|>
+ macroDef (const mempty) <|>
do choice (map controlSeq
["include", "input", "subfile", "usepackage"])
skipMany opt
@@ -154,6 +155,17 @@ rawLaTeXBlock = do
(void (environment <|> blockCommand))
(mconcat <$> many (block <|> beginOrEndCommand)))
+makeAtLetterSection :: PandocMonad m => LP m ()
+makeAtLetterSection = try $ do
+ controlSeq "makeatletter"
+ void $ manyTill
+ ( whitespace
+ <|> newlineTok
+ <|> macroDef (const ())
+ <|> void environment
+ <|> void blockCommand
+ ) (controlSeq "makeatother")
+
-- See #4667 for motivation; sometimes people write macros
-- that just evaluate to a begin or end command, which blockCommand
-- won't accept.
diff --git a/test/command/11270.md b/test/command/11270.md
new file mode 100644
index 000000000..7cf681033
--- /dev/null
+++ b/test/command/11270.md
@@ -0,0 +1,25 @@
+```
+% pandoc -f markdown -t native -s
+---
+header-includes: |
+ \makeatletter
+ \beamer@ignorenonframefalse
+ \makeatother
+...
+
+^D
+Pandoc
+ Meta
+ { unMeta =
+ fromList
+ [ ( "header-includes"
+ , MetaBlocks
+ [ RawBlock
+ (Format "tex")
+ "\\makeatletter\n\\beamer@ignorenonframefalse\n\\makeatother"
+ ]
+ )
+ ]
+ }
+ []
+```