一句話:Typst 是 LaTeX 替代品,單一檔 17 MB,14 頁編譯 0.16 秒,中文指定字型就好。
Typst 是一套以 markup 語法撰寫、用 Rust 編譯的排版系統,定位是「LaTeX 的能力、Markdown 的學習曲線」。單一執行檔約 17 MB、Apache-2.0 授權,實測 120 個章節的文件編譯成 14 頁 PDF 只花 0.16 秒。對需要產出論文、履歷、技術報告,又受不了 LaTeX 錯誤訊息的人,它是 2026 年最值得花兩小時學的工具。
為什麼現在值得看 Typst
LaTeX 的問題從來不是能力,是摩擦:一個漏掉的括號會噴出三十行看不懂的錯誤、套件衝突要上網查半小時、中文要另外裝 xeCJK 再調字型。Typst 把這些做成內建:
- markup 直接寫:
= 標題就是標題,*粗體*就是粗體,不用\section{} - 數學用錢字號:
$a^2 + b^2 = c^2$,不用背\frac以外的東西 - 增量編譯:官方主打的就是快,這次實測也確實快
- 錯誤訊息帶位置與提示:會直接框出問題那行的哪幾個字
一表看懂(2026-11-09 查證)
| 項目 | 內容 |
|---|---|
| 最新穩定版 | 0.15.1(2026-07-17 發布) |
| 授權 | Apache-2.0 |
| 語言 | Rust |
| GitHub 星數 | 57,075(forks 1,790) |
| 未關閉 issue | 1,344 |
| 首個 commit | 2019-09-24 |
| 最近推送 | 2026-11-06 |
| 官方套件庫(Universe) | 5,166 個套件 |
| 執行檔大小 | 約 17 MB(x86_64 musl 靜態版) |
| 輸出格式 | PDF、PNG、SVG、HTML(實驗)、bundle(實驗) |
一個值得注意的訊號:專案跑了七年、五萬多星,版號還在 0.x。這代表語法仍可能 breaking change(0.15 就禁止路徑用反斜線),好處是團隊沒有急著凍結 API,壞處是你三年前寫的模板可能要修。
安裝:四種方式,挑一種就好
官方 README 列出的方式如下,全部照抄不改:
# 1) 預編譯執行檔(最單純,放進 PATH 就能用)
# 到 GitHub releases 下載對應平台的壓縮檔解開即可
typst update # 之後用這個指令自我更新
# 2) 套件管理器(版本可能落後)
brew install typst # macOS
winget install --id Typst.Typst # Windows
# 3) 有 Rust 工具鏈
cargo install --locked typst-cli
# 4) Docker
docker run ghcr.io/typst/typst:latest --help
這次實測走第 1 條路:抓 typst-x86_64-unknown-linux-musl.tar.xz(17 MB),解開後直接執行。
$ typst --version
typst 0.15.1 (9dfd3a08)
CLI 有八個子命令:compile、watch、init、eval、fonts、update、completions、info。沒有 new、沒有 build,就這幾個。
第一個文件:從 markup 到 PDF
存成 demo.typ,編譯指令是 typst compile demo.typ(輸出 demo.pdf)。這是最小可用範例:
#set page(paper: "a4", margin: 2.2cm)
#set text(font: "WenQuanYi Zen Hei", size: 10.5pt, lang: "zh", region: "tw")
#set heading(numbering: "1.1")
= Typst 實測文件
這是一段繁體中文。行內數學:$a^2 + b^2 = c^2$,獨立公式:
$ integral_0^1 x^2 dif x = 1/3 $
== 表格
#table(
columns: (auto, 1fr, auto),
stroke: none,
table.header([*工具*], [*定位*], [*編譯速度*]),
[LaTeX], [學術排版事實標準], [慢],
[Typst], [現代化 markup 排版], [快],
)
+ 自動編號一
+ 自動編號二
三個關鍵概念,看懂就能改任何模板:
| 概念 | 寫法 | 作用 |
|---|---|---|
| set rule | #set text(size: 11pt) | 設定某元素的預設屬性(最常用) |
| show rule | #show heading: it => block(fill: luma(240))[#it] | 重新定義元素長相(模板的靈魂) |
| 內容區塊 | [ ... ] | 把一段內容當參數傳給函式 |
#set 管「預設值」,#show 管「長相」,[...] 是內容。這三件套就是 Typst 模板的全部語法基礎——這也是為什麼它的範本檔案通常只有一兩百行,而 LaTeX 的 .cls 動輒上千行。
中文排版:唯一會踩的坑是字型名稱
這是實測最重要的一段。第一次編譯時,寫了「Noto Sans CJK TC」優先的候選清單:
#set text(font: ("Noto Sans CJK TC", "WenQuanYi Zen Hei"), lang: "zh", region: "tw")
結果噴警告:
warning: unknown font family: noto sans cjk tc
┌─ demo.typ:2:16
2 │ #set text(font: ("Noto Sans CJK TC", "WenQuanYi Zen Hei"), ...)
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
這只是警告、文件照樣編譯,因為清單第二個字型接住了。但把清單拿掉、只寫一個不存在的字型,事情就不一樣了:
$ typst compile single.typ # 只寫 font: "Noto Sans CJK TC"
$ pdffonts single.pdf
name type emb
OGCMEW+IPAGothic CID TrueType yes
MOITFO+LibertinusSerif CID Type 0C yes
中文還在,但嵌入的是 IPAGothic——一套日文字型。日文字型有中文字形(漢字),問題是部分字的筆畫寫法與繁體中文不同(例如「骨」的起筆、「直」的內部),而且標點位置是日文規則。這種錯最陰險:PDF 看起來「有字」,讀者的 Word 或系統字型一看卻覺得哪裡怪。
正確做法只有兩步:
# 1) 先問系統到底裝了哪些字型家族(列出的是家族名,不是檔名)
$ typst fonts | grep -i -E "zenhei|noto|cjk"
WenQuanYi Zen Hei
# 2) 用那個名字,或直接指定字型檔所在目錄
$ typst compile --font-path ./fonts demo.typ
實測環境有 37 個字型家族,中文只有文泉驛正黑(WenQuanYi Zen Hei)。把 #set text(font: "WenQuanYi Zen Hei", lang: "zh", region: "tw") 寫對後,pdffonts 就變成:
TRQODT+WenQuanYiZenHei CID TrueType yes
同一個 PDF 裡,數學用 NewCMMath、程式碼用 DejaVuSansMono,各自嵌入正確字型。lang: "zh" 與 region: "tw" 一定要寫,它影響斷行規則與標點擠壓;不寫的話,中文標點會用西文間距,行尾對齊看起來就是不對。
實測數據:快在哪裡
在同一台 8 核心容器(無 GPU)用 /usr/bin/time 量:
| 測試 | 內容 | 結果 |
|---|---|---|
| 單頁文件 | demo.typ(中文字型+表格+公式+程式碼+figure) | 0.20 秒,1 頁,48 KB |
| 長文件 | 120 個章節、每節清單 | 0.16 秒,14 頁,173 KB |
| 記憶體峰值 | 上述兩者 | 約 48–57 MB |
| PDF/A-3b | 加 --pdf-standard a-3b | 51 KB(字型完整嵌入) |
| PNG 輸出 | --format png --ppi 96 | 66 KB/頁 |
長文件比短文件快不是筆誤——短文件那次多了字型警告與首次字型掃描的固定成本。重點是數量級:0.16 秒對 14 頁,所以 typst watch 是真的可以邊打字邊看結果,這也是 LaTeX 使用者最難習慣的地方。
官方範本:論文與履歷各一行指令
Universe 有 5,166 個套件,typst init 一行就能拉下模板:
$ typst init @preview/charged-ieee
Successfully created new project from @preview/charged-ieee:0.1.4
> cd ieee-test
> typst watch main.typ
產出 main.typ 與 refs.bib。實際編譯測試範例(#show: ieee.with(title: ..., authors: ..., abstract: ...))得到 1 頁 PDF,過程只有一個字型警告(模板指定了未安裝的 TeX Gyre Cursor,退回預設字型,不影響輸出)。
履歷更實用:
$ typst init @preview/ats-friendly-resume
$ cd ats-resume && typst compile main.typ r.pdf
# → 1 頁 PDF
ats-friendly-resume(0.1.1)的設計目標是「ATS 讀得懂」:單欄、無表格排版、純文字可解析,適合投遞外商或需要機器篩選的職缺。main.typ 開頭就是一段可改的個人資料區塊:
#let name = "你的名字"
#let location = "Taipei, Taiwan"
#show: resume.with(
author: name,
author-position: center,
location: location,
linkedin: "linkedin.com/in/your-id",
github: "github.com/your-id",
font: "New Computer Modern",
paper: "us-letter", // 台灣常用 A4,記得改
lang: "en",
)
兩個要改的地方:paper 換成 "a4",以及若投中文職缺,lang 改 "zh" 並把 font 換成系統實際有的中文字型。
HTML 與 bundle:新功能,但別拿去上線
0.15 版把 HTML 匯出接上 MathML(公式不再是圖片),還加了實驗性的 bundle 匯出(一份專案輸出多檔,適合做多頁網站)。但實際試會發現它被藏在旗標後面:
$ typst compile -f html demo.typ out.html
error: html export is only available when `--features html` is passed
$ typst compile -f html --features html mini.typ mini.html
= hint: its behaviour may change at any time
= hint: do not rely on this feature for production use cases
# → 產出 1.9 KB HTML,含內嵌 CSS、MathML 表格
能跑,官方也明講「不要用在生產環境」。適合的用法是「把文件順便吐一份網頁版」,不適合當成網站產生器。
另一個低調但對學術/公家單位有用的功能:--pdf-standard 可以一次要求多個 PDF 規範(PDF/A 存檔、PDF/UA 無障礙)。實測 --pdf-standard a-3b 產出的 PDF 字型全部嵌入、體積從 48 KB 增加到 51 KB,這對需要長期保存或送審的文件是硬需求。
跟 LaTeX、Word 怎麼選
| 面向 | Typst | LaTeX | Word/Google Docs |
|---|---|---|---|
| 學習曲線 | 低(markup 直覺) | 高 | 最低 |
| 編譯速度 | 0.2 秒級 | 數秒到數十秒 | 即時 |
| 中文支援 | 內建,指定字型即可 | 需 xeCJK/ctex 設定 | 內建 |
| 數學公式 | $...$,語法接近 LaTeX | 原生最強 | 公式編輯器較弱 |
| 版本控制 | 純文字 .typ,diff 乾淨 | 純文字 .tex | 二進位,難 diff |
| 生態成熟度 | 5,166 套件、七年 | 三十年、期刊模板齊全 | 通用 |
| 期刊/研討會接受度 | 新興(IEEE 等已有模板) | 幾乎全部 | 多數接受 |
| 錯誤訊息 | 友善、帶提示 | 較難讀 | 無(所見即所得) |
| 適合誰 | 技術文件、履歷、報告、教材 | 投稿、既有模板、複雜巨集 | 協作、非技術同事 |
一句話結論:投稿國際期刊前先確認該期刊收不收 Typst;若是自家報告、履歷、技術文件、內部規範,Typst 的投報率遠高於 LaTeX。
已知限制與沒做的事
這篇的實測範圍要說清楚,避免過度推論:
- 沒有跟 LaTeX 做同一份文件的對照計時。上面的速度數字是 Typst 自己的絕對值,不是相對倍數。坊間常說「Typst 快 10 到 100 倍」,這個數字沒有在本次環境驗證。
- 沒有測 Windows/macOS 安裝流程,winget、brew 的指令照官方 README 抄,未實跑。
- 沒有逐一驗證 5,166 個套件,只實測了
charged-ieee0.1.4 與ats-friendly-resume0.1.1 兩個。 - HTML/bundle 匯出仍是實驗功能,官方明示行為可能隨時改變,不要放進 CI 的關鍵路徑。
- 版號仍是 0.x,語法有 breaking change 的歷史(0.15 禁止路徑反斜線),模板升級要留時間。
- 1,344 個未關閉 issue,遇到邊界情況不要假設「一定有人處理過」。
- 中文字型要自己裝。容器環境預設沒有繁體中文字型時,Typst 會安靜地退回日文 IPAGothic,輸出「看起來對但筆畫不對」的 PDF——這是本文最想提醒的一個坑。
誰適合、誰不需要
- ✅ 需要產出可版控的 PDF:技術規格書、SOP、薪資結構表、教材講義
- ✅ 投遞外商或需 ATS 篩選的履歷(
ats-friendly-resume直接解決單欄純文字需求) - ✅ 討厭 LaTeX 但又需要數學公式與交叉引用
- ❌ 需要跟非技術同事即時協作編輯 → 用 Google Docs
- ❌ 投稿要求
.docx或特定.cls的期刊 → 先問編輯部
站內延伸閱讀
- Stirling PDF 完整教學 2026:92K 星開源 PDF 工具箱 — Typst 產出的 PDF 要合併、加頁碼、壓縮或 OCR,接手的就是它
- Paperless-ngx 完整教學 2026:紙本文件數位化 — 排版好的文件進到文件管理系統後,怎麼做全文檢索與自動分類
- DuckDB 完整教學 2026:從安裝到查詢 Parquet 實戰 — 把資料撈出來、算出表格數字,再交給 Typst 排版輸出報告
原始來源
- Typst 官方網站與文件(語法、set/show rule、CLI 參數)
- GitHub:typst/typst(README 安裝方式、授權、星數,2026-11-09 查詢)
- Typst 0.15.0 更新日誌(HTML/bundle 匯出、變數字型、多 PDF 規範)
- Typst Universe 套件庫(模板來源;
charged-ieee、ats-friendly-resume)
本文所有版本號、星數與編譯時間均為 2026-11-09 在容器內實際執行所得;套件數量與專案數據以官方頁面當下顯示為準。
