【问题标题】:PanDoc: How to assign level-one Atx-style header (markdown) to the contents of html title tagPanDoc:如何将一级 Atx 样式标头(降价)分配给 html 标题标签的内容
【发布时间】:2015-08-12 14:33:00
【问题描述】:

我正在使用 PanDoc 将大量的 markdown (.md) 文件转换为 html。我正在使用以下 Windows 命令行:

for %%i in (*.md) do pandoc -f markdown -s %%~ni.md > html/%%~ni.html

在测试运行时,html 看起来不错,除了标题标签 - 它是空的。以下是 .md 文件开头的示例:

#Topic Title
- [Anchor 1](#anchor1)
- [Anchor 2](#anchor2)
<a name="anchor1"></a>
## Anchor 1

有没有办法让 PanDoc 解析

#Topic Title

这样,在 html 输出文件中,我会得到:

<title>Topic Title</title>

?

我还想解析其他 .md 标签,我认为解决这个问题将帮助我解决剩下的问题。

【问题讨论】:

    标签: html markdown pandoc


    【解决方案1】:

    我不相信 Pandoc 支持这种开箱即用的方式。 Pandoc documentation 的相关部分声明:

    模板可能包含变量。变量名称是字母数字序列,-_,以字母开头。由$ 符号包围的变量名将被其值替换。例如,字符串$title$ in

    <title>$title$</title>
    

    将替换为文档标题。

    然后继续:

    一些变量是由 pandoc 自动设置的。这些根据输出格式而有所不同,但包括元数据字段(例如标题、作者和日期)以及以下内容:

    然后继续列出一堆变量(其中没有一个与您的问题相关)。但是,上面的引用表明title 变量是一个元数据字段。元数据字段可以在pandoc_title_blockyaml_metadata_block 中定义,或作为command line option 传入。

    文档指出:

    ...您也可以将元数据保存在单独的 YAML 文件中,并将其作为参数传递给 pandoc,以及您的降价文件...

    所以你有几个选择:

    1. 编辑每个文档以添加定义每个文档标题的元数据(这可能是脚本)。
    2. 编写脚本以提取标题(可能是一个正则表达式,在第一行中查找 #header)并将其作为命令行选项传递给 Pandoc。

    如果您打算开始在您创建的新文档中包含元数据,那么第一个选项可能是要走的路。运行一次脚本以批量编辑您的文档,然后您就完成了。但是,如果您不打算将元数据添加到任何文档中,我会考虑第二种选择。您已经在运行一个循环,因此只需在循环中调用 Pandoc 之前获取标题(尽管我不确定如何在 Windows 脚本中执行此操作)。

    【讨论】:

    • 感谢您的回复。我在文档上花了很多时间,我担心我会得到这个确切的答案,但希望我错过了一个“技巧”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2019-11-06
    • 2018-12-15
    • 1970-01-01
    相关资源
    最近更新 更多