From cafb8b7371c5d4de4cc2fa3a4f40ea6b8053a9ba Mon Sep 17 00:00:00 2001 From: Igor Pashev Date: Tue, 9 Jun 2020 23:17:31 +0200 Subject: Allow multicols env in LaTeX reader The multicols environment has a mandatory argument - number of columns. It is incorrectly parsed as plain string. Wrap multicols content into nested divs. Signed-off-by: Igor Pashev --- src/Text/Pandoc/Readers/LaTeX.hs | 13 +++++++++++++ test/command/latex-multicols.md | 14 ++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 test/command/latex-multicols.md diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index 2a9bff746..de01708f2 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -1642,6 +1642,7 @@ environments = M.fromList , ("abstract", mempty <$ (env "abstract" blocks >>= addMeta "abstract")) , ("sloppypar", env "sloppypar" blocks) , ("letter", env "letter" letterContents) + , ("multicols", env "multicols" multicols) , ("minipage", env "minipage" $ skipopts *> spaces *> optional braced *> spaces *> blocks) , ("figure", env "figure" $ skipopts *> figure) @@ -1903,6 +1904,18 @@ letterContents = do _ -> mempty return $ addr <> bs -- sig added by \closing +multicols :: PandocMonad m => LP m Blocks +multicols = do + spaces + n <- fromMaybe 1 . safeRead . untokenize <$> braced + spaces + bs <- blocks + return $ divWith ("", ["columns"], []) $ cols n bs + where + cols :: Int -> Blocks -> Blocks + cols n = foldr1 (.) (replicate n $ divWith ("", ["column"], [])) + + figure :: PandocMonad m => LP m Blocks figure = try $ do resetCaption diff --git a/test/command/latex-multicols.md b/test/command/latex-multicols.md new file mode 100644 index 000000000..81e5577fd --- /dev/null +++ b/test/command/latex-multicols.md @@ -0,0 +1,14 @@ +# `\begin{multicols}` + +``` +% pandoc -f latex -t native +\begin{multicols}{2} +Hello +\end{multicols} +^D +[Div ("",["columns"],[]) + [Div ("",["column"],[]) + [Div ("",["column"],[]) + [Para [Str "Hello"]]]]] +``` + -- cgit v1.2.3