From f3c9d3788530e450d1bb23a4fd829bc5a6eed266 Mon Sep 17 00:00:00 2001 From: John MacFarlane <jgm@berkeley.edu> Date: Wed, 5 Mar 2014 13:01:23 -0800 Subject: [PATCH] HTML writer: Add colgroup around col tags. Also affects EPUB writer. Closes #877. --- src/Text/Pandoc/Writers/HTML.hs | 15 ++++++++++----- tests/tables.html | 6 ++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index 3ac2a836f..e0385af25 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -533,11 +533,16 @@ blockToHtml opts (Table capt aligns widths headers rows') = do let percent w = show (truncate (100*w) :: Integer) ++ "%" let coltags = if all (== 0.0) widths then mempty - else mconcat $ map (\w -> - if writerHtml5 opts - then H.col ! A.style (toValue $ "width: " ++ percent w) - else H.col ! A.width (toValue $ percent w) >> nl opts) - widths + else do + H.colgroup $ do + nl opts + mapM_ (\w -> do + if writerHtml5 opts + then H.col ! A.style (toValue $ "width: " ++ + percent w) + else H.col ! A.width (toValue $ percent w) + nl opts) widths + nl opts head' <- if all null headers then return mempty else do diff --git a/tests/tables.html b/tests/tables.html index b72aa784e..a9b2b247d 100644 --- a/tests/tables.html +++ b/tests/tables.html @@ -96,10 +96,12 @@ <p>Multiline table with caption:</p> <table> <caption>Here's the caption. It may span multiple lines.</caption> +<colgroup> <col width="15%" /> <col width="13%" /> <col width="16%" /> <col width="33%" /> +</colgroup> <thead> <tr class="header"> <th align="center">Centered Header</th> @@ -125,10 +127,12 @@ </table> <p>Multiline table without caption:</p> <table> +<colgroup> <col width="15%" /> <col width="13%" /> <col width="16%" /> <col width="33%" /> +</colgroup> <thead> <tr class="header"> <th align="center">Centered Header</th> @@ -177,10 +181,12 @@ </table> <p>Multiline table without column headers:</p> <table> +<colgroup> <col width="15%" /> <col width="13%" /> <col width="16%" /> <col width="33%" /> +</colgroup> <tbody> <tr class="odd"> <td align="center">First</td>