From eeaa3b048c325859d049f1b7aa7f60553c897aa6 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 12 Nov 2017 14:46:29 -0800 Subject: LaTeX reader: support column specs like `*{2}{r}`. This is equivalent to `rr`. We now expand it like a macro. Closes #4056. --- src/Text/Pandoc/Readers/LaTeX.hs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/Text/Pandoc/Readers/LaTeX.hs') 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 -- cgit v1.2.3