Universe

Create project in app

中文 | English

一个使用 Typst 编写的模块化简历模板,专为简体中文排版优化。

特性

  • 模块化设计 - 配置、组件、图标、章节分离,便于维护和定制
  • 中文优化 - 针对简体中文排版调优,字体栈包含 Noto Sans CJK SC
  • 丰富组件 - 提供工作经历、教育背景、项目经历、技能展示等常用简历组件
  • 图标支持 - 集成 Nerdfont 图标,支持 60+ 常用图标
  • 高度可配置 - 字体、颜色、间距、布局均可通过配置文件调整
  • 多种布局 - 支持双列、三列、侧边栏、时间轴等布局方式

模板展示

简历展示页 1 简历展示页 2

快速开始

克隆仓库

git clone https://github.com/golixp/typst-resume-zh-cn.git

通过 Typst Packages

// 远程包导入
#import "@preview/golixp-resume-zh-cn:0.1.0": *

通过 Typst Local Packages

创建包

Linux:

mkdir -p ~/.local/share/typst/packages/local/golixp-resume-zh-cn/
git clone https://github.com/golixp/typst-resume-zh-cn.git ~/.local/share/typst/packages/local/golixp-resume-zh-cn/0.1.0

macOS:

mkdir -p "~/Library/Application Support/typst/packages/local/golixp-resume-zh-cn/"
git clone https://github.com/golixp/typst-resume-zh-cn.git ~/Library/Application\ Support/typst/packages/local/golixp-resume-zh-cn/0.1.0

Windows:

mkdir -Force "$env:APPDATA\typst\packages\local\golixp-resume-zh-cn\0.1.0"
git clone https://github.com/golixp/typst-resume-zh-cn.git "$env:APPDATA\typst\packages\local\golixp-resume-zh-cn\0.1.0"

导入包

// 本地包导入
#import "@local/golixp-resume-zh-cn:0.1.0": *

前置要求

  • Typst >= 0.11.0
  • 字体:Noto Sans、Noto Sans CJK SC、Symbols Nerd Font

编译

typst compile example.typ

GitHub Actions 自动发布

项目内置 GitHub Actions 工作流(.github/workflows/release.yml),可在推送 Git 标签时自动编译 Typst 文档并将生成的 PDF 发布到 GitHub Releases。

配置

GitHub Actions 仅识别仓库根目录下 .github/workflows/ 中的工作流文件,因此必须将工作流文件复制到正确位置。

将本项目的 .github/workflows/release.yml 复制到你的仓库对应目录:

mkdir -p .github/workflows
cp <仓库目录>/.github/workflows/release.yml .github/workflows/release.yml

然后根据简历源文件的实际位置调整 TYPST_SOURCE。编辑 .github/workflows/release.yml,将 TYPST_SOURCE 环境变量设置为目标 Typst 源文件名称(不含 .typ 扩展名):

env:
  TYPST_SOURCE: example  # 替换为你的文件名

如果简历源文件位于子目录中,需将 TYPST_SOURCE 设置为相对于仓库根目录的路径(不含 .typ 扩展名):

env:
  TYPST_SOURCE: docs/resume  # 对应 docs/resume.typ

触发发布

创建 Git 标签并推送至远程仓库,即可触发自动构建:

git tag v1.0.0
git push origin v1.0.0

工作流将自动执行以下步骤:安装所需字体、编译 Typst 文档为 PDF、创建 GitHub Release 并上传 PDF 文件。

注意:工作流仅在推送标签时触发,普通的代码提交不会触发发布流程。

项目结构

.
├── .github
│   └── workflows
│       └── release.yml      # GitHub Actions 发布工作流
├── modules
│   ├── config.typ           # 配置模块(字体、颜色、间距等)
│   ├── icons.typ            # 图标模块(Nerdfont 图标定义)
│   ├── components.typ       # 基础组件(布局、列表、卡片等)
│   └── sections.typ         # 章节组件(工作经历、教育等)
├── template
│   └── main.typ             # 示例模板入口
├── lib.typ                  # 模板入口(统一导出模块)
├── example.typ              # 示例简历文件
├── typst.toml               # Typst 包配置
├── README.md                # 中文使用说明
├── README_en.md             # 英文使用说明
└── LICENSE                  # 开源许可证(MIT)

使用方法

导入模块

// 远程包导入
#import "@preview/golixp-resume-zh-cn:0.1.0": *

// 本地包导入
// #import "@local/golixp-resume-zh-cn:0.1.0": *

// 本地文件导入
// #import "lib.typ": *

个人信息

#personal-header(
  "姓名",
  (
    (icon: "phone", content: "138-0000-0000"),
    (icon: "email", content: "email@example.com"),
    (icon: "github", content: "github.com/user", link: "https://github.com/user"),
  ),
)

工作经历

#section-header("工作经历", icon-name: "work")

#work-item(
  "2021.06 - 至今",
  "公司名称",
  "职位",
  location: "北京",
  tech-stack: ("Go", "Python", "Kubernetes"),
  responsibilities: (
    [工作职责 1],
    [工作职责 2],
  ),
  achievements: (
    [主要成就],
  ),
)

教育经历

#section-header("教育经历", icon-name: "graduation")

#education-item(
  "2015.09 - 2019.06",
  "大学名称",
  "本科",
  "专业名称",
  gpa: "3.8/4.0",
  honors: ("荣誉 1", "荣誉 2"),
)

项目经历

#section-header("项目经历", icon-name: "project")

#project-item(
  "项目名称",
  ("Go", "gRPC", "etcd"),
  [项目描述],
  responsibilities: (
    [职责 1],
    [职责 2],
  ),
  link: "https://github.com/example/project",
)

技能展示

#section-header("专业技能", icon-name: "code")

#skill-category(
  "编程语言",
  ("Go", "Python", "Java", "TypeScript"),
  level: "精通",
)

配置选项

通过 resume-docresume-init / get-config 自定义样式。

方式一:推荐 - 使用 resume-doc

#show: resume-doc.with(
  overrides: (
    colors: (primary: rgb(180, 0, 0)),
    fonts: (main: "Source Han Sans SC"),
  ),
)

方式二:手动初始化 + 读取配置

#resume-init(
  overrides: (
    colors: (primary: rgb(180, 0, 0)),
  ),
)

#context {
  let cfg = get-config()
  set page(margin: cfg.at("page-margins"))
  set text(font: cfg.at("font-stack"), size: cfg.at("font-sizes").base)
  set par(justify: cfg.at("style-features")["paragraph-justify"], leading: cfg.spacing.paragraph)
}

可覆盖的配置段 (config.typ)

配置项 说明
fonts 字体族定义(main/mono/sc/nerd/nerd-mono/emoji)
colors 颜色配置(主题色、文本色等)
font-sizes 字号配置
spacing 间距配置
page-margins 页面边距
style-features 样式开关(链接下划线、段落对齐等)
layout-defaults 布局参数(侧边栏宽度、列比例等)

可用组件

基础组件 (components.typ)

组件 说明
list-view 通用列表
description-list 描述列表(键值对)
tag-list 标签列表
two-col / three-col 多列布局
sidebar 侧边栏布局
card / bordered-card / info-card 卡片组件
timeline / timeline-item 时间轴
styled-link / icon-link 链接组件
date-text / label-text / tech-text 文本样式

章节组件 (sections.typ)

组件 说明
section-header 章节标题
personal-header 个人信息头部
work-item / work-list 工作经历
education-item / education-list 教育经历
project-item / project-list 项目经历
skill-category / skill-list / skill-cloud 技能展示
award-item / award-list 获奖荣誉
summary-paragraph / summary-list 个人总结

图标 (icons.typ)

组件 说明
icon 显示单个图标
icon-label 图标 + 文本标签
tech-icon 技术栈图标

支持的图标:phoneemaillocationgithublinkedinworkgraduationprojectcodeaward 等 60+ 种。

许可证

MIT License


部分代码和文档由 AI 辅助生成

中文 | English

Warning: This template is optimized for Simplified Chinese typography. English-only layouts have not been tested and may require adjustments.

A modular resume template built with Typst, optimized for Simplified Chinese typography.

Features

  • Modular Architecture - Separate config, components, icons, and sections for easy maintenance
  • CJK Optimized - Fine-tuned for Simplified Chinese with Noto Sans CJK SC font stack
  • Rich Components - Work experience, education, projects, skills, and more
  • Icon Support - Integrated Nerdfont icons with 60+ commonly used icons
  • Highly Configurable - Fonts, colors, spacing, and layouts all customizable
  • Multiple Layouts - Two-column, three-column, sidebar, timeline layouts

Template Preview

Resume Template Page 1 Resume Template Page 2

Quick Start

Clone the Repository

git clone https://github.com/golixp/typst-resume-zh-cn.git

Using Typst Packages

// Remote package import
#import "@preview/golixp-resume-zh-cn:0.1.0": *

Using Typst Local Packages

Create Local Package

Linux:

mkdir -p ~/.local/share/typst/packages/local/golixp-resume-zh-cn/
git clone https://github.com/golixp/typst-resume-zh-cn.git ~/.local/share/typst/packages/local/golixp-resume-zh-cn/0.1.0

macOS:

mkdir -p "~/Library/Application Support/typst/packages/local/golixp-resume-zh-cn/"
git clone https://github.com/golixp/typst-resume-zh-cn.git ~/Library/Application\ Support/typst/packages/local/golixp-resume-zh-cn/0.1.0

Windows:

mkdir -Force "$env:APPDATA\typst\packages\local\golixp-resume-zh-cn\0.1.0"
git clone https://github.com/golixp/typst-resume-zh-cn.git "$env:APPDATA\typst\packages\local\golixp-resume-zh-cn\0.1.0"

Import Local Package

// Local package import
#import "@local/golixp-resume-zh-cn:0.1.0": *

Prerequisites

  • Typst >= 0.11.0
  • Fonts: Noto Sans, Noto Sans CJK SC, Symbols Nerd Font

Compile

typst compile example.typ

GitHub Actions Auto-Release

The project includes a GitHub Actions workflow (.github/workflows/release.yml) that automatically compiles Typst documents and publishes the generated PDF to GitHub Releases when a Git tag is pushed.

Configuration

GitHub Actions only recognizes workflow files in .github/workflows/ at the repository root, so you must copy the workflow file to the correct location.

Copy the .github/workflows/release.yml from this project to your repository:

mkdir -p .github/workflows
cp <repository-directory>/.github/workflows/release.yml .github/workflows/release.yml

Then adjust TYPST_SOURCE according to the actual location of your resume source file. Edit .github/workflows/release.yml and set the TYPST_SOURCE environment variable to the target Typst source filename (without the .typ extension):

env:
  TYPST_SOURCE: example  # Replace with your filename

If your resume source file is located in a subdirectory, set TYPST_SOURCE to the path relative to the repository root (without the .typ extension):

env:
  TYPST_SOURCE: docs/resume  # Corresponds to docs/resume.typ

Trigger a Release

Create a Git tag and push it to the remote repository to trigger the automated build:

git tag v1.0.0
git push origin v1.0.0

The workflow will automatically: install required fonts, compile the Typst document to PDF, create a GitHub Release and upload the PDF file.

Note: The workflow is triggered only by tag pushes. Regular commits will not trigger the release process.

Project Structure

.
├── .github
│   └── workflows
│       └── release.yml      # GitHub Actions release workflow
├── modules
│   ├── config.typ           # Configuration (fonts, colors, spacing)
│   ├── icons.typ            # Icon definitions (Nerdfont)
│   ├── components.typ       # Base components (layouts, lists, cards)
│   └── sections.typ         # Section components (work, education, etc.)
├── template
│   └── main.typ             # Example template entry
├── lib.typ                  # Library entry point (exports modules)
├── example.typ              # Example resume file
├── typst.toml               # Typst package manifest
├── README.md                # Documentation (Chinese)
├── README_en.md             # Documentation (English)
└── LICENSE                  # License (MIT)

Usage

Import Modules

// Typst Packages
#import "@preview/golixp-resume-zh-cn:0.1.0": *

// Typst Local Packages
// #import "@local/golixp-resume-zh-cn:0.1.0": *

// Local File
// #import "lib.typ": *

Personal Information

#personal-header(
  "Your Name",
  (
    (icon: "phone", content: "+1-234-567-8900"),
    (icon: "email", content: "email@example.com"),
    (icon: "github", content: "github.com/user", link: "https://github.com/user"),
  ),
)

Work Experience

#section-header("Work Experience", icon-name: "work")

#work-item(
  "2021.06 - Present",
  "Company Name",
  "Position",
  location: "City",
  tech-stack: ("Go", "Python", "Kubernetes"),
  responsibilities: (
    [Responsibility 1],
    [Responsibility 2],
  ),
  achievements: (
    [Achievement],
  ),
)

Education

#section-header("Education", icon-name: "graduation")

#education-item(
  "2015.09 - 2019.06",
  "University Name",
  "Bachelor",
  "Major",
  gpa: "3.8/4.0",
  honors: ("Honor 1", "Honor 2"),
)

Projects

#section-header("Projects", icon-name: "project")

#project-item(
  "Project Name",
  ("Go", "gRPC", "etcd"),
  [Project description],
  responsibilities: (
    [Contribution 1],
    [Contribution 2],
  ),
  link: "https://github.com/example/project",
)

Skills

#section-header("Skills", icon-name: "code")

#skill-category(
  "Programming Languages",
  ("Go", "Python", "Java", "TypeScript"),
  level: "Expert",
)

Configuration

Configuration is injected via resume-doc or resume-init / get-config.

Option 1 (recommended): resume-doc

#show: resume-doc.with(
  overrides: (
    colors: (primary: rgb(180, 0, 0)),
    fonts: (main: "Source Han Sans SC"),
  ),
)

Option 2: Manual init + read config

#resume-init(
  overrides: (
    colors: (primary: rgb(180, 0, 0)),
  ),
)

#context {
  let cfg = get-config()
  set page(margin: cfg.at("page-margins"))
  set text(font: cfg.at("font-stack"), size: cfg.at("font-sizes").base)
  set par(justify: cfg.at("style-features")["paragraph-justify"], leading: cfg.spacing.paragraph)
}

Configurable sections (config.typ)

Option Description
fonts Font family definitions (main/mono/sc/nerd/nerd-mono/emoji)
colors Color palette (theme, text colors)
font-sizes Font size settings
spacing Spacing configuration
page-margins Page margins
style-features Style toggles (link underlines, justification)
layout-defaults Layout parameters (sidebar width, column ratios)

Available Components

Base Components (components.typ)

Component Description
list-view Generic list
description-list Key-value list
tag-list Tag list
two-col / three-col Multi-column layouts
sidebar Sidebar layout
card / bordered-card / info-card Card components
timeline / timeline-item Timeline
styled-link / icon-link Link components
date-text / label-text / tech-text Text styles

Section Components (sections.typ)

Component Description
section-header Section heading
personal-header Personal info header
work-item / work-list Work experience
education-item / education-list Education
project-item / project-list Projects
skill-category / skill-list / skill-cloud Skills
award-item / award-list Awards
summary-paragraph / summary-list Summary

Icons (icons.typ)

Component Description
icon Display single icon
icon-label Icon with text label
tech-icon Tech stack icon

Supported icons: phone, email, location, github, linkedin, work, graduation, project, code, award, and 60+ more.

License

MIT License


Some code and documentation generated with AI assistance