%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 的“报告”文档类(默认情况下,--chapters
pandoc 似乎使用“书籍”或“回忆录”类,它们是为书籍设计的 - 两边的边距大小不同,以方便装订书籍,章节只从奇数页开始,等等),它将 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}{}