Markdown writer: improve use of implicit figures when possible.

Closes #10758.

When the alt differs from the caption, but only as regards
formatting, we still use an implicit figure.
This commit is contained in:
John MacFarlane
2025-04-05 11:31:35 -07:00
parent 0cf41697c5
commit 0d2114ee4e
2 changed files with 28 additions and 3 deletions
+7 -3
View File
@@ -709,16 +709,20 @@ blockToMarkdown' opts (DefinitionList items) = do
return $ mconcat contents <> blankline
blockToMarkdown' opts (Figure figattr capt body) = do
let combinedAttr imgattr = case imgattr of
("", cls, kv) | (figid, [], []) <- figattr -> Just (figid, cls, kv)
("", cls, kv)
| (figid, [], []) <- figattr -> Just (figid, cls, kv)
| otherwise -> Just ("", cls, kv)
_ -> Nothing
let combinedAlt alt = case capt of
Caption Nothing [] -> if null alt
then Just [Str "image"]
else Just alt
Caption Nothing [Plain captInlines]
| captInlines == alt || null alt -> Just captInlines
| null alt || stringify captInlines == stringify alt
-> Just captInlines
Caption Nothing [Para captInlines]
| captInlines == alt || null alt -> Just captInlines
| null alt || stringify captInlines == stringify alt
-> Just captInlines
_ -> Nothing
case body of
[Plain [Image imgAttr alt (src, ttl)]]
+21
View File
@@ -0,0 +1,21 @@
```
% pandoc -f native -t markdown
[ Figure
( "" , [] , [] )
(Caption
Nothing
[ Para [ Str "Foo" , Space , Emph [ Str "emphasis" ] ] ])
[ Plain
[ Image
( ""
, []
, []
)
[ Str "Foo" , Space , Str "emphasis" ]
( "media/rId20.jpg" , "" )
]
]
]
^D
![Foo *emphasis*](media/rId20.jpg)
```