{"id":13558982,"url":"https://github.com/mrzool/cv-boilerplate","last_synced_at":"2025-05-16T04:07:15.912Z","repository":{"id":48826543,"uuid":"44678830","full_name":"mrzool/cv-boilerplate","owner":"mrzool","description":"Programmatic generation of high-quality CVs","archived":false,"fork":false,"pushed_at":"2024-08-02T07:34:48.000Z","size":832,"stargazers_count":1124,"open_issues_count":3,"forks_count":139,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-05-13T02:36:45.775Z","etag":null,"topics":["latex","makefile","pandoc","pdf","typesetting","yaml"],"latest_commit_sha":null,"homepage":"http://mrzool.cc/tex-boilerplates/","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrzool.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-10-21T13:40:19.000Z","updated_at":"2025-04-27T00:06:39.000Z","dependencies_parsed_at":"2024-09-24T05:01:24.106Z","dependency_job_id":null,"html_url":"https://github.com/mrzool/cv-boilerplate","commit_stats":{"total_commits":99,"total_committers":4,"mean_commits":24.75,"dds":"0.030303030303030276","last_synced_commit":"d09aafc7b1a2d36b57adee1156938726d822977e"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrzool%2Fcv-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrzool%2Fcv-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrzool%2Fcv-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrzool%2Fcv-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrzool","download_url":"https://codeload.github.com/mrzool/cv-boilerplate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254464897,"owners_count":22075571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["latex","makefile","pandoc","pdf","typesetting","yaml"],"created_at":"2024-08-01T12:05:16.249Z","updated_at":"2025-05-16T04:07:10.902Z","avatar_url":"https://github.com/mrzool.png","language":"TeX","funding_links":[],"categories":["TeX","LATEX","latex","Tools"],"sub_categories":["Converters"],"readme":"# CV Boilerplate\n\n\u003e I consider LaTeX resumes to be a secret handshake of sorts, something that makes me significantly more likely to be inclined to hire a candidate.  \n\u003e \u0026mdash;\u003ccite\u003e[zackelan](https://news.ycombinator.com/item?id=10452606)\u003ccite\u003e on HN\n\nA boilerplate to ease the pain of building and maintaining a CV or résumé using LaTeX.\n\n## Intro\n\nThe separation of content from presentation is considered a universal best practice. The typical content of a CV is a perfect fit for a YAML file due to its structured nature:\n\n```YAML\n---\nname: Friedrich Nietzsche\naddress:\n- Humboldtstraße 36\n- 99425 Weimar\n- Prussia\nemail: friedrich@thevoid.de\n# ...\nexperience:\n- years: 1879--1889\n  employer: Freiberufler\n  job: Freier Philosoph\n  city: Sils-Maria\n- years: 1869–-1879\n  employer: Universität Basel\n  job: Professor für klassische Philologie\n  city: Basel\n```\n\nThat makes super easy to update a CV while keeping a consistent structure.\n\nThanks to [pandoc](http://pandoc.org/), we can then access our data from `template.tex` using a special notation. Iterating on repetitive data structures becomes trivial:\n\n```latex\n$for(experience)$\n  $experience.years$\\\\\n  \\textsc{$experience.employer$}\\\\\n  \\emph{$experience.job$}\\\\\n  $experience.city$\\\\[.2cm]\n$endfor$\n```\n\nLaTeX takes then care of the typesetting with its usual elegance. Below a preview of the final result. Check out the [output](output.pdf) to see the compiled PDF.\n\n![preview](preview.png)\n\nWith this method, you can keep your entire CV encoded in a single YAML file, put it under version control (into a gist, for instance), and generate a PDF on the fly when needed. You can also easily export it to other formats, like HTML for web publishing (I've heard [Jekyll](http://jekyllrb.com/) likes YAML). Convenient, portable and time-proof.\n\n## Dependencies\n\n1. LaTeX with the following extra packages: `fontspec` `geometry` `multicol` `xunicode` `xltxtra` `marginnote` `sectsty` `ulem` `hyperref` `polyglossia`\n2. [Pandoc](http://pandoc.org/), the universal document converter.\n\nI highly recommend [TinyTeX](https://yihui.org/tinytex/) as LaTeX distribution. All additional packages can be installed with `tlmgr` as needed.\n\n## Getting started\n\n1. Fill `details.yml` with your personal details, work experience, education, and desired settings.\n2. Run `make` to compile the PDF.\n3. Tweak on `template.tex` until you're satisfied with the result.\n\n**Note**: this template needs to be compiled with XeTeX.\n\n### Note for Windows users\n\nAlthough I didn't test it, you can probably use this on Windows, too. Both [Pandoc](http://pandoc.org/installing.html) and LaTeX can be installed on Windows and you should be able to run makefiles on Windows through [Cygwin](https://www.cygwin.com/). If that's too much hassle, this command should do the trick in Powershell:\n\n    pandoc details.yml -o output.pdf --template=template.tex --pdf-engine=xelatex\n\n## Available settings\n\n- **`mainfont`**: Hoefler Text is the default, but every font installed on your system should work out of the box thanks to XeTeX.\n- **`fontsize`**: Possible values here are 10pt, 11pt and 12pt.\n- **`lang`**: Sets the main language through the `polyglossia` package. This is important for proper hyphenation, among other things.\n- **`geometry`**: A string that sets the margins through `geometry`. Read [this](https://www.sharelatex.com/learn/Page_size_and_margins) to learn how this package works.\n\n## Recommended readings\n\n- [Typesetting Automation](http://mrzool.cc/writing/typesetting-automation/), my article about this project with in-depth instructions and some suggestions for an ideal workflow.\n- [Why I do my résumé in LaTeX](http://www.toofishes.net/blog/why-i-do-my-resume-latex/) by Dan McGee\n- [What are the benefits of writing resumes in TeX/LaTeX?](http://tex.stackexchange.com/questions/11955/what-are-the-benefits-of-writing-resumes-in-tex-latex) on TeX Stack Exchange\n- [Typesetting your academic CV in LaTeX](http://nitens.org/taraborelli/cvtex) by Dario Taraborelli\n- [Résumé advices](http://practicaltypography.com/resumes.html) from Butterick's Practical Typography \n- [Multichannel Text Processing](https://ia.net/topics/multichannel-text-processing/) by iA\n- [Why Microsoft Word must Die](http://www.antipope.org/charlie/blog-static/2013/10/why-microsoft-word-must-die.html) by Charlie Stross\n- [Word Processors: Stupid and Inefficient](http://ricardo.ecn.wfu.edu/~cottrell/wp.html) by Allin Cottrell\n- [Proprietary Binary Data Formats: Just Say No!](https://web.archive.org/web/20170730105025/http://www.podval.org/~sds/data.html) by Sam Steingold\n- [Dimitrie Hoekstra](https://medium.com/@dimitrieh/a-curriculum-vitae-latex-typesetting-automation-adventure-with-gitlab-6ac233c0b66b#.v66feylcu) takes automation to the next level thanks to GitLab's continuous integration feats\n\n## Resources\n\n- [TinyTeX](https://yihui.org/tinytex/) is a lightweight, cross-platform, portable, and easy-to-maintain LaTeX distribution based on TeX Live.\n- Refer to [pandoc's documentation](http://pandoc.org/MANUAL.html#templates) to learn more about how templates work.\n- If you're not familiar with the YAML syntax, [here](http://learnxinyminutes.com/docs/yaml/)'s a good overview.\n- If you want to edit the template but LaTeX scares you, these [docs](https://www.sharelatex.com/learn/Main_Page) put together by ShareLaTeX cover most of the basics and are surprisingly kind to the beginner.\n- Odds are your question already has an answer on [TeX Stack Exchange](https://www.sharelatex.com/learn/Main_Page). Also, pretty friendly crowd in there.\n\n## See also\n\n- [invoice-boilerplate](https://github.com/mrzool/invoice-boilerplate) — Simple automated LaTeX invoicing system\n- [letter-boilerplate](https://github.com/mrzool/letter-boilerplate) — Typeset your important letters without leaving your text editor\n\n## License\n\nThis repository contains a modified version of Dario Taraborelli's [cvtex](https://github.com/dartar/cvtex) template.\n\nLicense: [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrzool%2Fcv-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrzool%2Fcv-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrzool%2Fcv-boilerplate/lists"}