创建pdf时在markdown中进行分页


84

我正在使用doxygen(1.8.6)创建markdown文本文件的pdf。现在,我想在markdown文件的特定阶段获取分页符,我使用了此链接

他们在给定的链接中提到使用'>'作为换行符。但是他们没有提到分页符。是的,我也可以使用'>'来进行分页符,但是我必须在markdown文本文件上写入此符号5次或更多次,这会使markdown文件看起来很奇怪。还有其他方法可以在markdown文件中获得分页符吗?


1
您是否有如下代码:我的主页{#mainpage} =============这是第一页上的文本\ latexonly \ newpage \ endlatexonly这是第二页上的文本
阿尔伯特2014年

@albert我在乳胶文件夹中找不到任何主页关键字
user2760375 2014年

1
我给出的示例生成了一个由2页组成的主页。对您来说重要的部分是\ latexonly .... \ endlatexonly。将我的示例放在文件(例如aa.md)中时,生成乳胶输出时可以看到2页。
阿尔伯特2014年

@albert啊,现在我把它前面我没有在文本文件中。现在我用的是latexonly命令得到它的感谢
user2760375

Answers:


60

我遇到了相同的问题并通过插入来解决

\分页符

它实际上是LaTeX命令,而不是Markdown命令。


1
这与pandoc搭配使用效果很好。在乳胶pdf中插入分页符,而不会干扰html呈现。
joelostblom 2015年

2
thx,我只是在找那个:)它也可以在R的编织工具中使用。
Tetlanesh

3
Markdown本机不支持Latex,而本机却支持HTML和CSS。这就是为什么下面@tomodian的答案获得更多投票的原因。此解决方案在某些情况下有效(特别是在R Markdown中,如Tetlanesh所述),但并非全部。在下面选择tomodian的答案...它更便于携带。
Mike Williamson

由于OP问题是关于一般的降价,所以我觉得这个答案对大多数人都行不通。@tomodian的答案是最好的IMO。
Briford Wylie '18

200

由于Markdown接受纯HTML和CSS,因此只需在要强制分页的位置添加此行即可。

<div style="page-break-after: always;"></div>

如果您的Markdown编辑器无法正确导出PDF,请先尝试将其导出为HTML,然后使用浏览器打开并打印为PDF。


5
这是正确的答案。这种样式的“ hacks”可能就是John接受HTML / CSS的原因
CousinCocaine

3
这是正确的答案。它与大胆的火球Markdown配合得很好
Dimitry K

3
这是我测试过的最适用且得到广泛支持的解决方案。
贝坦·库尔特

1
在page-break-before上的w3schools条目说:“注意:您不能在空的<div>或绝对定位的元素上使用此属性。” 如果可以使用,我会用它(但是Ju在Jupyter中不行。)
FutureNerd

14

我知道这是一个悬而未决的问题,但是我发现了一种我认为对我以外的人有用的方法。

您可以在不可见元素内使用命令\ pagebreak。这样,它可与乳胶和html一起使用。

<div style="page-break-after: always; visibility: hidden"> 
\pagebreak 
</div>

为什么不使用doxygen的命令,如\htmlonly<div>等和\latexonly´ with \ pagebrak`,而不是这一招。
艾伯特

3
因为此技巧可在doxygen外部移植,并且甚至可以与pandoc一起使用。
诺埃·穆尔

10

块引用与换行符

>在Markdown中不用于换行符。它用于块引用。例如,以下Markdown代码

> A man provided with paper, pencil, and rubber, and
> subject to strict discipline, is in effect a universal machine.

变成

一个有纸,铅笔和橡胶的人,要受到严格的纪律约束,实际上是一台通用机器。

(这是来自Alan Turing报价。)

注意堆栈溢出如何用黄色背景渲染它。如果检查生成的标记,则会发现<blockquote>正在使用的标签。

通常可以通过以下方式插入换行符:使用两个或多个空格结束行(Markdown语法)或使用原始<br>标签(大多数Markdown处理器允许内联HTML)。例如(用于表示空格),此Markdown

123 Fake Street␣␣
Springfield, USA

变成


美国斯普林菲尔德假街123号

分页符

由于最初的规范Markdown是为HTML输出(没有页面的概念)设计的,因此不支持分页符。

Doxygen使用LaTeX生成PDF。它似乎不支持嵌入式LaTeX¹,但是您应该能够修改中间.tex文件,然后使用它pdflatex来生成PDF:

  1. 使用Doxygen生成.tex文件
  2. .tex手动编辑文件,将其添加\newpage到需要分页符的任何位置
  3. pdflatex documentation.tex
  4. 检查 documentation.pdf

这个问题对于上面的步骤3可能是有用的参考。

¹Doxygen确实支持内联LaTeX公式,但是我找不到任何\newpage在文本环境中运行的任意内联LaTeX命令的内容。


嘿最初我经历了.tex文件方法,尽管我还是想使用纯markdown方法来生成pdf,是的,我也尝试了\ newpage,但这没用。
user2760375 2014年

1
由于Markdown不包含分页符的语法,因此没有纯粹的Markdown方法。尽管Markdown扩展很多,但我不知道有任何扩展支持分页符。您可以尝试像Pandoc之类的东西,它支持嵌入式LaTeX,但是我想您正在使用Doxygen来从源代码中提取文档块,而Pandoc却没有。也许我错了...
克里斯

4

尽管这些答案行之有效-但却打破了Markdown(MD)的目标之一,该目标既可以作为纯文本文档阅读,又可以格式化为更丰富的演示文稿。

一旦开始在文本中嵌入一堆HTML / CSS,就会失去MD的第一个方面。您不妨使用Word,Libre,HTML / CSS等。

我认为MD最好添加一个分页符序列。类似于: <<<<>>>>或类似于格式运算符。我在我的MD文字中使用了它。它不会在PDF或HTML转换器中引起分页符,但可以用纯文本格式识别。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.