如何把 Markdown 文件转化为 PDF?

每章几个小节每个小节一个文件,怎么生成整个的PDF呢?
关注者
955
被浏览
2,520,903

129 个回答

说个简单的方法,如果你的markdown(md)文件使用chrome预览,就比较简单了。

点打印,目标,选本地另存为pdf,即可。看图:



这样保存的PDF非常完美,基本上你在chrome里预览是什么格式,保存完就是什么格式。

-----------------------------------------------------------------------------------------------------------------------------------

2014-04-18更新,可能按这种操作生成的PDF文档中粗体(中文部分)可能会有问题,个人理解是与字体有关,可以按这样操作:

先选择这个,


然后选择:

这个可能与你电脑装的PDF软件会有关系,可能会有不同。

这样导出的PDF粗体是正常的。

人读论文,最好的格式是PDF。

因为PDF可以保证任意设备打开显示效果一致,不报错字体找不到。这一点其它格式都做不到,就算能做到也没有PDF流行。所以你很少能下载到一个word格式的论文。用tex写论文的也不少,但那是用来编辑的,发布出来还是PDF。

现在的问题是,AI大模型读论文,用什么格式好?

直接喂PDF是不可能的。至少国内各大机构,我没见过一个这么做的。如果等多模态普及了,或许可以直接以图片、视频形式喂数据。但是目前还不太现实,就算强上也性价比太低。

我最看好的是markdown格式。

markdown的最大优点是,它本质上是一个夹带私货的纯文本格式。如果你用纯文本训大模型可行,那么用markdown训大模型也同样可行。

markdown以极小的代价支持常见富文本格式,例如一行字前加个#号就是标题,加个横杠就是无序列表。这一点,比html的嵌套标签简单得多。这也是为什么很多程序员明明会html,却喜欢用markdown写文档的原因。

markdown还能夹带latex公式、html表格等复杂格式,上限也不低。也有人看好tex格式,但我觉得tex对于模型有些没有必要的复杂。而且在实际的训练数据中,也很难找到一个tex支持、markdown支持不了的情况。

GPT输出的文本,其实也是markdown格式。虽然CLosedAI缄口不言,但很有理由怀疑,GPT的一部分训练数据就是markdown,否则很难解释GPT怎么会那么喜欢用markdown回答问题。

epub或tex转markdown都问题不大,但pdf转markdown,并没有看上去那么容易。

理论上的原因:pdf为了极致的阅读一致性,牺牲了可编辑性,变成了一个半结构化文档。你以为pdf里的一行Hello World,实际上存储的字符可能是:H e ll o W or l d。

真实世界的原因:有大量的pdf其实是纸质扫描得到的图片。我们统计过700w量级的电子书,一半以上都是图片版pdf格式。

那么如此操蛋的pdf格式,有没有可能转成markdown,投喂给大模型呢?

答案当然是有的。

今天,我想来秀一下我们做的pdf转mardown技术的实际效果。

“万卷计划”最近取得了突破性进展。在中文电子书方面,排重后的总量已经超过700w本,包括对应的ISBN号、元数据、图书分类等信息。这已经是一个非常完整的数字图书馆了。

(这是万卷计划最早的创世篇。你会看到我吹过的牛怎样一步步变成现实。)

下一步,就是要把这些书转成markdown格式。这甚至比建一个图书馆更有挑战性!

我们先来看一个英文论文的示例。下图,是论文的第一页。

转成的markdown,我用typora打开,是这样的:

页眉页脚等干扰信息会直接排除掉。每个段落对应markdown中的一行。大标题、小标题生成层次结构。

论文常见的分栏结构现在处理得比较好了,比如下图这一页:

再看一个表格部分:

转成markdown是这样的:

你看到的灰白相间的表格,其实是typora渲染的样式。原始数据是html表格:

再看一个中文论文,这个论文是纯图片PDF:

注意看公式的部分,转成markdown后是latex:

同样,markdown显示的公式是typora渲染的,原始数据是:

你现在看到的效果大约是两个月之前的版本。其实还有很多细节问题,比如极其复杂的多行公式识别、行内公式、跨页文本连接等等。

不过不谦虚地说,我估计再过两三个月时间,应该就解决得差不多了。

到那时,这项技术可以用在更复杂的排版文档上,比如教科书、杂志,甚至是竖排的繁体字古籍。