Add resume-career template and migrate resume to resume-bp.
Introduce one-page career resume alongside the full BP resume, unify brand color across templates, and update monorepo docs and gitignore. Co-authored-by: Cursor <cursoragent@cursor.com>
11
.gitignore
vendored
@ -1,17 +1,22 @@
|
||||
# Typst 编译产物(示例 PDF 除外)
|
||||
*.pdf
|
||||
!resume/sample.pdf
|
||||
!resume-bp/sample.pdf
|
||||
!resume-career/sample.pdf
|
||||
!feasibility/sample.pdf
|
||||
|
||||
# 本地定制简历(个人内容、照片、PDF,不提交)
|
||||
resume/local/
|
||||
resume-bp/local/*
|
||||
!resume-bp/local/README.md
|
||||
resume-career/local/*
|
||||
!resume-career/local/README.md
|
||||
|
||||
# IDE / 编辑器本地配置
|
||||
.cursor/
|
||||
.vscode/
|
||||
|
||||
# 本地照片(可选提交)
|
||||
# resume/assets/profile.jpeg
|
||||
# resume-bp/assets/profile.jpeg
|
||||
# resume-career/assets/profile.jpeg
|
||||
|
||||
# 系统文件
|
||||
.DS_Store
|
||||
|
||||
@ -4,7 +4,8 @@ GreLin 内部 Typst 模板库,按文档类型分目录维护。目录结构如
|
||||
|
||||
| 文件夹 | 说明 | 入口文件 |
|
||||
|--------|------|----------|
|
||||
| [`resume/`](resume/) | 团队简历 | `cv.typ` |
|
||||
| [`resume-bp/`](resume-bp/) | 融资 BP 团队简历(完整版,含证件照) | `cv.typ` |
|
||||
| [`resume-career/`](resume-career/) | 求职 / 个人主页简历(精简一页) | `cv.typ`(内容 `data/config.typ`) |
|
||||
| [`feasibility/`](feasibility/) | 可行性研究报告 | `report.typ`(正文编辑 `feasibility/content/report.md`) |
|
||||
|
||||
## 环境要求
|
||||
@ -14,9 +15,9 @@ GreLin 内部 Typst 模板库,按文档类型分目录维护。目录结构如
|
||||
|
||||
## 快速开始
|
||||
|
||||
1. 用 VS Code / Cursor 打开本仓库,打开要编辑的入口文件,例如 `resume/cv.typ` 或 `feasibility/report.typ`
|
||||
1. 用 VS Code / Cursor 打开本仓库,打开要编辑的入口文件,例如 `resume-bp/cv.typ`、`resume-career/cv.typ` 或 `feasibility/report.typ`
|
||||
2. 可行性报告正文在 `feasibility/content/report.md` 用 Markdown 编写,无需改 Typst 代码
|
||||
3. 看效果(预览):`Ctrl+Shift+P` → 输入 `Typst Preview` → 回车;侧边会实时显示排版效果
|
||||
4. 导出 PDF:`Ctrl+Shift+P` → 输入 `Typst Export PDF` → 回车;PDF 默认生成在同目录(如 `resume/sample.pdf`)
|
||||
4. 导出 PDF:`Ctrl+Shift+P` → 输入 `Typst Export PDF` → 回车;PDF 默认生成在同目录
|
||||
|
||||
> 不熟悉 Typst?可参考社区维护的 [小蓝书(Typst 中文教程)](https://tutorial.typst.dev/);英文版见 [官方入门教程](https://typst.app/docs/tutorial/)。
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
// GreLin 品牌色板 — 全文档统一(resume / feasibility 等均 import 此文件)
|
||||
// 来源 HyperLabel foundationPalette + labelPalette
|
||||
// GreLin 品牌色板 — 全文档统一(resume-bp / resume-career / feasibility 等均 import 此文件)
|
||||
|
||||
#let color-ink = rgb("#08090B")
|
||||
#let color-body = rgb("#2D3135")
|
||||
@ -7,8 +6,15 @@
|
||||
#let color-bar-bg = rgb("#EFF0F2")
|
||||
#let color-page = rgb("#FDFDFD")
|
||||
|
||||
// 品牌主色(全项目绿色统一)
|
||||
#let color-brand = rgb(200, 216, 98)
|
||||
#let color-lime = color-brand.lighten(10%)
|
||||
#let color-lime-mid = color-brand
|
||||
#let color-lime-deep = color-brand.darken(22%)
|
||||
// 品牌主色(文档统一蓝色)
|
||||
#let color-brand = rgb("#2850d0")
|
||||
#let color-brand-light = color-brand.lighten(12%)
|
||||
#let color-brand-mid = color-brand
|
||||
#let color-brand-deep = color-brand.darken(20%)
|
||||
#let color-brand-tint = rgb("#eef2fc")
|
||||
#let color-brand-surface = color-brand.lighten(88%)
|
||||
|
||||
// 兼容旧别名(lime → brand 蓝色系)
|
||||
#let color-lime = color-brand-light
|
||||
#let color-lime-mid = color-brand-mid
|
||||
#let color-lime-deep = color-brand-deep
|
||||
|
||||
@ -45,7 +45,7 @@
|
||||
} else {
|
||||
str(n.at(0)) + "." + str(n.at(1)) + "." + str(n.at(2))
|
||||
}
|
||||
box(fill: color-neon, inset: (x: 5pt, y: 2pt))[
|
||||
box(fill: color-accent-surface, inset: (x: 5pt, y: 2pt))[
|
||||
#text(font: mono-font, size: 7pt, weight: "bold", fill: color-ink)[#id]
|
||||
]
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
#let print-glossary-block() = {
|
||||
pagebreak(weak: true)
|
||||
block(width: 100%, above: space-chapter)[
|
||||
#box(width: 100%, fill: color-neon, inset: (x: 10pt, y: 6pt))[
|
||||
#box(width: 100%, fill: color-accent-surface, inset: (x: 10pt, y: 6pt))[
|
||||
#text(font: heading-font, size: size-h1, weight: "black", fill: color-ink)[术语与缩写]
|
||||
]
|
||||
#v(space-block)
|
||||
|
||||
@ -20,12 +20,12 @@
|
||||
columns: (1fr, auto, 1fr, auto, 1fr),
|
||||
column-gutter: 12pt,
|
||||
align: horizon,
|
||||
tech-label("VERSION", fill: color-neon, size: 6.5pt),
|
||||
tech-label("VERSION", fill: color-accent, size: 6.5pt),
|
||||
text(font: mono-font, size: 8pt, fill: white)[#meta.version],
|
||||
tech-label("DATE", fill: color-neon, size: 6.5pt),
|
||||
tech-label("DATE", fill: color-accent, size: 6.5pt),
|
||||
text(font: mono-font, size: 8pt, fill: white)[#format-cover-date(meta.date)],
|
||||
align(right)[
|
||||
tech-label("STATUS · DRAFT", fill: color-neon, size: 6.5pt)
|
||||
tech-label("STATUS · DRAFT", fill: color-accent, size: 6.5pt)
|
||||
],
|
||||
)
|
||||
]
|
||||
@ -49,7 +49,7 @@
|
||||
]
|
||||
|
||||
#place(left + top, dx: 24pt, dy: 168pt)[
|
||||
#box(width: 92%, fill: color-neon, inset: (x: 16pt, y: 18pt))[
|
||||
#box(width: 92%, fill: color-accent-surface, inset: (x: 16pt, y: 18pt))[
|
||||
#text(
|
||||
font: heading-font,
|
||||
size: size-cover-title,
|
||||
@ -83,7 +83,7 @@
|
||||
stroke: 1.5pt + color-ink,
|
||||
inset: summary-inset,
|
||||
)[
|
||||
#box(width: 100%, fill: color-neon, inset: (x: 10pt, y: 5pt))[
|
||||
#box(width: 100%, fill: color-accent-surface, inset: (x: 10pt, y: 5pt))[
|
||||
#tech-label("ABSTRACT", fill: color-ink, size: 7pt)
|
||||
]
|
||||
#v(10pt)
|
||||
@ -114,7 +114,7 @@
|
||||
tech-barcode(36pt, 8pt, bars: 10),
|
||||
box(width: 100%, height: 1pt, fill: color-ink),
|
||||
box(fill: color-ink, inset: (x: 8pt, y: 3pt))[
|
||||
#text(font: mono-font, size: 8pt, fill: color-neon)[
|
||||
#text(font: mono-font, size: 8pt, fill: color-accent)[
|
||||
#counter(page).display("1")
|
||||
#h(0.12em)
|
||||
#sym.slash
|
||||
@ -135,7 +135,7 @@
|
||||
columns: (auto, 1fr, auto),
|
||||
column-gutter: 8pt,
|
||||
align: horizon,
|
||||
box(fill: color-neon, inset: (x: 6pt, y: 2pt))[
|
||||
box(fill: color-accent-surface, inset: (x: 6pt, y: 2pt))[
|
||||
#text(font: mono-font, size: 7pt, weight: "bold", fill: color-ink)[#upper(meta.brand)]
|
||||
],
|
||||
box(width: 100%, height: 1pt, fill: color-ink),
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#import "theme.typ": *
|
||||
#import "decor.typ": tech-label
|
||||
|
||||
/// Logo:霓虹绿块 + 白色折线图形 + GreLin | Tech
|
||||
/// Logo:品牌蓝块 + 白色折线图形 + GreLin | Tech
|
||||
#let grelin-logo(
|
||||
primary: "GreLin",
|
||||
secondary: "Tech",
|
||||
@ -9,7 +9,7 @@
|
||||
columns: (auto, auto),
|
||||
column-gutter: 10pt,
|
||||
align: horizon,
|
||||
box(width: 34pt, height: 34pt, fill: color-neon)[
|
||||
box(width: 34pt, height: 34pt, fill: color-brand)[
|
||||
#place(left + top, dx: 7pt, dy: 8pt, box(width: 14pt, height: 3pt, fill: white))
|
||||
#place(left + top, dx: 7pt, dy: 14pt, box(width: 3pt, height: 14pt, fill: white))
|
||||
#place(left + top, dx: 18pt, dy: 14pt, box(width: 9pt, height: 3pt, fill: white))
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
column-gutter: 8pt,
|
||||
align: horizon,
|
||||
context section-tech-id(..counter(heading).get()),
|
||||
box(width: 100%, fill: color-neon, inset: (x: 8pt, y: 4pt))[
|
||||
box(width: 100%, fill: color-accent-surface, inset: (x: 8pt, y: 4pt))[
|
||||
#text(font: heading-font, size: size-h1, weight: "black", fill: color-ink)[
|
||||
#heading-number(it)
|
||||
#it.body
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
#import "../../brand/colors.typ": *
|
||||
|
||||
// Brutalist / FUI 配色:霓虹绿 · 纯黑 · 冷灰(避免橄榄灰发脏)
|
||||
#let color-neon = rgb(210, 255, 72)
|
||||
#let color-heading = color-neon
|
||||
#let color-accent = color-neon
|
||||
// 可行性报告配色:品牌蓝 · 纯黑 · 冷灰
|
||||
#let color-accent = color-brand
|
||||
#let color-accent-surface = color-brand-surface
|
||||
#let color-heading = color-brand
|
||||
#let color-accent-line = color-ink
|
||||
#let color-divider = rgb(205, 205, 205)
|
||||
#let color-caption = rgb(110, 110, 110)
|
||||
@ -62,7 +62,7 @@
|
||||
#let cover-block-height = 19.5cm
|
||||
|
||||
// --- 线条 / 边框 ---
|
||||
#let underline-stroke = 2pt + color-neon
|
||||
#let underline-stroke = 2pt + color-accent
|
||||
#let underline-offset = 5pt
|
||||
#let heading-number-gap = 0.35em
|
||||
#let stroke-accent = 1.5pt + color-ink
|
||||
@ -81,8 +81,8 @@
|
||||
#let page-accent-bar-width = 10pt
|
||||
|
||||
// --- 表格 ---
|
||||
#let table-zebra-fill = rgb(245, 255, 228)
|
||||
#let table-header-fill = color-neon
|
||||
#let table-zebra-fill = color-brand-tint
|
||||
#let table-header-fill = color-brand-surface
|
||||
#let table-data-text = rgb(50, 50, 50)
|
||||
#let table-inset = (x: 10pt, y: 6pt)
|
||||
|
||||
@ -99,4 +99,4 @@
|
||||
|
||||
// --- 引用 ---
|
||||
#let blockquote-inset = 10pt
|
||||
#let blockquote-stroke = 3pt + color-neon
|
||||
#let blockquote-stroke = 3pt + color-accent
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
# Resume · 团队简历模板
|
||||
# Resume BP · 融资团队简历
|
||||
|
||||
GreLin 双栏中文简历 Typst 模板,用于融资 BP data room 附录。
|
||||
GreLin 双栏中文简历 Typst 模板,用于融资 BP data room 附录。内容偏完整,含证件照、详细经历与可选研究成果。
|
||||
|
||||
入口:`cv.typ` · 内容编辑:`data/config.typ`
|
||||
|
||||
## 照片
|
||||
|
||||
@ -26,16 +28,7 @@ GreLin 双栏中文简历 Typst 模板,用于融资 BP data room 附录。
|
||||
|
||||
#let skills = (
|
||||
tags: ("Rust", "Python"),
|
||||
notes: (), // 可选:侧栏技能补充列表
|
||||
// 可选:能力进度条(有数据时自动显示「能力」子区块)
|
||||
// abilities: (
|
||||
// (name: "全栈开发", level: 0.9),
|
||||
// ),
|
||||
// language: (
|
||||
// name: "英语",
|
||||
// level: 0.75,
|
||||
// label: "读写",
|
||||
// ),
|
||||
notes: (),
|
||||
)
|
||||
|
||||
#let education = (
|
||||
@ -44,12 +37,10 @@ GreLin 双栏中文简历 Typst 模板,用于融资 BP data room 附录。
|
||||
school: "西北大学",
|
||||
period: "2022 – 2025",
|
||||
location: "西安",
|
||||
notes: "", // 可选:GPA、主修课程等一段说明
|
||||
notes: "",
|
||||
),
|
||||
)
|
||||
|
||||
#let awards = () // 可选:主栏获奖经历
|
||||
|
||||
#let experiences = (
|
||||
(
|
||||
company: "某某科技",
|
||||
|
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 326 B |
|
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 318 B |
|
Before Width: | Height: | Size: 637 B After Width: | Height: | Size: 637 B |
|
Before Width: | Height: | Size: 294 B After Width: | Height: | Size: 294 B |
|
Before Width: | Height: | Size: 285 B After Width: | Height: | Size: 285 B |
|
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 326 B |
|
Before Width: | Height: | Size: 480 B After Width: | Height: | Size: 480 B |
|
Before Width: | Height: | Size: 394 B After Width: | Height: | Size: 394 B |
|
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 340 B |
|
Before Width: | Height: | Size: 256 B After Width: | Height: | Size: 256 B |
|
Before Width: | Height: | Size: 320 B After Width: | Height: | Size: 320 B |
|
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 238 B |
|
Before Width: | Height: | Size: 261 B After Width: | Height: | Size: 261 B |
|
Before Width: | Height: | Size: 841 KiB After Width: | Height: | Size: 841 KiB |
@ -1,9 +1,9 @@
|
||||
#import "../../brand/colors.typ": *
|
||||
|
||||
#let color-icon = color-muted
|
||||
#let color-accent-bright = color-body
|
||||
#let color-accent = color-muted
|
||||
#let color-skill-bar = color-muted
|
||||
#let color-icon = color-brand-deep
|
||||
#let color-accent-bright = color-brand
|
||||
#let color-accent = color-brand
|
||||
#let color-skill-bar = color-brand
|
||||
#let color-divider = color-muted.lighten(68%)
|
||||
#let color-text-light = color-muted.lighten(32%)
|
||||
|
||||
@ -844,24 +844,24 @@ uUL
|
||||
endstream
|
||||
endobj
|
||||
116 0 obj
|
||||
<</Length 4808/Filter/FlateDecode>>
|
||||
<</Length 4816/Filter/FlateDecode>>
|
||||
stream
|
||||
xœÝ]ùÇmÿ<6D>ÅöJøÌ<>VUó.¶qâ´®˜Ä‰í46Å%Ÿiâÿ¾Ÿïìùø–CQOKñCéÃy»Ø9° | ||||