hal*_*fer 5 markdown pdf-generation wkhtmltopdf pandoc
我正在 Github 上编写一系列 Markdown 文档,以努力使编辑过程可分叉和可合并。我打算首先呈现为 PDF 格式。我只需要这些排版功能:
我使用pandoc我的 Markdown 解析器,最初直接尝试 LaTeX/PDF 输出。但是,我就此提出了一个问题并放弃了 - LaTeX 使用起来缓慢且笨拙(imo),并且似乎不鼓励对其他格式(尤其是 HTML)有用的内联预格式化样式的类属性。
所以,我现在使用 Pandoc 转换为 HTML,然后wkhtmltopdf从 HTML 转换为 PDF。这让我获得了我正在寻找的 90% 的排版功能,而且只需最少的努力,所以我认为这是一个很好的方法。但是,在段落之前的标题和无序列表之前的段落上,我想要保持与下一个或孤立控件,但这似乎不受支持。我已经尝试过这些 CSS 功能:
li {
/* Try to avoid breaking inside a bullet, doesn't work for me */
break-inside: avoid-page;
}
ul {
/* Try to avoid breaking before a bullet list, doesn't work for me */
page-break-after: avoid;
}
p {
/* Not supported by Webkit: https://developer.mozilla.org/en-US/docs/Web/CSS/orphans */
orphans: 2;
}
Run Code Online (Sandbox Code Playgroud)
正如您从我的代码中看到的那样,orphans听起来很理想,但它对 PDF 输出没有影响,并且 Mozilla 参考说 Webkit(由 Wkhtmltopdf 内部使用)不支持它。
我能做些什么来实现这一目标?我觉得我很接近,但令人沮丧的是,这是一个似乎没有任何明显解决方案的微不足道的问题。虽然我已经努力学习 Pandoc 和 Wkhtmltopdf,但如果可以证明其他 F/OSS 工具做得更好,我愿意放弃其中一个或两个。
我不想消失在太多毫无意义的兔子洞中,但我看到 Pandoc 可以渲染到 ODT。我的主文档保存在 ODT(使用 OpenOffice)中,并且这个格式是完美的,包括我想要的所有 keep-with-next。也许我可以有一个 ODT 文档来指定样式,然后将其与 Markdown 文档一起转换。这值得一试吗?
Pandoc 的 HTML 输出正确区分了所有标记,所以我想知道添加新的 HTML 到 PDF 转换器是否可以解决问题。Dompdf听起来不错,所以我也试一试。
我也会在某个时候尝试使用原始 LaTeX,使用类似的编辑器 Lyx- 我无法想象 LaTeX 没有 keep-with-next,而且它周围的 GUI 会柔化锋利的边缘!这并不理想,因为 LaTeX 不像 Markdown 那样可读,但我认为它仍然可以以大致相同的方式合并。