ding-lian-cv/README.md

9.6 KiB
Raw Permalink Blame History

my-rendercv

個人履歷配置專案,使用 RenderCV 從 YAML 檔案生成 PDF 履歷。

專案結構

my-rendercv/
├── my_cv.yaml        # 主要履歷配置檔(繁體中文)
├── photo.jpg             # 履歷照片
├── rendercv_output/      # 生成的輸出檔案(已 gitignore
│   ├── *.pdf
│   ├── *.typ
│   ├── *.html
│   ├── *.md
│   └── *.png
└── README.md

環境安裝

需求Python 3.12 或以上版本

pip install "rendercv[full]"

其他安裝方式:

# pipx推薦隔離全域工具
pipx install "rendercv[full]"

# uv
uv tool install "rendercv[full]"

驗證安裝:

rendercv --version

快速開始

生成履歷(全格式)

rendercv render my_cv.yaml

輸出檔案會放在 rendercv_output/ 目錄,包含 PDF、Typst 原始碼、HTML、Markdown、PNG。

監看模式(存檔後自動重新生成)

rendercv render my_cv.yaml --watch

只生成 PDF跳過其他格式

rendercv render my_cv.yaml --dont-generate-markdown --dont-generate-html --dont-generate-png

指定輸出路徑

rendercv render my_cv.yaml --pdf-path output/resume.pdf

YAML 配置結構說明

配置檔分為四個頂層區塊:

cv — 履歷內容

定義個人基本資訊與各章節內容。

cv:
  name: "Ding-Lian Chen (陳定廉)"
  location: "Taipei, Taiwan"
  email: "shadow449515@gmail.com"
  phone: "(+886) 0979508405"
  social_networks:
    - network: GitHub
      username: Dingian

  sections:
    summary:
      - 純文字段落,直接放字串。

    skills:
      - bullet: 條列項目使用 bullet 欄位。

    experience:
      - company: 公司名稱
        position: 職稱
        location: 地點
        start_date: 2021-05
        end_date: present       # 目前在職用 present
        summary: 職位摘要
        highlights:
          - 重點項目 1
          - 重點項目 2

    projects:
      - name: 專案名稱
        position: 角色
        tech_stack: Python, FastAPI
        date: 2024-01  Present
        link: https://example.com
        description: 專案描述
        highlights:
          - 重點項目

    education:
      - institution: 學校名稱
        area: 系所名稱
        degree: 學士
        start_date: 2011-08
        end_date: 2016-01

design — 視覺設計

控制版面、顏色、字型、章節樣式等外觀設定。

區塊 說明
theme 主題(classicengineeringresumesmoderncv 等)
page 頁面尺寸、邊距、是否顯示頁尾
colors 各元素顏色(支援 rgb(r, g, b) 格式)
typography 字型、字級、行距、對齊方式
header 標題區塊排版(照片位置、間距)
section_titles 章節標題樣式(底線類型、粗細)
entries 條目排版(欄寬、項目間距)
templates 各條目的 Typst 模板(可自訂欄位排列)

目前使用的主色系:

colors:
  name: rgb(0, 79, 144)
  section_titles: rgb(0, 79, 144)
  links: rgb(0, 79, 144)

locale — 語言本地化

控制日期格式、時間跨度文字等語言設定。

locale:
  language: mandarin_chinese   # 中文格式
  # 可自訂以下文字(取消註解後修改):
  # present: 至今
  # year: 年
  # months: 個月
  # month_abbreviations:
  #   - 1月
  #   ...

settings — 生成設定

控制輸出行為與日期顯示。

settings:
  current_date: '2026-01-02'     # 覆蓋頁尾的更新日期
  bold_keywords: []              # 自動加粗的關鍵字列表
  render_command:
    dont_generate_png: false
    dont_generate_markdown: false

客製化設計

修改主題色

編輯 design.colors 區塊:

colors:
  name: rgb(180, 0, 0)
  section_titles: rgb(180, 0, 0)
  links: rgb(180, 0, 0)

修改條目模板

design.templates 可自訂各條目的欄位排列,使用預設變數(全大寫):

templates:
  experience_entry:
    main_column: |-
      **COMPANY**, POSITION
      SUMMARY
      HIGHLIGHTS      
    date_and_location_column: |-
      LOCATION
      DATE      

可用變數:COMPANYPOSITIONSUMMARYHIGHLIGHTSDATELOCATIONNAMEDESCRIPTIONTECH_STACKLINK 等。

建立自訂主題

rendercv create-theme my-theme

產生 my-theme/ 資料夾,包含 Typst 模板,可直接修改樣式後,在 YAML 中指定:

design:
  theme: my-theme

修改字型

默認的字體支援對中文不友好,沒有加粗效果,所以需要手動替換字體進行渲染,此外 rendercv 版本必須高於2.8,否則無法生效

目前使用 https://github.com/notofonts/noto-cjk/releases 下載選擇

  • Noto Serif CJKNoto Sans CJK 分別代表 思源宋体 和 思源黑体 (思源黑体于 2014 年 7 月首次发布,思源宋体于 2017 年 4 月发布)
  • 語言選擇 Language Specific OTFs Traditional Chinese — Taiwan (繁體中文—臺灣)

後放到 fonts 目錄中

配置修改如下

  typography:
    font_family:
      body: Noto Serif CJK TC
      name: Noto Serif CJK TC
      headline: Noto Serif CJK TC
      connections: Noto Serif CJK TC
      section_titles: Noto Serif CJK TC

PS:

為什麼 Sarasa Gothic 無效,而 Noto Serif CJK 可以?

1. 兩者核心差異

特性 Sarasa Gothic (更紗黑體) Noto Serif CJK (思源宋體/明體)
字體分類 黑體 (Sans-serif) 宋體/明體 (Serif)
主要用途 程式碼編輯器、終端機 (Terminal) 書籍排版、正式文件、學術論文
設計特色 混合「思源黑體」與「Iosevka」強調等寬 (Monospace) 傳統印刷風格,有明顯的筆畫裝飾(襯線)
字體格式 多為 TTC (TrueType Collection) OTF (OpenType Font)
  • Sarasa Gothic 的核心價值是解決「程式碼中,中英文寬度不匹配」的問題,強行將中文寬度設為英文的兩倍,非常適合寫程式。
  • Noto Serif CJK 為長文閱讀設計,追求古典的印刷美感。

2. 原因分析

A. 襯線體 (Serif) 的預設配置

rendercv 背後的核心引擎是 XeLaTeX/LuaLaTeX,預設的 CV 樣式通常要求襯線體(如 Times New Roman

  • Noto Serif CJK 是標準的襯線體,能完美對接英文 Serif 字體。
  • Sarasa Gothic 是黑體(無襯線),當樣式表要求 Serif 邏輯時調用黑體可能導致字體族衝突或回退Fallback失敗。

B. 字體格式與 LaTeX 的相容性

rendercv 依賴的 fontspec 套件對 OTF (OpenType) 格式的支援最為穩定。

  • Noto Serif CJK 提供標準 OTF 版本,其 CID-keyed 映射嚴謹,讓 LaTeX 引擎能精確定位「繁體中文」字形編碼。
  • Sarasa Gothic 為實現等寬做了大量調整內部字體元數據Metadata有時不符合傳統 LaTeX 引擎的預期,容易導致找不到字形或渲染空白。

C. 等寬 (Monospace) 的干擾

rendercv 生成 PDF 時會計算每個字符寬度以精確排版。

  • Sarasa Gothic等寬字體在非程式碼區域使用等寬字體會導致字間距Kerning僵硬或跑版。
  • Noto Serif CJK 是比例字體Proportional允許字符根據形狀有不同寬度符合正式文件的排版邏輯。

3. 總結建議

使用場景 推薦字體
寫程式或設定 Terminal Sarasa Gothic
用 RenderCV 生成正式履歷 Noto Serif CJK TCNoto Sans CJK TC

如果在 Windows 上透過 scoop 安裝 Noto Serif

scoop install NotoSerifCJK-TC

安裝後,rendercv 就能透過字體名稱精確抓取,生成的 PDF 字形也會顯得更專業且符合傳統排版審美。


常用指令速查

指令 說明
rendercv render my_cv.yaml 生成全部格式
rendercv render my_cv.yaml --watch 監看模式,存檔自動重新生成
rendercv render my_cv.yaml --dont-generate-png --dont-generate-html 跳過 PNG 和 HTML
rendercv render my_cv.yaml --pdf-path output.pdf 指定 PDF 輸出路徑
rendercv new "姓名" 建立新的範本 YAML
rendercv create-theme 主題名 建立自訂 Typst 主題
rendercv --version 查看版本

注意事項

  • rendercv_output/ 已加入 .gitignore,不會提交生成的檔案。
  • YAML 中可使用 Markdown 語法(**粗體**[連結](url)PDF 中可正常渲染。
  • settings.current_date 會影響頁尾的更新日期顯示,需手動維護。
  • 升級版本前建議確認 Changelog 是否有破壞性變更。

引用内容