# YAMLResume: Resumes as Code in YAML
YAMLResume allows people to create and version control resumes using YAML and generate pixel perfect PDFs with professional layout and typesetting in a breeze.
# CLI
URL: /docs/cli
***
## title: CLI
YAMLResume provides a CLI tool to help you manage your resume. You can follow
the [installation guide](/docs/getting-started#installation) to install it.
Please note that we have a [docker image](/docs/installation#docker-users)
for you, which has `yamlresume` CLI installed with all the necessary
dependencies.
For each sub-command in this guide, you can run it in docker by appending the
sub-command after `yamlresume/yamlresume`.
For example, to create a new resume in yamlresume CLI:
```sh
yamlresume new my-resume.yml
```
You can also run it in docker by:
```sh
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml
```
## Help
Show CLI help and all available commands:
```console
$ yamlresume help
Usage: yamlresume [options] [command]
YAMLResume — Resume as Code in YAML
__ __ _ __ __ _ ____
\ \ / // \ | \/ | | | _ \ ___ ___ _ _ ___ ___ ___
\ V // _ \ | |\/| | | | |_) / _ \/ __| | | / _ \/ _ \ / _ \
| |/ ___ \| | | | |___| _ < __/\__ \ |_| | | | | | | __/
|_/_/ \_\_| |_|_____|_| \_\___||___/\____|_| |_| |_|\___|
Options:
-V, --version output the version number
-v, --verbose verbose output
-h, --help display help for command
Commands:
new [filename] create a new resume
build [options] build a resume to LaTeX and PDF
languages i18n and l10n support
templates manage resume templates
help [command] display help for command
```
Show YAMLResume CLI version:
```console
$ yamlresume -V
0.4.0
```
## New
Create a new resume. The default resume filename is `resume.yml`, but you
can specify a custom filename:
```console
$ yamlresume new --help
Usage: yamlresume new [options] [filename]
create a new resume
Arguments:
filename output filename (default: "resume.yml")
Options:
-h, --help display help for command
$ yamlresume new my-resume.yml
✔ Created my-resume.yml successfully.
```
## Build
Build a resume from YAML to PDF. It will generate the latex code and PDF at the
same time, with some intermediate files `.aux`, `.log` etc, if you use
[XeTeX](/docs/installation#xetex) as the typesetting engine.
```console
$ yamlresume build --help
Usage: yamlresume build [options]
build a resume to LaTeX and PDF
Arguments:
source the source resume file
Options:
--no-pdf only generate TeX file without PDF
-h, --help display help for command
$ yamlresume build my-resume.yml
◐ Generating resume PDF file with command: xelatex -halt-on-error my-resume.tex...
✔ Generated resume PDF file successfully.
```
## Languages
List all available languages. The language code follows the spec in [ISO
639 specification](https://www.iso.org/iso-639-language-code). You can specify
the language code in `layout.locale.language` in order to change the language of
your resume. Changing the language of your resume will automatically translate
all fixed terms. You can check more details in our [content -> multi
languages](/docs/content/multi-languages) section.
```console
$ yamlresume languages list
| `layout.locale.language` | Language Name |
| ------------------------ | ------------------------------- |
| en | English |
| zh-hans | Simplified Chinese |
| zh-hant-hk | Traditional Chinese (Hong Kong) |
| zh-hant-tw | Traditional Chinese (Taiwan) |
| es | Spanish |
```
## Templates
List all available templates. You can change the resume template by setting
`layout.template` in your YAML resume. [PPResume
Templates](https://docs.ppresume.com/typesetting/templates) for more details.
```console
$ yamlresume templates list
| `layout.template` | Template Name | Description |
| ----------------- | ---------------- | ------------------------------------ |
| moderncv-banking | ModernCV Banking | ModernCV template with banking style |
| moderncv-casual | ModernCV Casual | ModernCV template with casual style |
| moderncv-classic | ModernCV Classic | ModernCV template with classic style |
```
# Comparisons
URL: /docs/comparisons
***
## title: Comparisons
## JSON Resume
[JSON Resume](https://jsonresume.org) is a pioneer in building a open standard
for a structured data format for resumes. Its first [official
release](https://jsonresume.org/blog/first-official-release) was in July 31,
2014, which is more than 10 years ago.
From its official website:
```markdown
## Origins and Conceptualization
JSON Resume was conceived as a solution to the fragmented and inconsistent
landscape of resume formats. Traditional resumes, typically created in formats
like Microsoft Word or PDF, often suffer from compatibility issues when parsed
by different systems. Recognizing this problem, Thomas Davis and Roland Sharp
initiated JSON Resume as an open-source project to create a universal,
machine-readable format for resumes.
## Development Milestones
The project began gaining momentum in the early 2010s, with significant
milestones such as the creation of the JSON Resume schema, the development of
the first CLI tools, and the establishment of the JSON Resume registry. These
milestones were driven by community contributions and the growing recognition of
the need for a standardized resume format in the tech industry.
```
JSON Resume did an excellent job in building a open standard for a structured
data format for resumes. However, it lacks some features that YAMLResume has.
YAMLResume is highly inspired by [JSON Resume](https://jsonresume.org/), and
more opinionated in some aspects. For example, JSON Resumes says nothing about
how to convert the machine readable data to a beautiful, human-readable resume.
Here are some notable differences:
| Feature | YAMLResume | JSON Resume |
| ------------------ | --------------------- | ------------------- |
| Data Format | YAML | JSON |
| Data Structure | All top-level objects | Some nested objects |
| Typesetting Engine | LaTeX | None |
| Layout Spec | Built-in | Not specified |
| Rich Text Support | Yes | No |
We are going to offer a tool to import JSON Resume to YAMLResume in the future.
# Quick Start
URL: /docs
***
## title: Quick Start
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
import { Step, Steps } from "fumadocs-ui/components/steps";
import { PDFViewer } from '../../src/app/components'
## Introduction
Creating a resume may not be difficult, but it is definitely a boring, lengthy
and tedious process.
With YAMLResume, you can create and version control your resumes with YAML and
create pixel perfect PDFs with professional layout and typesetting in a breeze.
YAMLResume is the core engine of [PPResume](https://ppresume.com), a LaTeX based
builder. It has helped [thousands of
people](https://blog.ppresume.com/posts/2024-recap) around the world create
pixel perfect, professional looking resumes and land their dream jobs. Here we
decided to open source the engine, in order to give people the right and freedom
to say [no to vendor lock-in](https://blog.ppresume.com/posts/no-vendor-lock-in)

## Getting Started
### Docker Users
If you are a docker user, you are in luck, we have a [docker
image](https://hub.docker.com/r/yamlresume/yamlresume) for you, which has
[yamlresume cli](https://www.npmjs.com/package/yamlresume) installed with all
its dependencies, such as [XeTeX](https://www.tug.org/xetex/) and some
[recommended fonts](/docs/installation#font).
You can just create a new resume with the following command:
```sh
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml
```
Edit `my-resume.yml` accordingly and then build the resume from yaml to pdf:
```sh
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume build my-resume.yml
```
### macOS Users
Let's assume that you're using macOS with [Homebrew](https://brew.sh/) as the
package manager. If you are not, please see the
[Installation](/docs/installation) guide for detailed instructions for your
operating system.
#### Install Node.js
You need to [install
Node.js](https://nodejs.org/en/download/package-manager/all#macos) 20.x or
newer.
```sh
brew install node
```
#### Install Typesetting Engine
YAMLResume needs a [typesetting
engine](/docs/getting-started#typesetting-engine) to generate PDF. Currently it
supports two typesetting engines:
* [XeTeX](/docs/getting-started#xetex)
* [Tectonic](/docs/getting-started#tectonic)
```sh tab="XeTeX"
brew install mactex
```
```sh tab="Tectonic"
brew install tectonic
```
#### Install YAMLResume
Installing `yamlresume` is a breeze. You can install it using your favourite
Node.js package manager:
```sh tab="npm"
npm install -g yamlresume
```
```sh tab="pnpm"
pnpm add -g yamlresume
```
```sh tab="yarn"
yarn global add yamlresume
```
```console tab="bun"
bun add -g yamlresume
```
Verify `yamlresume` is installed successfully:
```console
$ yamlresume help
Usage: yamlresume [options] [command]
YAMLResume — Resume as Code in YAML
__ __ _ __ __ _ ____
\ \ / // \ | \/ | | | _ \ ___ ___ _ _ ___ ___ ___
\ V // _ \ | |\/| | | | |_) / _ \/ __| | | / _ \/ _ \ / _ \
| |/ ___ \| | | | |___| _ < __/\__ \ |_| | | | | | | __/
|_/_/ \_\_| |_|_____|_| \_\___||___/\____|_| |_| |_|\___|
Options:
-V, --version output the version number
-v, --verbose verbose output
-h, --help display help for command
Commands:
new [filename] create a new resume
build [options] build a resume to LaTeX and PDF
languages i18n and l10n support
templates manage resume templates
help [command] display help for command
```
#### \[Optional] Install Fonts
##### Linux Libertine Font
We also recommend installing the [Linux
Libertine font](/docs/getting-started#linux-libertine) for the best looking PDF
output, but this is optional.
```sh
brew install font-linux-libertine
```
##### Noto Fonts
If you need to create a CJK (Chinese, Japanese, Korean) resume, we recommend
that you install the [Noto font](https://fonts.google.com/noto):
```sh
brew install font-noto-sans-cjk font-noto-serif-cjk
```
#### Create Your First YAML Resume
OK, we have everything ready, we can now create a yaml resume now with
`yamlresume new`:
```console
$ yamlresume new my-resume.yml
✔ Created my-resume.yml successfully.
```
Edit `resume.yml` accordingly, then you can generate a PDF with `yamlresume
build`:
```console
$ yamlresume build my-resume.yml
◐ Generating resume PDF file with command: xelatex -halt-on-error my-resume.tex...
✔ Generated resumep PDF file successfully.
```
## Sample Resume
Here is the complete YAML code for a two-page sample resume, tailored for a
[software
engineer](https://github.com/yamlresume/yamlresume/blob/main/packages/cli/resources/resume.yml):
```yaml
---
content:
basics:
name: Andy Dufresne
headline: Headed for the Pacific
phone: "(213) 555-9876"
email: hi@ppresume.com
url: https://ppresume.com/gallery
# All summary fields supports a limited rich text capabilities in markdown
# syntax:
#
# - bold, (e.g, `**bold**`)
# - italic, (e.g, `*italic*`)
# - ordered list, unordored list and nested sub list
# - links (e.g. `[link](https://ppresume.com)`)
summary: |
- Computer Science major with strong foundation in data structures, algorithms, and software development
- Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites
- Experiened in databases (SQL, NoSQL), familiar with server-side technologies (Node.js, Express, etc.)
- Team player, with detail-oriented mindset and a keen eye for design and user experiences
location:
address: 123 Main Street
city: Sacramento
region: California
country: United States
postalCode: "95814"
profiles:
- network: Line
url: https://line.com/PPResumeX
username: PPResumeX
- network: Twitter
url: https://twitter.com/PPResumeX
username: PPResumeX
education:
- institution: University of Southern California
url: https://www.cs.usc.edu/
# Valid degree options:
#
# - 'Middle School'
# - 'High School'
# - 'Diploma'
# - 'Associate'
# - 'Bachelor'
# - 'Master'
# - 'Doctor'
degree: Bachelor
area: Computer Engineering and Computer Science
score: "3.8"
# Should be a valid date string that can be parsed by `new Date(dateStr)`
# in JavaScript, eg. '2020-01', '2020-02-03', 'Jul 1, 2023' etc.
#
# The date part would be removed in the final output as most of the time
# people won't really care about the exact date for your working
# experience or education background, etc.
# ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date
startDate: Sep 1, 2016
# Leave endDate blank to indicate "Present"
endDate: Jul 1, 2020
courses:
- Discrete Methods in Computer Science
- Programming Language Concepts
- Data Structures and Object-Oriented Design
- Operating Systems
- Computer Architecture
- Database Systems
- Computer Networking
- Introduction to the Theory of Computing
summary: |
- Developed proficiency in programming languages such as Java, C++, and Python
- Gained hands-on experience in software development through various projects and assignments
- Strong communication and teamwork skills acquired through group projects and presentations
work:
- name: PPResume
url: https://ppresume.com
startDate: Dec 1, 2022
endDate: ""
position: Senior Software Engineer
summary: |
- Developed and implemented efficient and scalable code, ensuring high-quality and maintainable web applications
- Collaborated with cross-functional teams to gather project requirements and translate them into technical solutions
- Conducted thorough testing and debugging to identify and resolve any issues or bugs in the software
- Actively participated in code reviews, providing valuable feedback to improve code quality and adherence to best practices
- Mentored and guided junior developers, fostering a collaborative and growth-oriented team environment
keywords:
- Scalibility
- Growth
- Quality
- Mentorship
- name: PPResume
url: https://ppresume.com
startDate: Sep 1, 2020
endDate: Dec 1, 2022
position: Software Engineer
summary: |
- Created reusable React components to ensure code efficiency and maintainability
- Integrated with RESTful APIs to fetch and display dynamic data on the frontend
- Implemented client-side routing using React Router for smooth navigation between pages
- Actively participated in Agile development methodologies, attending daily stand-up meetings and sprint planning sessions
keywords:
- RESTful
- React
- Agile
languages:
# Valid language fluency options:
#
# - 'Elementary Proficiency'
# - 'Limited Working Proficiency'
# - 'Minimum Professional Proficiency'
# - 'Full Professional Proficiency'
# - 'Native or Bilingual Proficiency'
- language: English
fluency: Native or Bilingual Proficiency
keywords:
- TOEFL 110
- IELTS 7.5
- language: Chinese
fluency: Elementary Proficiency
keywords: []
skills:
# Valid skill level options:
#
# - 'Novice'
# - 'Beginner'
# - 'Intermediate'
# - 'Advanced'
# - 'Expert'
# - 'Master'
- name: Web Development
level: Expert
keywords:
- Python
- Ruby
- CSS
- React
- JavaScript
- name: DevOps
level: Intermediate
keywords:
- Python
- Kubernetes
- Docker
- Shell
- Ansible
- name: Design
level: Intermediate
keywords:
- Sketch
- Figma
- Photoshop
awards:
- title: Dean's List
awarder: University of Southern California
date: Oct 2016
summary: |
Awarded to students who achieve a high academic standing by maintaining a specified grade point average (GPA) during a semester.
certificates:
- name: AWS Certified Developer - Associate
url: https://aws.amazon.com/certification/
issuer: AWS
date: Mar 2021
publications:
- publisher: ACM Transactions on Interactive Intelligent Systems
url: https://dl.acm.org/journal/tiis
name: Enhancing Human-Computer Interaction through Augmented Reality
releaseDate: Dec 2017
summary: |
- Explores the potential of augmented reality (AR) in improving interaction between humans and computers
- Highlights benefits of AR in various areas such as gaming, education, healthcare, and design
- Discusses challenges and future directions of AR technology in enhancing user experience
references:
- name: Dr. Amanda Reynolds
phone: "(555) 123-4567"
relationship: Computer Science Professor
email: amanda.reynolds@usc.edu
summary: |
Andy Dufresne shows exceptional problem-solving skills and a solid understanding of programming concepts, he would bring immense value to any team or organization he becomes a part of.
projects:
- name: EduWeb
url: https://www.eduweb.xyz/
description: A web-based educational platform for interactive learning
startDate: Sep 2016
endDate: Dec 2016
summary: |
- Designed to enhance online learning experiences
- Facilitates students' engagement and collaboration through interactive features and user-friendly interface
- Offers a wide range of courses across various subjects
- Aims to improve the way students learn through the power of the web
keywords:
- Education
- Online Learning
- HCI
interests:
- name: Sports
keywords:
- Soccer
- Swimming
- Bicycling
- Hiking
- name: Music
keywords:
- Piano
- Guitar
volunteer:
- organization: USC Computer Science and Engineering Society
url: https://www.usccsesociety.org/
position: Tech Mentor
startDate: Sep 2015
endDate: Jul 2023
summary: |
- Volunteered as a Tech Mentor at USC Computer Science and Engineering Society
- Provided guidance and assistance to fellow students in their technical projects and coursework
- Assisted in organizing workshops, coding competitions, and networking events for the society members
- Contributed to fostering a collaborative and supportive environment within the student community
layout:
locale:
# Use `yamlresume languages list` to get the list of supported languages
language: en
margins:
top: 2.5cm
left: 1.5cm
right: 1.5cm
bottom: 2.5cm
page:
showPageNumbers: true
# Use `yamlresume templates list` to get the list of available templates
template: moderncv-banking
typography:
# LaTeX engine only supports 10pt, 11pt, and 12pt
fontSize: 11pt
```
Here are the screenshots of the [generated
PDF](https://github.com/yamlresume/yamlresume/blob/main/packages/cli/resources/resume.pdf):


You can check [PPResume Gallery](https://ppresume.com/gallery) for more
examples, with support for different
[templates](https://ppresume.com/gallery/templates) and
[multi-languages](https://ppresume.com/gallery/languages).
## Learn More
# Installation
URL: /docs/installation
***
## title: Installation
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
YAMLResume is a Node.js tool, under the hood, it transform your resumes from the
YAML format to LaTeX code and then call a LaTeX typesetting engine to compile
the generated LaTeX code to PDF. Besides, to get optimal PDF output, we also
suggest to install some fonts. In a nutshell, you need to install the followings
to get started with YAMLResume:
* Node.js
* [yamlresume package](https://www.npmjs.com/package/yamlresume)
* a typesetting engine
* \[optional] some fonts
This sounds a bit complicated, but don't worry, we have your back.
## Docker Users
If you are a docker user, you are in luck, we have a [docker
image](https://hub.docker.com/r/yamlresume/yamlresume) for you. This image has
everything pre-packaged, including:
* [Node.js](/docs/installation#nodejs)
* [yamlresume CLI](/docs/installation#yamlresume)
* [XeTeX](/docs/installation#xetex)
* [some recommended fonts](/docs/installation#font)
You can create a new resume instantly with the following command:
```sh
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml
```
This command will create a new resume called `my-resume.yml` in your current
directory. Steps:
1. `docker run ... yamlresume/yamlresume` - runs a new container from the
`yamlresume/yamlresume` image, if this image is not existed in your local
machine, it will pull it from the [docker
hub](https://hub.docker.com/r/yamlresume/yamlresume).
2. `--rm` - automatically removes the container when it exits
3. `-v $(pwd):/home/yamlresume` - mounts the current directory (`$(pwd)`) into
the container at `/home/yamlresume`, allowing the container to access local
files
4. `new my-resume.yml` - run yamlresume CLI [new](/docs/cli#new) sub-command to
create a new resume with the filename `my-resume.yml`
Edit `my-resume.yml` accordingly and then build the resume from yaml to pdf:
```sh
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume build my-resume.yml
```
Basically, you can call all of the `yamlresume` [CLI sub-commands](/cli) in this
way—just append the sub-command after `yamlresume/yamlresume` and then follow
the corresponding usage guide.
The `-v` flag here is quite important here because it mounts the current
directory (`$(pwd)`) into the container at `/home/yamlresume`, allowing a two
way file sync between the local directory and the container.
If you have trouble to pull down `yamlresume/yamlresume` image from [docker
hub](https://hub.docker.com/r/yamlresume/yamlresume), don't worry, we have a
[github mirror](https://github.com/yamlresume/yamlresume/pkgs/container/yamlresume)
for you.
You can get the ghcr image by:
```sh
docker pull ghcr.io/yamlresume/yamlresume
```
## Non-Docker Users
If you are not a docker user, please follow the appropriate instructions below
to install yamlresume CLI and all the necessary dependencies based on your
operating system. At the time of writing, our guide covers macOS, Windows, and
some Linux distros (Ubuntu and and RHEL based distros).
### Node.js
Node.js 20.x or newer is required.
Theoretically `yamlresume` should work with Node.js 18, however it is highly
recommended to use Node.js 20 or newer because Node.js 18 LTS is scheduled to
reach End-of-Life on [30 April
2025](https://nodejs.org/en/blog/release/v18.20.8).
There may be like 100+ methods to install Node.js on different OS, you can check
the official [Node.js Download](https://nodejs.org/en/download) to get started.
We recommend using a [package
manager](https://nodejs.org/en/download/package-manager/all) to install Node.js.
For [Homebrew](https://brew.sh/) users:
```sh
brew install node
```
For [Chocolatey](https://chocolatey.org/) users:
```sh
choco install nodejs.install
```
For Ubuntu 24.10 or newer:
```sh
sudo apt install nodejs
```
For Ubuntu 24.04 or older, please take a look at
[NodeSource](https://downloads.nodesource.com/#debian) to get Node.js 20 or
newer.
For RHEL-based linux like Fedora, AlmaLinux, Rocky Linux, etc.:
```sh
sudo dnf install nodejs
```
### YAMLResume CLI
Installing `yamlresume` is a breeze. You can install it using your favourite
Node.js package manager:
```console tab="npm"
npm install -g yamlresume
```
```console tab="pnpm"
pnpm add -g yamlresume
```
```console tab="yarn"
yarn global add yamlresume
```
```console tab="bun"
bun add -g yamlresume
```
Verify that `yamlresume` is installed successfully:
```console
$ yamlresume help
Usage: yamlresume [options] [command]
YAMLResume — Resume as Code in YAML
__ __ _ __ __ _ ____
\ \ / // \ | \/ | | | _ \ ___ ___ _ _ ___ ___ ___
\ V // _ \ | |\/| | | | |_) / _ \/ __| | | / _ \/ _ \ / _ \
| |/ ___ \| | | | |___| _ < __/\__ \ |_| | | | | | | __/
|_/_/ \_\_| |_|_____|_| \_\___||___/\____|_| |_| |_|\___|
Options:
-V, --version output the version number
-v, --verbose verbose output
-h, --help display help for command
Commands:
new [filename] create a new resume
build build a resume to LaTeX and PDF
languages i18n and l10n support
templates manage resume templates
help [command] display help for command
```
If you just want to give `yamlresume` a try without installing it, you can use
`npx`, `pnpx` or other similar tools:
```console tab="npx"
npx yamlresume help
```
```console tab="yarn"
yarn dlx yamlresume help
```
```console tab="pnpx"
pnpx yamlresume help
```
```console tab="bun"
bun exec yamlresume help
```
### Typesetting Engine
Under the hood, `yamlresume` does the job of a compiler, parsing a YAML resume
to an
[AST](https://github.com/yamlresume/yamlresume/blob/main/packages/core/src/compiler/ast.ts)
and then [transforming the AST to LaTeX
code](https://github.com/yamlresume/yamlresume/blob/main/packages/core/src/compiler/codegen/latex.ts).
As a mini-compiler, `yamlresume` relies on a typesetting engine to compile the
generated LaTeX code to PDFs. Therefore you must first install a typesetting
engine first before you can use `yamlresume` to generate resume PDFs.
YAMLResume currently supports two typesetting engines: [XeTeX](#xetex) and
[Tectonic](#tectonic).
At the time of writing, [LaTeX](https://www.latex-project.org/) is still the
best choice of typesetting engine for producing professional looking PDFs.
[Typst](https://typst.app/) is a great alternative, but it is still in its
early stage and its CJK support is not mature and production ready yet.
Previously I wrote a post [On Typesetting
Engines](https://blog.ppresume.com/posts/on-typesetting-engines) explaining
the reasons why I chose LaTeX over other typesetting engines when I founded
[PPResume](https://ppresume.com).
#### XeTeX
[XeTeX](https://tug.org/xetex/) is a [TeX](https://en.wikipedia.org/wiki/TeX)
typesetting engine using [Unicode](https://en.wikipedia.org/wiki/Unicode) and
supporting modern font technologies such as
[OpenType](https://en.wikipedia.org/wiki/OpenType),
[Graphite](https://fonts.adobe.com/fonts/graphite) and [Apple Advanced
Typography (AAT)](https://en.wikipedia.org/wiki/Apple_Advanced_Typography).
It is a very mature, stable typesetting engine that is widely used by many
academic and scientific people.
The easiest way is to install the **MacTeX** distribution.
It includes XeTeX along with many other TeX-related programs and packages. You
can download it from the [MacTeX website](https://www.tug.org/mactex/) or
install it via homebrew:
```sh
brew install mactex
```
[MiKTeX distribution](https://miktex.org) is a popular choice for Windows and
includes XeTeX. You can download it from the [MiKTeX
website](https://miktex.org/download).
Alternatively, you can install **TeX Live** for Windows, which also includes
XeTeX. Download it from the [TeX Live
website](https://www.tug.org/texlive/acquire-netinstall.html).
Most Linux distributions offer TeX Live through their package managers. XeTeX is
typically included in the `texlive-xetex` package or a larger `texlive-full`
meta-package.
For Ubuntu, if your network is good and you have around 10GB of disk spaces, you
can install the full texlive distribution:
```sh
sudo apt install texlive-full
```
Otherwise, you can install the minimum required packages:
```sh
sudo apt install texlive-xetex texlive-fonts-extra texlive-lang-all
```
For RHEL-based linux like Fedora, AlmaLinux, Rocky Linux, you can install the
full TeX Live distribution if you have enough disk space and good network:
```sh
sudo dnf install texlive-scheme-full
```
Otherwise you can install the minimum required packages:
```sh
sudo dnf install \
texlive-scheme-medium \
texlive-moderncv \
texlive-ctex \
texlive-academicons
```
Alternatively, you can always install TeX Live directly from the [TeX Live
website](https://www.tug.org/texlive/acquire-netinstall.html) using their
installer, which works across different Linux distributions.
Verify that XeTeX is installed successfully:
```console
$ xetex -v
XeTeX 3.141592653-2.6-0.999994 (TeX Live 2022)
kpathsea version 6.3.4
Copyright 2022 SIL International, Jonathan Kew and Khaled Hosny.
There is NO warranty. Redistribution of this software is
covered by the terms of both the XeTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the XeTeX source.
Primary author of XeTeX: Jonathan Kew.
Compiled with ICU version 70.1; using 70.1
Compiled with zlib version 1.2.11; using 1.2.11
Compiled with FreeType2 version 2.11.1; using 2.11.1
Compiled with Graphite2 version 1.3.14; using 1.3.14
Compiled with HarfBuzz version 3.4.0; using 3.4.0
Compiled with libpng version 1.6.37; using 1.6.37
Compiled with pplib version v2.05 less toxic i hope
Using Mac OS X Core Text and Cocoa frameworks
```
#### Tectonic
[Tectonic](https://tectonic-typesetting.github.io) is a modernized, complete,
self-contained
[TeX](https://en.wikipedia.org/wiki/TeX)/[LaTeX](https://www.latex-project.org/)
engine, powered by [XeTeX](https://tug.org/xetex/) and
[TeXLive](https://www.tug.org/texlive/).
A full TeX Live distribution typically takes up several GB of disk space, while
tectonic's initial installation takes up only 10+ MB. It automatically downloads
support files, so you don't have to install a complete LaTeX distribution. When
you start using a new LaTeX package, Tectonic simply downloads the files it
needs and continues processing.
Tectonic provides an official [installation
guide](https://tectonic-typesetting.github.io/en-US/install.html), but this
would just put tectonic in the directory where you ran the installation command,
`yamlresume` needs a global `tectonic` command in your `$PATH`, so you need to
figure that out with some shell hacks on your own.
If you're a macOS user, you're in luck because Homebrew provides prebuilt
package:
```sh
brew install tectonic
```
In to my experience, tectonic still has some minor compatibility issues with
official XeTeX, so if you do not mind the long download tim eof a full TeX Live
distribution, XeTeX is still the recommended choice here.
### Font
#### Linux Libertine
YAMLResume adopts [Linux Libertine](https://www.dafont.com/linux-libertine.font)
as the default font for Latin characters. It is highly recommended to install it
in order to get an optimal PDF output.
For Homebrew users:
```sh
brew install font-linux-libertine
```
Otherwise you can download the latest version of [Linux
Libertine](https://www.dafont.com/linux-libertine.font) from the website and
install the font with macOS's [Font
Book](https://support.apple.com/en-gb/guide/font-book/fntbk1000/mac).
Download the latest version of [Linux
Libertine](https://www.dafont.com/linux-libertine.font) from the website and
extract the archive and install the font.
For Ubuntu users, Linux Libertine font is already included in
`texlive-fonts-extra` package, however, if you want to install it manually, you
can do so by:
```sh
sudo apt install fonts-linuxlibertine
```
For RHEL-based linux like Fedora, AlmaLinux, Rocky Linux, you can install the
Linux Libertine font by:
```sh
sudo dnf install linux-libertine-fonts
```
#### Google Noto
If you need CJK resumes, you will also need to install [Google Noto
fonts](https://fonts.google.com/noto/) for [best unicode
coverage](https://github.com/ppresume/community/issues/63).
For Homebrew users:
```sh
brew install font-noto-sans-cjk font-noto-serif-cjk
```
Download Noto fonts and follow the [official
guide](https://fonts.google.com/noto/use#use-noto-fonts) to install on Windows.
For Ubuntu users:
```sh
sudo apt install fonts-noto-cjk fonts-noto-cjk-extra
```
For RHEL-based linux like Fedora, AlmaLinux, Rocky Linux, you can install the
Noto fonts by:
```sh
sudo dnf install google-noto-sans-cjk-fonts google-noto-serif-cjk-fonts
```
## Troubleshooting
You can [raise an issue](https://github.com/yamlresume/yamlresume/issues/new) if
you have trouble to install `yamlresume` or its dependencies.
You can enable verbose logging by passing a `--verbose` flag to `yamlresume` or
its subcommands.
### Getting Tired?
If you are getting tired of the installation process, you can try
[PPResume](https://ppresume.com), which is a hosted, commercial resume builder
solution who open sourced YAMLResume.
# Font
URL: /docs/guide/font
***
## title: Font
If text is the vehicle for the transmission of information, then the visual
characteristics of the text itself—that is, the font—influence the quality of
the message.
In principle, the typesetting of a resume should be concise and clear. As for
font, first you should never use fonts that are too fancy, second the types of
fonts should not be too many—best limited in three. Here we will discuss some
basics of fonts and main points in typesetting.
## Font classification
### Serif vs. sans-serif
In terms of serifs, fonts for Latin alphabet are divided into two families:
serif and sans-serif[^1].
A serif is a tiny line attached to the end of a stroke in a letter. A font with
serifs is called serif font, or serifed font. In contrast, a font without serifs
is called sans-serif font, where *sans* is the French word for "without".



### Proportional vs. monospaced
According to whether or not the widths of letters are the same, fonts can be
divided into monospaced and proportional. As the name suggests, all letters in a
monospaced font occupy the same amount of horizontal space, while in a
proportional font they don't.

In traditional printing, proportional fonts can improve the legibility of words.
Due to technical limitations, the early computers and typewriters can not adjust
the widths of letters . So all characters are made into the same width, thus
monospaced fonts come into being. With the improvement of computer technology,
the GUI (Graphical User Interface) has become the mainstream and been developing
continuously, technical limitations no longer exist, so proportional fonts have
become quite popular, since they are more naturally legible for human.
### CJK Font
Font styles in [CJK](https://en.wikipedia.org/wiki/CJK_characters) is a bit
complicated. Generally speaking, there're also serif and sans-serif fonts in CJK
languages.
#### Song
**[Song](https://en.wikipedia.org/wiki/Ming_typefaces)**: known as 宋体/明体 in
Simplified Chinese, 宋體/明體 in Traditional Chinese, みんちょうたい/明朝体 in Japanese,
명조체/明朝體 in Korean, is the serif font in CJK.
Song is usually used for body text, headings and notes. When used for headings,
the weight of the characters is often increased to differentiate them from the
body text. Currently it is the most common used font in printing.
#### Bold
**[Bold](https://en.wikipedia.org/wiki/Sans-serif)**, known as 黑体 in Simplified
Chinese, 黑體 in Traditional Chinese, is the sans-serif font in CJK.
Bold is often used for headlines, introductions, logos, etc. Bold is also used
in body text to emphasize specific words. Due to the large number of strokes in
Chinese characters and the poor clarity of bold in small characters, traditional
printing rarely uses bold as the body text; however, with the refinement of
character creation technology, coupled with the development of the Internet and
digital publishing, many bold fonts have been developed for body text, and a
small number of books have begun to use bold as the body text font.
Besides Song and Bold, *Chinese also has two additional font styles that are
widely used*.
#### Regular
**[Regular](https://en.wikipedia.org/wiki/Regular_script)**: known as 楷体 in
Simplified Chinese, 楷體 in Traditional Chinese, is the most common style used in
modern Chinese writings.
Regular are mainly used for headings, introductions, dialogues, summaries and
other paragraphs that are different from the main text. However, regular are
less frequently used for emphasis because of their proximity to Song.
#### Fangsong
**[Fangsong](https://en.wikipedia.org/wiki/Fangsong)**, known as 仿宋体 in
Simplified Chinese, 仿宋體 in Traditional Chinese, is a type of regular script
typeface. It is mostly used in the introduction, summary and other paragraphs
that are different from the main text. Meanwhile, it is also the standard font
used in official documents produced by the Chinese government.
## Font design and usage
Digital publishing has been developing for many years, and western lanauges has
a very small character set, so there are many kinds of fonts designed by
different people with various demands.
For a monospaced font, the main focus is on the design of each single letter,
other than that, in a proportional font, the space between letters should also
be seriously considered.
### Letter composition
Letters in every font have a consistent structure, font users are supposed to
know these basic concepts:
* baseline: the invisible line on which "H" or "n" stands
* cap height: the distance from baseline to the top of a linear uppercase letter
like "H" or "E"
* x-height: the distance from the bottom to the top of lowercase "x"
* ascender: the ascending parts of lowercase letters like "b", "d", "f", "h",
"k", "l" over the top of "x" , its height is called the ascender height, the top
line which ascenders align is called the ascender line
* descender: the descending parts of lowercase letters like "g", "j", "p", "q",
"y" below the baseline, its height is called the descender height, the bottom
line which descenders align is called the descender line

### Letter-spacing
Letter-spacing, or tracking, refers to the space between letters.
Letter-spacing adjustment is divided into font designers' side and font users'
side; it affects the density in a line or block of text.
For font designers, the adjustment of letter-spacing is an important procedure
in designing. In a proportional font, the spacing on the left side of a single
letter is not necessarily the same as on the right side. The purpose is to
ensure legibility when the letter is next to whatever other letters on both
sides.
For font users, the adjustment of letter-spacing means manually rearranging the
space between letters by software after the original typesetting, in order to
obtain special alignment[^2], or a better layout effect[^3].
### Kerning
Kerning refers to the process of increasing or decreasing the space between
specific letter pairs in a proportional font. These pairs of letters are called
kerning pairs. Kerning is more concerned about the visual spacing rather than
the actual spacing.
Designers of many fonts will pay attention to kerning pairs while designing, and
store kerning adjustment values in the font file. In this way, typesetting
software can automatically adjust spacing for kerning pairs according to the
values, thus produce a better layout effect.
Every letter has a unique shape, so during the design and implementation of a
font, letters in all kerning pairs must cooperate to produce the best visual
effect. In fact, this is where the key procedure and difficulties lie[^4].

### Ligature
A ligature is a glyph that joins two or more letters together.
Ligatures in print originate from hyphenated characters in handwriting. After
the birth of movable-type printing, many ligatures were directly made into type.
However, after the widespread use of sans-serif fonts in the 1950s and
phototypesetting in the 1970s, the use of block letters became rare. The
earliest digital typesetting software that could use ligatures for digital
typesetting is TeX created by [Donald
Knuth](https://en.wikipedia.org/wiki/Donald_Knuth). This trend also affected the
desktop publishing after 1985. In early times, software could not replace
letters with ligatures (but TeX could), and most of the newly made fonts for
computers did not include ligatures. Furthermore, in the early days of personal
computers, most of the computers were in English, and there was no practical
need for the use of ligature, as it was not mandatory to use it in the English
language. With the development of digital typesetting technology such as
[OpenType](https://en.wikipedia.org/wiki/OpenType), ligatures have
gradually returned to practice[^5].
In normal day-to-day business documents, the lack of ligatures is not treated as
spelling error, but for professional typesetting in advertising, book publishing
and other fields, ligatures are essentially required.

### Italics
Italic is a font style achieved by tilting the font on top of the normal font
style; it can refer to italic type or oblique type[^6].
There are two types of tilted fonts in western font: oblique type and italic
type. The one that is tilted with a change in the shape of the characters is
"Italic Type", while the one that simply tilts the original font to the right
without a change in the shape of the characters is known as oblique type. Since
oblique italics, which are simply tilted and distorted by software algorithms,
have loose strokes, more and more designs have recently favored the use of newly
designed, specialized italic types.
Theoretically, italics include italic type and oblique type, but it should be
noticed that actually not all italic type are slanted .
In practice, italics are usually applied to one piece of text to emphasize or
distinguish it from the main body that is in serif fonts.
### Old style numbers
Old style numbers, also known as [text
figures](https://en.wikipedia.org/wiki/Text_figures), designed with varying
heights for latin script languages in a fashion that resembles a typical line of
running text, hence the name.

In contrast, lining style numbers (also called lining, titling or modern
figures), have the same height as upper-case characters.
YAMLResume defaults to old style numbers for latin script language resumes and
lining style numbers for others.
> High-quality typesetting generally prefers text figures in body text: they
> integrate better with lowercase letters and small capitals, unlike runs of
> lining figures. Lining figures are called for in all-capitals settings (hence
> the alternative name titling figures), and may work better in tables and
> spreadsheets.
>
> — [Text figures](https://en.wikipedia.org/wiki/Text_figures#Design)
### Recommended Western Font
There are tons of fonts out there nowadays, so recommending a universal western
font scheme for your resume is not an easy task.
* RECOMMEND, using serif fonts for the main body text
* RECOMMEND, using sans-serif fonts for titles, but serif fonts can be used as
well
* RECOMMEND, using italic font style to emphasize text in main body,
corresponding bold style can be used as well
Here is a list of commonly used serif fonts:
* [Garamond](https://en.wikipedia.org/wiki/Garamond)
* [Palatino](https://en.wikipedia.org/wiki/Palatino)
* [Geogria](https://en.wikipedia.org/wiki/Georgia_\(typeface\))
* [Baskerville](https://en.wikipedia.org/wiki/Baskerville)
* [Minion](https://en.wikipedia.org/wiki/Minion_\(typeface\))
* [Hoefler Text](https://en.wikipedia.org/wiki/Hoefler_Text)
* [Linux Libertine](https://en.wikipedia.org/wiki/Linux_Libertine)
A list of commonly used sans-serif fonts:
* [Helvetica](https://en.wikipedia.org/wiki/Helvetica)
* [Gill Sans](https://en.wikipedia.org/wiki/Gill_Sans)
* [Optima](https://en.wikipedia.org/wiki/Optima)
***
[^1]: [Serif vs Sans: The Final Battle](http://designreviver.com/inspiration/serif-vs-sans-the-final-battle/)
[^2]: When the width of layout is small, usually it's not suitable to
use justified alignment, because applying justified alignment will
force most software to adjust the letter-spacing, and often, the
final layout effect will be very bad.
[^3]: For example, the innovation of TeX typesetting system lies in its
excellent
[justification](https://en.wikipedia.org/wiki/TeX#Hyphenation_and_justification)
algorithm, the principle of which is to adjust the letter-spacing to
make the layout more
[justified](https://en.wikipedia.org/wiki/Typographic_alignment#Justified).
[^4]: A Beginner's [Guide](https://designschool.canva.com/blog/kerning/) to Kerning Like a Designer
[^5]: [Ligature](https://en.wikipedia.org/wiki/Ligature)
[^6]: [Italic Type](https://en.wikipedia.org/wiki/Italic_type)
# Grammar
URL: /docs/guide/grammar
***
## title: Grammar
## Content
Being concise is the most important for a resume. Basic objective information is
the core of a resume:
* personal information
* important contact information such as telephone, e-mail must be clear
* education backgrounds
* if you are a fresh graduate, you can add education background of high school
* professional skills
* awards
* work (internship) experiences
Be cautious to add subjective information:
* self-evaluation
* personal hobbies
* social activities, volunteer experiences, etc., which have no clear
relations with the applied position
Be cautious to add objective information that are unrelated with the applied
position:
* photos
* birthday
* home address
* nationality
* political identity
* marital and family status
Prohibited contents:
* "My Resume" as the title
* watermarks of logos on resume templates from different sources
## Spelling
Spelling errors in a resume are a big no-no in a job search. Too many elementary
spelling errors can affect an employer's first impression of an applicant. Most
software have a spell checker, so use it appropriately to avoid many primary
spelling errors. Of course, don't rely too much on the software's spelling
check, it's better to find a trusted friend for a proof-reading.
### Proper nouns
In addition to common spelling errors, there are highly frequent spelling errors
in proper nouns, because they are more case sensitive. The same combination of
letters with different capitalization may have completely different meanings in
various fields, so job seekers must be very cautious. For example,
[iOS](http://www.apple.com/ios/) with lowercase "i" represents the mobile
operating system on an Apple iPhone, while
[IOS](https://en.wikipedia.org/wiki/Cisco_IOS) with uppercase "I" is the
dedicated system on Cisco routers.
Limited to our background, this guide summarizes some common spelling errors of
proper nouns within the IT field.
| Typos | Fix |
| ------------------------------ | -------------- |
| ajax | Ajax AJAX |
| android | Android |
| android studio | Android Studio |
| APP | App |
| AppStore, app store | App Store |
| Css, css | CSS |
| eclipse | Eclipse |
| git, GIT | Git |
| Html, html | HTML |
| Http, http | HTTP |
| json, Json | JSON |
| JAVA, java | Java |
| Javascript, javascript, JS, js | JavaScript |
| linux, LINUX | Linux |
| mysql | MySQL |
| node, Node, NodeJS, nodejs | Node.js |
| OC, oc, objective-c | Objective-C |
| python | Python |
| ruby | Ruby |
| sqlite | SQLite |
| xml, Xml | XML |
| xcode, XCODE, XCode | Xcode |
| ios, IOS | iOS |
| iphone, IPHONE | iPhone |
| jquery, JQuery | jQuery |
## Syntax
Compared with ordinary writing, there are some special grammar requirements for
resume writing.
* generally use the past tense, but If you are describing the present work or
education experience, use the present tense
* generally begin an item with a verb in the past tense, omitting the subject
* try to use simple and short sentences that are easy to understand, instead of
long and complex clauses
* list education backgrounds and work experiences in flashbacks, and the time
format should be accurate to month
* use the standard time format like "2015.05", or format that can be definitely
interpreted, such as "June, 2016", instead of year abbreviations like "05/06",
which can be interpreted differently in different countries
Here a list of 100 commonly used words in past tense in resume writing:
| | | | | |
| ------------- | ------------ | ------------ | ------------ | ------------ |
| Accelerated | Accomplished | Accounted | Accumulated | Achieved |
| Administrated | Arbitrated | Articulated | Boosted | Briefed |
| Broadened | Budgeted | Campaigned | Chaired | Championed |
| Clarified | Coached | Collaborated | Coordinated | Corroborated |
| Cultivated | Customized | Decided | Decreased | Delegated |
| Demonstrated | Designated | Developed | Devised | Diagnosed |
| Documented | Doubled | Economized | Edited | Educated |
| Empowered | Enabled | Encouraged | Endorsed | Enhanced |
| Facilitated | Focused | Forecasted | Generated | Harmonized |
| Harnessed | Identified | Illustrated | Impressed | Improved |
| Increased | Justified | Launched | Led | Magnified |
| Managed | Marketed | Mastered | Navigated | Negotiated |
| Observed | Obtained | Organized | Orchestrated | Participated |
| Pinpointed | Performed | Publicized | Published | Realigned |
| Recognized | Recommended | Selected | Separated | Spearheaded |
| Stimulated | Succeeded | Surpassed | Synchronized | Synergized |
| Tabulated | Targeted | Tested | Traded | Translated |
| Triggered | Triumphed | Troubleshot | Uncovered | Underwrote |
| Unearthed | Unified | Upgraded | Urged | Utilized |
| Validated | Verbalized | Verified | Vitalized | Yielded |
# Guide
URL: /docs/guide
***
## title: Guide
## A Guide for Resume Writing and Typesetting
A resume gives people a first impression of your career.
On an A4 sheet paper (210 mm \* 297 mm), a resume ends the previous stage of
your life and begins the next.
> A nine-storey tower arises from a pile of earth.
>
> — [Laozi](https://en.wikipedia.org/wiki/Laozi), Chapter 64
A pretty-print resume is based on details such as font, punctuation, layout
and grammar.
This guide systematically explains the essentials of resume writing and
typesetting with special emphasis on typography, helping you to make a resume
beautiful in form and spirit. For each topic, it first explains WHAT it is, then
WHY it is so, and finally HOW to do it.
The guide tries to be as concise and clear as possible, there are four priority
levels for the different explanations:
* **MUST**, mandatory in typesetting, serious mistake if violated
* **RECOMMEND**, conform to general typesetting standards, highly recommended
* **SHOULD NOT**, require advanced knowledge or features in typesetting, or diverse
in different languages and cultures, or vary with regulations in companies,
dangerous to use if not informed
* **MUST NOT**, conflict with general typesetting standards, forbidden to apply
# Publishing
URL: /docs/guide/publishing
***
## title: Publishing
## File format
Common file formats for resumes include:
* PDF
* Microsoft Word (doc, docx)
* Plain Text
* HTML
Here we recommend PDF most:
* PDF has excellent cross-platform output quality, ensuring nearly 100%
consistent printing and display
* PDF can be embedded with fonts, allowing great freedom in font selection
* default PDF reader available on most platforms
* Windows 8 and above have a built-in PDF reader
* macOS has
[Preview](https://en.wikipedia.org/wiki/Preview_\(Mac_OS\)), iOS
has [iBooks](http://www.apple.com/ibooks/)
* many browsers (such as Chrome) have built-in
[pdf.js](http://mozilla.github.io/pdf.js/), which can also open PDF by default
It's easier to learn MS Word, but delivering a resume with Word format has great
disadvantages:
* Word documents must be opened with additional office software
installed
* Microsoft Word, [WPS Office](https://wps.com) for Windows
* [iWork](https://en.wikipedia.org/wiki/IWork) for macOS
* [WPS Office](https://wps.com), [LibreOffice](https://www.libreoffice.org/)
for Linux
* many online document editing systems such as [Google
Docs](https://docs.google.com/) can also open and edit Word documents
* Word documents may display quite differently in different software on
different platforms
* in reality not everyone has installed [Microsoft
Word](https://products.office.com/en-us/word) on his computer
* another fact is that a genuine license for Microsoft Word may cost hundreds
of dollars
* in order to try to ensure consistent display and output, Word documents are
best used with only a few fonts that are common to the major operating systems,
which results in Word documents with very little freedom in font selection.
Of course, different HR managers in various companies can have different
requirements and preferences. We recommend that you export the resume to PDF as
an alternative if making it by Word
## Email etiquette
Aside from the company's proprietary recruiting system, the primary method of
submitting resumes for job applications should be email. Some basic e-mail
etiquette is as follows.
* set the correct email nickname, don't use informal overly fancy nicknames, it
will give the employer an impression of being very unprofessional
* use a uniform format in the email header, keep it clear and concise to convey
the most important information
* recommended format: `Apply-Company Position-Name-[University/Education]-[Work Experience]`
* the body of the email should be concise, it is not recommended to write a long
cover letter with a lot of personal subjective evaluation
* best to add the title and a greeting at the beginning of text
* contents in body
* basic personal information, such as work status (in-service or not),
position, education and work experiences, etc.
* applying position
* applying approach, whether recommended by others
* add an inscriber containing name and contact information (telephone/email)
* attach the resume file named with the same format of the header
# Punctuations
URL: /docs/guide/punctuations
***
## title: Punctuations
Punctuation is the most inconspicuous but also most error-prone part in resume
writing. Whether or not you can use punctuation correctly and standardized
reflects the job seeker's attitude to apply for the job.
The correct and standardized use of punctuation may look easy, but it is not as
simple as it seems. The main reason is that different language environments
either do not have a clear specification for the use of punctuation, or have a
specification but many places are not clearly defined, or there are several sets
of [style guides](https://en.wikipedia.org/wiki/Style_guide) but they are
incompatible or even conflicting with each other; and secondly, the actual
typesetting often encounters the situation of multi-language mixing, and then
the problem will become even more complicated. This guide tries to summarize
some general rules for the use of punctuation for your reference.
* MUST, adding one space after commas, periods, semicolons, colons, exclamation
marks and question marks
* MUST, adding one space before an open bracket and after a closed bracket, same
as a word, but no space after a closed bracket followed by a comma
* RECOMMEND, adding one space between a number and its unit
* RECOMMEND, not adding spaces around a hyphen, sometimes necessary to fine-tune
the letter-spacing
* RECOMMEND, not adding spaces around a slash which locates two parallel things
like "A or B"
* RECOMMEND, using quotation marks (`‘`、`’`、`“`、`”`), instead of
[apostrophes](https://en.wikipedia.org/wiki/Apostrophe)
* SHOULD NOT, adding any punctuation mark at the end of items in a [Bullet
list](https://en.wikipedia.org/wiki/Bullet_\(typography\))
* MUST NOT, hanging a punctuation mark at the start of a line, which can be
avoided by software's automatic settings or manual adjustment
## Connective mark
Hyphen (-), en-dash (–), and em-dash (—) are three punctuation marks that can be
easily confused and lead to errors. The usage of them is described below.
> for a hyphen, type a hyphen (-);
>
> for an en-dash, type two hyphens (--);
>
> for an em-dash, type three hyphens (---);
>
> for a minus sign, type a hyphen in mathematics mode ($-$).
>
> — Donald Knuth, [The TeXBook](https://en.wikipedia.org/wiki/Computers_and_Typesetting)
### Hyphen (-)
The hyphen is used primarily for:
* compound words such as "upper-case letter"
* separating numbers or characters, such as telephone numbers, "1-888-777-666"
* hyphenating the word at the end of a line to keep the whole layout neat
There are a few rules about hyphenation at the end of a line:
* try not to hyphenate the last word in more than three continuous lines
* avoid dividing proper nouns, personal names, etc.
* avoid cross-page hyphenation
* segment words according to syllables in principle, however the position to
hyphenate varies with words, so it's better to check dictionaries if
necessary[^7]
### En-dash (–)
The length of an en-dash equals the width of uppercase "N", and is half of the
length of an em-dash. It's mainly used for:
* indicating a range of numbers, date time, etc. such as dates in a year, "July–August 1968"
* indicating the start and end points of the navigation path, such as
"Boston–Hartford route"
When using an en-dash, it is generally not necessary to add spaces around it.
### Em-dash (—)
The length of an em-dash equals the width of uppercase "M", and its usage is the
most flexible and complex. It is usually used for:
* explaining something in details, equivalent to parentheses or colons
* segmenting declarative clauses
* indicating that the conversation is interrupted, in which case an
ellipsis may also be used
In addition, there are situations where two or three em-dashes are joined
together, but I won't go into details here.[^8].
***
[^7]: Professional typesetting software generally have automatic
hyphenating function, to some extents it can locate the position for
hyphenation if turned on, but it's best to artificially check
again.
[^8]: [Wikipedia/Dash](https://en.wikipedia.org/wiki/Dash) demonstrates detailed
usage of this symbol and the input methods of it on different operating
systems.
# Typesetting
URL: /docs/guide/typesetting
***
## title: Typesetting
Typesetting is "architecture in two dimensions."
If text and its fonts are the materials of the building, then typesetting is
the drawings of the building. Before discussing typesetting, we need to clarify
some basic concepts, especially the system of dimensional units commonly used in
typesetting.
## Font size
Font size is the standard measurement for characters' size. The international
universal unit of font size is the point.
The [point](https://en.wikipedia.org/wiki/Point_\(typography\)) is usually
abbreviated as pt, it's the smallest unit of measure in typesetting. In fact,
the size of the point has varied throughout the history of printing. Since the
18th century, the point's size has varied from 0.18 to 0.4 mm. Following the
advent of [desktop publishing](https://en.wikipedia.org/wiki/Desktop_publishing)
in the 1980s and 1990s, [digital
printing](https://en.wikipedia.org/wiki/Digital_printing) has largely supplanted
the [letterpress printing](https://en.wikipedia.org/wiki/Printing_press) and
gradually established the DTP point as the facto standard.
The DTP point is defined as 1/72 of an
[inch](https://en.wikipedia.org/wiki/Inch).
Most fonts will make the best effects when set to 10-12 pt. In other words, both
the strokes and structure of characters themselves and the spacing between
letters will present relatively good visual effects in such size. The larger the
font size, the looser the text appears, so you need to manually decrease the
letter spacing; on the other hand, the smaller the font size, the more compact
the text appears, so you need to manually increase the letter spacing.
| pt | mm | cm | pica | inch |
| -- | ------ | ------- | ---- | ---- |
| 1 | 0.3528 | 0.03528 | 1/12 | 1/72 |
## Leading
Leading or line-spacing refers to the distance between the baselines of two
consecutive lines.

The ideal leading is at least 120% of the text's font size, generally 1.2-1.5
times are recommended. Different fonts have different x-height, in principle,
the larger the x-height of the font applied, the larger the leading should be,
conversely, the smaller the x-height, the smaller the leading.
## Page layout
Layout is the outline of typesetting, it's like the head-rope of a fishing net,
once the head-rope is raised up, all the meshes spread naturally. In addition to
general typesetting rules for font size and leading, there are some unique
requirements in resume layout design. In principle, it's best to control the
resume in one page.
* Making the language clear and concise
* Adjusting the font size and leading within a reasonable range
* Keeping page margins in 10-25 mm and making the left and right margins
symmetrical
* Using lists rather than parallel sentences to list information
* Using flush left alignment, taking caution to use justified alignment as
justified alignment may cause problems in hyphenation and letter-spacing
because the lengths of words are different
# Chinese
URL: /docs/content/multi-languages/chinese
***
## title: Chinese
The [Chinese](https://en.wikipedia.org/wiki/Chinese_language) language belongs
to the [Sino-Tibetan language
family](https://en.wikipedia.org/wiki/Sino-Tibetan_language_family), which is
very much different from the Latin script languages. About 1.4 billion
people, or 17% of the world's population, speak a variety of Chinese as their
first language.
## Linguistics
### Character Set
The [Chinese characters](https://en.wikipedia.org/wiki/Chinese_characters) and
the [Latin
characters](https://en.wikipedia.org/wiki/Western_Latin_character_sets_\(computing\))
represent two fundamentally different approaches to written language.
The Latin characters has a limited character set, where relatively few
characters are needed to represent a large vocabulary, each character represents
a specific sound or [phoneme](https://en.wikipedia.org/wiki/Phoneme), and words
are formed by combining these characters in specific sequences. Chinese, on the
other hand, has tens of thousands of characters in order to express the full
range of the Chinese language, each character represents a
[morpheme](https://en.wikipedia.org/wiki/Morpheme) or word, often conveying
meaning directly, and words are formed by combining individual characters, each
with its own meaning and pronunciation.

This fundamental difference in writing systems has significant implications for
language learning, text processing, and cultural exchange. While the Latin
characters are relatively easy to learn and use, the Chinese characters
requires significant memorization and practice.
### Variants
While there are many regional variations of the Chinese language, the two
primary written forms are Simplified Chinese and Traditional Chinese.
Here's a breakdown:
**Simplified Chinese**
* Primarily used in mainland China and Singapore.
* Developed in the mid-20th century to increase literacy rates.
* Uses [simplified
characters](https://en.wikipedia.org/wiki/Simplified_Chinese_characters), often
with fewer strokes than traditional characters.
**Traditional Chinese**
* Primarily used in Hong Kong, Macau, Taiwan, and many overseas Chinese communities.
* The older form of written Chinese.
* Uses [traditional
characters](https://en.wikipedia.org/wiki/Traditional_Chinese_characters), with
more and complex strokes.
It's important to note that both Simplified and Traditional Chinese can be used
to write various dialects of Chinese, such as
[Mandarin](https://en.wikipedia.org/wiki/Mandarin_Chinese),
[Cantonese](https://en.wikipedia.org/wiki/Cantonese), and
[Hokkien](https://en.wikipedia.org/wiki/Hokkien).
Meanwhile, Traditional Chinese has at least two variants, namely, the Hong Kong
variant [zh-HK](https://simplelocalize.io/data/locale-code/zh-HK/) and the
Taiwan variant [zh-TW](https://simplelocalize.io/data/locale-code/zh-TW/). Most
of the scripts in zh-HK and zh-TW are identical, with only a few minor
differences.
For example, the word "software", when translated to zh-HK, it is "軟件", while in
zh-TW, it is "軟體". There are about tens of words in English that are translated
differently in zh-HK and zh-TW, details
[here](https://zh.wikipedia.org/wiki/%E7%B9%81%E4%BD%93%E5%AD%97#%E7%94%A8%E8%AA%9E%E5%B7%AE%E7%95%B0).
In general, YAMLResume can't do too much for the difference between zh-HK and
zh-TW, as users have to decide which variant to use when writing resumes and
make sure that the content conforms to the idioms and convensions of zh-HK or
zh-TW. However, there is one thing that YAMLResume needs to handle properly for
zh-HK and zh-TW, as some countries and regions have different names in zh-HK and
zh-TW. [Saudi Arabia](https://en.wikipedia.org/wiki/Saudi_Arabia), for example,
is translated as "沙特阿拉伯" in zh-HK and "沙烏地阿拉伯" in zh-TW. There are also a few
other countries. YAMLResume takes [care](#location-countries-and-regions) of all
countries and regions that has different translations in zh-HK and zh-TW.
## Idioms
### Date
Dates are presented differently in English and Chinese, e.g. "Jun 2018 –
Present" in English should be translated as "2018 年 6 月至今" in Chinese,the
position of the year and month should be reversed, and the en-dash "–" should be
replaced by "至".
Meanwhile, Chinese do not use dedicated words for months, instead, it uses a
combination of an Arabic number and a character "月", making it as simple as a
game of counting.
| English | Chinese |
| --------------- | ------- |
| January (Jan) | 1 月 |
| February (Feb) | 2 月 |
| March (Mar) | 3 月 |
| April (Apr) | 4 月 |
| May (May) | 5 月 |
| June (Jun) | 6 月 |
| July (Jul) | 7 月 |
| August (Aug) | 8 月 |
| September (Sep) | 9 月 |
| October (Oct) | 10 月 |
| November (Nov) | 11 月 |
| December (Dec) | 12 月 |
### Location
Address formats differ between
[English](/content/multi-languages/english#location) and Chinese conventions.
Unlike English, when presenting a location with address, city, and country, the
general part (country, state, etc.) usually comes first in Chinese, while the
most specific part (town, address, etc.) comes last.
## Typesetting
### Font
Just like Latin script languages, Chinese has its serif font
[Song](/docs/guide/font#song) and sans-serif font [Bold](/docs/guide/font#bold). Besides,
it also has two additional font styles, [Regular](/docs/guide/font#regular) and
[Fangsong](/docs/guide/font#fangsong). You can check [Guide -> Font -> CJK
Font](/docs/guide/font#cjk-font) for more details.
YAMLResume uses Song as the main font for Chinese resumes.
### Punctuations
Chinese punctuations, like the language itself, has its own unique
characteristics. One important distinction to note is the difference between
[half-width and
full-width](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
punctuations.
The primary difference between half-width and full-width punctuations in Chinese
lies in their visual width and their intended use.
**Half-width punctuations**
* **Narrower**: these punctuations are typically used in conjunction with Latin
characters or numbers, such as in URLs, email addresses, or code snippets.
* **Less common**: they are less commonly used in standard Chinese text, often
used in a small portion of Latin script language phrases or paragraphs.
**Full-width punctuations**
* **Wider**: these punctuations are designed to match the width of Chinese
characters, ensuring a visually balanced and consistent appearance in Chinese
text.
* **More common**: they are the standard punctuation marks used in Chinese text.
Using the correct type of punctuations is crucial for proper formatting and
readability in Chinese text. Mismatched punctuations can lead to visual
inconsistencies and potential confusion.
By understanding the difference between half-width and full-width punctuations,
you can ensure that your Chinese text is correctly formatted and visually
appealing. Here is a table of punctuations in both half-width and full-width
forms, used in Latin script and Chinese languages respectively.
| | English | Simplified Chinese |
| ---------------------- | ------- | ------------------ |
| Full Stop/Period (句号) | . | 。 |
| Question Mark (问号) | ? | ? |
| Exclamation Mark (感叹号) | ! | ! |
| Comma (逗点) | , | , |
| Colon (冒号) | : | : |
| Semicolon (分号) | ; | ; |
| Parenthesis (小括号) | () | () |
| Bracket (中括号) | \[] | [] |
| Brace (花括号) | \{} | {} |
For resumes, it's the author's duty to use correct punctuations when composing
the content, but YAMLResume can guarantee that our resume templates will always
use the correct punctuations. We have two cases right now:
#### Comma
English uses the comma `,` as a separator to separate parts of a sentence and
items in a list, while Chinese uses a Chinese comma `,` to separate sensences,
and a dedicated enumeration comma
([顿号](https://en.wikipedia.org/wiki/Comma#East_Asia), `、`) to separate items in
a list (e.g. keyword list).
#### Colon
English and Chinese also have
[different](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) colons.
The [English colon](https://www.compart.com/en/unicode/U+003A) is `:`, with
Unicode `U+003A`, while the [Chinese
colon](https://www.compart.com/en/unicode/U+FF1A) is `:`, with Unicode `U+FF1A`.
As you can always trust, YAMLResume also takes care of this. We use correct
colon for various fixed terms like "Keywords:" ("关键字:" in Simplified
Chinese, "關鍵字:" in Traditional Chinese) and "Courses:" ( `课程:` in
Simplified Chinese, `課程:` in Traditional Chinese) in our resume template.
### Old Style Numbers
By default, **YAMLResume do not use [old style
numbers](/docs/guide/font#old-style-numbers) for Chinese resumes**. Why? Because
Chinese characters all have the same height and width (that is why Chinese
characters are also called "方块字", which means square characters), basically all
Chinese characters are titled and monospaced by nature. By adopting numbers in
the lining style, the number style is adapted more closely to the Chinese
characters.
### Italics
By default, **YAMLResume do not use italics in Chinese resumes** because italics
in Chinese is considered as a [bad
practice](https://drwhispers.com/2021/11/16/italics-in-chinese/), why?
In Latin script languages, italics are usually distinguished from body serifs
and are used to emphasise or differentiate parts of the text, however,
italicizing Chinese characters can disrupt the natural flow and readability of
the text.
Unlike Latin characters, Chinese characters are square characters that are not
traditionally written in italics, and many Chinese fonts do not have specific
italic glyphs for each character. When italicizing Chinese text, software often
simply slants the characters, which can result in a visually unpleasant and
unprofessional appearance.
## Translations
YAMLResume adopts the following translations for various options and terms used
in Chinese resumes.
### Education Degrees
| English | Chinese (Simplified) | Chinese (Traditional, Hong Kong) | Chinese (Traditional, Taiwan) |
| ------------- | -------------------- | -------------------------------- | ----------------------------- |
| Middle School | 初中 | 初中 | 初中 |
| High School | 高中 | 高中 | 高中 |
| Diploma | 专科 | 專科 | 專科 |
| Associate | 副学士 | 副學士 | 副學士 |
| Bachelor | 学士 | 學士 | 學士 |
| Master | 硕士 | 碩士 | 碩士 |
| Doctor | 博士 | 博士 | 博士 |
### Languages
| English | Chinese (Simplified) | Chinese (Traditional, Hong Kong) | Chinese (Traditional, Taiwan) |
| ---------- | -------------------- | -------------------------------- | ----------------------------- |
| Arabic | 阿拉伯语 | 阿拉伯語 | 阿拉伯語 |
| Bengali | 孟加拉语 | 孟加拉語 | 孟加拉語 |
| Bhojpuri | 博杰普尔语 | 博傑普爾語 | 博傑普爾語 |
| Cantonese | 粤语 | 粵語 | 粵語 |
| Chinese | 中文 | 中文 | 中文 |
| English | 英语 | 英語 | 英語 |
| French | 法语 | 法語 | 法語 |
| German | 德语 | 德語 | 德語 |
| Gujarati | 古吉拉特语 | 古吉拉特語 | 古吉拉特語 |
| Hausa | 豪萨语 | 豪薩語 | 豪薩語 |
| Hindi | 印地语 | 印地語 | 印地語 |
| Indonesian | 印度尼西亚语 | 印度尼西亞語 | 印度尼西亞語 |
| Italian | 意大利语 | 意大利語 | 意大利語 |
| Japanese | 日语 | 日語 | 日語 |
| Javanese | 爪哇语 | 爪哇語 | 爪哇語 |
| Korean | 韩语 | 韓語 | 韓語 |
| Marathi | 马拉地语 | 馬拉地語 | 馬拉地語 |
| Portuguese | 葡萄牙语 | 葡萄牙語 | 葡萄牙語 |
| Russian | 俄语 | 俄語 | 俄語 |
| Spanish | 西班牙语 | 西班牙語 | 西班牙語 |
| Tamil | 泰米尔语 | 泰米爾語 | 泰米爾語 |
| Turkish | 土耳其语 | 土耳其語 | 土耳其語 |
| Urdu | 乌尔都语 | 烏爾都語 | 烏爾都語 |
| Vietnamese | 越南语 | 越南語 | 越南語 |
### Language Fluencies
| English | Chinese (Simplified) | Chinese (Traditional, Hong Kong) | Chinese (Traditional, Taiwan) |
| -------------------------------- | -------------------- | -------------------------------- | ----------------------------- |
| Elementary Proficiency | 初级水平 | 初級水平 | 初級水平 |
| Limited Working Proficiency | 有限工作水平 | 有限工作水平 | 有限工作水平 |
| Minimum Professional Proficiency | 最低专业水平 | 最低專業水平 | 最低專業水平 |
| Full Professional Proficiency | 完全专业水平 | 完全專業水平 | 完全專業水平 |
| Native or Bilingual Proficiency | 母语或双语水平 | 母語或雙語水平 | 母語或雙語水平 |
### Location (Countries and Regions)
| English | Chinese (Simplified) | Chinese (Traditional, Hong Kong) | Chinese (Traditional, Taiwan) |
| ------------------------------------ | -------------------- | -------------------------------- | ----------------------------- |
| Afghanistan | 阿富汗 | 阿富汗 | 阿富汗 |
| Aland Islands | 奥兰群岛 | 奧蘭羣島 | 奧蘭群島 |
| Albania | 阿尔巴尼亚 | 阿爾巴尼亞 | 阿爾巴尼亞 |
| Algeria | 阿尔及利亚 | 阿爾及利亞 | 阿爾及利亞 |
| American Samoa | 美属萨摩亚 | 美屬薩摩亞 | 美屬薩摩亞 |
| Andorra | 安道尔 | 安道爾 | 安道爾 |
| Angola | 安哥拉 | 安哥拉 | 安哥拉 |
| Anguilla | 安圭拉 | 安圭拉 | 安圭拉 |
| Antarctica | 南极洲 | 南極洲 | 南極洲 |
| Antigua And Barbuda | 安提瓜和巴布达 | 安提瓜和巴布達 | 安地卡及巴布達 |
| Argentina | 阿根廷 | 阿根廷 | 阿根廷 |
| Armenia | 亚美尼亚 | 亞美尼亞 | 亞美尼亞 |
| Aruba | 阿鲁巴 | 阿魯巴 | 阿魯巴 |
| Australia | 澳大利亚 | 澳大利亞 | 澳大利亞 |
| Austria | 奥地利 | 奧地利 | 奧地利 |
| Azerbaijan | 阿塞拜疆 | 阿塞拜疆 | 亞塞拜然 |
| Bahrain | 巴林 | 巴林 | 巴林 |
| Bangladesh | 孟加拉 | 孟加拉 | 孟加拉 |
| Barbados | 巴巴多斯 | 巴巴多斯 | 巴貝多 |
| Belarus | 白俄罗斯 | 白俄羅斯 | 白俄羅斯 |
| Belgium | 比利时 | 比利時 | 比利時 |
| Belize | 伯利兹 | 伯利茲 | 貝里斯 |
| Benin | 贝宁 | 貝寧 | 貝南 |
| Bermuda | 百慕大 | 百慕大 | 百慕大 |
| Bhutan | 不丹 | 不丹 | 不丹 |
| Bolivia | 玻利维亚 | 玻利維亞 | 玻利維亞 |
| Bonaire, Sint Eustatius and Saba | 博内尔岛、圣尤斯特歇斯和萨巴岛 | 博內爾島、聖尤斯特歇斯和薩巴島 | 博內爾島、聖尤斯特歇斯和薩巴島 |
| Bosnia and Herzegovina | 波斯尼亚和黑塞哥维那 | 波斯尼亞和黑塞哥維那 | 波斯尼亞和黑塞哥維那 |
| Botswana | 博茨瓦纳 | 博茨瓦納 | 波札那 |
| Bouvet Island | 布维岛 | 布維島 | 布維島 |
| Brazil | 巴西 | 巴西 | 巴西 |
| British Indian Ocean Territory | 英属印度洋领地 | 英屬印度洋領地 | 英屬印度洋領地 |
| Brunei | 文莱 | 文萊 | 汶萊 |
| Bulgaria | 保加利亚 | 保加利亞 | 保加利亞 |
| Burkina Faso | 布基纳法索 | 布基納法索 | 布吉納法索 |
| Burundi | 布隆迪 | 布隆迪 | 蒲隆地 |
| Cambodia | 柬埔寨 | 柬埔寨 | 柬埔寨 |
| Cameroon | 喀麦隆 | 喀麥隆 | 喀麥隆 |
| Canada | 加拿大 | 加拿大 | 加拿大 |
| Cape Verde | 佛得角 | 佛得角 | 維德角 |
| Cayman Islands | 开曼群岛 | 開曼羣島 | 開曼群島 |
| Central African Republic | 中非 | 中非 | 中非 |
| Chad | 乍得 | 乍得 | 查德 |
| Chile | 智利 | 智利 | 智利 |
| China | 中国 | 中國 | 中國 |
| Christmas Island | 圣诞岛 | 聖誕島 | 聖誕島 |
| Cocos (Keeling) Islands | 科科斯(基林)群岛 | 科科斯(基林)羣島 | 科科斯(基林)群島 |
| Colombia | 哥伦比亚 | 哥倫比亞 | 哥倫比亞 |
| Comoros | 科摩罗 | 科摩羅 | 葛摩 |
| Congo | 刚果 | 剛果 | 剛果 |
| Cook Islands | 库克群岛 | 庫克羣島 | 庫克群島 |
| Costa Rica | 哥斯达黎加 | 哥斯達黎加 | 哥斯大黎加 |
| Cote D'Ivoire (Ivory Coast) | 科特迪瓦 | 科特迪瓦 | 象牙海岸 |
| Croatia | 克罗地亚 | 克羅地亞 | 克羅埃西亞 |
| Cuba | 古巴 | 古巴 | 古巴 |
| Curaçao | 库拉索 | 庫拉索 | 庫拉索 |
| Cyprus | 塞浦路斯 | 塞浦路斯 | 塞普勒斯 |
| Czech Republic | 捷克 | 捷克 | 捷克 |
| Democratic Republic of the Congo | 刚果(金) | 剛果(金) | 剛果(金) |
| Denmark | 丹麦 | 丹麥 | 丹麥 |
| Djibouti | 吉布提 | 吉布提 | 吉布提 |
| Dominica | 多米尼加 | 多米尼加 | 多明尼加 |
| Dominican Republic | 多明尼加共和国 | 多明尼加共和國 | 多明尼加共和國 |
| East Timor | 东帝汶 | 東帝汶 | 東帝汶 |
| Ecuador | 厄瓜多尔 | 厄瓜多爾 | 厄瓜多 |
| Egypt | 埃及 | 埃及 | 埃及 |
| El Salvador | 萨尔瓦多 | 薩爾瓦多 | 薩爾瓦多 |
| Equatorial Guinea | 赤道几内亚 | 赤道幾內亞 | 赤道幾內亞 |
| Eritrea | 厄立特里亚 | 厄立特里亞 | 厄利垂亞 |
| Estonia | 爱沙尼亚 | 愛沙尼亞 | 愛沙尼亞 |
| Ethiopia | 埃塞俄比亚 | 埃塞俄比亞 | 衣索比亞 |
| Falkland Islands | 福克兰群岛 | 福克蘭羣島 | 福克蘭群島 |
| Faroe Islands | 法罗群岛 | 法羅羣島 | 法羅群島 |
| Fiji Islands | 斐济 | 斐濟 | 斐濟 |
| Finland | 芬兰 | 芬蘭 | 芬蘭 |
| France | 法国 | 法國 | 法國 |
| French Guiana | 法属圭亚那 | 法屬圭亞那 | 法屬蓋亞那 |
| French Polynesia | 法属波利尼西亚 | 法屬波利尼西亞 | 法屬波利尼西亞 |
| French Southern Territories | 法属南部领地 | 法屬南部領地 | 法屬南部領地 |
| Gabon | 加蓬 | 加蓬 | 加彭 |
| Gambia The | 冈比亚 | 岡比亞 | 甘比亞 |
| Georgia | 格鲁吉亚 | 格魯吉亞 | 喬治亞 |
| Germany | 德国 | 德國 | 德國 |
| Ghana | 加纳 | 加納 | 迦納 |
| Gibraltar | 直布罗陀 | 直布羅陀 | 直布羅陀 |
| Greece | 希腊 | 希臘 | 希臘 |
| Greenland | 格陵兰岛 | 格陵蘭島 | 格陵蘭島 |
| Grenada | 格林纳达 | 格林納達 | 格瑞那達 |
| Guadeloupe | 瓜德罗普岛 | 瓜德羅普島 | 瓜德羅普島 |
| Guam | 关岛 | 關島 | 關島 |
| Guatemala | 危地马拉 | 危地馬拉 | 瓜地馬拉 |
| Guernsey and Alderney | 根西岛 | 根西島 | 根西島 |
| Guinea | 几内亚 | 幾內亞 | 幾內亞 |
| Guinea-Bissau | 几内亚比绍 | 幾內亞比紹 | 幾內亞比索 |
| Guyana | 圭亚那 | 圭亞那 | 蓋亞那 |
| Haiti | 海地 | 海地 | 海地 |
| Heard Island and McDonald Islands | 赫德·唐纳岛及麦唐纳岛 | 赫德·唐納島及麥唐納島 | 赫德·唐納島及麥唐納島 |
| Honduras | 洪都拉斯 | 洪都拉斯 | 宏都拉斯 |
| Hong Kong S.A.R. | 中国香港 | 中國香港 | 中國香港 |
| Hungary | 匈牙利 | 匈牙利 | 匈牙利 |
| Iceland | 冰岛 | 冰島 | 冰島 |
| India | 印度 | 印度 | 印度 |
| Indonesia | 印度尼西亚 | 印度尼西亞 | 印度尼西亞 |
| Iran | 伊朗 | 伊朗 | 伊朗 |
| Iraq | 伊拉克 | 伊拉克 | 伊拉克 |
| Ireland | 爱尔兰 | 愛爾蘭 | 愛爾蘭 |
| Israel | 以色列 | 以色列 | 以色列 |
| Italy | 意大利 | 意大利 | 義大利 |
| Jamaica | 牙买加 | 牙買加 | 牙買加 |
| Japan | 日本 | 日本 | 日本 |
| Jersey | 泽西岛 | 澤西島 | 澤西島 |
| Jordan | 约旦 | 約旦 | 約旦 |
| Kazakhstan | 哈萨克斯坦 | 哈薩克斯坦 | 哈薩克 |
| Kenya | 肯尼亚 | 肯尼亞 | 肯亞 |
| Kiribati | 基里巴斯 | 基里巴斯 | 吉里巴斯 |
| Kosovo | 科索沃 | 科索沃 | 科索沃 |
| Kuwait | 科威特 | 科威特 | 科威特 |
| Kyrgyzstan | 吉尔吉斯斯坦 | 吉爾吉斯斯坦 | 吉爾吉斯斯坦 |
| Laos | 寮人民民主共和国 | 寮人民民主共和國 | 寮人民民主共和國 |
| Latvia | 拉脱维亚 | 拉脫維亞 | 拉脫維亞 |
| Lebanon | 黎巴嫩 | 黎巴嫩 | 黎巴嫩 |
| Lesotho | 莱索托 | 萊索托 | 賴索托 |
| Liberia | 利比里亚 | 利比里亞 | 賴比瑞亞 |
| Libya | 利比亚 | 利比亞 | 利比亞 |
| Liechtenstein | 列支敦士登 | 列支敦士登 | 列支敦斯登 |
| Lithuania | 立陶宛 | 立陶宛 | 立陶宛 |
| Luxembourg | 卢森堡 | 盧森堡 | 盧森堡 |
| Macau S.A.R. | 中国澳门 | 中國澳門 | 中國澳門 |
| Madagascar | 马达加斯加 | 馬達加斯加 | 馬達加斯加 |
| Malawi | 马拉维 | 馬拉維 | 馬拉維 |
| Malaysia | 马来西亚 | 馬來西亞 | 馬來西亞 |
| Maldives | 马尔代夫 | 馬爾代夫 | 馬爾地夫 |
| Mali | 马里 | 馬裏 | 馬裡 |
| Malta | 马耳他 | 馬耳他 | 馬耳他 |
| Man (Isle of) | 马恩岛 | 馬恩島 | 馬恩島 |
| Marshall Islands | 马绍尔群岛 | 馬紹爾羣島 | 馬紹爾群島 |
| Martinique | 马提尼克岛 | 馬提尼克島 | 馬提尼克島 |
| Mauritania | 毛里塔尼亚 | 毛里塔尼亞 | 茅利塔尼亞 |
| Mauritius | 毛里求斯 | 毛里求斯 | 模里西斯 |
| Mayotte | 马约特 | 馬約特 | 馬約特 |
| Mexico | 墨西哥 | 墨西哥 | 墨西哥 |
| Micronesia | 密克罗尼西亚 | 密克羅尼西亞 | 密克羅尼西亞 |
| Moldova | 摩尔多瓦 | 摩爾多瓦 | 摩爾多瓦 |
| Monaco | 摩纳哥 | 摩納哥 | 摩納哥 |
| Mongolia | 蒙古 | 蒙古 | 蒙古 |
| Montenegro | 黑山 | 黑山 | 黑山 |
| Montserrat | 蒙特塞拉特 | 蒙特塞拉特 | 蒙特塞拉特 |
| Morocco | 摩洛哥 | 摩洛哥 | 摩洛哥 |
| Mozambique | 莫桑比克 | 莫桑比克 | 莫三比克 |
| Myanmar | 缅甸 | 緬甸 | 緬甸 |
| Namibia | 纳米比亚 | 納米比亞 | 奈米比亞 |
| Nauru | 瑙鲁 | 瑙魯 | 諾魯 |
| Nepal | 尼泊尔 | 尼泊爾 | 尼泊爾 |
| Netherlands | 荷兰 | 荷蘭 | 荷蘭 |
| New Caledonia | 新喀里多尼亚 | 新喀里多尼亞 | 新喀里多尼亞 |
| New Zealand | 新西兰 | 新西蘭 | 紐西蘭 |
| Nicaragua | 尼加拉瓜 | 尼加拉瓜 | 尼加拉瓜 |
| Niger | 尼日尔 | 尼日爾 | 尼日 |
| Nigeria | 尼日利亚 | 尼日利亞 | 奈及利亞 |
| Niue | 纽埃 | 紐埃 | 紐埃 |
| Norfolk Island | 诺福克岛 | 諾福克島 | 諾福克島 |
| North Korea | 朝鲜 | 朝鮮 | 朝鮮 |
| North Macedonia | 北馬其頓 | 北馬其頓 | 北馬其頓 |
| Northern Mariana Islands | 北马里亚纳群岛 | 北马里亞納羣島 | 北马里亞納群島 |
| Norway | 挪威 | 挪威 | 挪威 |
| Oman | 阿曼 | 阿曼 | 阿曼 |
| Pakistan | 巴基斯坦 | 巴基斯坦 | 巴基斯坦 |
| Palau | 帕劳 | 帕勞 | 帛琉 |
| Palestinian Territory Occupied | 巴勒斯坦 | 巴勒斯坦 | 巴勒斯坦 |
| Panama | 巴拿马 | 巴拿馬 | 巴拿馬 |
| Papua new Guinea | 巴布亚新几内亚 | 巴布亞新幾內亞 | 巴布亞紐幾內亞 |
| Paraguay | 巴拉圭 | 巴拉圭 | 巴拉圭 |
| Peru | 秘鲁 | 祕魯 | 秘魯 |
| Philippines | 菲律宾 | 菲律賓 | 菲律賓 |
| Pitcairn Island | 皮特凯恩群岛 | 皮特凱恩羣島 | 皮特凱恩群島 |
| Poland | 波兰 | 波蘭 | 波蘭 |
| Portugal | 葡萄牙 | 葡萄牙 | 葡萄牙 |
| Puerto Rico | 波多黎各 | 波多黎各 | 波多黎各 |
| Qatar | 卡塔尔 | 卡塔爾 | 卡達 |
| Reunion | 留尼汪岛 | 留尼汪島 | 留尼汪島 |
| Romania | 罗马尼亚 | 羅馬尼亞 | 羅馬尼亞 |
| Russia | 俄罗斯联邦 | 俄羅斯聯邦 | 俄羅斯聯邦 |
| Rwanda | 卢旺达 | 盧旺達 | 盧安達 |
| Saint Helena | 圣赫勒拿 | 聖赫勒拿 | 聖赫勒拿 |
| Saint Kitts And Nevis | 圣基茨和尼维斯 | 聖基茨和尼維斯 | 聖克里斯多福及尼維斯 |
| Saint Lucia | 圣卢西亚 | 聖盧西亞 | 聖露西亞 |
| Saint Pierre and Miquelon | 圣皮埃尔和密克隆 | 聖皮埃爾和密克隆 | 聖皮埃爾和密克隆 |
| Saint Vincent And The Grenadines | 圣文森特和格林纳丁斯 | 聖文森特和格林納丁斯 | 聖文森及格瑞那丁 |
| Saint-Barthelemy | 圣巴泰勒米 | 聖巴泰勒米 | 聖巴泰勒米 |
| Saint-Martin (French part) | 密克罗尼西亚 | 密克羅尼西亞 | 密克羅尼西亞 |
| Samoa | 萨摩亚 | 薩摩亞 | 薩摩亞 |
| San Marino | 圣马力诺 | 聖馬力諾 | 聖馬利諾 |
| Sao Tome and Principe | 圣多美和普林西比 | 聖多美和普林西比 | 聖多美和普林西比 |
| Saudi Arabia | 沙特阿拉伯 | 沙特阿拉伯 | 沙烏地阿拉伯 |
| Senegal | 塞内加尔 | 塞內加爾 | 塞內加爾 |
| Serbia | 塞尔维亚 | 塞爾維亞 | 塞爾維亞 |
| Seychelles | 塞舌尔 | 塞舌爾 | 塞席爾 |
| Sierra Leone | 塞拉利昂 | 塞拉利昂 | 獅子山 |
| Singapore | 新加坡 | 新加坡 | 新加坡 |
| Sint Maarten (Dutch part) | 圣马丁岛(荷兰部分) | 聖馬丁島(荷蘭部分) | 聖馬丁島(荷蘭部分) |
| Slovakia | 斯洛伐克 | 斯洛伐克 | 斯洛伐克 |
| Slovenia | 斯洛文尼亚 | 斯洛文尼亞 | 斯洛維尼亞 |
| Solomon Islands | 所罗门群岛 | 所羅門羣島 | 索羅門群島 |
| Somalia | 索马里 | 索馬里 | 索馬利亞 |
| South Africa | 南非 | 南非 | 南非 |
| South Georgia | 南乔治亚 | 南喬治亞 | 南喬治亞 |
| South Korea | 韩国 | 韓國 | 韓國 |
| South Sudan | 南苏丹 | 南蘇丹 | 南蘇丹 |
| Spain | 西班牙 | 西班牙 | 西班牙 |
| Sri Lanka | 斯里兰卡 | 斯里蘭卡 | 斯里蘭卡 |
| Sudan | 苏丹 | 蘇丹 | 蘇丹 |
| Suriname | 苏里南 | 蘇里南 | 蘇利南 |
| Svalbard And Jan Mayen Islands | 斯瓦尔巴和扬马延群岛 | 斯瓦爾巴和揚馬延羣島 | 斯瓦爾巴和揚馬延群島 |
| Swaziland | 斯威士兰 | 斯威士蘭 | 史瓦濟蘭 |
| Sweden | 瑞典 | 瑞典 | 瑞典 |
| Switzerland | 瑞士 | 瑞士 | 瑞士 |
| Syria | 叙利亚 | 敘利亞 | 敘利亞 |
| Taiwan | 中国台湾 | 中國臺灣 | 中國臺灣 |
| Tajikistan | 塔吉克斯坦 | 塔吉克斯坦 | 塔吉克 |
| Tanzania | 坦桑尼亚 | 坦桑尼亞 | 坦尚尼亞 |
| Thailand | 泰国 | 泰國 | 泰國 |
| The Bahamas | 巴哈马 | 巴哈馬 | 巴哈馬 |
| Togo | 多哥 | 多哥 | 多哥 |
| Tokelau | 托克劳 | 托克勞 | 托克勞 |
| Tonga | 汤加 | 湯加 | 湯加 |
| Trinidad And Tobago | 特立尼达和多巴哥 | 特立尼達和多巴哥 | 千里達及托巴哥 |
| Tunisia | 突尼斯 | 突尼斯 | 突尼西亞 |
| Turkey | 土耳其 | 土耳其 | 土耳其 |
| Turkmenistan | 土库曼斯坦 | 土庫曼斯坦 | 土庫曼 |
| Turks And Caicos Islands | 特克斯和凯科斯群岛 | 特克斯和凱科斯羣島 | 特克斯和凱科斯群島 |
| Tuvalu | 图瓦卢 | 圖瓦盧 | 吐瓦魯 |
| Uganda | 乌干达 | 烏干達 | 烏干達 |
| Ukraine | 乌克兰 | 烏克蘭 | 烏克蘭 |
| United Arab Emirates | 阿拉伯联合酋长国 | 阿拉伯聯合酋長國 | 阿拉伯聯合大公國 |
| United Kingdom | 英国 | 英國 | 英國 |
| United States | 美国 | 美國 | 美國 |
| United States Minor Outlying Islands | 美国本土外小岛屿 | 美國本土外小島嶼 | 美國本土外小島嶼 |
| Uruguay | 乌拉圭 | 烏拉圭 | 烏拉圭 |
| Uzbekistan | 乌兹别克斯坦 | 烏茲別克斯坦 | 烏茲別克 |
| Vanuatu | 瓦努阿图 | 瓦努阿圖 | 萬那杜 |
| Vatican City State (Holy See) | 梵蒂冈 | 梵蒂岡 | 梵蒂岡 |
| Venezuela | 委内瑞拉 | 委內瑞拉 | 委內瑞拉 |
| Vietnam | 越南 | 越南 | 越南 |
| Virgin Islands (British) | 圣文森特和格林纳丁斯 | 聖文森特和格林納丁斯 | 聖文森及格瑞那丁 |
| Virgin Islands (US) | 维尔京群岛(美国) | 維爾京羣島(美國) | 維爾京群島(美國) |
| Wallis And Futuna Islands | 瓦利斯群岛和富图纳群岛 | 瓦利斯羣島和富圖納羣島 | 瓦利斯群島和富圖納群島 |
| Western Sahara | 西撒哈拉 | 西撒哈拉 | 西撒哈拉 |
| Yemen | 也门 | 也門 | 葉門 |
| Zambia | 赞比亚 | 贊比亞 | 尚比亞 |
| Zimbabwe | 津巴布韦 | 津巴布韋 | 辛巴威 |
### Section Names
| English | Chinese (Simplified) | Chinese (Traditional, Hong Kong) | Chinese (Traditional, Taiwan) |
| ------------ | -------------------- | -------------------------------- | ----------------------------- |
| Awards | 荣誉 | 榮譽 | 榮譽 |
| Basics | 简介 | 簡介 | 簡介 |
| Certificates | 证书 | 證書 | 證書 |
| Education | 教育背景 | 教育背景 | 教育背景 |
| Interests | 兴趣爱好 | 興趣愛好 | 興趣愛好 |
| Languages | 语言 | 語言 | 語言 |
| Location | 地址 | 地址 | 地址 |
| Profiles | 社交信息 | 社交信息 | 社交信息 |
| Projects | 项目 | 項目 | 項目 |
| Publications | 出版刊物 | 出版刊物 | 出版刊物 |
| References | 引荐 | 引薦 | 引薦 |
| Skills | 专业技能 | 專業技能 | 專業技能 |
| Volunteer | 志愿服务 | 志願服務 | 志願服務 |
| Work | 工作经历 | 工作經歷 | 工作經歷 |
### Skill Levels
| English | Chinese (Simplified) | Chinese (Traditional, Hong Kong) | Chinese (Traditional, Taiwan) |
| ------------ | -------------------- | -------------------------------- | ----------------------------- |
| Novice | 新手 | 新手 | 新手 |
| Beginner | 初级 | 初級 | 初級 |
| Intermediate | 中级 | 中級 | 中級 |
| Advanced | 高级 | 高級 | 高級 |
| Expert | 专家 | 專家 | 專家 |
| Master | 大师 | 大師 | 大師 |
### Terms
| English | Chinese (Simplified) | Chinese (Traditional, Hong Kong) | Chinese (Traditional, Taiwan) |
| -------- | -------------------- | -------------------------------- | ----------------------------- |
| Courses | 课程 | 課程 | 課程 |
| Keywords | 关键字 | 關鍵字 | 關鍵字 |
| Score | 成绩 | 成績 | 成績 |
# English
URL: /docs/content/multi-languages/english
***
## title: English
As we all know, English is widely used and spoken all over the world.
Supporting English in YAMLResume is an easy job. There's very little extra setup
to do in order to support English resumes with LaTeX.
## Linguistics
Theoretically, English belongs to [Germanic
languages](https://en.wikipedia.org/wiki/Germanic_languages), which is a branch
of the [Indo-European language
family](https://en.wikipedia.org/wiki/Indo-European_languages) spoken natively
by a population of about 515 million people mainly in Europe, North
America, Oceania, and Southern Africa.
### Character Set
Modern English is written with a Latin alphabet consisting of 26 letters, with
each having both uppercase and lowercase forms.
[Latin alphabet](https://en.wikipedia.org/wiki/Latin_alphabet) is the most
widely used alphabetic writing system in the world.

## Idioms
### Date
English has dedicated words for months, while each has a short form. YAMLResume
adopts the short form for all month fields by default.
| Long Form | Short Form |
| --------- | ---------- |
| January | Jan |
| February | Feb |
| March | Mar |
| April | Apr |
| May | May |
| June | Jun |
| July | Jul |
| August | Aug |
| September | Sep |
| October | Oct |
| November | Nov |
| December | Dec |
### Location
Different languages present locations in different format. In English, when
presenting a location with address, city, and country, the general part
(country, state, etc.) typically comes last, while the most specific part (town,
address, etc.) comes first. In some other languages like Chinese, the order is
totally reversed.
Here's the typical order in English:
1. Address: This includes the street number, street name, apartment number, etc.
2. City: The name of the city or town.
3. State/Province: The state or province, if applicable.
4. Country: The name of the country.
## Typesetting
Lots of typesetting theory and practice can be shared by all Latin script
languages, English is no exception here. We have already prepared a
[guide](/docs/guide) which covers lots of details.
### Font
Check [Guide -> Font](/docs/guide/font) from our guide for details.
* [Serif vs. sans-serif](/docs/guide/font#serif-vs-sans-serif)
* [Proportional vs. monospaced](/docs/guide/font#proportional-vs-monospaced)
* [Kerning](/docs/guide/font#kerning)
* [Ligature](/docs/guide/font#ligature)
* [Italics](/docs/guide/font#italics)
* [Old style numbers](/docs/guide/font#old-style-numbers)
### Punctuations
Check [Guide -> Punctuations](/docs/guide/punctuations) from our guide for details:
* [Hyphen](/docs/guide/punctuations#hyphen--)
* [En-dash](/docs/guide/punctuations#en-dash-)
* [Em-dash](/docs/guide/punctuations#em-dash-)
## Translations
YAMLResume adopts the following translations for various options and terms used
in English resumes.
### Education Degrees
YAMLResume presents the following predefined degrees for Education section.
| English |
| ------------- |
| Middle School |
| High School |
| Diploma |
| Associate |
| Bachelor |
| Master |
| Doctor |
### Languages
YAMLResume presents the following predefined language options for Languages
section.
| English |
| ---------- |
| Arabic |
| Bengali |
| Bhojpuri |
| Cantonese |
| Chinese |
| English |
| French |
| German |
| Gujarati |
| Hausa |
| Hindi |
| Indonesian |
| Italian |
| Japanese |
| Javanese |
| Korean |
| Marathi |
| Portuguese |
| Russian |
| Spanish |
| Tamil |
| Turkish |
| Urdu |
| Vietnamese |
### Language Fluencies
YAMLResume presents the following predefined language fluency options for
Languages section. These options are mirrored from
[Linkedin](https://www.linkedin.com/pulse/language-proficiency-linkedin-duaa-ali/).
| English |
| -------------------------------- |
| Elementary Proficiency |
| Limited Working Proficiency |
| Minimum Professional Proficiency |
| Full Professional Proficiency |
| Native or Bilingual Proficiency |
### Location (Countries and Regions)
YAMLResume provides the following options for countries and regions in Location
section. This list is coming from
[countries-states-cities-database](https://github.com/dr5hn/countries-states-cities-database).
Not all of them are countries, some are regions or
[SAR](https://en.wikipedia.org/wiki/Special_administrative_regions_of_China).
| English |
| ------------------------------------ |
| Afghanistan |
| Aland Islands |
| Albania |
| Algeria |
| American Samoa |
| Andorra |
| Angola |
| Anguilla |
| Antarctica |
| Antigua And Barbuda |
| Argentina |
| Armenia |
| Aruba |
| Australia |
| Austria |
| Azerbaijan |
| Bahrain |
| Bangladesh |
| Barbados |
| Belarus |
| Belgium |
| Belize |
| Benin |
| Bermuda |
| Bhutan |
| Bolivia |
| Bonaire, Sint Eustatius and Saba |
| Bosnia and Herzegovina |
| Botswana |
| Bouvet Island |
| Brazil |
| British Indian Ocean Territory |
| Brunei |
| Bulgaria |
| Burkina Faso |
| Burundi |
| Cambodia |
| Cameroon |
| Canada |
| Cape Verde |
| Cayman Islands |
| Central African Republic |
| Chad |
| Chile |
| China |
| Christmas Island |
| Cocos (Keeling) Islands |
| Colombia |
| Comoros |
| Congo |
| Cook Islands |
| Costa Rica |
| Cote D'Ivoire (Ivory Coast) |
| Croatia |
| Cuba |
| Curaçao |
| Cyprus |
| Czech Republic |
| Democratic Republic of the Congo |
| Denmark |
| Djibouti |
| Dominica |
| Dominican Republic |
| East Timor |
| Ecuador |
| Egypt |
| El Salvador |
| Equatorial Guinea |
| Eritrea |
| Estonia |
| Ethiopia |
| Falkland Islands |
| Faroe Islands |
| Fiji Islands |
| Finland |
| France |
| French Guiana |
| French Polynesia |
| French Southern Territories |
| Gabon |
| Gambia The |
| Georgia |
| Germany |
| Ghana |
| Gibraltar |
| Greece |
| Greenland |
| Grenada |
| Guadeloupe |
| Guam |
| Guatemala |
| Guernsey and Alderney |
| Guinea |
| Guinea-Bissau |
| Guyana |
| Haiti |
| Heard Island and McDonald Islands |
| Honduras |
| Hong Kong S.A.R. |
| Hungary |
| Iceland |
| India |
| Indonesia |
| Iran |
| Iraq |
| Ireland |
| Israel |
| Italy |
| Jamaica |
| Japan |
| Jersey |
| Jordan |
| Kazakhstan |
| Kenya |
| Kiribati |
| Kosovo |
| Kuwait |
| Kyrgyzstan |
| Laos |
| Latvia |
| Lebanon |
| Lesotho |
| Liberia |
| Libya |
| Liechtenstein |
| Lithuania |
| Luxembourg |
| Macau S.A.R. |
| Madagascar |
| Malawi |
| Malaysia |
| Maldives |
| Mali |
| Malta |
| Man (Isle of) |
| Marshall Islands |
| Martinique |
| Mauritania |
| Mauritius |
| Mayotte |
| Mexico |
| Micronesia |
| Moldova |
| Monaco |
| Mongolia |
| Montenegro |
| Montserrat |
| Morocco |
| Mozambique |
| Myanmar |
| Namibia |
| Nauru |
| Nepal |
| Netherlands |
| New Caledonia |
| New Zealand |
| Nicaragua |
| Niger |
| Nigeria |
| Niue |
| Norfolk Island |
| North Korea |
| North Macedonia |
| Northern Mariana Islands |
| Norway |
| Oman |
| Pakistan |
| Palau |
| Palestinian Territory Occupied |
| Panama |
| Papua new Guinea |
| Paraguay |
| Peru |
| Philippines |
| Pitcairn Island |
| Poland |
| Portugal |
| Puerto Rico |
| Qatar |
| Reunion |
| Romania |
| Russia |
| Rwanda |
| Saint Helena |
| Saint Kitts And Nevis |
| Saint Lucia |
| Saint Pierre and Miquelon |
| Saint Vincent And The Grenadines |
| Saint-Barthelemy |
| Saint-Martin (French part) |
| Samoa |
| San Marino |
| Sao Tome and Principe |
| Saudi Arabia |
| Senegal |
| Serbia |
| Seychelles |
| Sierra Leone |
| Singapore |
| Sint Maarten (Dutch part) |
| Slovakia |
| Slovenia |
| Solomon Islands |
| Somalia |
| South Africa |
| South Georgia |
| South Korea |
| South Sudan |
| Spain |
| Sri Lanka |
| Sudan |
| Suriname |
| Svalbard And Jan Mayen Islands |
| Swaziland |
| Sweden |
| Switzerland |
| Syria |
| Taiwan |
| Tajikistan |
| Tanzania |
| Thailand |
| The Bahamas |
| Togo |
| Tokelau |
| Tonga |
| Trinidad And Tobago |
| Tunisia |
| Turkey |
| Turkmenistan |
| Turks And Caicos Islands |
| Tuvalu |
| Uganda |
| Ukraine |
| United Arab Emirates |
| United Kingdom |
| United States |
| United States Minor Outlying Islands |
| Uruguay |
| Uzbekistan |
| Vanuatu |
| Vatican City State (Holy See) |
| Venezuela |
| Vietnam |
| Virgin Islands (British) |
| Virgin Islands (US) |
| Wallis And Futuna Islands |
| Western Sahara |
| Yemen |
| Zambia |
| Zimbabwe |
### Section Names
YAMLResume supports the following sections, each with a section name.
| English |
| ------------ |
| Awards |
| Basics |
| Certificates |
| Education |
| Interests |
| Languages |
| Location |
| Profiles |
| Projects |
| Publications |
| References |
| Skills |
| Volunteer |
| Work |
### Skill Levels
YAMLResume presents the following skill level options for Skills section.
| English |
| ------------ |
| Novice |
| Beginner |
| Intermediate |
| Advanced |
| Expert |
| Master |
### Terms
YAMLResume uses some fixed terms in our resume template.
| Term | description |
| -------- | ------------------------------------------------------------------- |
| Courses | used in Education section for courses |
| Keywords | used in Work, Projects section where a list of keyword is presented |
| Score | used in Education section for grade/score in school |
# Multi Languages
URL: /docs/content/multi-languages
***
## title: Multi Languages
YAMLResume is designed to support multi languages out of the box.
Technically, there are two categories of things to do when supporting multi
languages:
* **[Internationalization](https://phrase.com/blog/posts/internationalization-vs-localization/#what-is-internationalization-i18n)**:
often abbreviated as "i18n" (where the number 18 represents the 18 characters
between "i" and "n"), is basically a set of practices that allow a product
support multi languages, i18n main consists of translating the product into
mutli languages and dynamically switching the language according to the user's
choice
* **[Localization](https://phrase.com/blog/posts/internationalization-vs-localization/#what-is-localization-l10n)**:
often abbreviated as "l10n" (the number 10 represents the characters between
"l" and "n"), it goes beyond mere translation and instead adapts the product
to the cultural specifics of the target language.
In practice, i18n always comes first, l10n comes after.
For all supported languages, we have the following concerns from a design and
implementation perspective:
* **[Linguistics](https://en.wikipedia.org/wiki/Linguistics)**: the theorectical
side of a language, including but not limited to the language's character set,
syntax and grammar, history, etc.
* **Idioms**: common conventions and idioms that are generally followed by a
language.
* **[Typesetting](https://en.wikipedia.org/wiki/Typesetting)**: best typesetting
practices often followed by a language, such as italics, text figures, font
style, kerning, ligature, etc.
* **Translations**: mere translations for a fixed set of terms and
options used by resumes generated by YAMLResume.
## Supported Languages
You can use `yamlresume languages list` to list all supported languages. At the
time of writing, YAMLResume supports the following languages:
```console
$ yamlresume languages list
| `layout.locale.language` | Language Name |
| ------------------------ | ------------------------------- |
| en | English |
| zh-hans | Simplified Chinese |
| zh-hant-hk | Traditional Chinese (Hong Kong) |
| zh-hant-tw | Traditional Chinese (Taiwan) |
| es | Spanish |
```
Check the following pages for more details about each language:
## Glossaries
We have used the following glossaries throughout this section:
* **Latin script languages**: languages that use
[Latin script](https://en.wikipedia.org/wiki/Latin_script) as the [writing
systems](https://en.wikipedia.org/wiki/Writing_system). Most [germanic
languages](https://en.wikipedia.org/wiki/Germanic_languages), [romance
languages](https://en.wikipedia.org/wiki/Romance_languages) and many other
languages like
[https://en.wikipedia.org/wiki/Indonesian\_language](https://en.wikipedia.org/wiki/Indonesian_language)
use Latin script as the primary writing system.
* **[CJK](https://en.wikipedia.org/wiki/CJK_characters)**: Chinese, Japanese and
Korean languages.
* **[Character Set](https://www.creatopy.com/blog/what-is-a-character-set/)**:
the complete collection of characters, symbols, glyphs, and punctuation marks
available within a specific typeface or font.
* **[Glyph](https://en.wikipedia.org/wiki/Glyph)**: the specific shape, design,
or representation of a character in typography.
* **[Hyphenation](https://en.wikipedia.org/wiki/Syllabification)**, the practice
of breaking words at the end of lines to improve the overall appearance and
readability of text.
* **[Justification](https://en.wikipedia.org/wiki/Typographic_alignment#Justified)**:
the alignment of text within a block so that it is flush with both the left
and right margins, generally achieved by adjusting the spacing between words
and letters, creating a uniform appearance across each line of text.
* **[Kerning](https://en.wikipedia.org/wiki/Kerning)**: the process of adjusting
the spacing between characters in a proportional font, usually to achieve a
visually pleasing result.
* **[Ligature](https://en.wikipedia.org/wiki/Ligature_\(writing\))**: a glyph
that joins two or more letters together in order to enhance the visual appeal
of text and get better readability.
# Spanish
URL: /docs/content/multi-languages/spanish
***
## title: Spanish
English and Spanish are both [Indo-European
languages](https://en.wikipedia.org/wiki/Indo-European_languages), it is no
wonder that English and Spanish share some similarities, so most of the common
foundations of YAMLResume can be reused for English and Spanish.
## Linguistics
### Character Set
The character sets of English and Spanish are very similar—both languages
primarily use the [Latin
alphabet](https://en.wikipedia.org/wiki/Latin_alphabet), which consists of 26
letters. However, Spanish has an additional letter, the `ñ`, which
represents a unique sound. Here's a quick comparison:
| Feature | English Character Set | Spanish Character Set |
| ---------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------- |
| **Alphabet** | 26 letters (`a-z`) | 27 letters (`a-z` plus `ñ`) |
| **Diacritics** | None | Includes accents (`á`, `é`, `í`, `ó`, `ú`), diaeresis (`ü`), and special punctuation (`¿`, `¡`) |
| **Special Characters** | Limited to basic Latin characters | Includes additional characters like `ñ` and accented vowels |
The main differences between the English and Spanish's writing systems:
* **Additional letter**: the Spanish alphabet includes the letter `ñ`, which
does not exist in the English alphabet.
* **[Diacritics](https://en.wikipedia.org/wiki/Diacritic)**: Spanish uses
several diacritics that change he pronunciation of vowels. For example,
accents indicate stress and pronunciation changes (e.g., `é` vs. `e`).
* **Punctuation marks**: Spanish uses inverted punctuation marks (`¿` for
questions and `¡` for exclamations) that are absent in English.
## Idioms
### Date
Days of the week and months are capitalised in English, but not in Spanish. For
example, "Sep 2021" in English is translated as "sept 2021" in Spanish.
YAMLResume only uses months, hence the translation table:
| English | Spanish |
| --------------- | ----------------- |
| January (Jan) | enero (ene) |
| February (Feb) | febrero (feb) |
| March (Mar) | marzo (mar) |
| April (Apr) | abril (abr) |
| May (May) | mayo (may) |
| June (Jun) | junio (jun) |
| July (Jul) | julio (jul) |
| August (Aug) | agosto (ago) |
| September (Sep) | septiembre (sept) |
| October (Oct) | octubre (oct) |
| November (Nov) | noviembre (nov) |
| December (Dec) | diciembre (dic) |
### Capitalization
English tends to capitalize many words, while Spanish is more conservative and
follows a much [tigher set of
rules](https://baselang.com/blog/basic-grammar/capitalization-in-spanish/).
YAMLResume internally adopts a fixed set of options and terms for all resume
templates. For example, languages in YAMLResume resume templates adopt
[Linkedin's language fluency
options](https://www.linkedin.com/pulse/language-proficiency-linkedin-duaa-ali/):
* Elementary Proficiency
* Limited Working Proficiency
* Minimum Professional Proficiency
* Full Professional Proficiency
* Native or Bilingual Proficiency
These are translated to Spanish as follows:
* Competencia elemental
* Competencia limitada de trabajo
* Competencia profesional de trabajo
* Competencia profesional plena
* Competencia nativa o bilingüe
Only the first word is capitalized.
## Typesetting
### Punctuations
Spanish has several notable differences in punctuations from English:
* **Quotation marks**: In English, periods and commas are placed inside
quotation marks, whereas in Spanish, they are usually placed outside.
* **Inverted marks**: Spanish uses inverted question marks `¿` and
exclamation marks `¡` at both the beginning and the end of interrogative and
exclamatory sentences, whereas English does not.
* **Serial comma**: English often uses a serial comma before "and" in lists
(e.g., "apples, oranges, and bananas"), whereas Spanish does not use a comma
before "y" (e.g., "manzanas, naranjas y plátanos")
* **Numerical formats**: English uses a period is used as a decimal separator
(e.g., 3.14), whereas Spanish uses a comma is used (e.g., 3,14).
## Translations
YAMLResume adopts the following translations for various options and terms used
in Spanish resumes
### Education Degrees
| English | Spanish |
| ------------- | -------------------- |
| Middle School | Escuela secundaria |
| High School | Título de secundaria |
| Diploma | Diploma |
| Associate | Grado de asociado |
| Bachelor | Licenciatura |
| Master | Maestría |
| Doctor | Doctorado |
### Languages
| English | Spanish |
| ---------- | ---------- |
| Arabic | Árabe |
| Bengali | Bengalí |
| Bhojpuri | Bhojpuri |
| Cantonese | Cantonés |
| Chinese | Chino |
| English | Inglés |
| French | Francés |
| German | Alemán |
| Gujarati | Gujarati |
| Hausa | Hausa |
| Hindi | Hindi |
| Indonesian | Indonesio |
| Italian | Italiano |
| Japanese | Japonés |
| Javanese | Javanés |
| Korean | Coreano |
| Marathi | Marathi |
| Portuguese | Portugués |
| Russian | Ruso |
| Spanish | Español |
| Tamil | Tamil |
| Turkish | Turco |
| Urdu | Urdu |
| Vietnamese | Vietnamita |
### Language Fluencies
| English | Spanish |
| -------------------------------- | ---------------------------------- |
| Elementary Proficiency | Competencia elemental |
| Limited Working Proficiency | Competencia limitada de trabajo |
| Minimum Professional Proficiency | Competencia profesional de trabajo |
| Full Professional Proficiency | Competencia profesional plena |
| Native or Bilingual Proficiency | Competencia nativa o bilingüe |
### Location (Countries and Regions)
| English | Spanish |
| ------------------------------------ | -------------------------------------------- |
| Afghanistan | Afganistán |
| Aland Islands | Islas Åland |
| Albania | Albania |
| Algeria | Argelia |
| American Samoa | Samoa Americana |
| Andorra | Andorra |
| Angola | Angola |
| Anguilla | Anguila |
| Antarctica | Antártida |
| Antigua And Barbuda | Antigua y Barbuda |
| Argentina | Argentina |
| Armenia | Armenia |
| Aruba | Aruba |
| Australia | Australia |
| Austria | Austria |
| Azerbaijan | Azerbaiyán |
| Bahrain | Baréin |
| Bangladesh | Bangladés |
| Barbados | Barbados |
| Belarus | Bielorrusia |
| Belgium | Bélgica |
| Belize | Belice |
| Benin | Benín |
| Bermuda | Bermudas |
| Bhutan | Bután |
| Bolivia | Bolivia |
| Bonaire, Sint Eustatius and Saba | Bonaire, San Eustaquio y Saba |
| Bosnia and Herzegovina | Bosnia y Herzegovina |
| Botswana | Botsuana |
| Bouvet Island | Isla Bouvet |
| Brazil | Brasil |
| British Indian Ocean Territory | Territorio Británico del Océano Índico |
| Brunei | Brunéi |
| Bulgaria | Bulgaria |
| Burkina Faso | Burkina Faso |
| Burundi | Burundi |
| Cambodia | Camboya |
| Cameroon | Camerún |
| Canada | Canadá |
| Cape Verde | Cabo Verde |
| Cayman Islands | Islas Caimán |
| Central African Republic | República Centroafricana |
| Chad | Chad |
| Chile | Chile |
| China | China |
| Christmas Island | Isla de Navidad |
| Cocos (Keeling) Islands | Islas Cocos |
| Colombia | Colombia |
| Comoros | Comoras |
| Congo | Congo |
| Cook Islands | Islas Cook |
| Costa Rica | Costa Rica |
| Cote D'Ivoire (Ivory Coast) | Costa de Marfil |
| Croatia | Croacia |
| Cuba | Cuba |
| Curaçao | Curazao |
| Cyprus | Chipre |
| Czech Republic | República Checa |
| Democratic Republic of the Congo | República Democrática del Congo |
| Denmark | Dinamarca |
| Djibouti | Yibuti |
| Dominica | Dominica |
| Dominican Republic | República Dominicana |
| East Timor | Timor Oriental |
| Ecuador | Ecuador |
| Egypt | Egipto |
| El Salvador | El Salvador |
| Equatorial Guinea | Guinea Ecuatorial |
| Eritrea | Eritrea |
| Estonia | Estonia |
| Ethiopia | Etiopía |
| Falkland Islands | Islas Malvinas |
| Faroe Islands | Islas Feroe |
| Fiji Islands | Fiyi |
| Finland | Finlandia |
| France | Francia |
| French Guiana | Guayana Francesa |
| French Polynesia | Polinesia Francesa |
| French Southern Territories | Tierras Australes y Antárticas Francesas |
| Gabon | Gabón |
| Gambia The | Gambia |
| Georgia | Georgia |
| Germany | Alemania |
| Ghana | Ghana |
| Gibraltar | Gibraltar |
| Greece | Grecia |
| Greenland | Groenlandia |
| Grenada | Granada |
| Guadeloupe | Guadalupe |
| Guam | Guam |
| Guatemala | Guatemala |
| Guernsey and Alderney | Guernsey y Alderney |
| Guinea | Guinea |
| Guinea-Bissau | Guinea-Bisáu |
| Guyana | Guyana |
| Haiti | Haití |
| Heard Island and McDonald Islands | Islas Heard y McDonald |
| Honduras | Honduras |
| Hong Kong S.A.R. | Hong Kong |
| Hungary | Hungría |
| Iceland | Islandia |
| India | India |
| Indonesia | Indonesia |
| Iran | Irán |
| Iraq | Irak |
| Ireland | Irlanda |
| Israel | Israel |
| Italy | Italia |
| Jamaica | Jamaica |
| Japan | Japón |
| Jersey | Jersey |
| Jordan | Jordania |
| Kazakhstan | Kazajistán |
| Kenya | Kenia |
| Kiribati | Kiribati |
| Kosovo | Kosovo |
| Kuwait | Kuwait |
| Kyrgyzstan | Kirguistán |
| Laos | Laos |
| Latvia | Letonia |
| Lebanon | Líbano |
| Lesotho | Lesoto |
| Liberia | Liberia |
| Libya | Libia |
| Liechtenstein | Liechtenstein |
| Lithuania | Lituania |
| Luxembourg | Luxemburgo |
| Macau S.A.R. | Macao |
| Madagascar | Madagascar |
| Malawi | Malaui |
| Malaysia | Malasia |
| Maldives | Maldivas |
| Mali | Malí |
| Malta | Malta |
| Man (Isle of) | Isla de Man |
| Marshall Islands | Islas Marshall |
| Martinique | Martinica |
| Mauritania | Mauritania |
| Mauritius | Mauricio |
| Mayotte | Mayotte |
| Mexico | México |
| Micronesia | Micronesia |
| Moldova | Moldavia |
| Monaco | Mónaco |
| Mongolia | Mongolia |
| Montenegro | Montenegro |
| Montserrat | Montserrat |
| Morocco | Marruecos |
| Mozambique | Mozambique |
| Myanmar | Myanmar |
| Namibia | Namibia |
| Nauru | Nauru |
| Nepal | Nepal |
| Netherlands | Países Bajos |
| New Caledonia | Nueva Caledonia |
| New Zealand | Nueva Zelanda |
| Nicaragua | Nicaragua |
| Niger | Níger |
| Nigeria | Nigeria |
| Niue | Niue |
| Norfolk Island | Isla Norfolk |
| North Korea | Corea del Norte |
| North Macedonia | Macedonia del Norte |
| Northern Mariana Islands | Islas Marianas del Norte |
| Norway | Noruega |
| Oman | Omán |
| Pakistan | Pakistán |
| Palau | Palaos |
| Palestinian Territory Occupied | Territorio Palestino Ocupado |
| Panama | Panamá |
| Papua new Guinea | Papúa Nueva Guinea |
| Paraguay | Paraguay |
| Peru | Perú |
| Philippines | Filipinas |
| Pitcairn Island | Islas Pitcairn |
| Poland | Polonia |
| Portugal | Portugal |
| Puerto Rico | Puerto Rico |
| Qatar | Catar |
| Reunion | Reunión |
| Romania | Rumania |
| Russia | Rusia |
| Rwanda | Ruanda |
| Saint Helena | Santa Elena |
| Saint Kitts And Nevis | San Cristóbal y Nieves |
| Saint Lucia | Santa Lucía |
| Saint Pierre and Miquelon | San Pedro y Miquelón |
| Saint Vincent And The Grenadines | San Vicente y las Granadinas |
| Saint-Barthelemy | San Bartolomé |
| Saint-Martin (French part) | San Martín (parte francesa) |
| Samoa | Samoa |
| San Marino | San Marino |
| Sao Tome and Principe | Santo Tomé y Príncipe |
| Saudi Arabia | Arabia Saudita |
| Senegal | Senegal |
| Serbia | Serbia |
| Seychelles | Seychelles |
| Sierra Leone | Sierra Leona |
| Singapore | Singapur |
| Sint Maarten (Dutch part) | San Martín (parte neerlandesa) |
| Slovakia | Eslovaquia |
| Slovenia | Eslovenia |
| Solomon Islands | Islas Salomón |
| Somalia | Somalia |
| South Africa | Sudáfrica |
| South Georgia | Georgia del Sur |
| South Korea | Corea del Sur |
| South Sudan | Sudán del Sur |
| Spain | España |
| Sri Lanka | Sri Lanka |
| Sudan | Sudán |
| Suriname | Surinam |
| Svalbard And Jan Mayen Islands | Svalbard y Jan Mayen |
| Swaziland | Suazilandia |
| Sweden | Suecia |
| Switzerland | Suiza |
| Syria | Siria |
| Taiwan | Taiwán |
| Tajikistan | Tayikistán |
| Tanzania | Tanzania |
| Thailand | Tailandia |
| The Bahamas | Bahamas |
| Togo | Togo |
| Tokelau | Tokelau |
| Tonga | Tonga |
| Trinidad And Tobago | Trinidad y Tobago |
| Tunisia | Túnez |
| Turkey | Turquía |
| Turkmenistan | Turkmenistán |
| Turks And Caicos Islands | Islas Turcas y Caicos |
| Tuvalu | Tuvalu |
| Uganda | Uganda |
| Ukraine | Ucrania |
| United Arab Emirates | Emiratos Árabes Unidos |
| United Kingdom | Reino Unido |
| United States | Estados Unidos |
| United States Minor Outlying Islands | Islas Ultramarinas Menores de Estados Unidos |
| Uruguay | Uruguay |
| Uzbekistan | Uzbekistán |
| Vanuatu | Vanuatu |
| Vatican City State (Holy See) | Ciudad del Vaticano |
| Venezuela | Venezuela |
| Vietnam | Vietnam |
| Virgin Islands (British) | Islas Vírgenes Británicas |
| Virgin Islands (US) | Islas Vírgenes de los Estados Unidos |
| Wallis And Futuna Islands | Wallis y Futuna |
| Western Sahara | Sahara Occidental |
| Yemen | Yemen |
| Zambia | Zambia |
| Zimbabwe | Zimbabue |
### Section Names
| English | Spanish |
| ------------ | ------------------- |
| Awards | Premios |
| Basics | Información básica |
| Certificates | Certificados |
| Education | Educación |
| Interests | Intereses |
| Languages | Idiomas |
| Location | Ubicación |
| Profiles | Perfiles |
| Projects | Proyectos |
| Publications | Publicaciones |
| References | Referencias |
| Skills | Competencias |
| Volunteer | Voluntariado |
| Work | Experiencia laboral |
### Skill Levels
| English | Spanish |
| ------------ | ------------ |
| Novice | Novato |
| Beginner | Principiante |
| Intermediate | Intermedio |
| Advanced | Avanzado |
| Expert | Experto |
| Master | Maestro |
### Options and Terms
| English | Spanish |
| -------- | -------------- |
| Courses | Cursos |
| Keywords | Palabras clave |
| Score | Puntuación |
# Templates
URL: /docs/layout/templates
***
## title: Templates
YAMLResume provides several templates out of the box, you can list all templates
with `yamlresume templates list` command.
```console
$ yamlresume templates list
| `layout.template` | Template Name | Description |
| ----------------- | ---------------- | ------------------------------------ |
| moderncv-banking | ModernCV Banking | ModernCV template with banking style |
| moderncv-casual | ModernCV Casual | ModernCV template with casual style |
| moderncv-classic | ModernCV Classic | ModernCV template with classic style |
```
By default, YAMLResume uses [moderncv-banking](./templates/moderncv-banking) template. You
can change the template by setting `layout.template` in your YAML resume.
```yaml title="resume.yml"
content:
# ...
layout:
# ...
template: moderncv-classic # [!code highlight]
# ...
```
Check out the following templates for more details:
# Moderncv Banking
URL: /docs/layout/templates/moderncv-banking
***
## title: Moderncv Banking
## Implementation
Moderncv banking is a modern and clean resume template based on
[xdanaux/moderncv](https://github.com/xdanaux/moderncv).
Under the hood, we use the following code for the LaTeX preamble:
```latex
\documentclass[a4paper, serif, 11pt]{moderncv}
%% moderncv
% style and color
\moderncvstyle{banking}
\moderncvcolor{black}
% needed by moderncv for showing icons
\usepackage{fontawesome5}
```
For moderncv banking style, we also adopt some special processings for
punctuations in order to make it work with CJK.
Technically speaking, English and Chinese have different colons. The English
colon is `:`, with Unicode `U+003A`, while the Chinese colon is `:`, with
Unicode `U+FF1A`. So when the resume language is Chinese, we would adopt the
Chinese colon for moderncv by overriding some magic LaTeX macros:
```latex
% renew moderncv command to adapt for CJK colon
\renewcommand*{\cvitem}[3][.25em]{%
\ifstrempty{#2}{}{\hintstyle{#2}<= &templateTranslations.punctuations.Colon =>}{#3}%
\par\addvspace{#1}}
\renewcommand*{\cvitemwithcomment}[4][.25em]{%
\savebox{\cvitemwithcommentmainbox}{\ifstrempty{#2}{}{\hintstyle{#2}<= &templateTranslations.punctuations.Colon =>}#3}%
\setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
\setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
\begin{minipage}[t]{\cvitemwithcommentmainlength}\usebox{\cvitemwithcommentmainbox}\end{minipage}%
\hfill% fill of \separatorcolumnwidth
\begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}%
\par\addvspace{#1}}
```
Check our blog
[post](https://blog.ppresume.com/posts/multi-languagues-support#colon) for more
details.
## Preview

Download the [YAML code from
Github](https://github.com/yamlresume/web/tree/main/content/docs/layout/templates/static/resources/moderncv-banking-template.yml).
# Moderncv Casual
URL: /docs/layout/templates/moderncv-casual
***
## title: Moderncv Casual
## Implementation
Moderncv casual is a modern and casual resume template based on
[xdanaux/moderncv](https://github.com/xdanaux/moderncv).
Under the hood, we use the following code for the LaTeX preamble:
```latex
\documentclass[a4paper, serif, 11pt]{moderncv}
%% moderncv
% style and color
\moderncvstyle{casual}
\moderncvcolor{black}
% needed by moderncv for showing icons
\usepackage{fontawesome5}
```
## Preview

Download the [YAML code from
Github](https://github.com/yamlresume/web/tree/main/content/docs/layout/templates/static/resources/moderncv-casual-template.yml).
# Moderncv Classic
URL: /docs/layout/templates/moderncv-classic
***
## title: Moderncv Classic
## Implementation
Moderncv classic is a modern and classic resume template based on
[xdanaux/moderncv](https://github.com/xdanaux/moderncv).
Under the hood, we use the following code for the LaTeX preamble:
```latex
\documentclass[a4paper, serif, 11pt]{moderncv}
%% moderncv
% style and color
\moderncvstyle{classic}
\moderncvcolor{black}
% needed by moderncv for showing icons
\usepackage{fontawesome5}
```
## Preview

Download the [YAML code from
Github](https://github.com/yamlresume/web/tree/main/content/docs/layout/templates/static/resources/moderncv-classic-template.yml).
# 500 Stars
URL: /blog/500-stars
YAMLResume has reached 500 stars in just about a month
***
title: 500 Stars
description: YAMLResume has reached 500 stars in just about a month
author: Xiao Hanyu
profile: [https://x.com/xiaohanyu1988](https://x.com/xiaohanyu1988)
date: 2025-06-12
----------------
YAMLResume has achieved a significant milestone—500 stars on GitHub in just
about a month.

Here is the timeline:
* Mar 29: Decided to open source the engine behind
[PPResume](https://ppresume.com)
* Apr 2: Got a local [CLI
demo](https://x.com/xiaohanyu1988/status/1907427362259771748)
* Apr 10: Achieved [100% test
coverage](https://x.com/xiaohanyu1988/status/1910193021989368311)
* Apr 25: Got a [local npm
package](https://x.com/PPResumeX/status/1915789536610967741)
* May 8: Officially [open sourced
yamlresume](https://x.com/PPResumeX/status/1920294577497387493)
* May 17: Reached [200
stars](https://x.com/PPResumeX/status/1923635538046955662)
* May 23: Reached [300
stars](https://x.com/PPResumeX/status/1925834873723396131)
* May 30: Reached [400
stars](https://x.com/PPResumeX/status/1928347464693862635)
* Jun 11: Reached [500
stars](https://x.com/PPResumeX/status/1932716523401150840)
In the meantime, we received our first [pull
request](https://github.com/yamlresume/yamlresume/pull/2), merged [another pull
request](https://github.com/yamlresume/yamlresume/pull/19), and addressed our
first [bug report](https://github.com/yamlresume/yamlresume/issues/13). Special
thanks to [@jizusun](https://github.com/jizusun),
[@koo6666](https://github.com/koo6666), and
[@luyuhuang](https://github.com/luyuhuang) for your kind contributions!
## Why Open Source?
The first line of code for YAMLResume was actually written in 2023. It began as
the core typesetting engine for [PPResume](https://ppresume.com)—a
[LaTeX](https://www.latex-project.org/)-based, commercial, pixel-perfect resume
builder that has already helped thousands of people create beautifully typeset
resumes.
While I am not ready to open source PPResume itself, I do want to give users
full control over their resumes. In December 2024, PPResume enabled users to
download the generated LaTeX code for their resumes, ensuring our [no vendor
lock-in](https://blog.ppresume.com/posts/no-vendor-lock-in) promise and giving
users complete ownership of their data.
Moreover, the development of PPResume has greatly benefited from the open source
community. I have learned a lot from it myself, and now it is time to give back.
There are very few open source tools that use YAML as a resume format. [JSON
Resume](https://jsonresume.org) is a good try—as we all know, YAML is a superset
of JSON. However, JSON Resume does not provide an opinionated solution for
resume typesetting, layout, or output, making it far less practical. YAML, on
the other hand, is a [much better choice than
JSON](/docs/comparisons#json-resume) for resume formatting.
Open sourcing YAMLResume was clearly the right decision. Check out the download
trends for YAMLResume on NPM:

## What's Next?
Although YAMLResume has been used by a commercial resume builder for almost two
years, it is still in the early stages of development, and there is much more to
be done.
[Docker support](./yamlresume-docker) was one of the most requested features,
and I am pleased to say it is now [available](/docs/installation#docker-users).
Another important feature is data validation. Unlike PPResume, which provides a
carefully crafted and designed form for users to fill out and validate their
resume data, YAMLResume accepts unconstrained input—any `.yaml` file. We must
provide a way to [validate
input](https://github.com/yamlresume/yamlresume/issues/10) to ensure the program
handles all forms of input gracefully.
Feature-wise, we plan to support [section
aliases](https://github.com/yamlresume/yamlresume/issues/11) and [section
reordering](https://github.com/yamlresume/yamlresume/issues/12), making the PDF
output more adaptable and flexible.
For developer experience, we aim to [support a `dev`
sub-command](https://github.com/yamlresume/yamlresume/issues/25) so users can
modify resumes and see PDF changes in near real time.
Finally, some users have raised concerns about ATS compatibility. We are
committed to ensuring that the PDF output is [ATS
compatible](https://github.com/yamlresume/yamlresume/issues/23).
Stay tuned!
# Introducing YAMLResume
URL: /blog/introducing-yamlresume
YAMLResume: Resumes as Code in YAML
***
title: Introducing YAMLResume
description: 'YAMLResume: Resumes as Code in YAML'
author: Xiao Hanyu
profile: [https://x.com/xiaohanyu1988](https://x.com/xiaohanyu1988)
date: 2025-05-21
----------------
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
Every developer needs a resume unless you are a world-famous professional.
Writing a resume may not be hard, but it is definitely not fun and tedious. Many
spend days crafting their resumes, chasing after a 100% typo-free, grammar
checked resumes with professional layout and typesetting.
[YAMLResume](https://yamlresume.dev) allows you to create and version control
your resumes using [YAML](https://yaml.org/) and generate professional looking
PDFs with beautiful typesetting in a breeze.
It started as the core typesetting engine for [PPResume](https://ppresume.com)—a
[LaTeX](https://www.latex-project.org/) based, commercial, pixel perfect resume
builder—which already helps thousands of people create beautifully typeset
resumes. Without too much hesitation, we decided to open source it so that
people can always have the right to say [no to vendor
lock-in](https://blog.ppresume.com/posts/no-vendor-lock-in).

## Quick Start
YAMLResume provides a [CLI tool](https://www.npmjs.com/package/yamlresume),
besides, it has a mandatory dependency on a typesetting engine in order to
generate PDF. In other words, you should [install a typesetting
engine](/docs/installation#typesetting-engine) first if you want to generate
PDF.
Installing `yamlresume` CLI is a breeze. You can install it using your favourite
Node.js package manager:
```console tab="npm"
npm install -g yamlresume
```
```console tab="pnpm"
pnpm add -g yamlresume
```
```console tab="yarn"
yarn global add yamlresume
```
```console tab="bun"
bun add -g yamlresume
```
Verify `yamlresume` is installed successfully:
```console
$ yamlresume help
Usage: yamlresume [options] [command]
YAMLResume — Resume as Code in YAML
__ __ _ __ __ _ ____
\ \ / // \ | \/ | | | _ \ ___ ___ _ _ ___ ___ ___
\ V // _ \ | |\/| | | | |_) / _ \/ __| | | / _ \/ _ \ / _ \
| |/ ___ \| | | | |___| _ < __/\__ \ |_| | | | | | | __/
|_/_/ \_\_| |_|_____|_| \_\___||___/\____|_| |_| |_|\___|
Options:
-V, --version output the version number
-v, --verbose verbose output
-h, --help display help for command
Commands:
new [filename] create a new resume
build build a resume to LaTeX and PDF
languages i18n and l10n support
templates manage resume templates
help [command] display help for command
```
We also recommend that you install [Linux
Libertine](http://yamlresume.dev/docs/getting-started#linux-libertine) font in
order to get the best looking PDFs.
Last but not least, if you want to create a CJK resume, we also recommend that
you install [Google Noto fonts](https://fonts.google.com/noto/) for [best
unicode coverage](https://github.com/ppresume/community/issues/63).
### Create a New Resume
You can create a new resume with a one-liner:
```console
$ yamlresume new my-resume.yml
✔ Created my-resume.yml successfully.
```
Under the hood `yamlresume new` would clone a sample resume from
[here](https://github.com/yamlresume/yamlresume/blob/main/packages/cli/resources/resume.yml).
Then you can get a PDF with a one-liner again:
```console
$ yamlresume build my-resume.yml
◐ Generating resume PDF with command: xelatex -halt-on-error my-resume.tex...
✔ Generated resume PDF successfully.
```
You are done! Check out the generated resume PDF:


You can check [PPResume Gallery](https://ppresume.com/gallery) for more examples
powered by YAMLResume as the typesetting engine.
### Troubleshooting
YAMLResume CLI provides a verbose flag `-v`/`--verbose` to show more detailed
logging information. If you have trouble building a resume, you can try to run
the commands again with this verbose flag and paste the output into [github
issues](https://github.com/yamlresume/yamlresume/issues), I will take a look and
get back to you.
## How Does It Work?
Under the hood, YAMLResume works like a mini compiler, i.e, it takes an input,
parses it to an [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree) and
then generates an output.
The core design principle of YAMLResume is [separation of
concerns](https://en.wikipedia.org/wiki/Separation_of_concerns). One of the most
famous examples that follows this principle is HTML & CSS, which are the
foundation of the modern web—HTML is used to organize the content in a webpage,
CSS is used to define the content presentation style.
Following the core principle, YAMLResume is designed based on the following
requirements:
* the resume content should be written in plain text, which is version control
friendly
* the plain text should use a fully structured format, which gives us more
control and flexibility
* YAML is better than JSON because it is more human-readable and human-writable
* the YAML plain text is then rendered into a PDF with a pluggable typesetting
engine
* an opinionated layout should be provided out of the box, while still allowing
people to adjust options accordingly like font sizes, page margins, etc.
## Why YAML?
[JSON Resume](https://jsonresume.org/) is another project that allows people to
create resumes in a structured format. However, most developers would agree that
YAML is better than JSON with regard to human readability and writability. For
example, it is quite inconvenient to represent multi-line strings in JSON, while
YAML has native support for it.
Compare a resume snippet in JSON and YAML:
```json
{
"content": {
"basics": {
"name": "Andy Dufresne",
"headline": "Headed for the Pacific",
"phone": "(213) 555-9876",
"email": "hi@ppresume.com",
"url": "https://ppresume.com/gallery",
"summary": "- Computer Science major with strong foundation in data structures, algorithms, and software development\n- Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites\n- Experiened in databases (SQL, NoSQL), familiar with server-side technologies (Node.js, Express, etc.)\n- Team player, with detail-oriented mindset and a keen eye for design and user experiences"
}
}
}
```
```yml
content:
basics:
name: Andy Dufresne
headline: Headed for the Pacific
phone: "(213) 555-9876"
email: hi@ppresume.com
url: https://ppresume.com/gallery
summary: |
- Computer Science major with strong foundation in data structures, algorithms, and software development
- Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites
- Experiened in databases (SQL, NoSQL), familiar with server-side technologies (Node.js, Express, etc.)
- Team player, with detail-oriented mindset and a keen eye for design and user experiences
```
Which one is more readable and writable? The answer is obvious.
JSON Resume has no concern about the layout of the resume. In the real world,
you can't just send a JSON file to recruiters right? The structured resume
format needs to be converted to a human-readable document format like docx, PDF,
etc. YAMLResume offers an opinionated layout configuration, and guarantees
pixel perfect PDF output.
At the time of writing, YAMLResume's opinionated layout supports:
* locale languages
* English
* Simplified Chinese
* Traditional Chinese
* Spanish
* margins
* top
* left
* right
* bottom
* page numbers
* template
* typography
* font size
Here is a sample code snippet for layout configuration in YAMLResume:
```yml
layout:
locale:
language: en
margins:
top: 2.5cm
left: 1.5cm
right: 1.5cm
bottom: 2.5cm
page:
showPageNumbers: true
template: moderncv-banking
typography:
fontSize: 11pt
```
## Why Not Markdown?
[Markdown](https://en.wikipedia.org/wiki/Markdown) is a another popular choice
for writing resumes, there are also some resume builders that adopt markdown as
the main input format. However, markdown is a general-purpose markup language
for creating formatted text, while resumes only use a very limited set of
markdown features.
For example, the following markdown syntax are very unlikely to be used in a
resume:
* blockquote
* code block
* horizontal rules
* images
* tables
* html markup
* etc.
Second, markdown is far too flexible, often giving users more freedom than they
need to create a resume. It would be pretty hard to reliably parse a generic
markdown document as a resume.
Third, features like templates switching, precise layout control (like `\hfill`
and `\hspace` in LaTeX) is very hard to implement in markdown.
In conclusion, using a fully structured format such as YAML/JSON gives us more
control and reliability over formatting and layout for resumes.
## Why still LaTeX?
[LaTeX](https://www.latex-project.org/) is a very mature and stable typesetting
engine that can produce extremely high-quality PDFs. However, many LaTeX users,
even LaTeX enthusiasts, would agree that the LaTeX language is somewhat
outdated—its error messages are often quite confusing, and the reliance on
global variables often leads to conflicts between packages, the compilation
speed is slow for large documents and often quite complicated, and it produces
ugly intermediate files (`.aux`, `.log`, etc.).
Some suggest to replace LaTeX with [typst](https://github.com/typst/typst),
which is a modern typesetting engine, with much better DX and much faster
compilation. However, after careful evaluation, I decided to stick with LaTeX.
The deal breaker here is that, YAMLResume is designed to support multi languages
with the best possible typesetting quality, however, typst [CJK
support](https://blog.ppresume.com/posts/on-typesetting-engines#cjk-3) is still
unstable and lacking.
Later on I may add a new
[renderer](https://github.com/yamlresume/yamlresume/blob/main/packages/core/src/renderer/base.ts)
backend to support typst.
## Rich Text Support
Although we have decided not to use markdown as the resume input format, we do
support a limited set of markdown rich text syntax for the `summary` field in
various sections.
For now, we support the following markdown syntax:
* `**bold**`
* `*italic*`
* `[link](https://www.google.com)`
* ordered list
* unordered list
* nested list
* paragraphs
For example, this is a sample snippet for the `content.basics.summary` field:
```yml
---
content:
basics:
# ...
summary: |
This is a sample YAML resume that support limited set of markdown rich text syntax (bold, italics, links, lists):
- Computer Science major with **strong foundation** in data structures, *algorithms*, and software development
1. Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites
2. Experiened in databases (SQL, NoSQL), familiar with server-side technologies ([Node.js](https://nodejs.org/en), Express, etc.)
- Team player, with detail-oriented mindset and a keen eye for design and user experiences
```
And this is the generated PDF:

You can see that the rich text syntax is rendered correctly with bold, italics,
links, lists, pretty solid, right?
## Roadmap
Overall the project is still in a very early stage, we have a long way to go.
I've already planned a list of features to do in the near future:
1. more languages, Japanese, Germany, French, etc
2. more templates
3. [section alias](https://github.com/yamlresume/yamlresume/issues/11)
4. [section reordering](https://github.com/yamlresume/yamlresume/issues/12)
5. [schema validation](https://github.com/yamlresume/yamlresume/issues/10)
For any trouble, you can:
* raise an [issue](https://github.com/yamlresume/yamlresume/issues/)
* open a [discussion](https://github.com/yamlresume/yamlresume/discussions)
* leave a [message](https://discord.gg/9SyT7mVV4K)
Stay tuned!
# YAMLResume in Docker
URL: /blog/yamlresume-docker
Run YAMLResume instantly with Docker
***
title: YAMLResume in Docker
description: 'Run YAMLResume instantly with Docker'
author: Xiao Hanyu
profile: [https://x.com/xiaohanyu1988](https://x.com/xiaohanyu1988)
date: 2025-06-06
----------------
I am super excited to announce that YAMLResume now has a [docker
image](https://hub.docker.com/r/yamlresume/yamlresume), and you can [run
YAMLResume instantly with docker](https://asciinema.org/a/722057).

## Why Docker?
YAMLResume is a Node.js CLI tool and a
[library](https://www.npmjs.com/package/@yamlresume/core). Installing YAMLResume
itself is not difficult since it only requires Node.js. In fact, we can even compile it
to a binary and run it directly without installing Node.js.
However, YAMLResume has a mandatory dependency on LaTeX, which brings some new
problems:
* Installing LaTeX takes time; it usually takes about 5–10 minutes to download a
proper LaTeX distribution and configure it.
* LaTeX is not a single binary program; it is a collection of programs. Some
users [dislike installing many programs on their
machines](https://github.com/yamlresume/yamlresume/issues/6#issuecomment-2916479009).
Although we already provide a very comprehensive [installation
guide](/docs/installation) covering macOS, Windows, Ubuntu, and RHEL, even with
instructions on installing YAMLResume and LaTeX and making them work together,
the process can still be painful for some users.
Docker is a great solution to these problems: it can package everything into a
single image, making installation and configuration easy.
## How To Use It
A picture is worth a thousand words. Here is a screenshot showing how to use it:

Our [docker image](https://hub.docker.com/r/yamlresume/yamlresume) has
everything pre-packaged, including:
* [Node.js](/docs/installation#nodejs)
* [yamlresume CLI](/docs/installation#yamlresume)
* [XeTeX](/docs/installation#xetex)
* [some recommended fonts](/docs/installation#font)
You can create a new resume instantly with the following command:
```sh
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml
```
Edit `my-resume.yml` accordingly and then build the resume from YAML to PDF:
```sh
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume build my-resume.yml
```
#### Under the Hood
If you are familiar with docker, you may already know how this works. If not,
here is a quick explanation:
1. `docker run ... yamlresume/yamlresume` - runs a new container from the
`yamlresume/yamlresume` image. If this image does not exist on your local
machine, it will pull it from the [docker
Hub](https://hub.docker.com/r/yamlresume/yamlresume).
2. `--rm` - automatically removes the container when it exits.
3. `-v $(pwd):/home/yamlresume` - mounts the current directory (`$(pwd)`) into
the container at `/home/yamlresume`, allowing the container to access local
files.
4. `new my-resume.yml` or `build my-resume.yml` - runs the yamlresume CLI
[new](/docs/cli#new) or [build](/docs/cli#build) sub-command to create or
build a resume with the filename `my-resume.yml`.
Basically, you can call all of the `yamlresume` [CLI sub-commands](/cli) in this
way—just append the sub-command after `yamlresume/yamlresume` and then follow
the corresponding usage guide.
The `-v` flag is quite important because it mounts the current directory
(`$(pwd)`) into the container at `/home/yamlresume`, allowing two-way file sync
between the local directory and the container. Without this flag, the build
output artifact will be lost after the container exits.
## Engineering
Building a docker image is not difficult if you know docker a bit. However,
wrapping YAMLResume in docker is not as easy as it sounds. Here are some of the
challenges.
### LaTeX Configuration is Tedious
Installing a workable LaTeX distribution takes time; it usually takes about 5–10
minutes to download and configure a proper LaTeX distribution. In GitHub Action
runners, this process is [even longer—up to 20+
minutes](https://github.com/yamlresume/yamlresume/actions/runs/15438395862/job/43450134447).
```docker
RUN apt update && \
apt install -y \
texlive-xetex \
texlive-fonts-extra \
texlive-lang-all \
fonts-noto-cjk \
fonts-noto-cjk-extra \
```
We make it a 3-step process to build [yamlresume's docker
image](https://hub.docker.com/r/yamlresume/yamlresume):
1. Start from a Node.js image as the base.
2. Install and configure a LaTeX distribution.
3. Install the yamlresume CLI.
As mentioned, step 2 is the most time-consuming part. If we had to start over
every time we needed to update the docker image, it would take 30 minutes to
build the docker image in a github action runner.
To avoid this, we use a multi-stage build to cache the LaTeX distribution, so we
don't need to install it from scratch every time we update the docker image.
Therefore, we created a new
[yamlresume/yamlresume-base](https://hub.docker.com/r/yamlresume/yamlresume-base),
which is a base image that has Node.js and a LaTeX distribution installed. This
base image is stable and won't be updated too often, and our `yamlresume/yamlresume`
image is built on top of this base image. It only takes 3 minutes to pull down
the `yamlresume/yamlresume-base` image and install the yamlresume CLI on it,
which drastically reduces the iteration time.
### Multi-Platform Support
Another challenge is to support [multi-platform
builds](https://docs.docker.com/build/building/multi-platform/). As we know,
macOS M1 and later are ARM-based machines. Although they can run docker images
with AMD64 architecture by emulation, the performance is 10x poorer.
Hence, we have to support multi-platform images for `yamlresume/yamlresume`.
Luckily, docker officially provides a detailed guide about how to [build
multi-platform images in github
actions](https://docs.docker.com/build/ci/github-actions/multi-platform/).
YAMLResume's docker image supports [two
platforms](https://hub.docker.com/r/yamlresume/yamlresume/tags): `linux/amd64`
and `linux/arm64`, which should be sufficient to cover most desktop and server
machines.
Enjoy YAMLResume with docker!