# 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) ![YAMLResume New and Build Resume](./static/images/yamlresume-new-and-build.webp) ## 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): ![Sample Resume Page 1](./static/images/resume-1.webp) ![Sample Resume Page 2](./static/images/resume-2.webp) 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". ![Sans serif](./static/images/1280px-Serif_and_sans-serif_01.svg.webp) ![Serif fonts](./static/images/1280px-Serif_and_sans-serif_02.svg.webp) ![Serifs for serif fonts (red)](./static/images/1280px-Serif_and_sans-serif_03.svg.webp) ### 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. ![Proportional fonts and monospaced fonts](./static/images/1280px-Propvsmono.svg.webp) 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 ![Typography](./static/images/2000px-Typography_line_terms_alternate.svg.webp) ### 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]. ![Kerning](./static/images/1280px-Kerning_EN.svg.webp) ### 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. ![Ligature](./static/images/1106px-Ligatures.svg.webp) ### 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. ![Text Figures](./static/images/440px-Text_figures.jpg) 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. ![Leading](./static/images/1200px-Line_spacing_comparison.svg.webp) 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. ![Chinese characters](./static/images/chinese/Chenzihmyon_typefaces.svg.png) 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. ![Latin alphabet](./static/images/english/Abecedarium_latinum_clasicum.svg.png) ## 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 ![Moderncv Banking Template](./static/images/moderncv-banking-template.png) 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 ![Moderncv Casual Template](./static/images/moderncv-casual-template.png) 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 ![Moderncv Classic Template](./static/images/moderncv-classic-template.png) 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. ![YAMLResume 500 stars](./static/images/500-stars/star-history-2025611.webp) 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: ![YAMLResume NPM Download Trends May-Jun 2025](./static/images/500-stars/yamlresume-download-trends-may-jun-2025.webp) ## 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). ![YAMLResume New and Build Resume](./static/images/introducing-yamlresume/yamlresume-new-and-build.webp) ## 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: ![Resume Page 1](./static/images/introducing-yamlresume/resume-1.webp) ![Resume Page 2](./static/images/introducing-yamlresume/resume-2.webp) 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: ![Rich Text Support in Summary Field](./static/images/introducing-yamlresume/rich-text-support-in-summary-field.webp) 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). ![YAMLResume Docker asciinema](./static/images/yamlresume-docker/yamlresume-docker-asciinema.gif) ## 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: ![YAMLResume Docker Demo](./static/images/yamlresume-docker/yamlresume-docker-demo.svg) 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!