YAMLResume

YAMLResume 與 RenderCV 的比較

RenderCV 是另一個受歡迎的 YAML 履歷產生器,由 Sina Atalay 所建立。它以 Python 撰寫,並使用 Typst——一種現代排版系統——作為 PDF 引擎。RenderCV 在開源社群 中獲得了相當大的關注,擁有超過 17,000 個 GitHub 星標。

摘自其官方儲存庫:

Write your CV or resume as YAML, then run RenderCV,

rendercv render John_Doe_CV.yaml

and get a PDF with perfect typography.

With RenderCV, you can:

- Version-control your CV — it's just text.
- Focus on content — don't worry about the formatting.
- Get perfect typography — consistent alignment and spacing, handled for you.

RenderCV 採用內容優先的做法:您用 YAML 撰寫履歷資料,RenderCV 再透過 Typst 將其轉換為專業排版的 PDF。它提供廣泛的設計自訂、任意的章節標題,以及內容與呈現之 間的清晰分離。

YAMLResume 與 RenderCV 擁有相同的核心哲學——履歷即程式碼——但它們在架構、國際 化深度、生態系統工具與資料模型彈性方面存在顯著差異。以下為兩者的比較:

功能比較

功能YAMLResumeRenderCV
語言TypeScript/Node.jsPython 3.12+
資料格式YAMLYAML
排版引擎DocxHTMLMarkdownLaTeX/XeTeXTypst
輸出格式Docx、HTML、Markdown、LaTeX/PDFPDF、Markdown、HTML、PNG
結構驗證嚴格的 Zod 結構驗證,搭配編譯器與 IDE 整合Pydantic 驗證與用於 IDE 自動完成的 JSON Schema
錯誤報告具備行號與位置資訊的 clang 風格診斷訊息具備欄位路徑的 Pydantic 錯誤訊息
國際化內建 12 種語言,具備深度在地化22 個內建語系(月份名稱、日期字串),需要手動自訂
日期格式語系特定的慣用格式(地址順序、標點符號、月份名稱)可透過 locale 欄位設定(月份縮寫、目前字串)
地址格式語系感知的重新排序(例如中文、德文、英文之間的差異)自由格式文字
富文字支援summary 欄位中使用精選的 Markdown 富文字語法所有文字欄位都支援 Markdown + Typst 數學/指令
字型自訂字型家族、字型大小、行距字型家族、字型大小、行距、粗體、小型大寫等
顏色自訂無(取決於主題)對每個元素(姓名、連結、章節標題等)進行完整的 RGB 顏色控制
版面自訂頁面邊距、頁碼、紙張大小頁面邊距、紙張大小、頁首對齊、照片位置、頁尾等
章節自訂別名重新排序任意章節標題;每個章節一種條目類型
條目類型每個章節採用固定的結構(work、education、projects 等)9 種可重複使用的條目類型(ExperienceEntry、EducationEntry、BulletEntry 等)
模板/主題多個官方 LaTeXHTML 模板9 個內建主題,支援完整的模板覆寫
自訂主題基於模板(DOCX/HTML/LaTeX 原始碼)使用可編輯的 Typst/Jinja2 模板執行 rendercv create-theme
開發模式具備自動重建的開發模式--watch 旗標,用於自動重新載入
Docker 支援官方 Docker 映像檔,已預先安裝 LaTeX 與 YAMLResume在 GHCR 上的官方 Docker 映像檔(linux/amd64 與 linux/arm64)
GitHub Action用於 CI/CD 的官方 GitHub Action無(社群解決方案存在)
Homebrew可在 macOS 與 Linux 上輕鬆安裝的 Homebrew formula無(僅支援 pip install)
線上 Playground互動式網頁 playgroundrendercv.com 上的 Web 應用程式
AI 整合官方的 AI agent skill
確定性輸出是(相同輸入可產生位元組完全相同的輸出)

主要差異說明

如果必須用一個詞來總結 YAMLResume 與 RenderCV 的差異,那就是具有明確意見對上靈 活。YAMLResume 執行嚴格的標準化資料模型,具備深度的語系支援與多個渲染引 擎。RenderCV 則在章節結構與更廣泛的視覺自訂方面給您更多自由,代價是較少的內建標 準化。

資料模型

兩個工具都使用 YAML 作為輸入格式,但它們對資料建模的方式不同。

結構化對上靈活的章節

YAMLResume 使用固定結構,具備明確定義的章節(basicsworkeducationskillsprojectspublicationsawardscertificatesvolunteerreferenceslanguagesinterests)。每個章節都有可預測的形狀,編譯器會嚴格 驗證。這使得以程式設計方式分享、轉換與處理履歷資料變得更加容易。

YAMLResume 也深受 JSON Resume 的啟發,兩者的結構密切 相符。YAMLResume 的編譯器可以直接接受 JSON Resume 檔案,而 json2yamlresume 轉換器會處理所有標準 的 JSON Resume 章節。這意味著 YAMLResume 履歷可以與更廣泛的 JSON Resume 生態系 統——主題、登錄檔、API 與第三方工具——互操作,而無需自訂轉接器。

RenderCV 使用靈活的字典模型,其中章節標題是任意字串,而每個章節包含一系列條 目。您可以為章節命名任何名稱——「Professional Experience」、「Employment History」或「Things I Did」——並從 9 種條目類型中選擇 (ExperienceEntryEducationEntryPublicationEntryNormalEntryOneLineEntryBulletEntryNumberedEntryReversedNumberedEntryTextEntry)。

這種彈性對於一次性自訂非常強大,但在跨工具或主題分享資料時可能導致不一致。 YAMLResume 的固定模型以犧牲部分靈活性為代價,換取了一致性、驗證深度與更輕鬆的資 料交換。

固定金鑰與資料交換

固定與任意章節名稱之間的差異不僅僅是外觀上的——當您儲存、查詢或整合履歷資料時,這 會產生實際的工程後果。

使用 YAMLResume 時,每份履歷都使用相同的金鑰。如果您將履歷以 JSONB 格式儲存在 PostgreSQL 資料庫中,可以使用簡單且可靠的運算式查詢工作經驗、技能或證照:

-- Find candidates with Python in their skills
SELECT id, content->'basics'->>'name'
FROM resumes
WHERE content->'skills' @? '$[*].keywords ? (@ == "Python")';

-- Find candidates with at least three work experiences
SELECT id, content->'basics'->>'name'
FROM resumes
WHERE jsonb_array_length(content->'work') >= 3;

因為 RenderCV 的章節標題是任意字串,相同的查詢會變得更加複雜。一個工作經歷章節可 能命名為「Experience」、「Professional Experience」、「Employment History」或 「Career」,資料庫沒有可靠的金鑰可以查詢。您必須:

  1. 撰寫啟發式方法來檢查每個章節的條目,並從 companyposition 等欄位推斷類 型。
  2. 維護一個從使用者提供的章節標題到語意類型的單獨對應。
  3. 接受跨履歷的篩選與聚合將會不一致。

RenderCV 的條目類型確實在章節內部提供了結構,但章節容器本身是自由格式的。 YAMLResume 的固定金鑰讓您可以將履歷視為統一的記錄:將它們匯入資料庫、餵給 API, 或使用標準工具轉換,而無需先對不可預測的章節標題進行正規化。

標準化欄位

YAMLResume 將常用數值正規化為固定詞彙,在編譯時進行驗證,並在所有支援的語系中進 行翻譯:

  • 學位Middle SchoolHigh SchoolBachelorMasterDoctor 等)
  • 技能等級NoviceBeginnerIntermediateAdvancedExpertMaster
  • 語言流利度(從 ElementaryNative
  • 國家與地區(翻譯為每一種支援的語言)

RenderCV 接受這些欄位的自由格式字串,給您完全的控制權,但一致性和在地化則完全交 給您自行處理。

更扁平的結構

YAMLResume 將 location 與社交 profiles 金鑰置於最上層,與 basics 分開,簡 化了資料模型,並使其在各個章節之間更加一致。RenderCV 將 location 嵌套在 cv 標 頭物件下,並使用 social_networks 表示連結。

RenderCV 資料模型的其他功能

RenderCV 的 YAML 輸入還包含一些 YAMLResume 目前尚未具備的功能:

  • settings 章節:用於 pdf_titlecurrent_date: today 等選項的最上層 settings 區塊。
  • 個人照片cv.photo 接受本機路徑或 URL。
  • 自訂連結cv.custom_connections 可讓您新增任意的頁首連結,並搭配自訂佔位 符文字與 Font Awesome 圖示。
  • 多個聯絡值emailphonewebsite 都可以是數值清單。

內容與富文字

兩個工具都支援 Markdown 格式,但範圍與能力不同。

Markdown 支援

YAMLResume 在所有包含 summary 欄位的章節中,支 援有限的一組 Markdown 語法 (粗體、斜體、連結、 清單與段落)。這是刻意限制的,以確保在 LaTeX、HTML 與 Markdown 引擎之間呈現一 致。

RenderCV 在所有文字欄位中都支援基本 Markdown(粗體、斜體、連結、行內程式 碼),包括亮點與摘要。亮點也支援巢狀子項目。此外,RenderCV 支援 Typst 數學語法 ($$f(x) = x^2$$)與 Typst 指令(#emph[text]`),這對於需要在履歷中加入方程式 的學者與工程師非常有用。

多行字串

YAMLResume 的核心設計決策之一是利用 YAML 的多行字串語法來撰寫可讀的富文 字。RenderCV 也受益於 YAML 的多行語法,但由於其 Markdown 支援更廣泛且適用於更多 欄位,可讀性優勢是共享的。

結構驗證

兩個工具都認真看待驗證,但它們的方法不同。

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
          ^

YAMLResume 還提供官方 JSON Schema,用於 IDE 自動完成、懸停文件,以及在 VS Code 等編輯器中進行即時驗證。

RenderCV 使用 Pydantic 進行驗證,提供強大的型別檢查與清晰的欄位路徑錯誤訊息。它 也會生成 JSON Schema 以整合 IDE。

版面配置與渲染

兩個工具都將內容與設計分離,但它們的渲染架構存在顯著差異。

引擎

YAMLResume 提供四個渲染引擎:

  • DOCX 引擎:Microsoft Word 文件,方便編輯與分享
  • HTML 引擎:具備回應式設計與 SEO 中繼資料的網頁 就緒履歷
  • Markdown 引擎:適用於 LLM、ATS 系統與靜態 網站的純淨文字
  • LaTeX 引擎:透過 XeTeX 產生具備專業排版的像素 級精準 PDF

單一 yamlresume build 指令即可從相同的原始檔案產生所有四種格式。

RenderCV 使用 Typst 作為其主要排版引擎。Typst 是 LaTeX 的現 代替代方案,編譯速度更快,並產生符合標準的 PDF。單一 rendercv render 指令會輸 出 PDF、Markdown、HTML 與 PNG,以及中間的 Typst 原始碼(.typ)。自 v2.8 起, rendercv-typst 套件與 Font Awesome 已捆綁在 Python wheel 中,因此 PDF 編譯可以 離線運作,無需執行時下載。

DOCX 輸出

輸出格式方面的一個實際差異是 Microsoft Word(DOCX)支援。YAMLResume 包含專用的 DOCX 引擎,可從相同的 YAML 原始碼產生可編輯的 .docx 檔案,這在需要與期望 Word 文件的招募人員或用人經理分享履歷,或想在文書處 理器中進行最後編輯時非常有用。RenderCV 不提供 DOCX 輸出;其管線圍繞 Typst 建 立,PDF 是主要交付物,Markdown、HTML 與 PNG 則是次要格式。

設計自訂

RenderCV 提供比 YAMLResume 更細微的視覺控制:

  • 顏色:對每個文字元素(內文、姓名、標題、連結、章節標題、頁尾)進行完整的 RGB 控制
  • 排版:每個元素的字型家族、每個元素的字型大小、粗體/小型大寫切換、行距、文 字對齊
  • 頁面:紙張大小包括 a4a5us-letterus-executive
  • 頁首:照片位置與大小、連結分隔符、社群網路圖示,以及電話號碼格式 (nationalinternationalE164
  • 章節標題:8 種不同的標題樣式(有/無線條、置中等)
  • 條目:欄寬、項目符號字元、間距、分頁行為,以及自動時間跨度計算(例如「2 years 3 months」)
  • 模板:使用帶有 NAMECOMPANYDATE 等佔位符的 Jinja2 模板,覆寫每種 條目類型的渲染方式

YAMLResume 的 LaTeX 引擎提供頁面自訂(紙張大 小、邊距、頁碼)與排版控制(字型家族、字 型大小、行距),但不公開每個元素的顏色或細微的間距控制。這是刻意設計 的:YAMLResume 模板將視覺決策封裝起來,讓您無需自己處理。

章節自訂

YAMLResume 讓您能夠透 過章節別名章節重新排序 來重塑履歷結構,而無需修改底層資料:

  • 章節別名:覆寫 12 個可設定別名章節的預設標題
  • 章節重新排序:使用簡單的 order 清單變更章節的呈現順序

RenderCV 的章節模型在本質上有所不同:因為章節標題是任意字串,「別名」就是寫一個 不同的標題。重新排序就是重新排列 YAML 字典中的鍵。RenderCV 也支援 design.templates 來覆寫個別條目類型的渲染方式,這遠遠超越了 YAMLResume 的別名/ 重新排序系統。

語系(國際化)

這是兩個工具之間最大的差異之一。

YAMLResume 開箱即用地支援 10 多種語言 (EnglishChineseSpanishFrenchNorwegianDutchJapaneseGermanIndonesianBrazilian Portuguese 等),內建翻譯包括章節標 題、國家名稱、學位、技能等級、語言流利度等級、慣用的地址與日期格式、語系適當的標 點符號,以及 LaTeX babel 設定。

例如,YAMLResume 會自動:

  • 重新排序中文(國家 → 地區 → 城市 → 地址)與英文(地址 → 城市 → 地區 → 國家)的 地址元件
  • 對 CJK 語言使用全形標點符號(表示逗號,表示冒號)
  • 在法文的高標點符號前加入不斷行空格(: ! ?
  • 以慣用方式格式化日期:「Jun 2018 – Present」(英文)、「2018年6月至今」(中 文)、「2016年10月~2018年1月」(日文)
  • 設定 LaTeX babel 以實現正確的斷字、日期格式與字元處理

RenderCV 包含 22 個內建語系,提供月份名稱、日期縮寫與少量可翻譯字串(presentlast_updated 等),包括阿拉伯文、希伯來文與波斯文等從右至左(RTL)語言。您也可 以透過手動填寫所有欄位來建立完全自訂的語系,並透過 locale.phrases 自訂語系特定 的片語(例如「DEGREE in AREA」)。然而,RenderCV 不會自動重新排序地址、套用語 言特定的標點規則,或設定排版引擎以實現語系特定的排版。它提供基本元素;YAMLResume 則提供完整方案

CJK 與複雜文字排版

排版引擎的選擇也會影響每個工具處理中文、日文、韓文(CJK)與其他複雜文字的效果。

YAMLResume 的 LaTeX 引擎可以利用數十年的 CJK 專用工具:ctex 用於中文、luatexja 用於日文、 kotex 用於韓文,以及 xeCJK 用於 XeLaTeX。這些套件可以開箱即用地處理字型 後備、全形標點壓縮、CJK-Latin 間距、直書、注音/振假名,以及語系感知斷 行。YAMLResume 的語系層會自動為每種支援的語言設定正確的套件與字型,因此中文或日 文履歷無需手動調整 Typst 即可正確渲染。

RenderCV 的 Typst 引擎現代且快速,但其 CJK 支援仍在追趕中。社群維護的 clreq-gap for Typst 文件記錄了截至 Typst v0.15.1 為止仍然存在的一系列中文排版差距,包括:沒有直書模式、CJK 字形的預 設字型後備不可靠、程式碼區塊與數學方程式中的 CJK 後備不正確、CJK 與拉丁文字混排 時底線對齊不準確、沒有原生注音/拼音標注,以及全形引號處理不一致。對於簡單的水平 履歷來說,其中許多都是邊緣案例,但如果您需要出版物品質的 CJK 排版,這些就很重 要。

簡而言之:對於 CJK 履歷,YAMLResume 的 LaTeX 路徑是現今更成熟且經過實戰考驗的選 擇。RenderCV 適用於簡單的水平 CJK 內容,且正在快速改進,但在進階 CJK 功能方 面,LaTeX 仍然領先。

如需進一步了解 LaTeX 與 Typst 作為排版引擎之間的差異,請參閱這篇 文章

開發者體驗

兩個工具都提供現代化的 CLI 體驗。

YAMLResume 提供:

  • yamlresume new:從官方模板建立新履歷
  • yamlresume build:一次將您的履歷建置為 DOCX、HTML、Markdown 與 PDF
  • yamlresume dev:每次儲存時重新建立履歷的監看模式
  • yamlresume doctor:診斷您的 LaTeX 環境與字型設定
  • yamlresume validate:無需建置即可檢查您的履歷
  • yamlresume languages list:列出所有支援的語言
  • yamlresume templates list:列出每個引擎所有可用的模板

RenderCV 提供:

  • rendercv new:使用選擇的主題產生範例 CV
  • rendercv render:從您的 YAML 輸入產生 PDF、Markdown、HTML 與 PNG
  • rendercv render --watch:編輯時自動重新載入
  • rendercv render --output-folder:指定自訂輸出目錄
  • rendercv create-theme:使用可編輯的模板建立自訂主題骨架
  • 點號標記覆寫:無需編輯檔案即可從 CLI 變更特定的 YAML 欄位

RenderCV 的 --watch 模式與點號標記 CLI 覆寫對於快速迭代特別方便。YAMLResume 的 doctor 指令與多引擎建置管線則是疑難排解與多格式輸出的獨特優勢。

生態系統與社群

Docker

YAMLResume 提供一個 官方 Docker 映像檔,已預先安裝 所有相依項目,包括 Node.js、LaTeX 與推薦字型:

docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml

RenderCV 也提供一個 官方 Docker 映像檔, 位於 ghcr.io/rendercv/rendercv,支援 linux/amd64linux/arm64,並已預先 安裝 Python 與 RenderCV:

docker run --rm -v "$PWD":/work -u $(id -u):$(id -g) -e HOME=/tmp -w /work ghcr.io/rendercv new "Your Name"

Homebrew

YAMLResume 可透過 Homebrew 在 macOS 與 Linux 上使用:

brew install yamlresume

RenderCV 沒有 Homebrew formula,必須透過 pip install "rendercv[full]" 安裝。

GitHub Action

YAMLResume 提供一個用於 CI/CD 管線的 官方 GitHub Action

- uses: yamlresume/action@v0.2.3
  with:
    resumes: |
      resume-en.yml
      resume-zh.yml
      resume-fr.yml

RenderCV 沒有官方 GitHub Action,雖然社群工作流程存在。

獨立執行檔

RenderCV 在 GitHub Releases 上發布 Linux(x86_64 與 ARM64)、macOS(ARM64)與 Windows(x86_64)的獨立執行檔,因此使用者無需安裝 Python 即可執行 RenderCV。

Web 介面

YAMLResume 提供一個互動式網頁 playground,讓您可以即時編輯 履歷並查看所有支援輸出格式的即時預覽。Playground 完全在瀏覽器中執行,沒有伺服器 端渲染。

RenderCV 運作 rendercv.com,這是一個在瀏覽器中執行相同 Typst 管線的 Web 應用程式。它還提供官方的 AI agent skillnpx skills add rendercv/rendercv-skill),可與 Claude Code、Cursor、Copilot 與其他 AI 編碼代理程式搭配使用。

總結

RenderCV 適合以下需求:

  • 無需編輯原始排版程式碼即可進行深度視覺自訂(顏色、字型、間距、模板)
  • 現代、快速的 PDF 引擎(Typst),具備出色的 ATS 相容性,透過標記化 PDF 實現,現 已捆綁支援離線渲染
  • 任意章節標題與靈活的條目類型,適用於高度自訂的 CV 結構
  • 學術與技術內容的 Typst 數學與指令支援
  • 內建 RTL 支援與 22 個語系
  • 個人照片、自訂頁首連結與其他靈活的頁首選項
  • 用於自然語言履歷編輯的 AI agent skill

YAMLResume 適合以下需求:

  • 深度的國際化,包含慣用日期格式、地址排序、標點規則,以及 12 種語言的 LaTeX babel 設定
  • 透過 ctex、luatexja、kotex 與 xeCJK 等 LaTeX 套件實現成熟的 CJK 與複雜文字排版
  • 從單一原始檔案產生多種渲染引擎(DOCX、HTML、Markdown、LaTeX/PDF)
  • 原生 Microsoft Word(DOCX)輸出,適合需要可編輯文件的招募人員或用人經理
  • 嚴格驗證的標準化資料模型,確保跨履歷、團隊與工具的一致性
  • 與 JSON Resume 相容的固定章節資料,易於在資料庫中查詢、從 API 取用,並與其他工 具交換
  • 豐富的分發工具生態系統:Docker、Homebrew、GitHub Action 與互動式網頁 playground
  • 開箱即用的做法,將排版與版面配置最佳實踐編碼到官方模板中

如果您是學者或工程師,想要精細控制每個視覺細節,並偏好 Typst 的現代排版勝過 LaTeX,請選擇 RenderCV

如果您想要一個具有明確意見、開箱即用的解決方案,能夠處理從資料驗證到多種格式與語 言的專業 PDF 產生的所有事情,並具備監看模式、Docker 支援與 CI/CD 整合等現代化開 發者工具,請選擇 YAMLResume

Edit on GitHub

Last updated on

On this page