mirror of
https://github.com/jgm/pandoc.git
synced 2026-07-10 19:37:12 +00:00
1c7cfb2a2a
Previously the OpenDocument writer emitted a fresh automatic style (L1..Ln, P1..Pn, T1..Tn) for nearly every list, list-item paragraph, block quote, preformatted block, and inline text style. This produced large ODT files, made `--reference-doc` customization ineffective (the user's predefined styles were never referenced), and gave each list its own indentation independent of any containing block quote. This commit teaches the writer to reference the predefined styles that LibreOffice ships and that pandoc's reference.odt now exports: - Bullet lists use `List_20_1`; ordered lists with default start and decimal format use `Numbering_20_1`. Non-default ordered lists generate a single named override style (`Pandoc_Numbering_N`) memoised by (ListNumberStyle, ListNumberDelim); a non-default start value with the default format is expressed via `text:start-value` on the `text:list` element instead of a new style. - List-item paragraphs use `List_20_Bullet[_Tight]` and `List_20_Number[_Tight]`. The Tight variants are pandoc-specific (zero top/bottom margin) and are injected into the user's reference.odt if missing, just like the Skylighting token styles. - Block quotes use the predefined `Quotations` paragraph style directly. Nested block quotes use a single automatic style that inherits from Quotations and only adds extra margin-left, so a list inside a block quote now inherits its container's indent (#2747). - Preformatted blocks use `Preformatted_20_Text` directly. - Emphasis, Strong, Strikeout, Subscript, Superscript and Code spans use the predefined `Emphasis`, `Strong_20_Emphasis`, `Strikeout`, `Subscript`, `Superscript` and `Source_20_Text` text styles. - `paraStyle`/`paraStyleFromParent` no longer emit a wrapper automatic style when its only attribute would be `parent-style-name`; the parent name is returned directly. Closes #9136. Closes #5086. Closes #2747. Closes #3426. Closes #7336. Co-authored by: Claude Opus 4.7.
14 KiB
14 KiB
% pandoc -f docbook -t native --quiet
<informaltable frame="all" rowsep="1" colsep="1">
<tgroup cols="16">
<colspec colname="col_1" colwidth="6.25*"/>
<colspec colname="col_2" colwidth="6.25*"/>
<colspec colname="col_3" colwidth="6.25*"/>
<colspec colname="col_4" colwidth="6.25*"/>
<colspec colname="col_5" colwidth="6.25*"/>
<colspec colname="col_6" colwidth="6.25*"/>
<colspec colname="col_7" colwidth="6.25*"/>
<colspec colname="col_8" colwidth="6.25*"/>
<colspec colname="col_9" colwidth="6.25*"/>
<colspec colname="col_10" colwidth="6.25*"/>
<colspec colname="col_11" colwidth="6.25*"/>
<colspec colname="col_12" colwidth="6.25*"/>
<colspec colname="col_13" colwidth="6.25*"/>
<colspec colname="col_14" colwidth="6.25*"/>
<colspec colname="col_15" colwidth="6.25*"/>
<colspec colname="col_16" colwidth="6.25*"/>
<tbody>
<row>
<entry align="center" valign="top" namest="col_1" nameend="col_8"><simpara><emphasis role="strong">Octet no. 1</emphasis></simpara></entry>
<entry align="center" valign="top" namest="col_2" nameend="col_9"><simpara><emphasis role="strong">Octet no. 2</emphasis></simpara></entry>
</row>
<row>
<entry align="center" valign="top"><simpara>16</simpara></entry>
<entry align="center" valign="top"><simpara>15</simpara></entry>
<entry align="center" valign="top"><simpara>14</simpara></entry>
<entry align="center" valign="top"><simpara>13</simpara></entry>
<entry align="center" valign="top"><simpara>12</simpara></entry>
<entry align="center" valign="top"><simpara>11</simpara></entry>
<entry align="center" valign="top"><simpara>10</simpara></entry>
<entry align="center" valign="top"><simpara>9</simpara></entry>
<entry align="center" valign="top"><simpara>8</simpara></entry>
<entry align="center" valign="top"><simpara>7</simpara></entry>
<entry align="center" valign="top"><simpara>6</simpara></entry>
<entry align="center" valign="top"><simpara>5</simpara></entry>
<entry align="center" valign="top"><simpara>4</simpara></entry>
<entry align="center" valign="top"><simpara>3</simpara></entry>
<entry align="center" valign="top"><simpara>2</simpara></entry>
<entry align="center" valign="top"><simpara>1</simpara></entry>
</row>
<row>
<entry align="center" valign="top" namest="col_1" nameend="col_8"><simpara>Code A</simpara></entry>
<entry align="center" valign="top" namest="col_2" nameend="col_9"><simpara>Code B</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
^D
[ Table
( "" , [] , [] )
(Caption Nothing [])
[ ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
, ( AlignDefault , ColWidth 6.25e-2 )
]
(TableHead ( "" , [] , [] ) [])
[ TableBody
( "" , [] , [] )
(RowHeadColumns 0)
[]
[ Row
( "" , [] , [] )
[ Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 8)
[ Para
[ Strong
[ Str "Octet"
, Space
, Str "no."
, Space
, Str "1"
]
]
]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 8)
[ Para
[ Strong
[ Str "Octet"
, Space
, Str "no."
, Space
, Str "2"
]
]
]
]
, Row
( "" , [] , [] )
[ Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "16" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "15" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "14" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "13" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "12" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "11" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "10" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "9" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "8" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "7" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "6" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "5" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "4" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "3" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "2" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 1)
[ Para [ Str "1" ] ]
]
, Row
( "" , [] , [] )
[ Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 8)
[ Para [ Str "Code" , Space , Str "A" ] ]
, Cell
( "" , [] , [] )
AlignCenter
(RowSpan 1)
(ColSpan 8)
[ Para [ Str "Code" , Space , Str "B" ] ]
]
]
]
(TableFoot ( "" , [] , [] ) [])
]
% pandoc -f native -t opendocument --quiet
[Table ("",[],[]) (Caption Nothing
[])
[(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)
,(AlignDefault,ColWidth 6.25e-2)]
(TableHead ("",[],[])
[])
[(TableBody ("",[],[]) (RowHeadColumns 0)
[]
[Row ("",[],[])
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
[Para [Strong [Str "Octet",Space,Str "no.",Space,Str "1"]]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
[Para [Strong [Str "Octet",Space,Str "no.",Space,Str "2"]]]]
,Row ("",[],[])
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "16"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "15"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "14"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "13"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "12"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "11"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "10"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "9"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "8"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "7"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "6"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "5"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "4"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "3"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "2"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
[Para [Str "1"]]]
,Row ("",[],[])
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
[Para [Str "Code",Space,Str "A"]]
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
[Para [Str "Code",Space,Str "B"]]]])]
(TableFoot ("",[],[])
[])]
^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-column table:style-name="Table1.D" />
<table:table-column table:style-name="Table1.E" />
<table:table-column table:style-name="Table1.F" />
<table:table-column table:style-name="Table1.G" />
<table:table-column table:style-name="Table1.H" />
<table:table-column table:style-name="Table1.I" />
<table:table-column table:style-name="Table1.J" />
<table:table-column table:style-name="Table1.K" />
<table:table-column table:style-name="Table1.L" />
<table:table-column table:style-name="Table1.M" />
<table:table-column table:style-name="Table1.N" />
<table:table-column table:style-name="Table1.O" />
<table:table-column table:style-name="Table1.P" />
<table:table-row>
<table:table-cell table:style-name="TableRowCell" office:value-type="string" table:number-columns-spanned="8">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="Strong_20_Emphasis">Octet
no. 1</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string" table:number-columns-spanned="8">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="Strong_20_Emphasis">Octet
no. 2</text:span></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">16</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">15</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">14</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">13</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">12</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">11</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">10</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">9</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">8</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">7</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">6</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">5</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">4</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">3</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">2</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string">
<text:p text:style-name="Table_20_Contents">1</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="8">
<text:p text:style-name="Table_20_Contents">Code A</text:p>
</table:table-cell>
<table:table-cell table:style-name="TableRowCell" office:value-type="string" table:number-columns-spanned="8">
<text:p text:style-name="Table_20_Contents">Code B</text:p>
</table:table-cell>
</table:table-row>
</table:table>