Skip to content

Commit efa6a2e

Browse files
authored
modernpro-cv:1.3.0 (#3292)
1 parent d157619 commit efa6a2e

File tree

7 files changed

+1082
-0
lines changed

7 files changed

+1082
-0
lines changed
Lines changed: 337 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,337 @@
1+
# Typst-CV-Resume
2+
3+
This Typst CV template is inspired by the Latex template [Deedy-Resume](https://github.com/deedy/Deedy-Resume). You can use it for both industry and academia.
4+
5+
If you want to find a cover letter template, you can check out [modernpro-coverletter](https://github.com/jxpeng98/typst-coverletter).
6+
7+
## How to start
8+
9+
### Use Typst CLI
10+
11+
If you use Typst CLI, you can use the following command to create a new project:
12+
13+
```bash
14+
typst init @preview/modernpro-cv
15+
```
16+
17+
>If you use the typst version `<0.13.0`, you need to use the following code to initial your project.
18+
> `typst init @preview/modernpro-cv:1.0.2`
19+
20+
It will create a folder named `modernpro-cv` with the following structure:
21+
22+
```plain
23+
modernpro-cv
24+
├── bib.bib
25+
├── cv_double.typ
26+
└── cv_single.typ
27+
```
28+
29+
If you want to use the single-column version, you can modify the template `cv-single.typ`. If you prefer the two-column version, you can use the `cv-double.typ`.
30+
31+
**Note:** The `bib.bib` is the bibliography file. You can modify it to add your publications.
32+
33+
### Manual Download
34+
35+
If you want to manually download the template, you can download `modernpro-cv-{version}.zip` from the [release page](https://github.com/jxpeng98/Typst-CV-Resume/releases)
36+
37+
### Typst website
38+
39+
If you want to use the template via [Typst](https://typst.app), You can `start from template` and search for `modernpro-cv`.
40+
41+
## How to use the template
42+
43+
### The arguments
44+
45+
The template has the following arguments:
46+
| Argument | Description | Default |
47+
| --- | --- | --- |
48+
| `font-type` | The font type. You can choose any supported font in your system. | `Times New Roman` |
49+
| `continue-header` | Whether to continue the header on the follwing pages. | `false` |
50+
| `margin` | Override the page margin. When omitted, the template falls back to the built-in layout (1.25 cm sides with layout-specific top/bottom). | `none` |
51+
| `name` | Your name. | `""` |
52+
| `address` | Your address. | `""` |
53+
| `lastupdated` | Whether to show the last updated date. | `true` |
54+
| `pagecount` | Whether to show the page count. | `true` |
55+
| `date` | The date of the CV. | `today` |
56+
| `contacts` | contact details, e.g phone number, email, etc. | `(text: "", link: "")` |
57+
58+
### Start single column version
59+
60+
If you want to use the single column version, pick the starter that matches how much customization you need.
61+
62+
#### Option 1 – Quick template (fixed order)
63+
64+
Use this when you are happy with the default section sequence.
65+
66+
```Typst
67+
#import "@preview/modernpro-cv:1.3.0": *
68+
#import "@preview/fontawesome:0.6.0": *
69+
70+
#show: cv-single.with(
71+
font-type: "PT Serif",
72+
continue-header: "false",
73+
margin: (left: 1.75cm, right: 1.75cm, top: 2cm, bottom: 2cm),
74+
name: [],
75+
address: [],
76+
lastupdated: "true",
77+
pagecount: "true",
78+
date: "2024-07-03",
79+
contacts: (
80+
(text: [#fa-icon("location-dot") UK]),
81+
(text: [#fa-icon("mobile") 123-456-789], link: "tel:123-456-789"),
82+
(text: [#fa-icon("link") example.com], link: "https://www.example.com"),
83+
)
84+
)
85+
86+
#section("About")
87+
#descript[#lorem(40)]
88+
#sectionsep
89+
90+
#section("Experience")
91+
#job(
92+
position: "Software Engineer",
93+
institution: [#lorem(3)],
94+
location: "UK",
95+
date: "2022-now",
96+
)
97+
#sectionsep
98+
99+
#section("Education")
100+
#education(
101+
institution: [University of Typst],
102+
major: [Computer Science],
103+
date: "2015-2019",
104+
location: "UK",
105+
)
106+
```
107+
108+
#### Option 2 – Flexible template (custom order or hidden sections)
109+
110+
Choose this when you want to reorder, remove, or conditionally render sections without editing them in multiple places.
111+
112+
```Typst
113+
#import "@preview/modernpro-cv:1.3.0": *
114+
#import "@preview/fontawesome:0.6.0": *
115+
116+
#show: cv-single.with(
117+
font-type: "PT Serif",
118+
continue-header: "false",
119+
margin: (left: 1.75cm, right: 1.75cm, top: 2cm, bottom: 2cm),
120+
name: [],
121+
address: [],
122+
lastupdated: "true",
123+
pagecount: "true",
124+
date: "2024-07-03",
125+
contacts: (
126+
(text: [#fa-icon("location-dot") UK]),
127+
(text: [#fa-icon("mobile") 123-456-789], link: "tel:123-456-789"),
128+
(text: [#fa-icon("link") example.com], link: "https://www.example.com"),
129+
)
130+
)
131+
132+
#let sections = (
133+
section-block("about", title: "About")[
134+
#descript[#lorem(40)]
135+
],
136+
section-block("experience", title: "Experience")[
137+
#job(
138+
position: "Software Engineer",
139+
institution: [#lorem(3)],
140+
location: "UK",
141+
date: "2022-now",
142+
)
143+
],
144+
section-block("education", title: "Education")[
145+
#education(
146+
institution: [University of Typst],
147+
major: [Computer Science],
148+
date: "2015-2019",
149+
location: "UK",
150+
)
151+
],
152+
)
153+
154+
#let section-order = ("about", "experience", "education")
155+
156+
#render-sections(sections: sections, order: section-order)
157+
```
158+
159+
Define each section once with `section-block`, then control the sequence by reordering `section-order`. Any sections not mentioned in `section-order` are rendered afterward by default (set `include-remaining: false` to skip them).
160+
161+
### Start double column version
162+
163+
The double column version is similar to the single column version. Pick the pattern you prefer for each column.
164+
165+
#### Option 1 – Quick template (fixed order in each column)
166+
167+
```Typst
168+
#import "@preview/modernpro-cv:1.3.0": *
169+
#import "@preview/fontawesome:0.6.0": *
170+
171+
#show: cv-double(
172+
font-type: "PT Sans",
173+
continue-header: "true",
174+
margin: (left: 1.5cm, right: 1.5cm, top: 2.2cm, bottom: 1.8cm),
175+
name: [#lorem(2)],
176+
address: [#lorem(4)],
177+
lastupdated: "true",
178+
pagecount: "true",
179+
date: "2024-07-03",
180+
contacts: (
181+
(text: [#fa-icon("location-dot") UK]),
182+
(text: [#fa-icon("mobile") 123-456-789], link: "tel:123-456-789"),
183+
(text: [#fa-icon("link") example.com], link: "https://www.example.com"),
184+
),
185+
left: [
186+
#section("Profile")
187+
#descript[#lorem(30)]
188+
#sectionsep
189+
190+
#section("Skills")
191+
#oneline-title-item(title: "Languages", content: [Python, Typst])
192+
#sectionsep
193+
],
194+
right: [
195+
#section("Experience")
196+
#job(
197+
position: "Software Engineer",
198+
institution: [#lorem(4)],
199+
location: "UK",
200+
date: "2022-now",
201+
)
202+
#sectionsep
203+
204+
#section("Education")
205+
#education(
206+
institution: [University of Typst],
207+
major: [Computer Science],
208+
date: "2015-2019",
209+
location: "UK",
210+
)
211+
],
212+
)
213+
```
214+
215+
#### Option 2 – Flexible template (custom order or hidden sections)
216+
217+
```Typst
218+
#import "@preview/modernpro-cv:1.3.0": *
219+
#import "@preview/fontawesome:0.6.0": *
220+
221+
#show: cv-double(
222+
font-type: "PT Sans",
223+
continue-header: "true",
224+
margin: (left: 1.5cm, right: 1.5cm, top: 2.2cm, bottom: 1.8cm),
225+
name: [#lorem(2)],
226+
address: [#lorem(4)],
227+
lastupdated: "true",
228+
pagecount: "true",
229+
date: "2024-07-03",
230+
contacts: (
231+
(text: [#fa-icon("location-dot") UK]),
232+
(text: [#fa-icon("mobile") 123-456-789], link: "tel:123-456-789"),
233+
(text: [#fa-icon("link") example.com], link: "https://www.example.com"),
234+
),
235+
left: [
236+
#let left-sections = (
237+
section-block("profile", title: "Profile")[
238+
#descript[#lorem(30)]
239+
],
240+
section-block("skills", title: "Skills")[
241+
#oneline-title-item(title: "Languages", content: [Python, Typst])
242+
],
243+
)
244+
#render-sections(sections: left-sections, order: ("profile", "skills"))
245+
],
246+
right: [
247+
#let right-sections = (
248+
section-block("experience", title: "Experience")[
249+
#job(
250+
position: "Software Engineer",
251+
institution: [#lorem(4)],
252+
location: "UK",
253+
date: "2022-now",
254+
)
255+
],
256+
section-block("education", title: "Education")[
257+
#education(
258+
institution: [University of Typst],
259+
major: [Computer Science],
260+
date: "2015-2019",
261+
location: "UK",
262+
)
263+
],
264+
)
265+
#render-sections(sections: right-sections, order: ("experience", "education"))
266+
],
267+
)
268+
```
269+
270+
Adjust the `left-order` and `right-order` lists to change what appears first. Omit an id (and set `include-remaining: false` on `render-sections`) to hide the matching block entirely.
271+
272+
### Start the CV
273+
274+
Once you set up the arguments, you can start to add details to your CV / Resume.
275+
276+
I preset the following functions for you to create different parts:
277+
| Function | Description |
278+
| --- | --- |
279+
| `#section("Section Name")` | Start a new section |
280+
| `#sectionsep` | End the section |
281+
|`#oneline-title-item(title: "", content: "")`| Add a one-line item (**Title:** content)|
282+
|`#oneline-two(entry1: "", entry2: "")`| Add a one-line item with two entries, aligned left and right|
283+
|`#descript("descriptions")`| Add a description for self-introduction|
284+
|`#award(award: "", date: "", institution: "")`| Add an award (**award**, *institution* *date*)|
285+
|`#education(institution: "", major: "", date: "", institution: "", core-modules: "")`| Add an education experience|
286+
|`#job(position: "", institution: "", location: "", date: "", description: [])`| Add a job experience (description is optional)|
287+
|`#twoline-item(entry1: "", entry2: "", entry3: "", entry4: "")`| Two line items, similar to education and job experiences|
288+
|`#references(references:())`| Add a reference list. In the `()`, you can add multi reference entries with the following format `(name: "", position: "", department: "", institution: "", address: "", email: "",),`|
289+
|`#show bibliography: none #bibliography("bib.bib")`| Add a bibliography. You can modify the `bib.bib` file to add your publications. **Note:** Keep this at the end of your CV|
290+
|`#section-block(id, title: none, separator: true)[…]`| Wrap a section body once, optionally supplying its heading and whether to add a trailing separator|
291+
|`#render-sections(sections: (), order: (), include-remaining: true)`| Render the prepared section blocks in the order you choose; any blocks not listed in `order` appear afterward when `include-remaining` is `true`|
292+
293+
**Note:** Use `+ @ref` to display your publications. For example,
294+
295+
```Typst
296+
#section("Publications")
297+
298+
// numbering list
299+
+ @quenouille1949approximate
300+
+ @quenouille1949approximate
301+
302+
// Keep this at the end
303+
#show bibliography: none
304+
#bibliography("bib.bib")
305+
```
306+
307+
## Preview
308+
309+
### Single Column
310+
311+
![Single-Column-Preview](https://img.pengjiaxin.com/2024/07/a81ac7ec96be0625eefccb81ead160d3.png)
312+
313+
### Double Column
314+
315+
![Double-Column-Preview](https://img.pengjiaxin.com/2024/07/12e9b31e306055f615edf49f9b8ffe55.png)
316+
317+
## Legacy Version
318+
319+
I redesigned the template and submitted the new version to Typst Universe. However, you can find the legacy version in the `legacy` folder if you prefer to use the multi-font setting. You can also download the `modernpro-cv-legacy.zip` from the [release page](https://github.com/jxpeng98/Typst-CV-Resume/releases).
320+
321+
**Note:** The legacy version also has a cover letter template. You can use it with the CV template.
322+
323+
## Cover Letter
324+
325+
If you used the previous version of this template, you might know that I also provided a cover letter template.
326+
327+
If you want to use a consistent cover letter with the new version of the CV template, you can find it from another repository [typst-coverletter](https://github.com/jxpeng98/typst-coverletter).
328+
329+
you can also use the following code in the command line:
330+
331+
```bash
332+
typst init modernpro-coverletter
333+
```
334+
335+
## License
336+
337+
The template is released under the MIT License. For more information, please refer to the [LICENSE](https://github.com/jxpeng98/Typst-CV-Resume/blob/main/LICENSE) file.

0 commit comments

Comments
 (0)