YAMLResume

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/PDFPDF(可透過 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。

Edit on GitHub

Last updated on

On this page