YAMLResume 與 LaTeX 的比較
數十年來,LaTeX 一直是工程師、研究人員與學術界
製作專業排版履歷的業界標準。撰寫 .tex 檔案、編譯它,就能獲得 Word 無法比擬的
排版品質。這個工作流程周圍發展出豐富的模板生態系——
Awesome-CV(20,000+ GitHub 星標)、
moderncv、
Jake's Resume、
Deedy-Resume、
AltaCV——而
Overleaf 託管了數百個可在瀏覽
器中編譯的履歷模板。
摘自 LaTeX 官方專案網站:
LaTeX is a document preparation system for high-quality typesetting. It is
most often used for medium-to-large technical or scientific documents but it
can be used for almost any form of publishing.不過,重點在於:YAMLResume 並非 LaTeX 的替代品——它是建構於 LaTeX 之上的。
YAMLResume 的 LaTeX 引擎 會從您的 YAML 產生 .tex
原始碼,並使用 XeLaTeX 編譯,這個引擎與手寫 LaTeX 履歷使用的是相同的引擎。真正的
比較在於兩種撰寫工作流程:直接在 TeX 標記中撰寫履歷,或是以結構化 YAML 撰寫,再
讓編譯器為您產生 TeX。
以下為兩種工作流程的比較:
功能比較
| 功能 | YAMLResume | 手寫 LaTeX |
|---|---|---|
| 做法 | YAML 原始碼編譯為 LaTeX | 直接使用 TeX 撰寫文件 |
| 撰寫語言 | YAML(純文字,無標記) | TeX/LaTeX 標記 |
| TeX 知識 | 無需具備 | 需要熟練才能自訂 |
| 排版引擎 | XeLaTeX | 由您選擇:pdfLaTeX、XeLaTeX、LuaLaTeX |
| 輸出格式 | DOCX、HTML、Markdown、LaTeX/PDF | PDF(可透過 pandoc 轉換,但有損品質) |
| 產生的原始碼 | 會輸出乾淨的 .tex 原始碼供您檢視或調整 | 不適用(手寫原始碼就是全部) |
| 結構驗證 | 嚴格的 Zod 驗證,搭配 JSON Schema IDE 整合 | 無——只有編譯時的 TeX 錯誤 |
| 錯誤報告 | clang 風格診斷訊息,包含行號、欄位與原始碼片段 | TeX 記錄檔:經常出現難以理解的連鎖錯誤,且遠離真正原因 |
| 環境設定 | npm install -g yamlresume、Homebrew,或已預先安裝 XeTeX 的 Docker;yamlresume doctor 會檢查字型 | 數 GB 的 TeX Live/MacTeX/MiKTeX 安裝、尋找缺少的套件、手動設定字型——或使用雲端 Overleaf |
| 模板 | 精選的官方 LaTeX、HTML 與 DOCX 模板 | 數千個社群模板與類別(Awesome-CV、moderncv、AltaCV、Jake's Resume,...) |
| 設計自訂 | 頁面、排版 與章節控制項——由主題封裝 | 無限制——任何 TeX 能排版的內容都可以 |
| 章節自訂 | 別名 與重新排序 | 任意巨集與環境 |
| 國際化 | 10 種語言橫跨 12 個語系代碼,自動設定 babel 與 CJK 套件 | 手動設定:babel/polyglossia、fontspec、ctex/xeCJK/luatexja/kotex |
| 富文字 | 在 summary 欄位中使用精選的 Markdown 語法 | 任何位置都可以使用任何 TeX 標記 |
| 資料模型 | 固定、結構化結構;具備 JSON Resume 互操作性 | 自由格式文件 |
| AI 工作流程 | 內建的產生與翻譯功能;Markdown 輸出對 LLM 友善 | 自行編寫 LLM 提示詞 |
| 開發模式 | yamlresume dev 會在每次儲存時重新建置 | latexmk -pvc 或 Overleaf 自動編譯 |
| 版本控制 | 乾淨的內容差異——只有有意義的變更會顯示 | 差異夾雜著標記變動 |
| CI/CD | 官方 GitHub Action + Docker 映像檔 | 社群 action(例如 latex-action);Overleaf GitHub 同步是付費功能 |
| 協作 | 在純 YAML 上進行 Git 拉取請求 | Overleaf 即時協作(付費層級)或對 .tex 使用 Git |
| 確定性輸出 | 是 | 是,如果您固定工具鏈與套件 |
| 成本 | 免費(開源) | 自行託管免費;Overleaf 為 freemium 模式 |
主要差異說明
撰寫:內容與標記
最明顯的差異在於您每天面對的內容。以下為同一筆工作經歷的兩種寫法。
在手寫的 Awesome-CV 風格履歷中:
\cventry{Jan 2020 -- Present}
{Senior Software Engineer}
{ACME Inc.}
{San Francisco, CA}
{
\begin{itemize}
\item Led a team of 5 engineers building payments infrastructure
\item Reduced p95 latency by 40\% via query optimization
\end{itemize}
}在 YAMLResume 中:
work:
- name: ACME Inc.
position: Senior Software Engineer
startDate: Jan 2020
summary: |
- Led a team of 5 engineers building payments infrastructure
- Reduced p95 latency by 40% via query optimization兩者都能產生專業排版的工作經歷項目。但在 LaTeX 版本中,您的內容被包在巨集、大括號與 環境中;在 YAML 版本中,您的內容就是檔案本身。任何人——包括非程式設計師的同事、招募 人員,或是在手機上的未來的您——都能閱讀並編輯 YAML。而且因為標記是編譯器的工作,您可 以透過修改零行內容來改變文件中每個日期的渲染方式。
驗證與除錯
這是兩種工作流程分歧最明顯的地方。
使用手寫 LaTeX 時,您唯一的安全網是編譯器。TeX 錯誤以難以理解與連鎖而聞名:職稱中一
個游離的 & 可能會在類別檔案深處顯示為 Misplaced \omit,而要追蹤它就需要仔細閱讀記
錄檔。內容錯誤——例如格式錯誤的日期或拼錯的欄位——對 TeX 來說只是文字;它會很樂意地將
startDtae 排版出來。
YAMLResume 會在輸出任何一行程式碼之前先驗證您的資料。 編譯器 會根據嚴格的 Zod 結構檢查您的履歷,並回 報包含行號、欄號與問題原始碼片段的 clang 風格診斷訊息:
$ yamlresume validate my-resume.yml
my-resume.yml:9:12: warning: email is invalid.
email: hi@pp
^
my-resume.yml:38:10: error: city is too short.
city: S
^當 XeLaTeX 執行時,資料已經確認無誤,編譯失敗變得罕見——通常是 doctor 已經標記過的
字型或套件問題。
內容與呈現的分離
手寫 LaTeX 會將內容與呈現糾纏在一起。每個項目都包在模板特定的巨集中,這表示切換模板
就意味著重寫履歷。從 moderncv 搬到 AwesomeCV 不只是一個主題變更;而是要將每個
\cventry 轉換成另一個巨集(或新類別所期望的任何形式),並重新調整引數順序。
YAMLResume 將關注點分離作為設計原則:
content:您的履歷內容locale:它使用的語言與地區layouts:它的外觀——引擎、模板、頁面、排版、章節別名與順序
想將履歷從 moderncv-banking 風
格切換到 jake 風格?只需修改 layouts 中的
一行;內容檔案完全不受影響。這也讓針對不同申請進行客製化變得輕而易舉:保留一份標準內
容檔案,並維護幾個會重新排序或別名章節的小型版面配置變體。
單一來源,四種引擎
.tex 檔案編譯成 PDF。這就是整個流程,對許多人來說已經足夠——直到招募人員要求 Word
版本、您想把履歷放在個人網站上,或是需要純文字版本貼到 ATS 表單中。Pandoc 可以將
LaTeX 轉換為 DOCX 或 HTML,但結果在排版上遠不如專用引擎,因為轉換必須從標記中猜測意
圖。
YAMLResume 提供四個第一類引擎——DOCX、
HTML、Markdown 與
LaTeX——而單一 yamlresume build 就能從相同來源產生全
部輸出。在 2026 年,Markdown 引擎 特別實用:它能為
LLM 與 ATS 解析器提供從相同已驗證資料中提取的乾淨、結構化文字。
國際化
用手寫 LaTeX 製作德文或中文履歷本身就是一個專案。德文需要搭配 ngerman 的 babel、
德文日期字串與正確的引號。中文需要選擇 ctex、xeCJK 或 luatexja、安裝 CJK 字型並設定字
型後備——對 TeX 老手來說是熟悉的道路,但第一次做可能真的要好幾天。每增加一種語言,工
作量就會倍增,因為文件之間沒有任何共享。
在 YAMLResume 中,您設定 locale 鍵。編譯器會翻譯章節標題、國
家名稱、學位、技能等級與流利度等級;以慣用方式格式化日期與地址;套用適合語系的標點規
則(包括 CJK 的全形標點與法文高標點前的不斷行空格);並自動為 XeLaTeX 設定
babel 與正確的 CJK 套件。而且
yamlresume ai translate 可以將您的整份履歷進行結構保留
翻譯,轉換成任何支援的語系——將原本可能需要好幾天的排版專案變成單一指令。
自訂上限
公平地說:手寫 LaTeX 在控制能力上勝出,而且差距懸殊。任何 TeX 能排版的內容,您都可以
放進手寫履歷中——TikZ 圖表、自訂巨集、精確的微排版調整、學術 CV 的 biblatex 出版列
表、多頁版面配置、共用相同類別的求職信。如果您是享受這一切的 TeX 專家,YAMLResume 會
感覺像護欄。
但這個上限伴隨著成本:所有事情都永遠是您的責任。每個巨集衝突、套件升級與字型邊緣案例 都得由您處理。YAMLResume 用較高的下限換取無限的天花板:精選模板將專業排版決策封裝起 來,讓您無法做出糟糕的選擇,同時仍提供重要的控制項——紙張大小、邊距與頁碼、字型家族、大小與行距,以及章節別名與順序。
如果您真的碰到天花板,還有一個逃生出口:生成的 .tex 原始碼會與您的 PDF 一起輸出。
您可以閱讀它來學習,或是分支它並接手後續工作。YAMLResume 不會對您隱藏 LaTeX;它只是
不要求您非得會用它。
生態系統
模板
手寫 LaTeX 生態系統最大的優勢在於規模:GitHub、Overleaf 圖庫、CTAN 與各種策展網站上有數千個履歷模板,涵蓋各種可想像的視覺風格。代價是品質差異大——模板範圍從維護嚴謹的類別,到帶有硬編碼數值、過時套件使用方式且無驗證的一次性匯出。
YAMLResume 採用精選方法:一小組官方 LaTeX 模板 (moderncv-classic、moderncv-casual、moderncv-banking、jake 等),每個都針對全部 12 個語系代碼進行測試,因此切換模板絕不會默默破壞在地化的履歷。
Overleaf
Overleaf 是 LaTeX 世界中最接近 YAMLResume 體驗的東西:無 需安裝、模板圖庫、每次按鍵都自動編譯,加上真正優秀的即時協作功能。如果您想繼續使用 LaTeX 工作流程,它是最簡單的方式。
代價是結構性的:您的專案存在於雲端服務中;版本歷史、追蹤修訂與 GitHub 同步等功能都位
於付費方案之後;而且您仍然只有一份 .tex 文件——沒有結構化資料、沒有多格式匯出、沒有
結構驗證、沒有 CLI。YAMLResume 透過本機的 yamlresume dev 提
供媲美 Overleaf 的迭代速度,並以 Git 作為版本歷史。
CI/CD
兩種工作流程都能自動化。LaTeX 世界有社群解決方案,例如用於 GitHub Actions 的 latex-action,而 Overleaf 的 GitHub 同步是 付費功能。YAMLResume 提供官方 GitHub Action, 可一次驗證您的履歷並建置全部四種格式:
- uses: yamlresume/action@v0.16.1
with:
resumes: |
resume-en.yml
resume-zh.yml
resume-fr.yml因為輸入是結構化 YAML,CI 還能做到 .tex 流程無法做到的事:拒絕引入結構錯誤的拉取請
求、在沒有標記雜訊的情況下比較內容變更,或是從單一編輯重新產生所有在地化變體。
總結
手寫 LaTeX 適合以下需求:
- 完整的排版控制——自訂巨集、TikZ 圖形、
biblatex參考書目、精確間距、任何您能想像的 版面配置 - 存取數千個各種風格的社群模板與類別
- 與您已用於論文、學位論文與簡報的相同工具鏈
- 如果您喜歡維護 TeX 技能,這是一門真正有趣的工藝
- 透過 Overleaf 獲得雲端便利性與協作功能
YAMLResume 適合以下需求:
- 透過 XeLaTeX 獲得 LaTeX 等級的 PDF 排版——無需撰寫或除錯 TeX
- 結構化、已驗證的資料,搭配 clang 風格錯誤訊息,取代編譯記錄檔
- 從單一原始檔案產生多種輸出格式(DOCX、HTML、Markdown、LaTeX/PDF)
- 橫跨 10 種語言與 12 個語系代碼的深入國際化,包含自動 CJK 設 定與 AI 輔助翻譯
- 無需重寫內容即可切換模板,這得益於內容、語系與版面配置的嚴格分離
- 開發者工具鏈:監看模式、環境診斷、Docker、Homebrew,以及用於 CI/CD 的 GitHub Action
如果您已經熟悉 TeX、需要任何結構化結構都無法表達的版面配置,或將排版視為工藝的一部 分,請選擇手寫 LaTeX。
如果您想要 LaTeX 聞名遐邇的輸出品質,但希望您的履歷讀起來像資料而非程式,請選擇 YAMLResume。
Last updated on