aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2025-04-05 11:31:35 -0700
committerJohn MacFarlane <[email protected]>2025-04-05 11:32:29 -0700
commit0d2114ee4e3974583ee84e8a4e992562d6502f66 (patch)
tree4c70996d39bb8b31ded1284c467217b0ae47c32a
parent0cf41697c583539d62b1baeaa9cac18c8931866c (diff)
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.
-rw-r--r--src/Text/Pandoc/Writers/Markdown.hs10
-rw-r--r--test/command/10758.md21
2 files changed, 28 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
index c2e7e7f5e..a25e2761a 100644
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -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)]]
diff --git a/test/command/10758.md b/test/command/10758.md
new file mode 100644
index 000000000..885d26413
--- /dev/null
+++ b/test/command/10758.md
@@ -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)
+```