diff --git a/MANUAL.txt b/MANUAL.txt index c9ff7bea5..9ce2d528d 100644 --- a/MANUAL.txt +++ b/MANUAL.txt @@ -2361,6 +2361,16 @@ input formats output formats : `docx`, `odt`, `opendocument`, `html` +#### Extension: `native_numbering` #### + +Enables native numbering of figures and tables. Enumeration +starts at 1. + +This extension can be enabled/disabled for the following formats: + +output formats +: `odt`, `opendocument` + #### Extension: `styles` #### {#ext-styles} When converting from docx, read all docx styles as divs (for diff --git a/src/Text/Pandoc/Extensions.hs b/src/Text/Pandoc/Extensions.hs index 121b60e7b..4d85eb2e6 100644 --- a/src/Text/Pandoc/Extensions.hs +++ b/src/Text/Pandoc/Extensions.hs @@ -132,6 +132,7 @@ data Extension = | Ext_multiline_tables -- ^ Pandoc-style multiline tables | Ext_native_divs -- ^ Use Div blocks for contents of <div> tags | Ext_native_spans -- ^ Use Span inlines for contents of <span> + | Ext_native_numbering -- ^ Use output format's native numbering for figures and tables | Ext_ntb -- ^ ConTeXt Natural Tables | Ext_old_dashes -- ^ -- = em, - before number = en | Ext_pandoc_title_block -- ^ Pandoc title block diff --git a/src/Text/Pandoc/Writers/OpenDocument.hs b/src/Text/Pandoc/Writers/OpenDocument.hs index 3da778ae9..7a3aa4973 100644 --- a/src/Text/Pandoc/Writers/OpenDocument.hs +++ b/src/Text/Pandoc/Writers/OpenDocument.hs @@ -397,9 +397,9 @@ blockToOpenDocument o bs captionDoc <- if null c then return empty else inlinesToOpenDocument o c >>= - if True -- temporary: see #5474 - then unNumberedCaption "TableCaption" - else numberedTableCaption + if isEnabled Ext_native_numbering o + then numberedTableCaption + else unNumberedCaption "TableCaption" th <- if all null h then return empty else colHeadsToOpenDocument o (map fst paraHStyles) h @@ -412,9 +412,9 @@ blockToOpenDocument o bs | otherwise = do imageDoc <- withParagraphStyle o "FigureWithCaption" [Para [Image attr caption (source,title)]] captionDoc <- inlinesToOpenDocument o caption >>= - if True -- temporary: see #5474 - then unNumberedCaption "FigureCaption" - else numberedFigureCaption + if isEnabled Ext_native_numbering o + then numberedFigureCaption + else unNumberedCaption "FigureCaption" return $ imageDoc $$ captionDoc @@ -423,7 +423,7 @@ numberedTableCaption caption = do id' <- gets stTableCaptionId modify (\st -> st{ stTableCaptionId = id' + 1 }) capterm <- translateTerm Term.Table - return $ numberedCaption "Table" capterm "Table" id' caption + return $ numberedCaption "TableCaption" capterm "Table" id' caption numberedFigureCaption :: PandocMonad m => Doc Text -> OD m (Doc Text) numberedFigureCaption caption = do diff --git a/test/command/5474-figures.md b/test/command/5474-figures.md new file mode 100644 index 000000000..915bf3434 --- /dev/null +++ b/test/command/5474-figures.md @@ -0,0 +1,15 @@ +``` +% pandoc -t opendocument+native_numbering + + + + + +^D +<text:p text:style-name="FigureWithCaption"><draw:frame draw:name="img1"><draw:image xlink:href="lalune.jpg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" /></draw:frame></text:p> +<text:p text:style-name="FigureCaption">Figure <text:sequence text:ref-name="refIllustration0" text:name="Illustration" text:formula="ooow:Illustration+1" style:num-format="1">1</text:sequence>: First +image</text:p> +<text:p text:style-name="FigureWithCaption"><draw:frame draw:name="img2"><draw:image xlink:href="lalune.jpg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" /></draw:frame></text:p> +<text:p text:style-name="FigureCaption">Figure <text:sequence text:ref-name="refIllustration1" text:name="Illustration" text:formula="ooow:Illustration+1" style:num-format="1">2</text:sequence>: Second +image</text:p> +``` diff --git a/test/command/5474-tables.md b/test/command/5474-tables.md new file mode 100644 index 000000000..3bd4f81e9 --- /dev/null +++ b/test/command/5474-tables.md @@ -0,0 +1,63 @@ +``` +% pandoc -t opendocument+native_numbering + Right Left +------- ------ + 12 11 + +: First table + + Right Left +------- ------ + 13 14 + +: Second Table +^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-header-rows> + <table:table-row> + <table:table-cell table:style-name="TableHeaderRowCell" office:value-type="string"> + <text:p text:style-name="P1">Right</text:p> + </table:table-cell> + <table:table-cell table:style-name="TableHeaderRowCell" office:value-type="string"> + <text:p text:style-name="Table_20_Heading">Left</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="P2">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-row> +</table:table> +<text:p text:style-name="TableCaption">Table <text:sequence text:ref-name="refTable0" text:name="Table" text:formula="ooow:Table+1" style:num-format="1">1</text:sequence>: First +table</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-header-rows> + <table:table-row> + <table:table-cell table:style-name="TableHeaderRowCell" office:value-type="string"> + <text:p text:style-name="P3">Right</text:p> + </table:table-cell> + <table:table-cell table:style-name="TableHeaderRowCell" office:value-type="string"> + <text:p text:style-name="Table_20_Heading">Left</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="P4">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">14</text:p> + </table:table-cell> + </table:table-row> +</table:table> +<text:p text:style-name="TableCaption">Table <text:sequence text:ref-name="refTable1" text:name="Table" text:formula="ooow:Table+1" style:num-format="1">2</text:sequence>: Second +Table</text:p> +```