diff options
author | John MacFarlane <jgm@berkeley.edu> | 2021-09-12 15:30:29 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2021-09-12 15:30:29 -0700 |
commit | 6271b09c50444b107d8595f553700fa382718246 (patch) | |
tree | 04bff4b8966f96742c5253fc20f56563828d5098 | |
parent | d43f9cf4146400721cf8dca15a411c2ecc1342fb (diff) | |
download | pandoc-6271b09c50444b107d8595f553700fa382718246.tar.gz |
Docx writer: make id used in native_numbering predictable.
If the image has the id IMAGEID, then we use the id ref_IMAGEID
for the figure number. Closes #7551.
This allows one to create a filter that adds a figure number
with figure name, e.g.
<w:fldSimple w:instr=" REF ref_superfig "><w:r><w:t>Figure X</w:t></w:r></w:fldSimple>
For this to be possible it must be possible to predict the
figure number id from the image id.
If images lack an id, an id of the form `ref_fig1` is used.
-rw-r--r-- | src/Text/Pandoc/Writers/Docx.hs | 9 | ||||
-rw-r--r-- | test/docx/golden/image.docx | bin | 26811 -> 26816 bytes |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs index 78d0840a4..686a2f662 100644 --- a/src/Text/Pandoc/Writers/Docx.hs +++ b/src/Text/Pandoc/Writers/Docx.hs @@ -854,11 +854,14 @@ blockToOpenXML' opts (Plain lst) = do then withParaProp prop block else block -- title beginning with fig: indicates that the image is a figure -blockToOpenXML' opts (Para [Image attr alt (src,T.stripPrefix "fig:" -> Just tit)]) = do +blockToOpenXML' opts (Para [Image attr@(imgident,_,_) alt + (src,T.stripPrefix "fig:" -> Just tit)]) = do setFirstPara fignum <- gets stNextFigureNum unless (null alt) $ modify $ \st -> st{ stNextFigureNum = fignum + 1 } - let figid = "fig" <> tshow fignum + let refid = if T.null imgident + then "ref_fig" <> tshow fignum + else "ref_" <> imgident figname <- translateTerm Term.Figure prop <- pStyleM $ if null alt @@ -872,7 +875,7 @@ blockToOpenXML' opts (Para [Image attr alt (src,T.stripPrefix "fig:" -> Just tit $ blockToOpenXML opts $ Para $ if isEnabled Ext_native_numbering opts - then Span (figid,[],[]) + then Span (refid,[],[]) [Str (figname <> "\160"), RawInline (Format "openxml") ("<w:fldSimple w:instr=\"SEQ Figure" diff --git a/test/docx/golden/image.docx b/test/docx/golden/image.docx Binary files differindex a84eed100..4e61790a5 100644 --- a/test/docx/golden/image.docx +++ b/test/docx/golden/image.docx |