diff options
author | John MacFarlane <jgm@berkeley.edu> | 2017-05-29 22:45:49 +0200 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2017-05-29 22:47:04 +0200 |
commit | 5ec384eb60a4d32a83e94eec041020004dff96ce (patch) | |
tree | ddea05cf7f12072e2d22f5691f08df488b33f298 | |
parent | 230a1b89e8fd761a67599aad190a6b9462686abc (diff) | |
download | pandoc-5ec384eb60a4d32a83e94eec041020004dff96ce.tar.gz |
LaTeX reader: handle escaped & inside table cell.
Closes #3708.
-rw-r--r-- | src/Text/Pandoc/Readers/LaTeX.hs | 8 | ||||
-rw-r--r-- | test/command/3708.md | 15 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index 4179f4550..d1262867c 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -1494,9 +1494,11 @@ parseTableRow :: PandocMonad m -> [String] -- ^ suffixes -> LP m [Blocks] parseTableRow cols prefixes suffixes = try $ do - let tableCellRaw = many (notFollowedBy - (amp <|> lbreak <|> - (() <$ try (string "\\end"))) >> anyChar) + let tableCellRaw = concat <$> many + (do notFollowedBy (amp <|> lbreak <|> (() <$ try (string "\\end"))) + many1 (noneOf "&%\n\r\\") + <|> try (string "\\&") + <|> count 1 anyChar) let minipage = try $ controlSeq "begin" *> string "{minipage}" *> env "minipage" (skipopts *> spaces' *> optional braced *> spaces' *> blocks) diff --git a/test/command/3708.md b/test/command/3708.md new file mode 100644 index 000000000..2cbc82c25 --- /dev/null +++ b/test/command/3708.md @@ -0,0 +1,15 @@ +``` +% pandoc -f latex -t native +\begin{tabular}{cc} + A & B\&1 \\ + C & D +\end{tabular} +^D +[Table [] [AlignCenter,AlignCenter] [0.0,0.0] + [[] + ,[]] + [[[Plain [Str "A"]] + ,[Plain [Str "B&1"]]] + ,[[Plain [Str "C"]] + ,[Plain [Str "D"]]]]] +``` |