Typst 完整入门指南:5 分钟用标记语言写出专业级排版文档
【免费下载链接】typstA markup-based typesetting system that is powerful and easy to learn.项目地址: https://gitcode.com/GitHub_Trending/ty/typst
Typst 是一个基于标记语法的现代排版系统,设计目标是"能力对标 LaTeX,学习成本对标 Markdown":你用普通文本文件写内容,它负责输出 PDF、SVG 等成品。本文面向第一次接触 Typst 的读者,目标是带你跑通第一份文档,并讲清楚它的编程能力、典型场景与配套工具,让排版这件"专业的事"在你手里变得日常化。
从"调格式调到怀疑人生"说起
先还原一个高频痛点:一份报告写了三天,最后两小时全花在调页边距、对齐表格、修正公式编号上。Word 的格式会飘,LaTeX 的编译链又长、报错又难读,中间改一个词要等十几秒才能看到效果。
Typst 的定位就是吃掉这块成本:编译器用 Rust 写成、单文件分发,全量编译通常在毫秒到亚秒级,并且支持增量编译(见 docs/dev/architecture.md 中对各编译模块的划分)。你改一个字,重新编译一遍几乎是瞬时完成的——这直接把"写作—预览—修改"的循环从分钟级压到了秒级。
它是什么,解决谁的什么问题
Typst 由三件事组成:一种标记语言、一个内置的脚本系统、一个从源码到成品的编译器。
- 标记语法覆盖最常见的需求:标题、列表、公式、脚注、引用,几行就能写出结构完整的页面;
- 其余需求(自动表格、批量插图、编号规则)交给脚本解决,脚本和数据、样式写在同一个文件里,不需要额外工程结构;
- 输出端支持 PDF 与 SVG,仓库里的 typst-pdf、typst-svg 两个 crate 就是对应的导出器。
它主要服务三类人:需要数学公式与参考文献的科研作者、需要批量产出风格统一文档的团队(合同、报告、试卷)、以及想脱离 Word 依赖的普通写作者。当前稳定版本为 0.15.1,CLI 一条命令即可完成本地编译。
能力全景:三个维度看 Typst
排版表达:公式和表格不用记命令名
LaTeX 里写sqrt要敲\sqrt,Typst 的公式语法把多字母标识符直接当作符号处理,写在美元符号之间即可:
$ F_n = F_(n-1) + F_(n-2) $ $ F_n = round(1 / sqrt(5) phi.alt^n) $上面的输出效果可以直观感受一下:
表格同样是函数式写法,按行传参即可,行列结构一目了然,不需要记忆环境名和分隔符规则。
可编程性:文档本身可以"算"
#号进入脚本模式,之后就是完整的表达式、循环、条件、函数定义。典型用法:把一组数据算完再填进表格,或者根据文档结构自动编号。README 里展示的斐波那契例子就是一段脚本驱动整张表格的生成——脚本和版式在同一个文件里协作,没有中间文件。
编译体验:watch 模式 + 增量编译
写完文件不必每次手动编译。typst watch会监听源码变更并自动重编,配合增量编译,日常写作时你几乎感觉不到"编译"这个动作存在。出错时,报错信息会给出具体行号和可定位的提示,而不是 LaTeX 式的级联错误。
上手路线:3 分钟产出第一份 PDF
1. 安装 CLI。按平台任选其一:
brew install typst # macOS winget install --id Typst.Typst # Windows cargo install --locked typst-cli # 有 Rust 工具链时也可以直接克隆仓库源码构建:
git clone https://gitcode.com/GitHub_Trending/ty/typst2. 写一个hello.typ。下面是能说明"标记 + 脚本"混合写法的最小样例:
= 欢迎使用 Typst 这是我的第一个文档,*加粗*和_斜体_都靠下划线标记。 #let n = 3 #let total = range(1, n + 1).sum() 前三项之和是 #total。3. 编译并打开结果。
typst compile hello.typ # 生成 hello.pdf到这里,第一份 PDF 已经产出。后续写作时换成typst watch hello.typ,编辑器里保存即自动重编。教程全文在 docs/content/tutorial/,四章递进,从书写到自定义模板都有覆盖。
场景实战:三个高价值用例
学术论文:公式 + 参考文献一条龙
论文场景的核心是公式和引用。Typst 的引用语法@key直接写在正文里,bibliography("refs.bib")一条指令完成文献列表排版,Chicago 脚注风格(含 ibid、supplements 等细节)也有原生支持,效果如下:
报告与试卷:样式统一 + 批量产出
用set规则声明式地配置页面(纸张、边距、分栏、编号),再用show规则重定义任意元素的渲染方式。一个模板文件写好后,同系列文档(如一套试卷、一季报告)全部复用同一份样式,风格漂移问题从机制上消失。
图表混排:图形即一等公民
circle、rect、curve、渐变填充等都是内置函数,矢量图形直接参与排版流,可以放进表格、图注、跨栏布局里。这意味着"示意图 + 数据表 + 说明文字"的常见版面,不需要外部绘图工具中转。
横向定位:Typst 和同类工具怎么选
| 维度 | Typst | LaTeX | Markdown |
|---|---|---|---|
| 学习成本 | 低,标记语法直观 | 高,命令与环境多 | 最低 |
| 数学与引用 | 原生支持,语法简洁 | 最强,生态最全 | 弱 |
| 脚本与自动化 | 内置完整脚本系统 | 需宏包,较繁琐 | 基本没有 |
| 编译速度 | 毫秒级,支持增量 | 秒级,依赖工具链 | 即时 |
| 生态成熟度 | 增长中 | 最成熟 | 最成熟 |
选型建议:文档数学密度高、要出正式 PDF,选 Typst;依赖大量专用 LaTeX 宏包(如某些专业领域包),继续留在 LaTeX 体系;纯纯文本笔记、不追求精确版面,Markdown 足够。
进阶玩法:把重复劳动写成函数
模块化:样式封装成函数
把"标题条""卡片段落"这类版式写成let函数,各文件import复用。为什么这样写更好:样式修改集中在一个定义处,全文档自动生效,且函数参数化后可以服务不同级别的标题。
#let heading-strip(body) = { block(fill: luma(240), inset: 8pt, radius: 4pt)[#body] }模板复用:一份页面骨架喂 N 份文档
用函数接收title、author、content三个参数,内部用set page、set par固定页面与段落样式,正文只负责填内容。这是 docs/content/tutorial/4-template.typ 教程最后一章的做法,也是团队统一文档风格的标准姿势。
条件渲染:同一份源码出多个版本
#if分支可以在同一文件里区分"评审版"和"正式稿"(如隐藏答案、隐藏水印),避免维护两份容易漂移的文件。
生态地图:文档、工具与社区
- 官方文档:仓库内 docs/content/reference/ 是函数与语言参考,docs/content/guides/ 有页面设置、表格等专题指南,其中还有专门写给 LaTeX 用户的迁移指南(for-latex-users.typ);
- 在线协作:typst.app 提供免费的协同在线编辑器,支持即时预览与自动补全,适合不想装环境的场景;
- 编辑器集成:社区维护的 Tinymist 语言服务器可在 VS Code 等编辑器中提供补全、跳转与预览,本地 CLI 与它配合使用;
- 版本与更新:CLI 自带
typst update自更新;各语言参考、变更日志在 docs/content/changelog/ 可按版本查阅(当前 0.15.1); - 源码入口:想深入原理,从 docs/dev/architecture.md 的模块划分入手,核心布局引擎在 crates/typst-layout/,语言解释器在 crates/typst-eval/。
收束与行动清单
Typst 的价值可以压缩成一句话:用 Markdown 级别的语法成本,拿到接近 LaTeX 的排版控制力,再用毫秒级编译和内置脚本把重复劳动自动化。它不试图取代所有工具,但在"数学公式 + 正式 PDF + 需要自动化"这个交集上,目前很难找到更顺手的替代品。
现在就可以动手:用包管理器安装typst,写下 10 行的hello.typ,执行typst compile hello.typ看到第一份 PDF;想深入就看 docs/content/tutorial/,想读源码就从 docs/dev/architecture.md 开始。
【免费下载链接】typstA markup-based typesetting system that is powerful and easy to learn.项目地址: https://gitcode.com/GitHub_Trending/ty/typst
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考