【发布时间】:2021-04-14 23:42:50
【问题描述】:
我一直在使用 pandoc 可执行文件将 Markdown 文件转换为手册页
pandoc -f markdown -s -t man foo.1.md -o foo.1
而且它一直在发挥作用。但是,为了组织起见,我决定将降价源分成多个文件,以便我可以组合特定的部分来生成多个手册页。我认为(对于我的用例)最简单的方法是直接使用 pandoc 库;但是,我什至在努力重新创建上述功能。我假设以下内容可以做到这一点:
{-# LANGUAGE OverloadedStrings #-}
import Data.Default
import qualified Data.Text.IO as TIO
import Text.Pandoc
main :: IO ()
main = do
input <- TIO.readFile "foo.1.md"
res <- runIOorExplode $
readMarkdown (def { readerExtensions = pandocExtensions, readerStandalone = True }) input >>=
writeMan (def { writerExtensions = getDefaultExtensions "man" })
TIO.writeFile "foo.1" res
但是,这几乎丢失了 cli 调用保留的所有格式。
即使查看黑线鳕并简要浏览源代码,我也不明白 cli 调用将哪些选项传递给 readMarkdown 和 writeMan 函数。如果我花时间消化Text.Pandoc.App 的源代码,也许我可以理解这一点,但我希望这里的某个人可以通过直接告诉我应该做些什么不同的事情,或者通过指出我来节省我一些时间和精力相关的代码块。
注意:我还尝试设置 readerExtensions = getDefaultExtensions "markdown" 并放弃 readerStandalone 选项。
提前致谢!
编辑:在玩了更多之后,我意识到了这个问题。 Pandoc 实际上并没有吃掉大量的格式。问题是 pandoc 没有生成 roff 手册页顶部所需的 .TH 块(因此 man -l ./foo.1 没有呈现实际存在的格式)。
目前,我的降价文件以
% FOO(1) foo 0.1.0.0
% Mark Down
% Today
cli 调用正确转换成的内容
.TH "FOO" "1" "Today" "foo 0.1.0.0" ""
并将作者信用放在最后。
所以我想我的问题是:我需要将哪些选项传递给readMarkdown 或writeMan 才能正确解析这个“标题”?
我已经测试了各种似乎无济于事的选项/扩展。
【问题讨论】: