写了篇关于 LaTeX/Typst/React-pdf 排版引擎的长文:《排版引擎纵谈:程序员的视角》

48 天前
 xiaohanyu

如题:

文章比较长,大概有 3 万多字,主要对比了以下五种排版引擎的优缺点和各自的使用场景:

对以下话题感兴趣的,可以看看哈:


目录:

2763 次点击
所在节点    分享创造
15 条回复
BeijingBaby
48 天前
好文
MillerD
48 天前
牛!
lneoi
48 天前
繁简是靠工具的吗?还是都是手敲的
xiaohanyu
48 天前
@lneoi https://github.com/BYVoid/OpenCC

```
opencc -i apps/blog/src/pages/posts/zh-CN/on-typesetting-engines.mdx -o /tmp/tt.mdx -c /opt/homebrew/opt/opencc/share/opencc/s2twp.json
```
z13zvxc
48 天前
非常棒的文章 收获很大 发现我之前做 pdf 排版的时候居然自不量力自己实现换行算法。
xiaohanyu
48 天前
@z13zvxc 问下,你是什么产品需要自己做 PDF 排版呢?
googlehub
48 天前
好文,很受用。
baobao1270
48 天前
看了文章,似乎没有提到标点禁则和孤行孤字控制?

总的来说,HTML/CSS 能力太弱,Typst 不够成熟。LaTeX 从效果上来看是最佳,但是个人感觉它的 CJK 依然比较复杂。比起专业的排版软件(方正书版之类的),LaTex 或许还不够好(不管是易用性还是功能性上),但可惜这类软件并没有开放的接口。
xiaohanyu
48 天前
@baobao1270 标点禁则、悬挂、孤行孤字这些太过细节了,除了 LaTeX ,别的几个应该没有一个有完整支持的。为了控制篇幅(尽管已经很长了),所以我没有过多的写这些。

另外,像 InDesign/方正书版之类的,我没有写是因为这些软件应该不太好通过 API 的形式生成 PDF 文档吧,不太符合我的产品的应用场景。
coolfan
48 天前
写得好诱人
cyp0633
48 天前
我记得 arXiv 上的 HTML 功能用的是另一种实现,LaTeXML ,有好多宏包不支持,推出好久还在 beta
typst 有许多令人感到舒适的地方,更符合一个循序渐进的语法,假以时日应该会变得真正好用
xiaohanyu
47 天前
@cyp0633 看了眼 LaTeXML ,应该也就是一个 transpiler ,跟 LaTeX.js 有点像,但是我感觉这些项目都很难实现对 LaTeX 的 100% 兼容。我个人觉得,把 LaTeX 跑到浏览器里还是 wasm 这条路比较有前途。
CasualYours
47 天前
好文章
gogogo1203
46 天前
3 个月前开始做一个 trip planner to PDF 的时候研究过 react-pdf, 对 tailwind 和 css 的支持太差。纯文字的还好,react component 经常打不出来。 最后用 satori +pdfkit.


pdfkit 不好的一点就是没有 fallback font. 你这个方案是怎么支持中文/日文的?需要打包多个字体么?怎么样自动识别用哪个语言的字体?
xiaohanyu
46 天前
@gogogo1203 我实际上用的是 react-pdf-viewer 来显示的 PDF ,是支持自己指定 character map 的: https://github.com/react-pdf-viewer/react-pdf-viewer/issues/107#issuecomment-643749966 ,然后就可以显示 CJK 了。

但是 react-pdf-viewer 这个库也有一些问题,最近可能不怎么维护了,另外就是 bug 也有点多。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1087770

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX