git.iko.soy/typeable/pandoc
on master help sign in
LaTeX reader: fix `\\` in `\parbox` inside a table cell.

Closes #5711.

commitfba1296fd1ac6427d19f537c4b8afda9fc60ac75 authorJohn MacFarlane <jgm@berkeley.edu> dateTue 27 Aug 2019, 10:48 (7 years ago) parent167fc4b
2 files changed+31−3
src/Text/Pandoc/Readers/LaTeX.hs+18−3 test/command/5711.md+13
src/Text/Pandoc/Readers/LaTeX.hs+18−3
@@ -1749,10 +1749,21 @@ closing = do
17491749 _ -> mempty
17501750 return $ para (trimInlines contents) <> sigs
17511751
1752+parbox :: PandocMonad m => LP m Blocks
1753+parbox = try $ do
1754+ skipopts
1755+ braced -- size
1756+ oldInTableCell <- sInTableCell <$> getState
1757+ -- see #5711
1758+ updateState $ \st -> st{ sInTableCell = False }
1759+ res <- grouped blocks
1760+ updateState $ \st -> st{ sInTableCell = oldInTableCell }
1761+ return res
1762+
17521763blockCommands :: PandocMonad m => M.Map Text (LP m Blocks)
17531764blockCommands = M.fromList
17541765 [ ("par", mempty <$ skipopts)
1755− , ("parbox", skipopts >> braced >> grouped blocks)
1766+ , ("parbox", parbox)
17561767 , ("title", mempty <$ (skipopts *>
17571768 (grouped inline >>= addMeta "title")
17581769 <|> (grouped block >>= addMeta "title")))
@@ -2269,9 +2280,13 @@ parseTableRow envname prefsufs = do
22692280 -- add prefixes and suffixes in token stream:
22702281 let celltoks (pref, suff) = do
22712282 prefpos <- getPosition
2272− contents <- many (notFollowedBy
2283+ contents <- mconcat <$>
2284+ many ( snd <$> withRaw (controlSeq "parbox" >> parbox) -- #5711
2285+ <|>
2286+ (do notFollowedBy
22732287 (() <$ amp <|> () <$ lbreak <|> end_ envname)
2274− >> anyTok)
2288+ count 1 anyTok) )
2289+
22752290 suffpos <- getPosition
22762291 option [] (count 1 amp)
22772292 return $ map (setpos prefpos) pref ++ contents ++ map (setpos suffpos) suff
test/command/5711.mdnew file+13
@@ -0,0 +1,13 @@
1+```
2+% pandoc -t native -f latex
3+\documentclass{article}
4+\begin{document}
5+\begin{tabular}{c}
6+\parbox{2cm}{d\\e}
7+\end{tabular}
8+\end{document}
9+^D
10+[Table [] [AlignCenter] [0.0]
11+ [[]]
12+ [[[Plain [Str "d",LineBreak,Str "e"]]]]]
13+```