diff options
-rw-r--r-- | src/Text/Pandoc/Readers/LaTeX.hs | 21 | ||||
-rw-r--r-- | test/command/5711.md | 13 |
2 files changed, 31 insertions, 3 deletions
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 diff --git a/test/command/5711.md b/test/command/5711.md new file mode 100644 index 000000000..0d443c656 --- /dev/null +++ b/test/command/5711.md @@ -0,0 +1,13 @@ +``` +% pandoc -t native -f latex +\documentclass{article} +\begin{document} +\begin{tabular}{c} +\parbox{2cm}{d\\e} +\end{tabular} +\end{document} +^D +[Table [] [AlignCenter] [0.0] + [[]] + [[[Plain [Str "d",LineBreak,Str "e"]]]]] +``` |