V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xiaohanyu
V2EX  ›  分享创造

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

  •  2
     
  •   xiaohanyu ·
    xiaohanyu · 11 小时 55 分钟前 · 585 次点击

    如题:

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

    • HTML & CSS
    • LaTeX
    • LaTeX.js
    • Typst
    • React-pdf

    Knuth Plass Line Breaking Algorithm

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

    • 排版引擎相关
    • CJK 排版
    • PDF 生成
    • LaTeX vs Typst
    • HTML/CSS 排版的一些技术等

    目录:

    • 序言
    • 评估标准
      • 神圣的换行算法
      • CJK 排版的复杂性
        • CJK 字符集庞大
        • 文化的细微差别
        • 字体搭配
    • HTML & CSS
      • 换行
      • CJK
      • 分页
      • 实时预览
      • 结论
    • LaTeX
      • 换行
      • CJK
      • 分页
      • 实时预览
      • 结论
    • LaTeX.js
      • 换行
      • CJK
      • 分页
      • 实时预览
      • 结论
    • Typst
      • 换行
      • CJK
      • 分页
      • 实时预览
      • 结论
    • React-pdf
      • 换行
      • CJK
      • 分页
      • 实时预览
      • 结论
    • 总结
    11 条回复    2024-11-09 00:39:01 +08:00
    BeijingBaby
        1
    BeijingBaby  
       11 小时 52 分钟前
    好文
    MillerD
        2
    MillerD  
       11 小时 30 分钟前
    牛!
    lneoi
        3
    lneoi  
       10 小时 51 分钟前
    繁简是靠工具的吗?还是都是手敲的
    xiaohanyu
        4
    xiaohanyu  
    OP
       10 小时 5 分钟前
    @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
        5
    z13zvxc  
       8 小时 36 分钟前 via iPhone
    非常棒的文章 收获很大 发现我之前做 pdf 排版的时候居然自不量力自己实现换行算法。
    xiaohanyu
        6
    xiaohanyu  
    OP
       8 小时 4 分钟前
    @z13zvxc 问下,你是什么产品需要自己做 PDF 排版呢?
    googlehub
        7
    googlehub  
       6 小时 18 分钟前
    好文,很受用。
    baobao1270
        8
    baobao1270  
       5 小时 24 分钟前
    看了文章,似乎没有提到标点禁则和孤行孤字控制?

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

    另外,像 InDesign/方正书版之类的,我没有写是因为这些软件应该不太好通过 API 的形式生成 PDF 文档吧,不太符合我的产品的应用场景。
    coolfan
        10
    coolfan  
       2 小时 45 分钟前
    写得好诱人
    cyp0633
        11
    cyp0633  
       2 小时 39 分钟前
    我记得 arXiv 上的 HTML 功能用的是另一种实现,LaTeXML ,有好多宏包不支持,推出好久还在 beta
    typst 有许多令人感到舒适的地方,更符合一个循序渐进的语法,假以时日应该会变得真正好用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1028 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 19:18 · PVG 03:18 · LAX 11:18 · JFK 14:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.