Files
TuongNM bdab9915ad OpenDocument writer: Add missing table elements (#11157)
Add missing header rows after the first one,
footer rows as well as TableBody header rows.

Also apply hlint suggestions to use Down and fuse mapM/map.

Closes #10002.
2025-09-20 21:05:29 +02:00

6.6 KiB

% pandoc -f native -t opendocument
[ Table
    ( "" , [] , [] )
    (Caption Nothing [])
    [ ( AlignDefault , ColWidthDefault )
    , ( AlignDefault , ColWidthDefault )
    , ( AlignDefault , ColWidthDefault )
    ]
    (TableHead
       ( "" , [] , [] )
       [ Row
           ( "" , [] , [] )
           [ Cell
               ( "" , [] , [] )
               AlignDefault
               (RowSpan 1)
               (ColSpan 3)
               [ Plain
                   [ Str "First"
                   , Space
                   , Str "Header"
                   , Space
                   , Str "Row"
                   ]
               ]
           ]
       , Row
           ( "" , [] , [] )
           [ Cell
               ( "" , [] , [] )
               AlignDefault
               (RowSpan 1)
               (ColSpan 1)
               [ Plain [ Str "Second" ] ]
           , Cell
               ( "" , [] , [] )
               AlignDefault
               (RowSpan 1)
               (ColSpan 1)
               [ Plain [ Str "Header" ] ]
           , Cell
               ( "" , [] , [] )
               AlignDefault
               (RowSpan 1)
               (ColSpan 1)
               [ Plain [ Str "Row" ] ]
           ]
       ])
    [ TableBody
        ( "" , [] , [] )
        (RowHeadColumns 0)
        [ Row
            ( "" , [] , [] )
            [ Cell
                ( "" , [] , [] )
                AlignDefault
                (RowSpan 1)
                (ColSpan 1)
                [ Plain [ Str "Header - Table" ] ]
            , Cell
                ( "" , [] , [] )
                AlignDefault
                (RowSpan 1)
                (ColSpan 1)
                [ Plain [ Str "Header - Body" ] ]
            , Cell
                ( "" , [] , [] )
                AlignDefault
                (RowSpan 1)
                (ColSpan 1)
                [ Plain [ Str "Header - Row" ] ]
            ]
        ]
        [ Row
            ( "" , [] , [] )
            [ Cell
                ( "" , [] , [] )
                AlignDefault
                (RowSpan 1)
                (ColSpan 1)
                [ Plain [ Str "Table" ] ]
            , Cell
                ( "" , [] , [] )
                AlignDefault
                (RowSpan 1)
                (ColSpan 1)
                [ Plain [ Str "Body" ] ]
            , Cell
                ( "" , [] , [] )
                AlignDefault
                (RowSpan 1)
                (ColSpan 1)
                [ Plain [ Str "Row" ] ]
            ]
        ]
    ]
    (TableFoot
        ( "" , [] , [] )
        [ Row
            ( "" , [] , [] )
            [ Cell
                ( "" , [] , [] )
                AlignDefault
                (RowSpan 1)
                (ColSpan 3)
                [ Plain
                    [ Str "First"
                    , Space
                    , Str "Footer"
                    , Space
                    , Str "Row"
                    ]
                ]
            ]
        , Row
            ( "" , [] , [] )
            [ Cell
                ( "" , [] , [] )
                AlignDefault
                (RowSpan 1)
                (ColSpan 1)
                [ Plain [ Str "Second" ] ]
            , Cell
                ( "" , [] , [] )
                AlignDefault
                (RowSpan 1)
                (ColSpan 1)
                [ Plain [ Str "Footer" ] ]
            , Cell
                ( "" , [] , [] )
                AlignDefault
                (RowSpan 1)
                (ColSpan 1)
                [ Plain [ Str "Row" ] ]
            ]
        ])
]
^D
<table:table table:name="Table1" table:style-name="Table1">
  <table:table-column table:style-name="Table1.A" />
  <table:table-column table:style-name="Table1.B" />
  <table:table-column table:style-name="Table1.C" />
  <table:table-header-rows>
    <table:table-row>
      <table:table-cell table:style-name="TableHeaderRowCell" office:value-type="string" table:number-columns-spanned="3">
        <text:p text:style-name="Table_20_Heading">First Header
        Row</text:p>
      </table:table-cell>
    </table:table-row>
    <table:table-row>
      <table:table-cell table:style-name="TableHeaderRowCell" office:value-type="string">
        <text:p text:style-name="Table_20_Heading">Second</text:p>
      </table:table-cell>
      <table:table-cell table:style-name="TableHeaderRowCell" office:value-type="string">
        <text:p text:style-name="Table_20_Heading">Header</text:p>
      </table:table-cell>
      <table:table-cell table:style-name="TableHeaderRowCell" office:value-type="string">
        <text:p text:style-name="Table_20_Heading">Row</text:p>
      </table:table-cell>
    </table:table-row>
  </table:table-header-rows>
  <table:table-row>
    <table:table-cell table:style-name="TableRowCell" office:value-type="string">
      <text:p text:style-name="Table_20_Heading">Header - Table</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="TableRowCell" office:value-type="string">
      <text:p text:style-name="Table_20_Heading">Header - Body</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="TableRowCell" office:value-type="string">
      <text:p text:style-name="Table_20_Heading">Header - Row</text:p>
    </table:table-cell>
  </table:table-row>
  <table:table-row>
    <table:table-cell table:style-name="TableRowCell" office:value-type="string">
      <text:p text:style-name="Table_20_Contents">Table</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="TableRowCell" office:value-type="string">
      <text:p text:style-name="Table_20_Contents">Body</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="TableRowCell" office:value-type="string">
      <text:p text:style-name="Table_20_Contents">Row</text:p>
    </table:table-cell>
  </table:table-row>
  <table:table-row>
    <table:table-cell table:style-name="TableRowCell" office:value-type="string" table:number-columns-spanned="3">
      <text:p text:style-name="Table_20_Contents">First Footer
      Row</text:p>
    </table:table-cell>
  </table:table-row>
  <table:table-row>
    <table:table-cell table:style-name="TableRowCell" office:value-type="string">
      <text:p text:style-name="Table_20_Contents">Second</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="TableRowCell" office:value-type="string">
      <text:p text:style-name="Table_20_Contents">Footer</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="TableRowCell" office:value-type="string">
      <text:p text:style-name="Table_20_Contents">Row</text:p>
    </table:table-cell>
  </table:table-row>
</table:table>