一、名称由来与读音
1. 名称由来
Typst 的名称来源于其开发语言 与核心领域的结合:
- Typ :取自 Typesetting(排版),点明项目的核心定位
- st :源自 Rust,表示项目使用 Rust 语言编写
这个名字也象征着它兼具 Rust 的高性能与现代化的排版体验,旨在解决 LaTeX 臃肿、编译慢的痛点。
2. 读音
Typst 通常读作 /taɪpst/ ,近似中文发音 "泰普斯特"。
- Typ :读作 /taɪp/(泰普),与单词 type 发音相同
- st :源于 Rust /rʌst/,取其中的 /st/(斯特)音
社区中也有少数人会按字母逐字读作 "T-Y-P-S-T",但官方及大多数用户倾向于将其作为一个单词连读。
二、什么是 .typ 格式?
.typ 是 Typst 排版系统的源文件扩展名。Typst 是一个现代化的文档排版工具,定位介于 Markdown(过于简单)和 LaTeX(过于复杂)之间,旨在提供简洁语法 + 强大功能的平衡方案。
三、文件命名规范
| 规则 | 说明 |
|---|---|
| 扩展名 | 必须使用 .typ(如 main.typ、report.typ) |
| 允许字符 | 字母、数字、连字符 -、下划线 _,建议字母或下划线开头 |
| 推荐命名 | 主文件用 main.typ,包入口用 lib.typ,依赖管理用 libs.typ |
| 命名风格 | 模块导入建议使用 kebab-case (如 my-module.typ) |
| 注意事项 | 输出 PDF 文件名需通过 CLI 指定;中文文件名可能在某些工具链中存在问题 |
四、语法本质:混合模式设计
Typst 采用 标记模式 + 脚本模式 的混合语法:
- 标记模式:类似 Markdown,用于快速书写内容(标题、列表、强调等)
- 脚本模式 :类似 Rust + Python 的混合风格,用于编程控制(变量、条件、循环、函数等)
- 切换方式 :用
#前缀从标记模式切换到代码模式
语法特征来源
| 影响来源 | 体现 |
|---|---|
| Rust | # 前缀、模块系统 import、闭包语法 (x) => { ... } |
| Python | 列表推导、简洁的变量绑定、元组/字典字面量 |
| Markdown | = 标题、* 粗体、- 列表等标记语法 |
| LaTeX | $...$ 数学模式,但用函数式 API 替代繁琐命令 |
五、主要用途与场景
1. 学术论文与技术文档
- 数学公式支持:
$x^2$、$(a+b)/2$ - 自动编号:
#set heading(numbering: "1.1") - 参考文献:
#bibliography("refs.bib") - 图表编号:
#figure(image("chart.svg"), caption: [说明])
2. 书籍与长文档排版
- 模块化组织:
import "chapter.typ"、include "intro.typ" - 全局样式控制:
#set text(font: ..., size: 11pt) - 页面设置:
#set page(paper: "a4", margin: ...)
3. 报告与演示文稿
- 快速输出 PDF
- 条件内容:
#if condition [内容] - 循环生成内容:
#for i in range(3)[#i]
4. 可复用的模板与包
- 定义模板文件:
lib.typ作为包入口 - 函数封装:
#let my-template = (body) => { ... } - 跨项目共享样式
5. 配置与依赖管理
- 集中导入:
imports.typ管理所有包依赖 - 类似
requirements.txt的依赖文件
六、核心语法速览
基础标记
typst
= 一级标题
== 二级标题
*粗体* _斜体_
- 无序列表
+ 有序列表
`代码` // 行内代码
数学公式
typst
$x^2$ // 行内
$ x^2 $ // 块级
$(a+b)/2$ // 分数
$x_1^2$ // 上下标
脚本控制
typst
#let x = 10 // 变量
#let add = (a, b) => a + b // 函数
#if x > 0 [正数] else [负数] // 条件
#for i in range(3)[#i] // 循环
import "lib.typ" // 导入
样式设置
typst
#set text(font: "New Computer Modern", size: 11pt)
#set page(paper: "a4", margin: (x: 2cm, y: 2.5cm))
#set par(justify: true)
七、编辑器支持
Typst 拥有丰富的编辑器和工具支持,满足不同场景的开发需求:
1. 官方编辑器
| 编辑器 | 说明 |
|---|---|
| Typst Web App | 官方在线编辑器,实时预览、自动保存、云端同步,适合快速上手和协作 |
| Typst CLI | 命令行工具,支持本地编译和实时监听,适合集成到自动化工作流 |
2. VS Code 扩展
| 扩展名称 | 功能特点 |
|---|---|
| Typst LSP | 官方语言服务器,提供语法高亮、错误提示、自动补全、悬停文档 |
| Typst Preview | 实时预览面板,支持双向同步定位(点击预览跳转到源码) |
| Typst Companion | 模板管理、代码片段、快捷编译 |
3. 其他编辑器插件
| 编辑器 | 插件名称 | 功能说明 |
|---|---|---|
| Vim / Neovim | typst.vim、nvim-treesitter |
语法高亮、LSP 集成、Tree-sitter 解析 |
| Emacs | typst-ts-mode |
语法高亮、编译支持、预览集成 |
| Sublime Text | Typst 包 |
语法高亮、构建系统 |
| JetBrains IDEs | Typst 插件 |
语法支持、编译运行(IntelliJ、PyCharm 等) |
| Zed | 内置支持 | 原生支持 Typst 语法高亮和 LSP |
4. 在线与云端工具
| 工具 | 说明 |
|---|---|
| Typst Web App | 官方在线编辑器,无需安装,支持多人协作 |
| Overleaf 替代 | 部分第三方平台开始集成 Typst 支持 |
| GitHub Actions | 可配置 CI/CD 自动编译 .typ 文件并发布 PDF |
5. 辅助工具
| 工具 | 用途 |
|---|---|
| Typstfmt | 代码格式化工具,自动规范排版 |
| Typst LSP | 语言服务器,为各类编辑器提供智能提示 |
| Tinymist | 高性能 LSP 实现,提供更快的分析和补全 |
八、优势总结
| 优势 | 说明 |
|---|---|
| 语法简洁 | 类似 Markdown 的学习曲线,但功能更强大 |
| 编程能力 | 支持变量、条件、循环、函数,满足复杂排版需求 |
| 编译速度快 | 比 LaTeX 快数倍,适合大型文档 |
| 现代化 | 内置智能引号、Unicode 支持、现代化错误提示 |
| 模块化 | 良好的导入系统,便于组织和复用代码 |
| 免费开源 | 无需付费,社区活跃 |
| 编辑器生态 | 主流编辑器均有支持,开箱即用 |
九、适用人群
- 学生/研究人员:写论文、作业、技术报告
- 开发者:写技术文档、API 文档
- 出版者:排版书籍、杂志
- 教师:制作讲义、课件
- 任何需要高质量 PDF 输出的人
总结
.typ 格式是 Typst 的核心文件格式,它结合了 Markdown 的简洁性 、LaTeX 的排版能力 和现代编程语言的表达力 ,为文档排版提供了一个"恰到好处的抽象"------既不会像 Markdown 那样功能受限,也不会像 LaTeX 那样语法繁琐。配合日益完善的编辑器生态,Typst 已成为高效文档排版的理想选择。