diff options
author | John MacFarlane <jgm@berkeley.edu> | 2017-11-12 14:46:29 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2017-11-12 14:46:29 -0800 |
commit | eeaa3b048c325859d049f1b7aa7f60553c897aa6 (patch) | |
tree | efdc25f50e264c5325aad5ca1acc54f9ab25b6b6 | |
parent | 7ba0ae8b4d9a6d3e7d4484a5f257e1e53f35667d (diff) | |
download | pandoc-eeaa3b048c325859d049f1b7aa7f60553c897aa6.tar.gz |
LaTeX reader: support column specs like `*{2}{r}`.
This is equivalent to `rr`. We now expand it like a macro.
Closes #4056.
-rw-r--r-- | src/Text/Pandoc/Readers/LaTeX.hs | 16 | ||||
-rw-r--r-- | test/command/4056.md | 15 |
2 files changed, 27 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index 708980f1d..28c8fd736 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -2406,8 +2406,7 @@ parseAligns = try $ do case safeRead ds of Just w -> return w Nothing -> return 0.0 - let alignSpec = try $ do - spaces + let alignSpec = do pref <- option [] alignPrefix spaces al <- alignChar @@ -2418,10 +2417,21 @@ parseAligns = try $ do spaces suff <- option [] alignSuffix return (al, width, (pref, suff)) + let starAlign = do -- *{2}{r} == rr, we just expand like a macro + symbol '*' + spaces + ds <- trim . toksToString <$> braced + spaces + spec <- braced + case safeRead ds of + Just n -> do + getInput >>= setInput . (mconcat (replicate n spec) ++) + Nothing -> fail $ "Could not parse " ++ ds ++ " as number" bgroup spaces maybeBar - aligns' <- many (alignSpec <* maybeBar) + aligns' <- many $ try $ spaces >> optional starAlign >> + (alignSpec <* maybeBar) spaces egroup spaces diff --git a/test/command/4056.md b/test/command/4056.md index be245a30d..eed4f6d6a 100644 --- a/test/command/4056.md +++ b/test/command/4056.md @@ -8,4 +8,17 @@ [RawBlock (Format "latex") "\\parbox[t]{0.4\\textwidth}{\n\\begin{shaded}\n\\end{shaded}\n}"] ``` - +``` +% pandoc -f latex -t native +\begin{tabular}{l*{2}{r}} +Blah & Foo & Bar \\ +\end{tabular} +^D +[Table [] [AlignLeft,AlignRight,AlignRight] [0.0,0.0,0.0] + [[] + ,[] + ,[]] + [[[Plain [Str "Blah"]] + ,[Plain [Str "Foo"]] + ,[Plain [Str "Bar"]]]]] +``` |