aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2021-09-12 15:30:29 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2021-09-12 15:30:29 -0700
commit6271b09c50444b107d8595f553700fa382718246 (patch)
tree04bff4b8966f96742c5253fc20f56563828d5098
parentd43f9cf4146400721cf8dca15a411c2ecc1342fb (diff)
downloadpandoc-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.hs9
-rw-r--r--test/docx/golden/image.docxbin26811 -> 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
index a84eed100..4e61790a5 100644
--- a/test/docx/golden/image.docx
+++ b/test/docx/golden/image.docx
Binary files differ