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 $@