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 擁有相同的核心哲學——履歷即程式碼——但它們在架構、國際 化深度、生態系統工具與資料模型彈性方面存在顯著差異。以下為兩者的比較:
功能比較
| 功能 | YAMLResume | RenderCV |
|---|---|---|
| 語言 | TypeScript/Node.js | Python 3.12+ |
| 資料格式 | YAML | YAML |
| 排版引擎 | Docx、HTML、Markdown、LaTeX/XeTeX | Typst |
| 輸出格式 | Docx、HTML、Markdown、LaTeX/PDF | PDF、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 等) |
| 模板/主題 | 多個官方 LaTeX 與 HTML 模板 | 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 | 互動式網頁 playground | rendercv.com 上的 Web 應用程式 |
| AI 整合 | 無 | 官方的 AI agent skill |
| 確定性輸出 | 是 | 是(相同輸入可產生位元組完全相同的輸出) |
主要差異說明
如果必須用一個詞來總結 YAMLResume 與 RenderCV 的差異,那就是具有明確意見對上靈 活。YAMLResume 執行嚴格的標準化資料模型,具備深度的語系支援與多個渲染引 擎。RenderCV 則在章節結構與更廣泛的視覺自訂方面給您更多自由,代價是較少的內建標 準化。
資料模型
兩個工具都使用 YAML 作為輸入格式,但它們對資料建模的方式不同。
結構化對上靈活的章節
YAMLResume 使用固定結構,具備明確定義的章節(basics、work、education、
skills、projects、publications、awards、certificates、volunteer、
references、languages、interests)。每個章節都有可預測的形狀,編譯器會嚴格
驗證。這使得以程式設計方式分享、轉換與處理履歷資料變得更加容易。
YAMLResume 也深受 JSON Resume 的啟發,兩者的結構密切
相符。YAMLResume 的編譯器可以直接接受 JSON Resume 檔案,而
json2yamlresume 轉換器會處理所有標準
的 JSON Resume 章節。這意味著 YAMLResume 履歷可以與更廣泛的 JSON Resume 生態系
統——主題、登錄檔、API 與第三方工具——互操作,而無需自訂轉接器。
RenderCV 使用靈活的字典模型,其中章節標題是任意字串,而每個章節包含一系列條
目。您可以為章節命名任何名稱——「Professional Experience」、「Employment
History」或「Things I Did」——並從 9 種條目類型中選擇
(ExperienceEntry、EducationEntry、
PublicationEntry、NormalEntry、OneLineEntry、BulletEntry、
NumberedEntry、ReversedNumberedEntry、TextEntry)。
這種彈性對於一次性自訂非常強大,但在跨工具或主題分享資料時可能導致不一致。 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」,資料庫沒有可靠的金鑰可以查詢。您必須:
- 撰寫啟發式方法來檢查每個章節的條目,並從
company或position等欄位推斷類 型。 - 維護一個從使用者提供的章節標題到語意類型的單獨對應。
- 接受跨履歷的篩選與聚合將會不一致。
RenderCV 的條目類型確實在章節內部提供了結構,但章節容器本身是自由格式的。 YAMLResume 的固定金鑰讓您可以將履歷視為統一的記錄:將它們匯入資料庫、餵給 API, 或使用標準工具轉換,而無需先對不可預測的章節標題進行正規化。
標準化欄位
YAMLResume 將常用數值正規化為固定詞彙,在編譯時進行驗證,並在所有支援的語系中進 行翻譯:
- 學位(
Middle School、High School、Bachelor、Master、Doctor等) - 技能等級(
Novice、Beginner、Intermediate、Advanced、Expert、Master) - 語言流利度(從
Elementary到Native) - 國家與地區(翻譯為每一種支援的語言)
RenderCV 接受這些欄位的自由格式字串,給您完全的控制權,但一致性和在地化則完全交 給您自行處理。
更扁平的結構
YAMLResume 將 location 與社交 profiles 金鑰置於最上層,與 basics 分開,簡
化了資料模型,並使其在各個章節之間更加一致。RenderCV 將 location 嵌套在 cv 標
頭物件下,並使用 social_networks 表示連結。
RenderCV 資料模型的其他功能
RenderCV 的 YAML 輸入還包含一些 YAMLResume 目前尚未具備的功能:
settings章節:用於pdf_title和current_date: today等選項的最上層settings區塊。- 個人照片:
cv.photo接受本機路徑或 URL。 - 自訂連結:
cv.custom_connections可讓您新增任意的頁首連結,並搭配自訂佔位 符文字與 Font Awesome 圖示。 - 多個聯絡值:
email、phone與website都可以是數值清單。
內容與富文字
兩個工具都支援 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 控制
- 排版:每個元素的字型家族、每個元素的字型大小、粗體/小型大寫切換、行距、文 字對齊
- 頁面:紙張大小包括
a4、a5、us-letter與us-executive - 頁首:照片位置與大小、連結分隔符、社群網路圖示,以及電話號碼格式
(
national、international或E164) - 章節標題:8 種不同的標題樣式(有/無線條、置中等)
- 條目:欄寬、項目符號字元、間距、分頁行為,以及自動時間跨度計算(例如「2 years 3 months」)
- 模板:使用帶有
NAME、COMPANY、DATE等佔位符的 Jinja2 模板,覆寫每種 條目類型的渲染方式
YAMLResume 的 LaTeX 引擎提供頁面自訂(紙張大 小、邊距、頁碼)與排版控制(字型家族、字 型大小、行距),但不公開每個元素的顏色或細微的間距控制。這是刻意設計 的:YAMLResume 模板將視覺決策封裝起來,讓您無需自己處理。
章節自訂
YAMLResume 讓您能夠透 過章節別名與章節重新排序 來重塑履歷結構,而無需修改底層資料:
- 章節別名:覆寫 12 個可設定別名章節的預設標題
- 章節重新排序:使用簡單的
order清單變更章節的呈現順序
RenderCV 的章節模型在本質上有所不同:因為章節標題是任意字串,「別名」就是寫一個
不同的標題。重新排序就是重新排列 YAML 字典中的鍵。RenderCV 也支援
design.templates 來覆寫個別條目類型的渲染方式,這遠遠超越了 YAMLResume 的別名/
重新排序系統。
語系(國際化)
這是兩個工具之間最大的差異之一。
YAMLResume 開箱即用地支援 10 多種語言 (English、Chinese、 Spanish、French、 Norwegian、Dutch、 Japanese、German、 Indonesian、 Brazilian Portuguese 等),內建翻譯包括章節標 題、國家名稱、學位、技能等級、語言流利度等級、慣用的地址與日期格式、語系適當的標 點符號,以及 LaTeX babel 設定。
例如,YAMLResume 會自動:
- 重新排序中文(國家 → 地區 → 城市 → 地址)與英文(地址 → 城市 → 地區 → 國家)的 地址元件
- 對 CJK 語言使用全形標點符號(
、表示逗號,:表示冒號) - 在法文的高標點符號前加入不斷行空格(
:!?) - 以慣用方式格式化日期:「Jun 2018 – Present」(英文)、「2018年6月至今」(中 文)、「2016年10月~2018年1月」(日文)
- 設定 LaTeX babel 以實現正確的斷字、日期格式與字元處理
RenderCV 包含 22 個內建語系,提供月份名稱、日期縮寫與少量可翻譯字串(present、
last_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 與 PDFyamlresume dev:每次儲存時重新建立履歷的監看模式yamlresume doctor:診斷您的 LaTeX 環境與字型設定yamlresume validate:無需建置即可檢查您的履歷yamlresume languages list:列出所有支援的語言yamlresume templates list:列出每個引擎所有可用的模板
RenderCV 提供:
rendercv new:使用選擇的主題產生範例 CVrendercv render:從您的 YAML 輸入產生 PDF、Markdown、HTML 與 PNGrendercv 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.ymlRenderCV 也提供一個
官方 Docker 映像檔,
位於 ghcr.io/rendercv/rendercv,支援 linux/amd64 與 linux/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 yamlresumeRenderCV 沒有 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.ymlRenderCV 沒有官方 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 skill
(npx 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。
Last updated on