PanDoc:如何将 level-one Atx-style header (markdown) 分配给 html 标题标签的内容

PanDoc: How to assign level-one Atx-style header (markdown) to the contents of html title tag

我正在使用 PanDoc 将大量降价 (.md) 文件转换为 html。我正在使用以下 Windows command-line:

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 标签,我认为解决这个问题将帮助我解决其余问题。

我认为 Pandoc 不支持这个 out-of-the-box。 Pandoc documentation 的相关部分指出:

Templates may contain variables. Variable names are sequences of alphanumerics, -, and _, starting with a letter. A variable name surrounded by $ signs will be replaced by its value. For example, the string $title$ in

<title>$title$</title>

will be replaced by the document title.

然后继续:

Some variables are set automatically by pandoc. These vary somewhat depending on the output format, but include metadata fields (such as title, author, and date) as well as the following:

并继续列出一堆变量(none 其中与您的问题相关)。但是,上面的引用表明 title 变量是一个元数据字段。元数据字段可以在 pandoc_title_block, a yaml_metadata_block, or passed in as a command line option.

中定义

文档指出:

... you may also keep the metadata in a separate YAML file and pass it to pandoc as an argument, along with your markdown files ...

所以你有几个选择:

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

如果您打算开始在您创建的新文档中包含元数据,那么第一个选项可能是可行的方法。 运行 一次脚本即可批量编辑您的文档,然后就完成了。但是,如果您无意向任何文档添加元数据,我会考虑第二种选择。你已经 运行 一个循环,所以在你的循环中调用 Pandoc 之前获取标题(尽管我不确定如何在 windows 脚本中做到这一点)。