Collection of export backends for orgmode to generate a CV
Find a file
Diego Zamboni 2e9d4bc857 Improved employer/location handling in letters
- Default employee to empty string (was otherwise showing up a "nil").
- In \recipient, insert the linebreak only if both employer and location
  are not empty.
2021-03-20 21:00:55 +01:00
doc Added support for PAGEBREAK attribute in headings in the AwesomeCV exporter. 2020-03-09 10:18:13 +01:00
.gitlab-ci.yml move dir from relative path 2018-05-02 00:32:56 +02:00
.gitmodules Clean readme a bit more and use my git repo for template 2018-05-01 20:44:16 +02:00
genfiles.el make dir the static directory 2018-05-02 00:23:57 +02:00
installs.sh fix forgotten latexpath and give page url 2018-05-01 23:42:07 +02:00
LICENSE Add LICENSE 2018-04-25 11:44:14 +00:00
org-cv-utils.el Updated org-cv-utils--format-time-window 2019-12-07 20:01:43 +01:00
ox-altacv.el try time window 2019-02-02 19:16:47 +01:00
ox-awesomecv.el Improved employer/location handling in letters 2021-03-20 21:00:55 +01:00
ox-hugocv.el try time window 2019-02-02 19:16:47 +01:00
ox-moderncv.el Revert "[ox-moderncv] Remove DEFAULT-PACKAGES from top matter" 2019-02-02 20:08:27 +01:00
readme.org Add available coverletter options to readme 2021-03-20 21:43:22 +13:00

Org exporter for curriculum vitae

Goal: Export backend for CV

This project aims to generate from an org-mode file with reasonably ordered items a latex file which compiles into a reasonably nice CV. In the same spirit the org-mode file must export to markdown so that it can be uses for web based CV.

Installation

This project is not on MELPA so you have to do a manual installation. First clone this git repository.

git clone https://gitlab.com/Titan-C/org-cv.git

There are various modules to perform the export. As of now ox-moderncv, ox-altacv, ox-hugocv. Choose any or all that you prefer for install. I use use-package to manage the installation for example of ox-moderncv.

(use-package ox-moderncv
    :load-path "path_to_repository/org-cv/"
    :init (require 'ox-moderncv))

Basic Org file

The basic structure of an org file containing your CV is shown next.

Personal contact information

TITLE, AUTHOR and EMAIL are standard org options. But on TITLE you put your foreseen job.

Field Description
TITLE Desired job
AUTHOR Who you are?
EMAIL Your contact email
ADDRESS Mailing address, this can span over multiple lines
HOMEPAGE URL of your website
MOBILE Mobile phone
GITHUB GitHub user
GITLAB GitLab user
LINKEDIN Linkedin username
PHOTO path to photo file
#+TITLE: My dream job
#+AUTHOR: John Doe
#+email: john@doe.lost

#+ADDRESS: My Awesome crib
#+ADDRESS: Fantastic city -- Planet Earth
#+MOBILE: (+9) 87654321
#+HOMEPAGE: example.com
#+GITHUB: Titan-C
#+GITLAB: Titan-C
#+LINKEDIN: oscar-najera
#+PHOTO: smile.png

You can use org-modes hierarchical structure to describe your CV. To make a specific subtree an item describing an experience point (Job you have, degree you pursued, etc.) you use the org properties drawer and with the :CV_ENV: cventry property. You should also include the FROM and TO properties defining the span of the event, as LOCATION and EMPLOYER.

* Employement
** One job
:PROPERTIES:
:CV_ENV: cventry
:FROM:     <2014-09-01>
:TO:     <2017-12-07>
:LOCATION: a city, a country
:EMPLOYER: The employer
:END:

I write about awesome stuff I do.
** Other job
:PROPERTIES:
:CV_ENV: cventry
:FROM:     <2013-09-01>
:TO:     <2014-08-07>
:LOCATION: my city, your country
:EMPLOYER: The other employer
:END:

I write about awesome stuff I do.

* Other stuff I do
- I work a lot
- I sleep a lot
- I eat a lot

Latex Exporter

Using modern-cv

moderncv is a standard \(\LaTeX\) package that you can find in many of your latex distributions. For I maintain for personal purposes a fork of it to better work with my use case at https://github.com/Titan-C/moderncv.git Feel free to use any or even your personal fork for your desired use case.

To configure the export for moderncv you need the addition options in your org file.

# CV theme - options include: 'casual' (default), 'classic', 'oldstyle' and 'banking'
#+CVSTYLE: banking
# CV color - options include: 'blue' (default), 'orange', 'green', 'red', 'purple', 'grey' and 'black'
#+CVCOLOR: green

When exporting you can call the following function to get the latex file.

(org-export-to-file 'moderncv "moderncv.tex")
(org-latex-compile "moderncv.tex")

Using alta-cv

AltaCV is another project to generate a CV, you will need to install it yourself. I maintain a fork too at https://github.com/Titan-C/AltaCV.git because I need extra features and I encourage to use this fork on the sections branch.

The style of this CV is more involved and you need some configuration in your org file to get it to work. First define the margins, the large margin to the right is to allow for a second column.

#+LATEX_HEADER: \geometry{left=1cm,right=9cm,marginparwidth=6.8cm,marginparsep=1.2cm,top=1.25cm,bottom=1.25cm}

Content on the right column has the same structure of a org file, but you need to enclose it in the \marginpar{} command as shown next.

#+latex: \marginpar{
* Main Interests
- Free/Libre and Open Source Software (FLOSS)
- Free food
- Free beer

* Programming
- Python
- C/C++
- EmacsLisp
- Bash
- JavaScript
- PHP

* Languages

- *English*  Fluent
- *German*   Fluent
- *Spanish*  Native
- *French*   Intermediate
#+latex: }

When exporting you can call the following function to get the latex file.

(org-export-to-file 'altacv "altacv.tex")
(org-latex-compile "altacv.tex")

Using AwesomeCV

AwesomeCV is another LaTeX template for producing nice-looking CVs. In addition to the regular document attributes, the following are supported:

Field Description
PHOTOSTYLE Style of photo to use. Comma-separated values can include
circle/rectangle,edge/noedge,left/right.
CVCOLOR Color of highlights.
STACKOVERFLOW Stack overflow, must be specified as ID username
FONTDIR Directory where the fonts can be found, defaults
to fonts/ (as in the standard AwesomeCV)
CVHIGHLIGHTS Whether to colorize highlights. Defaults to true
QUOTE Optional quote to include at the top of the CV
FIRSTNAME First name to be shown in the CV. By default the first
space-separated part of AUTHOR is used.
LASTNAME Last name to be shown in the CV. By default the second
space-separated part of AUTHOR is used.
CVFOOTER_LEFT Text to include in the left footer. None by default
CVFOOTER_MIDDLE Text to include in the middle footer. None by default.
CVFOOTER_RIGHT Text to include in the right footer. None by default.
LATEX_TITLE Text to use as the title section. \makecvheader by default.
(Can specify \makecvheader[R] to justify to the right)

AwesomeCV supports a few additional types of environment types in CV_ENV, including cvemployer, cvskills, cvhonors and cvschool. Some of these support additional property fields:

Field Description
FROM Start date of the entry
TO End date of the entry
DATE Shortcut to specify both FROM and TO as the same date.
Both FROM and TO override DATE.
EMPLOYER Employer or organization, can also be specified
as ORGANIZATION, SCHOOL, EVENT or POSITION (different
names make more sense depending on the type of environment)
LABEL In cvsubentry environments, adds the given text to the left
of the date range, can be used to add additional information
to the entry.
RIGHT_IMG path to an image to include floating to the right of a cventry,
a cvsubentry or cvschool entry. Meant to be used to show a logo.
PAGEBREAK Causes a LaTeX \clearpage statement to be inserted in the
exported output before the heading.

All the supported values of CV_ENV are described below.

cventries

Enclose all the subheaders in a cventries environment. Subheaders can be of type cventry, cvschool, or cvemployer.

cvhonors

Enclose all the subheaders in a cvhonors environment. Subheaders must be of type cvhonor

cventry

Converts to a \cventry command. Supports attributes FROM, TO, DATE, EMPLOYER, LOCATION, RIGHT_IMG.

cvsubentry

Converts to a \cvsubentry command. Supports attributes FROM, TO, DATE, LABEL RIGHT_IMG.

cvemployer

Converts to a \cventry with only the title line. Supports attributes FROM, TO, DATE and LOCATION.

cvschool

Converts to a \cventry. The headline should contain the degree obtained, shown as the main title. Supports attributes LOCATION, SCHOOL, FROM, TO, DATE and RIGHT_IMG.

cvhonor

Converts to a \cvhonor command (must be inside a cvhonors headline). Supports attributes LOCATION, EMPLOYER (in this case EVENT or POSITION might be more semantically accurate, and can also be used), FROM, TO, DATE.

cvskills

Converts to a \cvskills environment. The headline must contain a description list, which gets converted into a sequence of \cvskill commands, with the term as the skill title and the description as its contents.

letterheader

Provides heading information for a cover letter. Supports attributes RECIPIENT. EMPLOYER, LOCATION, LETTER_OPENING, LETTER_CLOSING, LETTER_ATTACHED, DATE, DATEFORMAT.

Field Description
RECIPIENT Addressee E.g. Company Recruitment Team
EMPLOYER Company name, E.g. Google Inc
LOCATION Company address, E.g. 1600 Amphitheatre Parkway\\Mountain View, CA 94043
LETTER_OPENING Letter opening, E.g. Dear Ms./Mr./Dr. LastName
LETTER_CLOSING Letter closing, E.g. Yours Sincerely,
DATE The date used for the letter, uses \→day as default if unspecified.
DATEFORMAT Specify an alternative date format for the letter header.
E.g. %e %M %Y might provide 19 March 2021

cvletter

Converts to a \cvletter environment. This holds the content of a cover letter.

lettersection

Converts to a \lettersection command. These are the headline portions of a cover letter.

Markdown Hugo Exporter

If your target is not a PDF file but a website, this exporter extends the ox-hugo exporter backend. So be sure to install that too.

To export, there is nothing fancy to keep track of, but as an example I exclude some tags during export.

(let ((org-export-exclude-tags '("noexport" "latexonly")))
     (org-export-to-file 'hugocv "hugocv.md"))

You are responsible for styling your website.

Local Variables   ARCHIVE