aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2020-01-08 08:43:51 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2020-01-08 08:43:51 -0800
commitfc78be1140532dcd7dc4ef614ac753cca5cf8b1e (patch)
treec2918a27e05a53efa2df2c60b4f795000e9fbd87
parentbef0133fe044350caeee24cdf79203a9306534da (diff)
downloadpandoc-fc78be1140532dcd7dc4ef614ac753cca5cf8b1e.tar.gz
LaTeX reader: improve parsing of raw environments.
If parsing fails in a raw environment (e.g. due to special characters like unescaped `_`), try again as a verbatim environment, which is less sensitive to special characters. This allows us to capture special environments that change catcodes as raw tex when `-f latex+raw_tex` is used. Closes #6034.
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs2
-rw-r--r--test/command/6034.md11
2 files changed, 12 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
index adb66d54a..bfade7284 100644
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -1942,7 +1942,7 @@ environment = try $ do
if M.member name (inlineEnvironments
:: M.Map Text (LP PandocPure Inlines))
then mzero
- else rawEnv name
+ else rawEnv name <|> rawVerbEnv name
env :: PandocMonad m => Text -> LP m a -> LP m a
env name p = p <* end_ name
diff --git a/test/command/6034.md b/test/command/6034.md
new file mode 100644
index 000000000..af41f2d50
--- /dev/null
+++ b/test/command/6034.md
@@ -0,0 +1,11 @@
+```
+% pandoc -f latex+raw_tex -t native
+\begin{figure*}
+ \centering
+ \begin{overpic}{test_pic}
+ \put (70,80) {Caption}
+ \end{overpic}
+\end{figure*}
+^D
+[RawBlock (Format "latex") "\\begin{figure*}\n \\centering\n \\begin{overpic}{test_pic}\n \\put (70,80) {Caption}\n \\end{overpic}\n\\end{figure*}"]
+```