如何调整Text.Pandoc.Writers.writeMarkdown函数的输出格式?
解决方案
可以通过调整writeMarkdown的参数实现你提出的两个需求,具体配置如下:
1. 移除短横线与文本间的空格
Pandoc的MarkdownWriterOptions中的listItemIndent字段控制列表标记与文本之间的缩进。将其设置为ListItemIndentNone,即可移除短横线后的空格,让标记直接衔接文本。
2. 移除输出中的短横线
通过修改listItemMarkers字段,将各级无序列表的标记设置为空字符串,就能完全去掉输出里的短横线。该字段是一个字符串列表,对应不同层级的无序列表标记(默认是["-", "*", "+"])。
修改后的Haskell源码
{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} module Main where import Control.Monad import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as LB import Data.Text.Encoding import qualified Data.Text.IO as TIO import Text.Pandoc xmlString :: LB.ByteString xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <html> <head> <meta charset=\"utf-8\"/> </head> <body> <ul id=\"a8_boYDC\"> <li id=\"rp\"> <p>\"Alpha\"</p> <ul> <li id=\"cT\"> <p>\"Beta\"</p> <ul> <li id=\"wy\"> <p>\"Gamma\"</p> </li> <li id=\"Be\"> <p>\"Delta\"</p> </li> <li id=\"Ep\"> <p>\"Epsilon\"</p> </li> </ul> </li> <li id=\"Ko\"> <p>\"Zeta\"</p> <ul> <li id=\"AI\"> <p>Eta</p> </li> </ul> </li> <li id=\"kw\"> <p>\"Theta\"</p> <ul> <li id=\"sx\"> <p>\"Iota\"</p> </li> <li id=\"82\"> <p>\"Kappa\"</p> </li> <li id=\"o_\"> <p>\"Lambda\"</p> </li> </ul> </li> </ul> </li> </ul> </body> </html> " main :: IO () main = TIO.putStr <=< handleError <=< runIO . ( writeMarkdown mdOpts <=< readHtml def . decodeUtf8 . B.toStrict ) $ xmlString where mdOpts = def { listItemIndent = ListItemIndentNone , listItemMarkers = ["", "", ""] }
修改后的输出
"Alpha" "Beta" "Gamma" "Delta" "Epsilon" "Zeta" "Eta" "Theta" "Iota" "Kappa" "Lambda"
内容的提问来源于stack exchange,提问作者F. Zer
相关产品推荐
相关产品推荐

