You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:15:02