From 44484d0dee1bd095240b9faf26f8d1dad8e560ea Mon Sep 17 00:00:00 2001 From: Emily Bourke Date: Sun, 11 Apr 2021 21:42:53 +0100 Subject: [PATCH] Docx reader: Read table column widths. --- src/Text/Pandoc/Readers/Docx.hs | 5 +- src/Text/Pandoc/Readers/Docx/Parse.hs | 2 +- test/Tests/Writers/Docx.hs | 5 ++ test/docx/0_level_headers.native | 4 +- test/docx/golden/table_one_row.docx | Bin 9840 -> 9840 bytes test/docx/golden/table_with_list_cell.docx | Bin 10159 -> 10162 bytes test/docx/golden/tables-default-widths.docx | Bin 0 -> 10200 bytes test/docx/golden/tables.docx | Bin 10200 -> 10202 bytes test/docx/sdt_elements.native | 6 +- test/docx/table_one_row.native | 8 +- test/docx/table_variable_width.native | 12 +-- test/docx/table_with_list_cell.native | 6 +- test/docx/tables-default-widths.native | 92 ++++++++++++++++++++ test/docx/tables.native | 18 ++-- 14 files changed, 128 insertions(+), 30 deletions(-) create mode 100644 test/docx/golden/tables-default-widths.docx create mode 100644 test/docx/tables-default-widths.native diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs index 22dd54193..375bb7338 100644 --- a/src/Text/Pandoc/Readers/Docx.hs +++ b/src/Text/Pandoc/Readers/Docx.hs @@ -639,7 +639,7 @@ bodyPartToBlocks (ListItem pPr _ _ _ parparts) = bodyPartToBlocks $ Paragraph pPr' parparts bodyPartToBlocks (Tbl _ _ _ []) = return $ para mempty -bodyPartToBlocks (Tbl cap _ look parts@(r:rs)) = do +bodyPartToBlocks (Tbl cap grid look parts@(r:rs)) = do let cap' = simpleCaption $ plain $ text cap (hdr, rows) = case firstRowFormatting look of True | null rs -> (Nothing, [r]) @@ -669,7 +669,8 @@ bodyPartToBlocks (Tbl cap _ look parts@(r:rs)) = do -- so should be possible. Alignment might be more difficult, -- since there doesn't seem to be a column entity in docx. let alignments = replicate width AlignDefault - widths = replicate width ColWidthDefault + totalWidth = sum grid + widths = (\w -> ColWidth (fromInteger w / fromInteger totalWidth)) <$> grid return $ table cap' (zip alignments widths) diff --git a/src/Text/Pandoc/Readers/Docx/Parse.hs b/src/Text/Pandoc/Readers/Docx/Parse.hs index 7325ff300..978d6ff3a 100644 --- a/src/Text/Pandoc/Readers/Docx/Parse.hs +++ b/src/Text/Pandoc/Readers/Docx/Parse.hs @@ -563,7 +563,7 @@ elemToTblGrid :: NameSpaces -> Element -> D TblGrid elemToTblGrid ns element | isElem ns "w" "tblGrid" element = let cols = findChildrenByName ns "w" "gridCol" element in - mapD (\e -> maybeToD (findAttrByName ns "w" "val" e >>= stringToInteger)) + mapD (\e -> maybeToD (findAttrByName ns "w" "w" e >>= stringToInteger)) cols elemToTblGrid _ _ = throwError WrongElem diff --git a/test/Tests/Writers/Docx.hs b/test/Tests/Writers/Docx.hs index 2e0f1e3fb..da25b95e0 100644 --- a/test/Tests/Writers/Docx.hs +++ b/test/Tests/Writers/Docx.hs @@ -111,6 +111,11 @@ tests = [ testGroup "inlines" def "docx/tables.native" "docx/golden/tables.docx" + , docxTest + "tables without explicit column widths" + def + "docx/tables-default-widths.native" + "docx/golden/tables-default-widths.docx" , docxTest "tables with lists in cells" def diff --git a/test/docx/0_level_headers.native b/test/docx/0_level_headers.native index 7f875891e..ed589b029 100644 --- a/test/docx/0_level_headers.native +++ b/test/docx/0_level_headers.native @@ -1,6 +1,6 @@ [Table ("",[],[]) (Caption Nothing []) - [(AlignDefault,ColWidthDefault)] + [(AlignDefault,ColWidth 1.0)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) @@ -49,4 +49,4 @@ ,Para [Strong [Str "Table",Space,Str "Page"]] ,Para [Strong [Str "No",Space,Str "table",Space,Str "of",Space,Str "figures",Space,Str "entries",Space,Str "found."]] ,Header 1 ("introduction",[],[]) [Str "Introduction"] -,Para [Str "Nothing",Space,Str "to",Space,Str "introduce,",Space,Str "yet."]] \ No newline at end of file +,Para [Str "Nothing",Space,Str "to",Space,Str "introduce,",Space,Str "yet."]] diff --git a/test/docx/golden/table_one_row.docx b/test/docx/golden/table_one_row.docx index f75e567ab88adc989730f1bd3728732ae92e782c..a7a8f25191c31e91739b204b9397c61eb0ac302c 100644 GIT binary patch delta 1047 zcmez1^TCHVz?+#xgn@~JgCR0x&qm(4jLblK^IAq;#(E$l=*XuAw`GhB485!j41x>{ z4CVPnDf%h-$)&lec_n%kxjAP;PW!z!5coUw)bFHbhFI4n9t{nwmt3b`zg0TtT0-@j zjkE9kv-Ojip2nzk_rS5om2)0HmQ+uF{=avgiO^oA=t+l}-PA5|t(X!!<;lyBRlnNj zoIiJK5z|JaOKtU@Yqsyp@ZQ98P;^Sw#wl&TnF}r*i{Z_v=+M*4;Eu3lQQX^K;&xg2 znBU5WrzSNXd*j4hy0&GH6idpa4QEt#=yQ6Vb>6c*UhBEB^pup=Z4xV%xpA`am(Jia za7~i*aWjcmlv-RITYaMJ!Mj=01Z$?x4n1+(|JLg%H<}d}9pW;-UY~tePUi8&_@yc@ zUErJUv^}>k3EBMvH9ym?mpKO zro<&FpM0}^>fQ1tjV}vv22sqyYhEsE8mdBL^rk#N6`GnIx=Pzfst$b&UYu zT8phgOM|w)I=e}HLq~l|zI4U!Su9QycNBiEO0z$IYn^!Y<+S|*i^|IUPBl&BSySS5 z`|O;WHPe3f=*)_$(u-}_{=kOiiooV8Y0A^<{I+$>3zm8+*3;oybVFrbtN~N7q}dhj zox;)!M3eikFmR~`Tu?Unt~_zh1h4u&kN?8APFH z6(0&NSBbfQw|jN*MrrIt->U3W@t4+LpZ>k>O3dw!LtYBLYgOEPbxln7>Rk3>6L@iG zgRR(0v+{x$F#(2};a4*k9pu*X_WUv7_nI2NdGo@(FNLhpDmFX2`sS*XnokFozxiEp zMn3dEYsRI?>%Ph!F;4KP`71rk9yM^?MEW6tdqZ>^I4CEId9r~ScV$jM!gPh)BPNi@ z{ z4CVPnDf%h-$)&lec_n%kxjAP;eElCA2>jKa`u-@RVvACciUT*hih%s?^y`IDo3|a8 zvgZ8z-C|?xEanwoHqCBUH-7y6kB#xkqfd8-ZT4F*IYFzaCS<})1DUMMFwx4|pQiTe z)4RL(t!dmIRWD)B{kvEDch{P|+f|qLt#3_x$Fash@j64+v*vE?Tg=zQ8o8e{%?1pPe*b#>sN5ari$+avi#JO}{&%fh`-I(qWlDZwef8dZat91^|N8n& zN}Mn)AfN5^bgh~0KKkeD79UxoZ@o-j&J zvq*QIvv)l6b!pP>do%X1UCr7&c|Hrzomj)*{Jr&IA5VPH*3FZB>(!=3Czh? z%8SZoss7XPQ=elecj)o24#CXm5xlcapGXeW8p?>ly*R zwH8~0mIiHob#~MA1i}9&?wNh~X3E*3RQUSr>zRLTvUkVH`b_`p&~fXgYND&B(S}Q! zxwlm-@2~mH8fm)qOUy2Y^#?0CRw$;eJnN?SchVaH+vO&wWF-W(OXaEcb0++=E@5`?qz z44bMQ*?T)C{}%X~^5*xx7wOHWPt(7Ae)=<4!t}b?q76bG!P+MSli7WJ*Pq@piIHWO zL7u)#4#Or+iE2WqfHm6(nT$Y@dew=HtuH&N2y&+_-1X^PGK&+~>5;rNu8# z&XfPO-eK~*lGXnm_b?ngvVH%;pRA~X>n73<3EUf^+rU9NQOuJK%(yFa0urVx9Q^VQWn0lvc4tN;K2 diff --git a/test/docx/golden/table_with_list_cell.docx b/test/docx/golden/table_with_list_cell.docx index a49f70643ea9794b80a543e86aa8c0de619b1bef..1362d4609817d0a60b6865fe14bdf1581531ab0c 100644 GIT binary patch delta 1479 zcmZ4Qzsa9Bz?+#xgn@~JgCR0x&qm(4jLblK^IAq;MqVHzC?Sqv3JVhhgUaONOe*!e z=bAZgDM^}};KAX$;o#=iceb$AyKI}h=D(c!wqPyZFfaLELciln6 z50$*h9%nYHu(6cx z%iH~Mt8dOOhu*--C9^!v^=#W!B)lwDF5=N7fw%Vs){1DZpFNRz$M0pTEVfHFUApj& z|Ls~!>!yQ?W0H@3+VzX0@9*mU+>TfHFL_PBU013tIGtVCJpOK&!?mZnqO4U*v>%#2 zkof)XZ(g)>ePhb?V};Z?jD~lvCvVj{bgSFA?|c_SSgYLUiaJf1n2YV}8Fqf1vF|mT&J3{& zNt}no58hQP{_uuPllclulS1FzttNY3f62BARX*I-9oC~P(E97aaU;w0mNS#C34Z;* zbWgz1N{yQGZKv|26%V8~-ClhB^ZX^}&;PsSzv9D@>vc}4^QCt(F+VN%cscxjolRY{ zj)8a^!}9mS_x^s=sbd7C6Ha(S+5DEp8k|xlYqKo{rfwb&Z8G-&Iqvzx>>bkwKhOIQ4!#o{z^N8#tH zH2d?n)`?eNPTMcAsI1KIRMSMBH6>oR&(5h?Gwo-O&a9{^z1W8B4{TVj2yDKRraZmQ zZ(GN_V5z5KJsqw^H&oWe8ZZS*nqA@EDJ;D}G`ar@1D9&R1!aTp$`j{I@T%|g_%D1* zZh=ax7*9mc79Fpuk4h}U`DR~E*)P9X@uA>ym6-c?yH^))l*V54t;#+Xe`)>o>EG+F z#N6&Ui$n*Ti(M&Sft)fft81*owV0D=&Bv6JV$rel>H^L2fN?&mR+huc`5y zH!s}#Qpg&uVzaZWZ>~zI`E+3Uo8J{@?i$ zhe0?~3}~7+GXsMVvSAF5CO4}pDu8U1&tn$836v`YmLP&CYBYo=I|>VD1$Z+8rQpd5 zoI+%PhPq>DFc4v2NXbtQD9SG=)=$naO4X~#%|X}BnBwP_0@Qv5s9gZXzUs-2YVu%r zOI51&b^ztB0I@KN8s5qEYD!==wo|#bNU||7{E}s05JgdQZ1Mp$6|kD>J04cEfp+cV zMEAeYWM*~6IFSE!^_}i*1G;4|&@5E{-<4-zD9lGrDjm#A&_vr>`IHJ~7=H8S~vWwPLkH^0V{V;a^m5Dwwe@?aOyCG&kkV zkYC*!%Ck4~`WEwTS!*6Xn6o^1(z(xny0p|xI_phdNk|1>Z#o<+GQp!@vd5d1Dqo@Wtp}^#pS!X%kmVf>*qfy?`U77%3`gy`P8O= z{7-XP>>Cd*-mo>fsVw-{Y5izrlm{3+q_GwwXql-i4ik(1oFO^Rdg z-T3}q|7|v}`a@ABN22RkKG*(PY-qoCv)HwV>5r2)KkP}lc*>JYuQz9E-#o>-2N$0G zoAxqm%f7#9Z&RNBw7KKOzjgoiMN-?c_g5WT@c!!T)hZt=?QIVvDQs4LX}f_dXO~ni zx3ZS(qlZ5e4x65RCzy2B(RR9|R|Mqa5zw^yl>-Uvaq7f^~dgt%^@$K?Q?k5e& z5=^u9`IY?Nzxf9%G?B1DQpx5IEY{#;GFgvpDLA=YV~b$|GfX+RbATD|1)U)&$yAt? zkpq;HI-`{SPIeN}tS^*tX@UGxxS?<^46EStCuieu>$|u>N2r#|p)?m1o`b{!V%$ zV7uJpl&pkc_md5tcXlPPEHm12g?p#C?uAu4@+%lcycR4_Pk5)UWT`y0e$Iq{)+Nji zo?NmL8zeNfCH7VcHg%Ruvpwy);mm|SF-xQ;~s`%N4D=@_!Abq(9rD=?T3V} zl=wDqSY8(QWCJtgS};k7Fj)m+~j>KI$-PGsz@^) zo6M=I2be5N!YI1ACO4@m$%AaL zoyxUEl8u4k7tl9ABay)2$%oZcz>a>UCe6q{nN1zyAuV-j##@u!)D^&Tnd;I^`;{i& QQxcmzM_queR~cji0FgW>!T!D7xAh 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 Wz+aE*Uvv->5Zvo3M+51vU;hVaN~C@O literal 0 HcmV?d00001 diff --git a/test/docx/golden/tables.docx b/test/docx/golden/tables.docx index f24e27516f748591efb3c45187082ef7110f4a77..9dcbbc9d026edd7b9b6baf1813a3a1de577bffe4 100644 GIT binary patch delta 1558 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 diff --git a/test/docx/sdt_elements.native b/test/docx/sdt_elements.native index dca82f0a0..a072c0d39 100644 --- a/test/docx/sdt_elements.native +++ b/test/docx/sdt_elements.native @@ -1,8 +1,8 @@ [Table ("",[],[]) (Caption Nothing []) - [(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault)] + [(AlignDefault,ColWidth 0.22069570301081556) + ,(AlignDefault,ColWidth 0.22069570301081556) + ,(AlignDefault,ColWidth 0.5586085939783689)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) diff --git a/test/docx/table_one_row.native b/test/docx/table_one_row.native index e9188b145..88d5e3af5 100644 --- a/test/docx/table_one_row.native +++ b/test/docx/table_one_row.native @@ -1,8 +1,8 @@ [Table ("",[],[]) (Caption Nothing []) - [(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault)] + [(AlignDefault,ColWidth 0.3333333333333333) + ,(AlignDefault,ColWidth 0.3333333333333333) + ,(AlignDefault,ColWidth 0.3333333333333333)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) @@ -15,4 +15,4 @@ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) [Plain [Str "Table"]]]])] (TableFoot ("",[],[]) - [])] \ No newline at end of file + [])] diff --git a/test/docx/table_variable_width.native b/test/docx/table_variable_width.native index 229cb83b1..43ac40cca 100644 --- a/test/docx/table_variable_width.native +++ b/test/docx/table_variable_width.native @@ -1,10 +1,10 @@ [Table ("",[],[]) (Caption Nothing []) - [(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault)] + [(AlignDefault,ColWidth 2.0096205237840725e-2) + ,(AlignDefault,ColWidth 1.9882415820416888e-2) + ,(AlignDefault,ColWidth 0.22202030999465527) + ,(AlignDefault,ColWidth 0.4761090326028862) + ,(AlignDefault,ColWidth 1.0689470871191876e-4)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) @@ -42,4 +42,4 @@ ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) []]])] (TableFoot ("",[],[]) - [])] \ No newline at end of file + [])] diff --git a/test/docx/table_with_list_cell.native b/test/docx/table_with_list_cell.native index 06d8606da..51a35184b 100644 --- a/test/docx/table_with_list_cell.native +++ b/test/docx/table_with_list_cell.native @@ -1,7 +1,7 @@ [Table ("",[],[]) (Caption Nothing []) - [(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault)] + [(AlignDefault,ColWidth 0.5) + ,(AlignDefault,ColWidth 0.5)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) @@ -22,4 +22,4 @@ ,[Para [Str "A"]] ,[Para [Str "Numbered",Space,Str "list."]]]]]])] (TableFoot ("",[],[]) - [])] \ No newline at end of file + [])] diff --git a/test/docx/tables-default-widths.native b/test/docx/tables-default-widths.native new file mode 100644 index 000000000..e541e5a6e --- /dev/null +++ b/test/docx/tables-default-widths.native @@ -0,0 +1,92 @@ +[Header 2 ("a-table-with-and-without-a-header-row",[],[]) [Str "A",Space,Str "table,",Space,Str "with",Space,Str "and",Space,Str "without",Space,Str "a",Space,Str "header",Space,Str "row"] +,Table ("",[],[]) (Caption Nothing + []) + [(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault)] + (TableHead ("",[],[]) + [Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Name"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Game"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Fame"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Blame"]]]]) + [(TableBody ("",[],[]) (RowHeadColumns 0) + [] + [Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Lebron",Space,Str "James"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Basketball"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Very",Space,Str "High"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Leaving",Space,Str "Cleveland"]]] + ,Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Ryan",Space,Str "Braun"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Baseball"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Moderate"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Steroids"]]] + ,Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Russell",Space,Str "Wilson"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Football"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "High"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Tacky",Space,Str "uniform"]]]])] + (TableFoot ("",[],[]) + []) +,Table ("",[],[]) (Caption Nothing + []) + [(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault)] + (TableHead ("",[],[]) + []) + [(TableBody ("",[],[]) (RowHeadColumns 0) + [] + [Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Sinple"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Table"]]] + ,Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Without"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Plain [Str "Header"]]]])] + (TableFoot ("",[],[]) + []) +,Table ("",[],[]) (Caption Nothing + []) + [(AlignDefault,ColWidthDefault) + ,(AlignDefault,ColWidthDefault)] + (TableHead ("",[],[]) + []) + [(TableBody ("",[],[]) (RowHeadColumns 0) + [] + [Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Para [Str "Simple"] + ,Para [Str "Multiparagraph"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Para [Str "Table"] + ,Para [Str "Full"]]] + ,Row ("",[],[]) + [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Para [Str "Of"] + ,Para [Str "Paragraphs"]] + ,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) + [Para [Str "In",Space,Str "each"] + ,Para [Str "Cell."]]]])] + (TableFoot ("",[],[]) + [])] \ No newline at end of file diff --git a/test/docx/tables.native b/test/docx/tables.native index e541e5a6e..5a89496be 100644 --- a/test/docx/tables.native +++ b/test/docx/tables.native @@ -1,10 +1,10 @@ [Header 2 ("a-table-with-and-without-a-header-row",[],[]) [Str "A",Space,Str "table,",Space,Str "with",Space,Str "and",Space,Str "without",Space,Str "a",Space,Str "header",Space,Str "row"] ,Table ("",[],[]) (Caption Nothing []) - [(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault)] + [(AlignDefault,ColWidth 0.25) + ,(AlignDefault,ColWidth 0.25) + ,(AlignDefault,ColWidth 0.25) + ,(AlignDefault,ColWidth 0.25)] (TableHead ("",[],[]) [Row ("",[],[]) [Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1) @@ -48,8 +48,8 @@ []) ,Table ("",[],[]) (Caption Nothing []) - [(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault)] + [(AlignDefault,ColWidth 0.5) + ,(AlignDefault,ColWidth 0.5)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) @@ -68,8 +68,8 @@ []) ,Table ("",[],[]) (Caption Nothing []) - [(AlignDefault,ColWidthDefault) - ,(AlignDefault,ColWidthDefault)] + [(AlignDefault,ColWidth 0.5) + ,(AlignDefault,ColWidth 0.5)] (TableHead ("",[],[]) []) [(TableBody ("",[],[]) (RowHeadColumns 0) @@ -89,4 +89,4 @@ [Para [Str "In",Space,Str "each"] ,Para [Str "Cell."]]]])] (TableFoot ("",[],[]) - [])] \ No newline at end of file + [])]