Coder Social home page Coder Social logo

org-cv's Introduction

Org exporter for curriculum vitae

Goal: Export backend for CV

This project exports an org-mode file with reasonably structured items into a latex file, which compiles into a nice CV. In the same spirit the org-mode file may export to markdown so that it can be used for a web based CV.

This project dog feeds itself and produces the examples on this documentation page directly.

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.

FieldDescription
TITLEDesired job
AUTHORWho are you?
EMAILYour contact email
ADDRESSMailing address, this can span over multiple lines
HOMEPAGEURL of your website
MOBILEMobile phone
GITHUBGitHub user
GITLABGitLab user
LINKEDINLinkedin username
PHOTOpath to photo file
#+TITLE: My dream job
#+AUTHOR: John Doe
#+email: [email protected]

#+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. I maintain a fork of it, to 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 and cover letters. This style also supports some additional options. For example:

# CV color - options include: 'awesome-red (default), 'awesome-emerald,
# 'awesome-skyblue', 'awesome-pink', 'awesome-orange', 'awesome-nephritis',
# 'awesome-concrete' and 'awesome-darknight', plus any standard color names.
#+CVCOLOR: awesome-red
# Specify the position and style of the photo
#+PHOTOSTYLE: right,noedge

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

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

Note that AwesomeCV uses the fontspec package, so you need to set org-latex-compiler to lualatex or xelatex for it to work.

In addition to the regular document attributes, the following are supported:

FieldDescription
PHOTOSTYLEStyle of photo to use. Comma-separated values can include
circle/rectangle,edge/noedge,left/right.
CVCOLORColor of highlights.
STACKOVERFLOWStack overflow info, must be specified as ”ID username
FONTDIRDirectory where the fonts can be found, defaults
to fonts/ (as in the standard AwesomeCV)
CVHIGHLIGHTSWhether to colorize highlights. Defaults to true
QUOTEOptional quote to include at the top of the CV
FIRSTNAMEFirst name to be shown in the CV. By default the first
space-separated part of AUTHOR is used.
LASTNAMELast name to be shown in the CV. By default the second
space-separated part of AUTHOR is used.
CVFOOTER_LEFTText to include in the left footer. None by default
CVFOOTER_MIDDLEText to include in the middle footer. None by default.
CVFOOTER_RIGHTText to include in the right footer. None by default.
LATEX_TITLEText to use as the title section. \makecvheader by default.
(Can specify \makecvheader[R] to justify to the right)

CV environments

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

FieldDescription
FROMStart date of the entry
TOEnd date of the entry
DATEShortcut to specify both FROM and TO as the same date.
Both FROM and TO override DATE.
EMPLOYEREmployer or organization, can also be specified
as ORGANIZATION, SCHOOL, EVENT or POSITION (different
names make more sense depending on the type of environment)
LABELIn cvsubentry environments, adds the given text to the left
of the date range, can be used to add additional information
to the entry.
RIGHT_IMGpath 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.
PAGEBREAKCauses a LaTeX \clearpage statement to be inserted in the
exported output before the heading.

All the supported values of CV_ENV for CVs 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.

Cover letter environments

AwesomeCV also supports generating cover letters. For this, CV_ENV can have a few additional values, shown below.

letterheader

This environment provides heading/signature information for a cover letter. Supports attributes RECIPIENT. EMPLOYER, LOCATION, LETTER_OPENING, LETTER_CLOSING, LETTER_ATTACHED, DATE, DATEFORMAT.

Note that the text within the heading is not exported! You can use this, for example, to keep notes about your application or the employer. For example:

* Recipient
:PROPERTIES:
:CV_ENV:   letterheader
:RECIPIENT: International Recruiting team
:EMPLOYER: Employer Co.
:LOCATION: Someplace, the world
:LETTER_OPENING: Dear International Recruiting team
:LETTER_CLOSING: Kind regards,
:LETTER_ATTACHED: Curriculum Vitae
:END:

Title and content are not exported.
Add any notes about the recipient here
They will *not* be exported.
FieldDescription
RECIPIENTAddressee E.g. Company Recruitment Team
EMPLOYERCompany name
LOCATIONCompany address
LETTER_OPENINGLetter opening, E.g. Dear Ms./Mr./Dr. LastName
LETTER_CLOSINGLetter closing, E.g. Yours Sincerely,
DATEThe date used for the letter, uses \today as default if unspecified
DATEFORMATSpecify an alternative date format for the letter header
E.g. %e %M %Y might provide 19 March 2021
LETTER_ATTACHEDAttachments to the letter, will be listed at the bottom. E.g. “Curriculum Vitae”

cvletter

Converts to a \cvletter environment. This holds the content of a cover letter. The body can be subdivided using lettersection headings. The heading title is converted to a title line at the top of the letter.

* Application for the position of /Awesome Job/ (job reference #123456)
:PROPERTIES:
:CV_ENV:   cvletter
:END:

** About Me
   :PROPERTIES:
   :CV_ENV:   lettersection
   :END:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ullamcorper neque sit amet lectus facilisis sed luctus nisl iaculis. Vivamus at neque arcu, sed tempor quam. Curabitur pharetra tincidunt tincidunt. Morbi volutpat feugiat mauris, quis tempor neque vehicula volutpat. Duis tristique justo vel massa fermentum accumsan. Mauris ante elit, feugiat vestibulum tempor eget, eleifend ac ipsum. Donec scelerisque lobortis ipsum eu vestibulum. Pellentesque vel massa at felis accumsan rhoncus.

** Why Employer Co.?
   :PROPERTIES:
   :CV_ENV:   lettersection
   :END:
Suspendisse commodo, massa eu congue tincidunt, elit mauris pellentesque orci, cursus tempor odio nisl euismod augue. Aliquam adipiscing nibh ut odio sodales et pulvinar tortor laoreet. Mauris a accumsan ligula. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse vulputate sem vehicula ipsum varius nec tempus dui dapibus. Phasellus et est urna, ut auctor erat. Sed tincidunt odio id odio aliquam mattis. Donec sapien nulla, feugiat eget adipiscing sit amet, lacinia ut dolor. Phasellus tincidunt, leo a fringilla consectetur, felis diam aliquam urna, vitae aliquet lectus orci nec velit. Vivamus dapibus varius blandit.

** Why me?
   :PROPERTIES:
   :CV_ENV:   lettersection
   :END:
 Duis sit amet magna ante, at sodales diam. Aenean consectetur porta risus et sagittis. Ut interdum, enim varius pellentesque tincidunt, magna libero sodales tortor, ut fermentum nunc metus a ante. Vivamus odio leo, tincidunt eu luctus ut, sollicitudin sit amet metus. Nunc sed orci lectus. Ut sodales magna sed velit volutpat sit amet pulvinar diam venenatis.

cvletter_notitle

Same as cvletter, but does not include a letter title at the top.

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.

License

org-cv Copyright (C) 2018-2020 Óscar Nájera

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Tips

If you have found this project useful. Please consider giving back. You can kindly tip me for this project

Stellar
GDPTOFND6HSE5AVHPRXOCJFOA6NPFB65JAEWKTN23EBUGBB2AU4PLIBD
liberapay
Titan-C

Local Variables

org-cv's People

Contributors

titan-c avatar zzamboni avatar rjhwelsh avatar lafrenierejm avatar maverobot avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.