diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2023-12-22 11:14:09 -0800 |
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2023-12-22 11:14:09 -0800 |
| commit | 81521cee0da35a76a1181e06b83775ba2f94d295 (patch) | |
| tree | f49f2e5890c5a26faea5c551546e505b94c03e3f | |
| parent | 36d1ec3e45fae278525a0a4cfc5465e4677fe61e (diff) | |
Markdown writer: add table identifier at end of caption if present.
Suggested at #9279.
| -rw-r--r-- | src/Text/Pandoc/Writers/Markdown.hs | 13 | ||||
| -rw-r--r-- | test/command/9279.md | 71 |
2 files changed, 79 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs index 877e54b72..6338a90cd 100644 --- a/src/Text/Pandoc/Writers/Markdown.hs +++ b/src/Text/Pandoc/Writers/Markdown.hs @@ -590,16 +590,19 @@ blockToMarkdown' opts (BlockQuote blocks) = do | otherwise = "> " contents <- blockListToMarkdown opts blocks return $ prefixed leader contents <> blankline -blockToMarkdown' opts t@(Table _ blkCapt specs thead tbody tfoot) = do +blockToMarkdown' opts t@(Table (ident,_,_) blkCapt specs thead tbody tfoot) = do let (caption, aligns, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot let numcols = maximum (length aligns :| length widths : map length (headers:rows)) caption' <- inlineListToMarkdown opts caption - let caption'' + let caption'' = if T.null ident + then caption' + else caption' <+> attrsToMarkdown opts (ident,[],[]) + let caption''' | null caption = blankline | isEnabled Ext_table_captions opts - = blankline $$ (": " <> caption') $$ blankline - | otherwise = blankline $$ caption' $$ blankline + = blankline $$ (": " <> caption'') $$ blankline + | otherwise = blankline $$ caption'' $$ blankline let hasSimpleCells = onlySimpleTableCells $ headers : rows let isSimple = hasSimpleCells && all (==0) widths let isPlainBlock (Plain _) = True @@ -652,7 +655,7 @@ blockToMarkdown' opts t@(Table _ blkCapt specs thead tbody tfoot) = do literal . removeBlankLinesInHTML <$> writeHtml5String opts{ writerTemplate = Nothing } (Pandoc nullMeta [t]) | otherwise -> return (id, literal "[TABLE]") - return $ nst (tbl $$ caption'') $$ blankline + return $ nst (tbl $$ caption''') $$ blankline blockToMarkdown' opts (BulletList items) = do contents <- inList $ mapM (bulletListItemToMarkdown opts) items return $ (if isTightList items then vcat else vsep) diff --git a/test/command/9279.md b/test/command/9279.md index 1c93eda80..26d30af51 100644 --- a/test/command/9279.md +++ b/test/command/9279.md @@ -58,3 +58,74 @@ (TableFoot ( "" , [] , [] ) []) ] ``` + +``` +% pandoc -f org -t markdown +#+LABEL: tbl:Cosasexample +#+CAPTION: Cosas ++-------+-------+ +| cosas | cosas | +| cosas | cosas | ++=======+=======+ +| cosas | cosas | +| cosas | cosas | ++-------+-------+ +^D + --------------- + cosas cosas + cosas cosas + ------- ------- + cosas cosas + cosas cosas + + --------------- + + : Cosas {#tbl:Cosasexample} + +``` + +``` +% pandoc -f org -t markdown +#+LABEL: tbl:Cosasexample ++-------+-------+ +| cosas | cosas | +| cosas | cosas | ++=======+=======+ +| cosas | cosas | +| cosas | cosas | ++-------+-------+ +^D + --------------- + cosas cosas + cosas cosas + ------- ------- + cosas cosas + cosas cosas + + --------------- + +``` + +``` +% pandoc -f org -t markdown +#+CAPTION: Cosas ++-------+-------+ +| cosas | cosas | +| cosas | cosas | ++=======+=======+ +| cosas | cosas | +| cosas | cosas | ++-------+-------+ +^D + --------------- + cosas cosas + cosas cosas + ------- ------- + cosas cosas + cosas cosas + + --------------- + + : Cosas + +``` |
