Docx writer: don't emit empty rows.

These (`<w:tr />`) seem to cause problems for word. Closes #9224.
This commit is contained in:
John MacFarlane
2023-12-17 11:32:27 -08:00
parent 5875de3f86
commit 3abbf97d0b
2 changed files with 14 additions and 11 deletions
+1 -1
View File
@@ -1074,7 +1074,7 @@ toFigureTable opts blks = do
[]
)
: mknode "w:tblGrid" [] gridCols
: [tblBody]
: (maybeToList tblBody)
)
modify $ \s -> s { stInTable = False }
return $ Elem tbl
+13 -10
View File
@@ -22,6 +22,7 @@ import Control.Monad ( unless , zipWithM )
import Control.Monad.Except ( throwError )
import Data.Array ( elems, (!), assocs, indices )
import Data.Text (Text)
import Data.Maybe (catMaybes)
import Text.Pandoc.Definition
( ColSpec,
Caption(Caption),
@@ -189,7 +190,7 @@ cellGridToOpenXML blocksToOpenXML rowType aligns part@(Part _ cellArray _) =
if null (elems cellArray)
then return mempty
else partToRows rowType aligns part >>=
mapM (rowToOpenXML blocksToOpenXML)
fmap catMaybes . mapM (rowToOpenXML blocksToOpenXML)
data OOXMLCell
= OOXMLCell Attr Alignment RowSpan ColSpan [Block]
@@ -228,15 +229,17 @@ partToRows rowType aligns part = do
rowToOpenXML :: PandocMonad m
=> ([Block] -> WS m [Content])
-> OOXMLRow
-> WS m Element
rowToOpenXML blocksToOpenXML (OOXMLRow rowType _attr cells) = do
xmlcells <- mapM (ooxmlCellToOpenXML blocksToOpenXML) cells
let addTrPr = case rowType of
HeadRow -> (mknode "w:trPr" []
[mknode "w:tblHeader" [("w:val", "true")] ()] :)
BodyRow -> id
FootRow -> id
return $ mknode "w:tr" [] (addTrPr xmlcells)
-> WS m (Maybe Element)
rowToOpenXML blocksToOpenXML (OOXMLRow rowType _attr cells)
| null cells = return Nothing
| otherwise = do
xmlcells <- mapM (ooxmlCellToOpenXML blocksToOpenXML) cells
let addTrPr = case rowType of
HeadRow -> (mknode "w:trPr" []
[mknode "w:tblHeader" [("w:val", "true")] ()] :)
BodyRow -> id
FootRow -> id
return $ Just $ mknode "w:tr" [] (addTrPr xmlcells)
ooxmlCellToOpenXML :: PandocMonad m
=> ([Block] -> WS m [Content])