@@ -21,8 +21,10 @@ import Commonmark
2121import Commonmark.Extensions
2222import Commonmark.Pandoc
2323import Data.Text (Text)
24+import qualified Data.Text as T
2425import Text.Pandoc.Class.PandocMonad (PandocMonad)
2526import Text.Pandoc.Definition
27+import Text.Pandoc.Walk (walk)
2628import Text.Pandoc.Builder as B
2729import Text.Pandoc.Options
2830import Text.Pandoc.Error
@@ -36,8 +38,11 @@ readCommonMark opts s = do
3638 commonmarkWith (foldr (<>) defaultSyntaxSpec exts) "input" s
3739 case res of
3840 Left err -> throwError $ PandocParsecError s err
39− Right (Cm bls :: Cm () Blocks) -> return $ B.doc bls
41+ Right (Cm bls :: Cm () Blocks) -> return $ B.doc $ postprocess bls
4042 where
43+ postprocess = if isEnabled Ext_implicit_figures opts
44+ then walk makeImplicitFigure
45+ else id
4146 exts = [ hardLineBreaksSpec | isEnabled Ext_hard_line_breaks opts ] ++
4247 [ smartPunctuationSpec | isEnabled Ext_smart opts ] ++
4348 [ strikethroughSpec | isEnabled Ext_strikeout opts ] ++
@@ -64,3 +69,8 @@ readCommonMark opts s = do
6469 [ definitionListSpec | isEnabled Ext_definition_lists opts ] ++
6570 [ taskListSpec | isEnabled Ext_task_lists opts ]
6671
72+makeImplicitFigure :: Block -> Block
73+makeImplicitFigure (Para [Image attr label (src, tit)])
74+ | not ("fig:" `T.isPrefixOf` tit) =
75+ Para [Image attr label (src, "fig:" <> tit)]
76+makeImplicitFigure x = x