【问题标题】:pagebreak in markdown while creating pdf创建pdf时markdown中的分页符
【发布时间】:2014-05-01 07:36:18
【问题描述】:

我正在使用 doxygen (1.8.6) 创建一个降价文本文件的 pdf。现在我想在markdown文件的特定阶段获得分页符,我使用了这个link

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

【问题讨论】:

  • 你有没有试过这样的代码:我的主页 {#mainpage} ============ 这是第一页上的文字 \latexonly \newpage \endlatexonly这是第二页的文字
  • @albert 我在 Latex 文件夹中没有找到任何主页关键字
  • 我给出的示例生成了一个包含 2 个页面的主页。对你来说重要的部分是 \latexonly ....\endlatexonly。当您将我的示例放入文件(例如 aa.md)时,您可以在生成乳胶输出时看到 2 页。
  • @albert 是的,现在我知道了,我没有在文本文件中使用 latexonly 命令。现在我知道了,谢谢

标签: markdown doxygen


【解决方案1】:

由于 Markdown 接受纯 HTML 和 CSS,只需将此行添加到您想要强制分页的任何位置。

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

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

【讨论】:

  • 这是正确答案。这种风格的“黑客”可能是约翰接受 HTML/CSS 的原因
  • 这是正确答案。它与大胆的火球 Markdown 配合得很好
  • 这是我测试过的最适用和最广泛支持的解决方案。
  • page-break-before 上的 w3schools 条目说:“注意:您不能在空的
    或绝对定位的元素上使用此属性。”如果它有效,我会使用它(可惜在 Jupyter 中不行)。)
  • 我将它与 puppeteer 一起使用,效果很好。
【解决方案2】:

我也遇到过,插入解决

\分页符

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

【讨论】:

  • 这适用于 pandoc。在 Latex pdf 中插入分页符而不干扰 html 呈现。
  • 谢谢,我只是在找那个 :) 它也可以在 R 的 knit 工具中使用。
  • Markdown 本身不支持 Latex,但它本身支持 HTML 和 CSS。这就是为什么@tomdian 在下面的回答有更多的赞成票。该解决方案在某些情况下有效(特别是在 R Markdown 中,正如 Tetlanesh 所提到的),但并非全部有效。在下面选择 tomodian 的答案……它更便携。
  • 由于 OP 问题是关于一般降价的,我觉得这个答案对大多数人来说不起作用/有用。 @tomdian 的答案是最好的 IMO。
【解决方案3】:

我知道这是一个死问题,但我找到了一种我认为对我以外的人有用的方法。

您可以在不可见元素中使用命令 \pagebreak。通过这种方式,它适用于乳胶和 html。

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

【讨论】:

  • 为什么不使用像\htmlonly这样的doxygen命令和&lt;div&gt;等。和\latexonly´ with \pagebrak`,而不是这个技巧。
  • 因为这个技巧在 doxygen 之外是可移植的,你甚至可以使用 pandoc。
【解决方案4】:

块引号与换行符

&gt; 不用于 Markdown 中的换行符。它用于块引用。比如下面的 Markdown 代码

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

变成

提供纸、铅笔和橡皮的男子,以及 受到严格的纪律约束,实际上是一台万能机器。

(这是quote from Alan Turing。)

注意 Stack Overflow 如何用黄色背景渲染它。如果您检查生成的标记,您会发现使用了&lt;blockquote&gt; 标记。

通常可以通过使用两个或多个空格(Markdown 语法)或使用原始&lt;br&gt; 标签(大多数 Markdown 处理器允许内联 HTML)来插入换行符。比如(用表示一个空格),这个Markdown

123 Fake Street␣␣
Springfield, USA

变成

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

分页符

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

氧气uses LaTeX to generate its PDFs。它似乎不支持内联 LaTeX¹,但您应该能够修改中间 .tex 文件,然后使用 pdflatex 生成您的 PDF:

  1. 使用 Doxygen 生成.tex 文件
  2. 编辑.tex 文件手动添加\newpage 任何你想要的分页符
  3. 运行pdflatex documentation.tex
  4. 检查documentation.pdf

This question 可能是上述第 3 步的有用参考。

¹Doxygen does support inline LaTeX formulas,但我找不到任何提及在文本环境中运行的任意内联 LaTeX 命令,例如 \newpage

【讨论】:

  • 嘿,最初我通过 .tex 文件方法,尽管我想使用纯 markdown 方法生成 pdf,是的,我也尝试过 \newpage,但那没有用。
  • 没有纯 Markdown 方法,因为 Markdown 不包含分页符语法。尽管有许多 Markdown 扩展,但我不知道有任何添加对分页符的支持。您可以尝试像 supports inline LaTeX 的 Pandoc 之类的东西,但我想您使用 Doxygen 是因为它能够从源代码中提取文档块,而 Pandoc 没有这样做。也许我错了……
【解决方案5】:

尽管这些答案有效 - 它们有点打破了 Markdown (MD) 的目标之一,即作为纯文本文档具有很高的可读性,并且能够格式化为更丰富的演示文稿。

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

我认为 MD 最好添加一个分页符序列。就像是: &lt;&lt;&lt;&lt;&gt;&gt;&gt;&gt; 或类似于格式化运算符。我在我的 MD 文本中使用它。它不会导致 PDF 或 HTML 转换器中的分页符,但在这些格式和纯文本格式中都可以识别。

【讨论】:

    【解决方案6】:

    在我的 Markdown 文档中,page-break-after 有时会在同一页上留下一两个标题。在这些情况下,page-break-before 努力将所有内容正确地放在下一页的&lt;div&gt; 之后:

    &lt;div style="page-break-before:always"&gt;&lt;/div&gt;

    【讨论】:

      【解决方案7】:

      最后的解决方法是手动编辑 HTML 输出以根据需要呈现为 PDF。

      【讨论】:

        【解决方案8】:

        为了让 tomodian 的 answer 更简洁一些,你可以引用一个 CSS 类:

        words.md:

        <div class="pagebreak" />
        

        style.css:

        .pagebreak { page-break-after: always; }
        

        【讨论】:

        • (你甚至可以更简洁地表示空标签:&lt;div class="pagebreak" /&gt;。)
        • 谢谢@greybeard!我猜会有更短的方法来关闭标签。
        猜你喜欢
        相关资源
        最近更新 更多
        热门标签