PanDoc:如何为html title标签的内容分配一级Atx样式标题(markdown)

时间:2015-05-29 16:20:07

标签: html markdown pandoc

我正在使用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标签我想解析,我认为解决这个问题会帮助我解决剩下的问题。

1 个答案:

答案 0 :(得分:1)

我不相信Pandoc支持这种开箱即用的功能。 Pandoc documentation的相关部分指出:

  

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

中的字符串$title$
<title>$title$</title>
     

将替换为文档标题。

然后继续:

  

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

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

文档指出:

  

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

所以你有几个选择:

  1. 编辑每个文档以添加定义每个文档标题的元数据(这可能是脚本化的。)
  2. 编写脚本以提取标题(可能是在第一行中查找#header的正则表达式)并将其作为命令行选项传递给Pandoc。
  3. 如果您打算在未来创建的新文档中包含元数据,那么第一个选项可能就是您的选择。运行一次脚本批量编辑文档然后完成。但是,如果您无意向任何文档添加元数据,我会考虑第二个选项。你已经在运行一个循环了,所以在你的循环中调用Pandoc之前得到标题(尽管我不知道如何在windows脚本中这样做)。