git.iko.soy/typeable/pandoc
on master help sign in
Don't include empty captions in figures.
3f913c0John MacFarlane
src/Text/Pandoc/Writers/Docbook.hs+6−3
@@ -145,13 +145,16 @@ blockToDocbook _ Null = empty
145blockToDocbook _ (Header _ _) = empty -- should not occur after hierarchicalize
145blockToDocbook _ (Header _ _) = empty -- should not occur after hierarchicalize
146blockToDocbook opts (Plain lst) = inlinesToDocbook opts lst
146blockToDocbook opts (Plain lst) = inlinesToDocbook opts lst
147blockToDocbook opts (Para [Image txt (src,_)]) =
147blockToDocbook 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
149 in inTagsIndented "figure" $
152 in inTagsIndented "figure" $
150− inTagsSimple "title" capt $$
153+ capt $$
151 (inTagsIndented "mediaobject" $
154 (inTagsIndented "mediaobject" $
152 (inTagsIndented "imageobject"
155 (inTagsIndented "imageobject"
153 (selfClosingTag "imagedata" [("fileref",src)])) $$
156 (selfClosingTag "imagedata" [("fileref",src)])) $$
154− inTagsSimple "textobject" (inTagsSimple "phrase" capt))
157+ inTagsSimple "textobject" (inTagsSimple "phrase" alt))
155blockToDocbook opts (Para lst) =
158blockToDocbook opts (Para lst) =
156 inTagsIndented "para" $ inlinesToDocbook opts lst
159 inTagsIndented "para" $ inlinesToDocbook opts lst
157blockToDocbook opts (BlockQuote blocks) =
160blockToDocbook opts (BlockQuote blocks) =
src/Text/Pandoc/Writers/HTML.hs+8−4
@@ -379,13 +379,17 @@ blockToHtml _ Null = return mempty
379blockToHtml opts (Plain lst) = inlineListToHtml opts lst
379blockToHtml opts (Plain lst) = inlineListToHtml opts lst
380blockToHtml opts (Para [Image txt (s,tit)]) = do
380blockToHtml opts (Para [Image txt (s,tit)]) = do
381 img <- inlineToHtml opts (Image txt (s,tit))
381 img <- inlineToHtml opts (Image txt (s,tit))
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
382− capt <- inlineListToHtml opts txt
387+ else tocapt `fmap` inlineListToHtml opts txt
383 return $ if writerHtml5 opts
388 return $ if writerHtml5 opts
384 then H5.figure $ mconcat
389 then H5.figure $ mconcat
385− [nl opts, img, H5.figcaption capt, nl opts]
390+ [nl opts, img, capt, nl opts]
386 else H.div ! A.class_ "figure" $ mconcat
391 else H.div ! A.class_ "figure" $ mconcat
387− [nl opts, img, H.p ! A.class_ "caption" $ capt,
392+ [nl opts, img, capt, nl opts]
388− nl opts]
389blockToHtml opts (Para lst) = do
393blockToHtml opts (Para lst) = do
390 contents <- inlineListToHtml opts lst
394 contents <- inlineListToHtml opts lst
391 return $ H.p contents
395 return $ H.p contents
src/Text/Pandoc/Writers/LaTeX.hs+4−2
@@ -266,10 +266,12 @@ blockToLaTeX :: Block -- ^ Block to convert
266blockToLaTeX Null = return empty
266blockToLaTeX Null = return empty
267blockToLaTeX (Plain lst) = inlineListToLaTeX lst
267blockToLaTeX (Plain lst) = inlineListToLaTeX lst
268blockToLaTeX (Para [Image txt (src,tit)]) = do
268blockToLaTeX (Para [Image txt (src,tit)]) = do
269+ capt <- if null txt
270+ then return empty
269− capt <- inlineListToLaTeX txt
271+ else (\c -> "\\caption" <> braces c) `fmap` inlineListToLaTeX txt
270 img <- inlineToLaTeX (Image txt (src,tit))
272 img <- inlineToLaTeX (Image txt (src,tit))
271 return $ "\\begin{figure}[htbp]" $$ "\\centering" $$ img $$
273 return $ "\\begin{figure}[htbp]" $$ "\\centering" $$ img $$
272− ("\\caption{" <> capt <> char '}') $$ "\\end{figure}"
274+ capt $$ "\\end{figure}"
273blockToLaTeX (Para lst) = do
275blockToLaTeX (Para lst) = do
274 result <- inlineListToLaTeX lst
276 result <- inlineListToLaTeX lst
275 return result
277 return result
src/Text/Pandoc/Writers/MediaWiki.hs+4−3
@@ -82,11 +82,12 @@ blockToMediaWiki opts (Plain inlines) =
82 inlineListToMediaWiki opts inlines
82 inlineListToMediaWiki opts inlines
83
83
84blockToMediaWiki opts (Para [Image txt (src,tit)]) = do
84blockToMediaWiki opts (Para [Image txt (src,tit)]) = do
85+ capt <- if null txt
86+ then return ""
85− capt <- inlineListToMediaWiki opts txt
87+ else ("|caption " ++) `fmap` inlineListToMediaWiki opts txt
86 let opt = if null txt
88 let opt = if null txt
87 then ""
89 then ""
88− else "|alt=" ++ if null tit then capt else tit ++
90+ else "|alt=" ++ if null tit then capt else tit ++ capt
89− "|caption " ++ capt
90 return $ "[[Image:" ++ src ++ "|frame|none" ++ opt ++ "]]\n"
91 return $ "[[Image:" ++ src ++ "|frame|none" ++ opt ++ "]]\n"
91
92
92blockToMediaWiki opts (Para inlines) = do
93blockToMediaWiki opts (Para inlines) = do
src/Text/Pandoc/Writers/Org.hs+5−2
@@ -115,9 +115,12 @@ blockToOrg :: Block -- ^ Block element
115blockToOrg Null = return empty
115blockToOrg Null = return empty
116blockToOrg (Plain inlines) = inlineListToOrg inlines
116blockToOrg (Plain inlines) = inlineListToOrg inlines
117blockToOrg (Para [Image txt (src,tit)]) = do
117blockToOrg (Para [Image txt (src,tit)]) = do
118+ capt <- if null txt
119+ then return empty
120+ else (\c -> "#+CAPTION: " <> c <> blankline) `fmap`
118− capt <- inlineListToOrg txt
121+ inlineListToOrg txt
119 img <- inlineToOrg (Image txt (src,tit))
122 img <- inlineToOrg (Image txt (src,tit))
120− return $ "#+CAPTION: " <> capt <> blankline <> img
123+ return $ capt <> img
121blockToOrg (Para inlines) = do
124blockToOrg (Para inlines) = do
122 contents <- inlineListToOrg inlines
125 contents <- inlineListToOrg inlines
123 return $ contents <> blankline
126 return $ contents <> blankline
src/Text/Pandoc/Writers/Texinfo.hs+5−3
@@ -117,10 +117,12 @@ blockToTexinfo (Plain lst) =
117 inlineListToTexinfo lst
117 inlineListToTexinfo lst
118
118
119blockToTexinfo (Para [Image txt (src,tit)]) = do
119blockToTexinfo (Para [Image txt (src,tit)]) = do
120+ capt <- if null txt
121+ then return empty
122+ else (\c -> text "@caption" <> braces c) `fmap`
120− capt <- inlineListToTexinfo txt
123+ inlineListToTexinfo txt
121 img <- inlineToTexinfo (Image txt (src,tit))
124 img <- inlineToTexinfo (Image txt (src,tit))
122− return $ text "@float" $$ img $$ (text "@caption{" <> capt <> char '}') $$
125+ return $ text "@float" $$ img $$ capt $$ text "@end float"
123− text "@end float"
124
126
125blockToTexinfo (Para lst) =
127blockToTexinfo (Para lst) =
126 inlineListToTexinfo lst -- this is handled differently from Plain in blockListToTexinfo
128 inlineListToTexinfo lst -- this is handled differently from Plain in blockListToTexinfo