Markdown 将多个章节缝合在一起,每个章节都有%的页眉
我有一些标记文件,每个文件都使用Markdown 将多个章节缝合在一起,每个章节都有%的页眉,markdown,pandoc,Markdown,Pandoc,我有一些标记文件,每个文件都使用%语法来设置它们的标题,例如 % A nice chapter Lorum ipsum .... # First section Blah blah 如果我把它们一个接一个地编译成HTML,这些章节标题就会变成页面标题,这正是我想要的 但是,我想使用相同的输入文件也生成一个PDF,其中包含一个目录。所以我试过了 $ pandoc --toc -o full.pdf a.md b.md 然而,这一结果与我所希望的完全不同: 第一个文件(a.md)中的%标
%
语法来设置它们的标题,例如
% A nice chapter
Lorum ipsum ....
# First section
Blah blah
如果我把它们一个接一个地编译成HTML,这些章节标题就会变成页面标题,这正是我想要的
但是,我想使用相同的输入文件也生成一个PDF,其中包含一个目录。所以我试过了
$ pandoc --toc -o full.pdf a.md b.md
然而,这一结果与我所希望的完全不同:
- 第一个文件(
)中的a.md
标题将成为文档标题%
- 忽略后续的
标题%
标题在TOC中显示为章节标题,但它们看起来一点都不像章节(它们甚至不从新页面开始)#
如何将包含章节的降价文件组合到一本书中?潘多克的
%
语法实际上是用于。Pandoc每次转换只对一个文档进行操作(因此,如果您有多个输入文件,它们基本上会在处理之前进行连接)
您可以改为使用标题:
# title one
连同设置为章节
甚至部分
:
pandoc --top-level-division=chapter --toc -o full.pdf a.md b.md
@mb21的建议是对章节标题使用
#
,即将所有内容移动一个级别。有了它,pandoc--top-level division=chapter--toc
确实做了正确的事情,但是同样的文件不能很好地与HTML后端配合使用:如果我没有%
标题,它会抱怨
[WARNING] This document format requires a nonempty <title> element.
Please specify either 'title' or 'pagetitle' in the metadata,
e.g. by using --metadata pagetitle="..." on the command line.
Falling back to 'a'
第一行遍历每个输入.md
文件,并将其转换为:
- 确保每章标题位于新段落上
- 将每个
标题向下移动一个,即将#
转换为#
,##
转换为##
等等##
- 将
标题替换为%
#
然后,将所有转换后的标记文件的串联作为单个输入传递给Pandoc。这对HTML输出不起作用,不过:“[警告]此文档格式需要一个非空的
元素。请在元数据中指定标题
或页面标题
,例如,在命令行上使用--metadata pagetitle=“…”
。。这将是图书标题,您可以在第一章(或命令行)上设置。另请参见--shift heading level by
选项…我指的是每章的HTML输出。请参阅我的最终解决方案,该解决方案合并了您的,但保留了独立的章节文件以使用%
。请注意,这并不能很好地处理第一列包含#
的代码块的情况,例如带有注释的shell脚本。
RetroClash.pdf: $(MARKDOWNS)
($(foreach MARKDOWN, $^, sed -e '$$a\\' -e 's/^#/##/' -e 's/^% /# /' $(MARKDOWN);)) | \
pandoc --top-level-division=chapter --toc --toc-depth=2 -o $@