git.iko.soy/typeable/pandoc
on master help sign in
LaTeX reader: handle some width specifiers on table columns.

Currently we only handle the form `0.9\linewidth`. Anything else would have to be converted to a percentage, using some kind arbitrary assumptions about line widths. See #3709.

commit9396f1fb6766cc4b08fb7b7c97ef2c02e9f0f700 authorJohn MacFarlane <jgm@berkeley.edu> dateThu 1 Jun 2017, 12:08 (9 years ago) parentaf6e841
2 files changed+15−5
src/Text/Pandoc/Readers/LaTeX.hs+13−3 test/command/tabularx.md+2−2
src/Text/Pandoc/Readers/LaTeX.hs+13−3
@@ -1451,14 +1451,24 @@ parseAligns = try $ do
14511451 <|> xAlign <|> mAlign <|> bAlign
14521452 let alignPrefix = char '>' >> braced
14531453 let alignSuffix = char '<' >> braced
1454+ let colWidth = try $ do
1455+ char '{'
1456+ ds <- many1 (oneOf "0123456789.")
1457+ spaces
1458+ string "\\linewidth"
1459+ char '}'
1460+ case safeRead ds of
1461+ Just w -> return w
1462+ Nothing -> return 0.0
14541463 let alignSpec = do
14551464 spaces
14561465 pref <- option "" alignPrefix
14571466 spaces
14581467 al <- alignChar
1459− let parseWidth :: String -> Double
1460− parseWidth _ = 0.00 -- TODO actually parse the width
1461− width <- parseWidth <$> option "" braced
1468+ width <- colWidth <|> option 0.0 (do s <- braced
1469+ pos <- getPosition
1470+ report $ SkippedContent s pos
1471+ return 0.0)
14621472 spaces
14631473 suff <- option "" alignSuffix
14641474 return (al, width, (pref, suff))
test/command/tabularx.md+2−2
@@ -57,7 +57,7 @@
5757\hline
5858\end{tabularx}
5959^D
60−[Table [] [AlignLeft,AlignCenter,AlignLeft] [0.0,0.0,0.0]
60+[Table [] [AlignLeft,AlignCenter,AlignLeft] [0.0,0.0,0.25]
6161 [[Plain [Str "Column",Space,Str "Heading",Space,Str "1"]]
6262 ,[Plain [Str "Column",Space,Str "Heading",Space,Str "2"]]
6363 ,[Plain [Str "Column",Space,Str "Heading",Space,Str "3"]]]
@@ -94,7 +94,7 @@
9494\hline
9595\end{tabularx}
9696^D
97−[Table [] [AlignLeft,AlignCenter,AlignLeft] [0.0,0.0,0.0]
97+[Table [] [AlignLeft,AlignCenter,AlignLeft] [0.25,0.0,0.25]
9898 [[Plain [Str "Column",Space,Str "Heading",Space,Str "1"]]
9999 ,[Plain [Str "Column",Space,Str "Heading",Space,Str "2"]]
100100 ,[Plain [Str "Column",Space,Str "Heading",Space,Str "3"]]]