From fba1296fd1ac6427d19f537c4b8afda9fc60ac75 Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Tue, 27 Aug 2019 10:48:02 -0700
Subject: LaTeX reader: fix `\\` in `\parbox` inside a table cell.

Closes #5711.
---
 src/Text/Pandoc/Readers/LaTeX.hs | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
index 25fd1198f..4e006fa8a 100644
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -1749,10 +1749,21 @@ closing = do
                   _ -> mempty
   return $ para (trimInlines contents) <> sigs
 
+parbox :: PandocMonad m => LP m Blocks
+parbox = try $ do
+  skipopts
+  braced -- size
+  oldInTableCell <- sInTableCell <$> getState
+  -- see #5711
+  updateState $ \st -> st{ sInTableCell = False }
+  res <- grouped blocks
+  updateState $ \st -> st{ sInTableCell = oldInTableCell }
+  return res
+
 blockCommands :: PandocMonad m => M.Map Text (LP m Blocks)
 blockCommands = M.fromList
    [ ("par", mempty <$ skipopts)
-   , ("parbox",  skipopts >> braced >> grouped blocks)
+   , ("parbox",  parbox)
    , ("title", mempty <$ (skipopts *>
                              (grouped inline >>= addMeta "title")
                          <|> (grouped block >>= addMeta "title")))
@@ -2269,9 +2280,13 @@ parseTableRow envname prefsufs = do
   -- add prefixes and suffixes in token stream:
   let celltoks (pref, suff) = do
         prefpos <- getPosition
-        contents <- many (notFollowedBy
+        contents <- mconcat <$>
+            many ( snd <$> withRaw (controlSeq "parbox" >> parbox) -- #5711
+                  <|>
+                   (do notFollowedBy
                          (() <$ amp <|> () <$ lbreak <|> end_ envname)
-                         >> anyTok)
+                       count 1 anyTok) )
+
         suffpos <- getPosition
         option [] (count 1 amp)
         return $ map (setpos prefpos) pref ++ contents ++ map (setpos suffpos) suff
-- 
cgit v1.2.3