git.iko.soy/typeable/pandoc
on master help sign in
Don't include empty captions in figures.

Closes #581.

commit3f913c0cc504e574ffb2b8fd6f0a460fc606b74d authorJohn MacFarlane <jgm@berkeley.edu> dateSat 4 Aug 2012, 11:34 (14 years ago) parentc19c6fd
6 files changed+32−17
src/Text/Pandoc/Writers/Docbook.hs+6−3 src/Text/Pandoc/Writers/HTML.hs+8−4 src/Text/Pandoc/Writers/LaTeX.hs+4−2 src/Text/Pandoc/Writers/MediaWiki.hs+4−3 src/Text/Pandoc/Writers/Org.hs+5−2 src/Text/Pandoc/Writers/Texinfo.hs+5−3
src/Text/Pandoc/Writers/Docbook.hs+6−3
@@ -145,13 +145,16 @@ blockToDocbook _ Null = empty
145145blockToDocbook _ (Header _ _) = empty -- should not occur after hierarchicalize
146146blockToDocbook opts (Plain lst) = inlinesToDocbook opts lst
147147blockToDocbook opts (Para [Image txt (src,_)]) =
148− let capt = inlinesToDocbook opts txt
148+ let alt = inlinesToDocbook opts txt
149+ capt = if null txt
150+ then empty
151+ else inTagsSimple "title" alt
149152 in inTagsIndented "figure" $
150− inTagsSimple "title" capt $$
153+ capt $$
151154 (inTagsIndented "mediaobject" $
152155 (inTagsIndented "imageobject"
153156 (selfClosingTag "imagedata" [("fileref",src)])) $$
154− inTagsSimple "textobject" (inTagsSimple "phrase" capt))
157+ inTagsSimple "textobject" (inTagsSimple "phrase" alt))
155158blockToDocbook opts (Para lst) =
156159 inTagsIndented "para" $ inlinesToDocbook opts lst
157160blockToDocbook opts (BlockQuote blocks) =
src/Text/Pandoc/Writers/HTML.hs+8−4
@@ -379,13 +379,17 @@ blockToHtml _ Null = return mempty
379379blockToHtml opts (Plain lst) = inlineListToHtml opts lst
380380blockToHtml opts (Para [Image txt (s,tit)]) = do
381381 img <- inlineToHtml opts (Image txt (s,tit))
382− capt <- inlineListToHtml opts txt
382+ let tocapt = if writerHtml5 opts
383+ then H5.figcaption
384+ else H.p ! A.class_ "caption"
385+ capt <- if null txt
386+ then return mempty
387+ else tocapt `fmap` inlineListToHtml opts txt
383388 return $ if writerHtml5 opts
384389 then H5.figure $ mconcat
385− [nl opts, img, H5.figcaption capt, nl opts]
390+ [nl opts, img, capt, nl opts]
386391 else H.div ! A.class_ "figure" $ mconcat
387− [nl opts, img, H.p ! A.class_ "caption" $ capt,
388− nl opts]
392+ [nl opts, img, capt, nl opts]
389393blockToHtml opts (Para lst) = do
390394 contents <- inlineListToHtml opts lst
391395 return $ H.p contents
src/Text/Pandoc/Writers/LaTeX.hs+4−2
@@ -266,10 +266,12 @@ blockToLaTeX :: Block -- ^ Block to convert
266266blockToLaTeX Null = return empty
267267blockToLaTeX (Plain lst) = inlineListToLaTeX lst
268268blockToLaTeX (Para [Image txt (src,tit)]) = do
269− capt <- inlineListToLaTeX txt
269+ capt <- if null txt
270+ then return empty
271+ else (\c -> "\\caption" <> braces c) `fmap` inlineListToLaTeX txt
270272 img <- inlineToLaTeX (Image txt (src,tit))
271273 return $ "\\begin{figure}[htbp]" $$ "\\centering" $$ img $$
272− ("\\caption{" <> capt <> char '}') $$ "\\end{figure}"
274+ capt $$ "\\end{figure}"
273275blockToLaTeX (Para lst) = do
274276 result <- inlineListToLaTeX lst
275277 return result
src/Text/Pandoc/Writers/MediaWiki.hs+4−3
@@ -82,11 +82,12 @@ blockToMediaWiki opts (Plain inlines) =
8282 inlineListToMediaWiki opts inlines
8383
8484blockToMediaWiki opts (Para [Image txt (src,tit)]) = do
85− capt <- inlineListToMediaWiki opts txt
85+ capt <- if null txt
86+ then return ""
87+ else ("|caption " ++) `fmap` inlineListToMediaWiki opts txt
8688 let opt = if null txt
8789 then ""
88− else "|alt=" ++ if null tit then capt else tit ++
89− "|caption " ++ capt
90+ else "|alt=" ++ if null tit then capt else tit ++ capt
9091 return $ "[[Image:" ++ src ++ "|frame|none" ++ opt ++ "]]\n"
9192
9293blockToMediaWiki opts (Para inlines) = do
src/Text/Pandoc/Writers/Org.hs+5−2
@@ -115,9 +115,12 @@ blockToOrg :: Block -- ^ Block element
115115blockToOrg Null = return empty
116116blockToOrg (Plain inlines) = inlineListToOrg inlines
117117blockToOrg (Para [Image txt (src,tit)]) = do
118− capt <- inlineListToOrg txt
118+ capt <- if null txt
119+ then return empty
120+ else (\c -> "#+CAPTION: " <> c <> blankline) `fmap`
121+ inlineListToOrg txt
119122 img <- inlineToOrg (Image txt (src,tit))
120− return $ "#+CAPTION: " <> capt <> blankline <> img
123+ return $ capt <> img
121124blockToOrg (Para inlines) = do
122125 contents <- inlineListToOrg inlines
123126 return $ contents <> blankline
src/Text/Pandoc/Writers/Texinfo.hs+5−3
@@ -117,10 +117,12 @@ blockToTexinfo (Plain lst) =
117117 inlineListToTexinfo lst
118118
119119blockToTexinfo (Para [Image txt (src,tit)]) = do
120− capt <- inlineListToTexinfo txt
120+ capt <- if null txt
121+ then return empty
122+ else (\c -> text "@caption" <> braces c) `fmap`
123+ inlineListToTexinfo txt
121124 img <- inlineToTexinfo (Image txt (src,tit))
122− return $ text "@float" $$ img $$ (text "@caption{" <> capt <> char '}') $$
123− text "@end float"
125+ return $ text "@float" $$ img $$ capt $$ text "@end float"
124126
125127blockToTexinfo (Para lst) =
126128 inlineListToTexinfo lst -- this is handled differently from Plain in blockListToTexinfo