015dead0bb
ODT's reader always put empty captions for the parsed tables. This commit 1) checks paragraphs that follow the table definition 2) treats specially a paragraph with a style named 'Table' 3) does some postprocessing of the paragraphs that combines tables followed immediately by captions The ODT writer used 'TableCaption' style name for the caption paragraph. This commit follows the open office approach which allows for appending captions to table but uses a built-in style named 'Table' instead of 'TableCaption'. Any users of odt format (both writer and reader) are therefore required to change the style's name to 'Table', if necessary.
397 lines
19 KiB
Text
397 lines
19 KiB
Text
<text:p text:style-name="Text_20_body">Simple table with caption:</text:p>
|
|
<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-column table:style-name="Table1.D" />
|
|
<table:table-header-rows>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="P1">Right</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Heading">Left</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="P2">Center</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Heading">Default</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table-header-rows>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="P3">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="P4">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">12</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="P3">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="P4">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">123</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="P3">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="P4">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">1</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table>
|
|
<text:p text:style-name="Table">Demonstration of simple table syntax.</text:p>
|
|
<text:p text:style-name="First_20_paragraph">Simple table without
|
|
caption:</text:p>
|
|
<table:table table:name="Table2" table:style-name="Table2">
|
|
<table:table-column table:style-name="Table2.A" />
|
|
<table:table-column table:style-name="Table2.B" />
|
|
<table:table-column table:style-name="Table2.C" />
|
|
<table:table-column table:style-name="Table2.D" />
|
|
<table:table-header-rows>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="P5">Right</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Heading">Left</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="P6">Center</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Heading">Default</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table-header-rows>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="P7">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="P8">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">12</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="P7">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="P8">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">123</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="P7">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="P8">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">1</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table>
|
|
<text:p text:style-name="First_20_paragraph">Simple table indented two
|
|
spaces:</text:p>
|
|
<table:table table:name="Table3" table:style-name="Table3">
|
|
<table:table-column table:style-name="Table3.A" />
|
|
<table:table-column table:style-name="Table3.B" />
|
|
<table:table-column table:style-name="Table3.C" />
|
|
<table:table-column table:style-name="Table3.D" />
|
|
<table:table-header-rows>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="P9">Right</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Heading">Left</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="P10">Center</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Heading">Default</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table-header-rows>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="P11">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="P12">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">12</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="P11">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="P12">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">123</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="P11">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="P12">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">1</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table>
|
|
<text:p text:style-name="Table">Demonstration of simple table syntax.</text:p>
|
|
<text:p text:style-name="First_20_paragraph">Multiline table with
|
|
caption:</text:p>
|
|
<table:table table:name="Table4" table:style-name="Table4">
|
|
<table:table-column table:style-name="Table4.A" />
|
|
<table:table-column table:style-name="Table4.B" />
|
|
<table:table-column table:style-name="Table4.C" />
|
|
<table:table-column table:style-name="Table4.D" />
|
|
<table:table-header-rows>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="P13">Centered Header</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Heading">Left Aligned</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="P14">Right Aligned</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Heading">Default aligned</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table-header-rows>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="P15">First</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">row</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="P16">12.0</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">Example of a row that spans
|
|
multiple lines.</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="P15">Second</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">row</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="P16">5.0</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">Here's another one. Note the
|
|
blank line between rows.</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table>
|
|
<text:p text:style-name="Table">Here's the caption. It may span multiple
|
|
lines.</text:p>
|
|
<text:p text:style-name="First_20_paragraph">Multiline table without
|
|
caption:</text:p>
|
|
<table:table table:name="Table5" table:style-name="Table5">
|
|
<table:table-column table:style-name="Table5.A" />
|
|
<table:table-column table:style-name="Table5.B" />
|
|
<table:table-column table:style-name="Table5.C" />
|
|
<table:table-column table:style-name="Table5.D" />
|
|
<table:table-header-rows>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="P17">Centered Header</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Heading">Left Aligned</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="P18">Right Aligned</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Heading">Default aligned</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table-header-rows>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="P19">First</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">row</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="P20">12.0</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">Example of a row that spans
|
|
multiple lines.</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="P19">Second</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">row</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="P20">5.0</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table5.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">Here's another one. Note the
|
|
blank line between rows.</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table>
|
|
<text:p text:style-name="First_20_paragraph">Table without column
|
|
headers:</text:p>
|
|
<table:table table:name="Table6" table:style-name="Table6">
|
|
<table:table-column table:style-name="Table6.A" />
|
|
<table:table-column table:style-name="Table6.B" />
|
|
<table:table-column table:style-name="Table6.C" />
|
|
<table:table-column table:style-name="Table6.D" />
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="P24">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="P25">12</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="P26">12</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="P24">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="P25">123</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="P26">123</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="P24">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="P25">1</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table6.A1" office:value-type="string">
|
|
<text:p text:style-name="P26">1</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table>
|
|
<text:p text:style-name="First_20_paragraph">Multiline table without column
|
|
headers:</text:p>
|
|
<table:table table:name="Table7" table:style-name="Table7">
|
|
<table:table-column table:style-name="Table7.A" />
|
|
<table:table-column table:style-name="Table7.B" />
|
|
<table:table-column table:style-name="Table7.C" />
|
|
<table:table-column table:style-name="Table7.D" />
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table7.A1" office:value-type="string">
|
|
<text:p text:style-name="P29">First</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table7.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">row</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table7.A1" office:value-type="string">
|
|
<text:p text:style-name="P30">12.0</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table7.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">Example of a row that spans
|
|
multiple lines.</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
<table:table-row>
|
|
<table:table-cell table:style-name="Table7.A1" office:value-type="string">
|
|
<text:p text:style-name="P29">Second</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table7.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">row</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table7.A1" office:value-type="string">
|
|
<text:p text:style-name="P30">5.0</text:p>
|
|
</table:table-cell>
|
|
<table:table-cell table:style-name="Table7.A1" office:value-type="string">
|
|
<text:p text:style-name="Table_20_Contents">Here's another one. Note the
|
|
blank line between rows.</text:p>
|
|
</table:table-cell>
|
|
</table:table-row>
|
|
</table:table>
|