aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2015-10-30 12:36:36 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2015-10-30 12:36:36 -0700
commit7843b5759a6c086dc29b7a2cdfa2bbb4ed2732ff (patch)
tree9e6c2dc28545c3a4bd5a09d7f46075ac38f3e162
parent893ba9863cc33bc1fa68bbd71c71db89205dfa00 (diff)
downloadpandoc-7843b5759a6c086dc29b7a2cdfa2bbb4ed2732ff.tar.gz
HTML writer: use width on whole table if col widths sum to < 100%.
Otherwise some browsers display the table with the columns separated far apart.
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs11
-rw-r--r--tests/tables.html6
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%" />