序幕

序幕
%Title
%Author

#Header 1

Lots of words.

#Header 2

More words.

##Level 2 header

上述文本可以使用 转换为适用于电子阅读器的 EPUB 文件pandoc -o output.epub input.mkd,也可以使用 转换为 PDF pandoc -o output.pdf input.mkd。后者需要安装 latex 引擎,这可能与回答问题有关。

对于 EPUB,每个 1 级标题都会自动设置在新页面的顶部(较低级别的标题则不会)。对于 PDF,情况并非如此 - 而且我也不指望默认情况下会这样,因为这与 markdown 的主要目标相悖。但是,我很难找到一个 pandoc 选项来启用此行为。

有人知道如何使用 pandoc 启用此行为吗?编辑配置文件是一种可接受的解决方案,但如果语法是基于 latex 的,我希望得到它的解释(配置文件中内容的含义,而不是对 latex 的全面解释!)。

pandoc 的--chapters选项似乎应该能满足我的要求...但是它

  • 使章节仅出现在奇数页上,根据需要插入空白页(有趣,但不是我想要的——我想在 A4 纸上打印出来,而且它不会以书本风格排版,所以这里的任何美学优势都被纸张的浪费所抵消)
  • Chapter x在实际标题之前插入,这会导致一些荒谬的事情,例如:

第1章

序幕

如果可以驯服这个--chapters选项,那将是一个合适的答案。

答案1

https://tex.stackexchange.com/questions/9497/start-new-page-with-each-section

为了使其与 pandoc 配合使用,您需要将以下内容插入到 pandoc 在转换为 PDF 的过程中生成的 LaTeX 文档的前言中:

\usepackage{titlesec}
\newcommand{\sectionbreak}{\clearpage}

有几种方法可以做到这一点。一种方法是创建一个自定义 LaTeX 模板,并在前言中使用以下几行。然后,您可以使用选项--template mytemplate.latex告诉 pandoc 使用此模板。要获取可以修改的默认 LaTeX 模板,请执行pandoc -D latex > mytemplate.latex

另一个选择是创建一个titlesec.tex仅包含这两行的小文件。然后调用 pandoc 并将--include-in-header titlesec.tex其包含在标题中,如下所示:

pandoc --toc --include-in-header titlesec.tex -o output.pdf input1.mkd input2.mkd

答案2

我最终做的是这样的:

pandoc --toc -V documentclass=report -o output.pdf inputs*.mkd

这将导致使用 LaTeX 的“报告”文档类(默认情况下,--chapterspandoc 似乎使用“书籍”或“回忆录”类,它们是为书籍设计的 - 两边的边距大小不同,以方便装订书籍,章节只从奇数页开始,等等),它将 1 级标题放在页面顶部,但不会仅有的把它们放在奇数页的顶部。

这仍然会在每章前插入“第 X 章”,这仍然很烦人。我还非常希望目录与标题在同一页上开始(这发生在“文章”文档类中,但章节不会转移到新页面的开头 - 它们只是从任何地方开始)。然而,我思考获得这些需要比我更多的 LaTeX 知识:我不会将其标记为接受的答案,因为理想的答案将解释如何解决这两个问题。

答案3

两年多过去了,我仍然遇到这个问题;所以对于遇到此问题的任何人来说......

感谢约翰和所包含的另一个链接,我在带有选项的文件中使用了以下内容pandoc -H,它似乎运行良好:

% https://superuser.com/questions/601469/getting-chapters-to-start-on-a-new-page-in-a-pandoc-generated-pdf
% http://tex.stackexchange.com/questions/120740/how-do-i-remove-chapter-n-from-the-chapter-titles-of-a-book
\usepackage{titlesec}
\usepackage{fancyhdr}

\newcommand{\sectionbreak}{\clearpage}
\titleformat{\chapter}[display]{\normalfont\bfseries}{}{0pt}{\Large}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[RE]{\leftmark}
\fancyhead[LO]{\rightmark}
\fancyhead[LE,RO]{\thepage}
\renewcommand\headrulewidth{0pt}
\renewcommand\chaptermark[1]{\markboth{#1}{}} 
\renewcommand\sectionmark[1]{\markright{\thesection.\ #1}}

有了它,我使用了--chapters选项pandoc,它会在新页面上生成 PDF 章节,没有Chapter XX:页面标题。使用-V documentclass=report也产生了所需的结果,没有文档类产生的页面跳过和新章节出现在奇数页码的现象book

答案4

遇到了同样的问题并想出仅使用 YAML 元数据字段来发布我的解决方案。

documentclass: report
header-includes:
- \renewcommand{\chaptername}{}
- \renewcommand{\thechapter}{}

相关内容