【Typst源文件】 Typst 文件格式完全总结

一、名称由来与读音

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 格式?

.typTypst 排版系统的源文件扩展名。Typst 是一个现代化的文档排版工具,定位介于 Markdown(过于简单)和 LaTeX(过于复杂)之间,旨在提供简洁语法 + 强大功能的平衡方案。


三、文件命名规范

规则 说明
扩展名 必须使用 .typ(如 main.typreport.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.vimnvim-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 已成为高效文档排版的理想选择。

相关推荐
刘瑜澄1 年前
基于Springboot+Typst的PDF生成方案,适用于报告打印/标签打印/二维码打印等
pdf·标签·报告·二维码·条码·typst