diff options
-rw-r--r-- | src/Text/Pandoc/Writers/HTML.hs | 11 | ||||
-rw-r--r-- | tests/tables.html | 6 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index d06bec89f..9b362adf1 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -593,8 +593,15 @@ blockToHtml opts (Table capt aligns widths headers rows') = do return $ H.thead (nl opts >> contents) >> nl opts body' <- liftM (\x -> H.tbody (nl opts >> mconcat x)) $ zipWithM (tableRowToHtml opts aligns) [1..] rows' - return $ H.table $ nl opts >> captionDoc >> coltags >> head' >> - body' >> nl opts + let tbl = H.table $ + nl opts >> captionDoc >> coltags >> head' >> body' >> nl opts + let totalWidth = sum widths + -- When widths of columns are < 100%, we need to set width for the whole + -- table, or some browsers give us skinny columns with lots of space between: + return $ if totalWidth == 0 || totalWidth == 1 + then tbl + else tbl ! A.style (toValue $ "width:" ++ + show (round (totalWidth * 100) :: Int) ++ "%;") tableRowToHtml :: WriterOptions -> [Alignment] diff --git a/tests/tables.html b/tests/tables.html index a9b2b247d..f5ddf3bcd 100644 --- a/tests/tables.html +++ b/tests/tables.html @@ -94,7 +94,7 @@ </tbody> </table> <p>Multiline table with caption:</p> -<table> +<table style="width:79%;"> <caption>Here's the caption. It may span multiple lines.</caption> <colgroup> <col width="15%" /> @@ -126,7 +126,7 @@ </tbody> </table> <p>Multiline table without caption:</p> -<table> +<table style="width:79%;"> <colgroup> <col width="15%" /> <col width="13%" /> @@ -180,7 +180,7 @@ </tbody> </table> <p>Multiline table without column headers:</p> -<table> +<table style="width:79%;"> <colgroup> <col width="15%" /> <col width="13%" /> |