Contents

1. Purpose

Create a fancy résumé file for research applications only. Three languages are predefined: English, Spanish and Catalan. The user must collect all relevant information in a specific format (see section 5). Then, writeLatexCV converts it into a nice LaTeX format file and pdfLatex is used to convert it to PDF. LaTeX intermediate file is kept for further modifications, if needed.

2. Contents

The contents are described hereafter.

  • LICENSE - MIT license
  • writeLatexCV v1.1.1 - User Guide.pdf - User manual

Directory matlab

  • libLatexCV.m - MATLAB library file
  • texFormat_utf8.m - MATLAB function with UTF-8 encoding (for Unix OS)
  • texFormat_win1252.m - MATLAB function with Windows-1252 encoding (for Windows OS)
  • writeLatexCV.m - MATLAB main program

Directory sample

  • Connor_John_EN.inp - Input sample
  • Connor_John_EN.pdf - Output PDF sample
  • Connor_John_EN.tex - Intermediate LaTeX file
  • readme - Steps to get sample pdf file

3. Prerequisites

Software:

  • MATLAB
  • pdfLatex1

LaTeX packages:

  • array - New column types
  • babel - Dictionary
  • extsizes - Extra font sizes
  • fancyhdr - Modify headers
  • fontenc - Recommended font encoding
  • geometry - Page geometry
  • hhline - Black lines over colored cells
  • hyperref - Add links and bookmarks
  • lastpage - Get total pages
  • lmodern - Latin Modern fonts
  • longtable - Table spans multiple pages
  • marvosym - For €, β and @ symbols
  • multicol - Marge columns
  • multirow - Marge rows
  • textcomp - For ¥ and $ symbols
  • xcolor - Color in tables

writeLatexCV was tested under:

  • openSUSE Leap 42.3 with pdfTeX Version 3.14159265-2.6-1.40.17 (TeX Live 2016/TeX Live for SUSE Linux) and MATLAB R2016b (9.1.0.441655) 64-bit
  • Windows 10 64-bit with pdfTeX Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6500 64-bit) and MATLAB R2016a (9.0.0.341360) 64-bit
  • macOS Catalina 10.15 with pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019) and MATLAB R2019b (9.7.0.1190202) 64-bit

1 Under Windows or macOS pdfLatex comes with MiKTeX, under Unix OS install it from the official repository.

4. Usage

writeLatexCV(input, output, language, currency, font_size, blue_links, us_date, us_paper)

All input arguments are optional:

  • input: input file name1 with résumé data (default is writeLatexCV.inp)
  • output: output PDF file name1, without extension (default is writeLatexCV)
  • language: language option, available options are:

    EN - English2,3 (default)
    ES - Spanish
    CA - Catalan

  • currency: currency option, available options are:

    EUR - euros (€, default)
    USD - dollars ($)
    GBP - pounds (£)
    JPY - yens (¥)

  • font_size: font size in output PDF, available options are 8, 9, 10, 11 (default), 12, 14, 17 and 20
  • blue_links: colored links, available options are:

    false - links are black, just as other text (default)
    true - links are blue, thus standing out from other text

  • us_date: date format in front page, available options are:

    false - European date format, for example 24th of May, 2010 (default)
    true - American date format, for example May 24th, 2010

  • us_paper: paper size, available options are:

    false - A4 paper size is used (default)
    true - letter paper size is used

The order of input arguments is strict, therefore, to change the paper size, us_paper, you must introduce all input arguments. For example, this command sets a user-specified option for the input and output names and the language but other options are set as default.

writeLatexCV('John_CV_ES.inp', 'John_CV_ES', 'ES')

Next command assigns all input arguments as the default values, therefore, it is the same as writeLatexCV().

writeLatexCV('writeLatexCV.inp', 'writeLatexCV', 'EN', 'EUR', 11, false, false, false)

Input arguments can also be introduced following the keyword syntax, that is keyword = value.

writeLatexCV('input = writeLatexCV.inp', 'output = writeLatexCV', 'language = EN', 'currency = EUR', 'font_size = 11', 'blue_links = false', 'us_date = false', 'us_paper = false')

With this syntax, input arguments can be introduced follow any order and are still all optional. For example, this command uses all input arguments by default but the currency and paper size option:

writeLatexCV('currency = USD', 'us_paper = true')

Due to differences in character encoding among OS, it is strongly recommended to run writeLatexCV in the same OS in which the input file was created.

1 Relative or absolute paths are also accepted.

2 When language is EN superscript is automatically used when a number is followed by st, nd, rd or th in the input file.

3 When language is EN amounts of money in the generated résumé are written as $1000, instead of 1000 $.

5. Input specifications

5.1 - Allowed characters

The user must gather all relevant information in a ASCII input file according to the format specified in section 5. The following characters can be used.

  • Lower letters [a-z]
  • Upper letters [A-Z]
  • Numbers [0-9]
  • Spaces
  • Special lower vowels: áéíóú àèìòù äëïöü âêîôû ãõ
  • Special upper vowels: ÁÉÍÓÚ ÀÈÌÒÙ ÄËÏÖÜ ÂÊÎÔÛ ÃÕ
  • Special letters: ñ Ñ ç Ç β
  • Punctuation symbols: ¡!¿?;:,.·"'´ºª~_
  • Math symbols: /|\<>^*-+=()[]{}
  • Other symbols: €$£¥@&#
The character % cannot be used in text. Characters # and + can be used in text but not at the beginning of the line. See section 5.2 for more information on these symbols.

5.2 - Special characters

The following characters have a special meaning and must be used according to this manual.

  • Character % is used anywhere in a line to write comments
  • Character # is used to introduce new cards (section 5.3) or unknown information (section 5.4)
  • Character + is used to introduce a new item inside a card. See section 5.3
  • Character $ is used to introduce a new alias. See section 5.5
  • Character = is used to define an alias. See section 5.5
  • Character ^{} is used for superscript1 in text, for example x^{2} will produce x2
  • Character _{} is used for subscript2 in text, for example x_{i} will produce xi

1 Nested superscripts are not allowed.

2 Nested subscripts are not allowed.

5.3 - Available cards

The symbol # introduces a new card. Table I lists all available cards along a brief description and the information in each card.

Card names in plural can have any number of items in it. For example, several books can be introduced into the BOOKS card. Items into to the same card must be separated with a + character, but NOT between the last item and the next card. Card names in singular only have one item. For example, only one company is allowed in COMPANY card. The information included in each card (or item in card) must follow a specific order (given by the third column of Table I).

All cards, except PERSONAL card, are optional and do not follow any specific order. However, each card, if used, may appear only once. If a card is used, all the information given by the third column of Table I must be filled, see section 5.4) for unknown information. Cards and information in cards can start in any column (i.e. blank spaces before/after can be added).

Table I: available cards, descriptions and specific information

Card Description Information
#ALIASES Alias definitions Any number of aliases can be defined, see
section 5.5
#BACKGROUNDS Academic background
  1. Academic title
  2. University who issues the title
  3. Year of issue
#BOOKS Published books
  1. List of authors separated by commas (do not use and between last items)
  2. Title of book
  3. Publication link
  4. Publisher or editor
  5. Book reference
  6. Contribution (author, coauthor, editor, coordinator, reviewer...)
  7. Number of pages
  8. Publishing year
#CODES Developed codes
  1. Code short name (acronym)
  2. Code lone name (expand acronym)
  3. Code brief description
  4. Code link
#COLLABORATIONS Collaborations with other groups or universities
  1. Starting date
  2. Ending date
  3. Hosting group
  4. Department the group belongs to
  5. University the department belongs to
#COMPANY Current company
  1. Company name
  2. Company address
  3. Host department
  4. Job in department
  5. Telephone
  6. Email
#COURSES Teaching courses at university
  1. Subject name
  2. Department
  3. University
  4. Subject plan (bachelor's, master, PhD...)
  5. Subject type (core, compulsory, optional, free choice...)
  6. Grade
  7. Teaching hours
#DEVELOPER_APPS Software for developers
  1. Software name
#GENERAL_APPS General software
  1. Software name
#GIVEN_COURSES Short courses given (see COURSES card for full courses)
  1. Course name
  2. Entity where the course is given (school, university, institute...)
  3. Course duration in hours
  4. Year the course is given
#GIVEN_SEMINARS Seminars given
  1. Seminar name
  2. Entity where the seminar is given (school, university, institute...)
  3. Seminar duration in hours
  4. Year the seminar is given
#GIVEN_WORKSHOPS Workshops given
  1. Workshop name
  2. Entity where the workshops is given (school, university, institute...)
  3. Workshop duration in hours
  4. Year the workshops is given
#INTERNATIONAL_
CONFERENCES
Participation in international conferences
  1. List of authors separated by commas (do not use and between last items)
  2. Contribution title
  3. Conference name
  4. Conference web link
  5. Conference place
  6. Conference reference
  7. Contribution (presentation, poster, organizer, committee...)
  8. Contribution pages
  9. Date of celebration
#INTERNSHIPS Internships in other centers/universities
  1. Starting date
  2. Ending date
  3. School, university, institute...
  4. Location
  5. Description of internship
  6. Advisor
#JOBS Professional experience
  1. Starting date
  2. Ending date
  3. Company name
  4. Job description
#LANGUAGE_
COURSES
Language courses received
  1. Course name
  2. Entity who gives the course (school, university, institute...)
  3. Place where the course if given
  4. Year the course is given
#LANGUAGE_
TITLES
Language titles
  1. Language title
  2. Entity who issues the title (school, university, institute...)
  3. Year of issue
#LANGUAGES Known languages
  1. Language
  2. Listening skills (A1, A2, B1, B2, C1 or C2)
  3. Speaking skills (A1, A2, B1, B2, C1 or C2)
  4. Writing skills (A1, A2, B1, B2, C1 or C2)
#MATERIALS Published academic materials
  1. Name or title
  2. Publisher or editor
  3. Material reference
  4. Year of publication
#NATIONAL_
CONFERENCES
Participation in national conferences
  1. List of authors separated by commas (do not use and between last items)
  2. Contribution title
  3. Conference name
  4. Conference web link
  5. Conference place
  6. Conference reference
  7. Contribution (presentation, poster, organizer, committee...)
  8. Contribution pages
  9. Date of celebration
#PAPERS Published research papers
  1. List of authors separated by commas (do not use and between last items)
  2. Paper title
  3. Publication link
  4. Publisher name (or editorial)
  5. Journal name
  6. Paper reference
  7. Contribution (main author, coauthor, editor, reviewer...)
  8. Journal volume
  9. Journal pages
  10. Publishing year
#PATENTS Registered patents
  1. List of authors separated by commas (do not use and between last items)
  2. Patent title
  3. Patent description
  4. Patent number
  5. Concession date
  6. Patent type (national, European, cooperation treatment...)
#PERSONAL Personal data
(mandatory card)
  1. Last name of person the résumé is being written
  2. Name
  3. ID number
  4. Birth date
  5. Contact telephone
  6. Personal address
  7. City
  8. Postal code
#PROJECTS Participation in research projects
  1. Project title
  2. Entity giving the project
  3. Main researcher
  4. Starting date
  5. Ending date
  6. Amount of money (currency symbol is introduced via input argument only)
  7. Number of researchers
#RECEIVED_
COURSES
Short courses received
  1. Course name
  2. Entity where the course is given (school, university, institute...)
  3. Course duration in hours
  4. Year the course is given
#RECEIVED_
SEMINARS
Seminars received
  1. Seminar name
  2. Entity where the seminar is given (school, university, institute...)
  3. Seminar duration in hours
  4. Year the seminar is given
#RECEIVED_
WORKSHOPS
Workshops received
  1. Workshop name
  2. Entity where the workshops is given (school, university, institute...)
  3. Workshop duration in hours
  4. Year the workshops is given
#SCHOLARSHIPS Scholarships awarded
  1. Name of scholarship
  2. Description of scholarship
  3. Amount of money (currency symbol is introduced via input argument only)
  4. Duration of scholarship in months
  5. Location
  6. Year
#SPECIFIC_APPS Specific software
  1. Software name
  2. Software description

5.4 - Unknown information

Information in cards follow a specific order (given by the third column of Table I), and MATLAB expects one line for each information item. However, if a piece of information is unknown, fill the line with ###. For example, a conference without reference number (ISBN/ISSN...) will be input as:

	#INTERNATIONAL_CONFERENCES

S. Connor, J. Connor                      %list of authors
Methodology for programming a Terminator  %contribution title
International Geek Conference             %conference
http://www.geekconference.com             %link
San Francisco, USA                        %location
###                                       %reference number (unknown)
Oral presentation                         %type of contribution
12                                        %number of pages
August 29, 1997                           %date

5.5 - Aliases

Aliases can be defined in ALIASES card and they will be substituted elsewhere in the input file. It could be as many aliases as desired in the ALIASES card but only one alias per line is allowed. Besides, aliases are case sensitive.

Aliases start with the $ character followed by the alias name, then a = character and, finally, the alias definition. Only alphanumeric characters and underscore are allowed in the alias name. The characters $ and = are not allowed in the alias definition. For example, if the following card is used:

    #ALIASES

$me  = S. Connor
$son = J. Connor
$IGC = International Geek Conference

Then, the card in previous subsection could be rewritten as:

    #INTERNATIONAL_CONFERENCES

$me, $son                                 %list of authors
Methodology for programming a Terminator  %contribution title
$IGC                                      %conference
http://www.geekconference.com             %link
San Francisco, USA                        %location
###                                       %reference number (unknown)
Oral presentation                         %type of contribution
12                                        %number of pages
August 29, 1997                           %date

5.6 - Résumé layout

The generated résumé follows a specific layout, given in Table II. The second column shows the card where the information for each section/subsection is obtained from.

Table II: layout followed in résumé

Section Subsection Card
General information Personal data
Current company
Academic background
PERSONAL
COMPANY
BACKGROUNDS
Research Projects
Research publications

Papers
Books
International conferences
National conferences

Patents
Collaborations
Internships
Scholarships
Developed codes
PROJECTS

PAPERS
BOOKS
INTERNATIONAL_CONFERENCES
NATIONAL_CONFERENCES

PATENTS
COLLABORATIONS
INTERNSHIPS
SCHOLARSHIPS
CODES
Teaching University teaching
Given courses
Given seminars
Given workshops
Academic materials
COURSES
GIVEN_COURSES
GIVEN_SEMINARS
GIVEN_WORKSHOPS
MATERIALS
Employment experience JOBS
Other achievements Languages

Official titles

Courses and seminars

Received courses
Received seminars
Received workshops
Language courses

Computer knowledge

General software
Developer software
General software

LANGUAGES

LANGUAGE_TITLES


RECEIVED_COURSES
RECEIVED_SEMINARS
RECEIVED_WORKSHOPS
LANGUAGE_COURSES


GENERAL_APPS
DEVELOPER_APPS
SPECIFIC_APPS

6. To-do list

There is no plan to make further versions of writeLatexCV, but hereafter some ideas are presented.

  • Manage longtable break1
  • Include thesis supervised under the teaching title
  • Include teaching innovation projects under the teaching title
  • Include artistic works under the research title
  • Sort items in cards according to their date or year
  • Load publications from a bibtex file

1 Currently, page breaks are set before all sections and pdfLatex decides the page break inside sections. However, feel free to add or remove \newpage command into/from the tex file for a better table format.

7. Changelog

Version: v1.1.1 - 09/12/19

  • marvosym package included for Windows/macOS
  • Vertical alignment bug in cells Windows/macOS fixed
  • Minor bugs fixed

Version: v1.1.0 - 02/12/19

  • Web page created: http://writelatexcv.x10host.com
  • User guide created in html and PDF
  • Input argument names modified to be more readable
  • Input argument date_format is redefined
  • New input arguments font_size, blue_links, us_paper
  • Some card names are changed
  • Two new cards GIVEN_WORKSHOPS and RECEIVED_WORKSHOPS
  • If English is chosen, the currency symbol is always in front of amounts despite the currency
  • Add special characters ^{} and _{} for subscript and superscript in text
  • Add bookmarks in produced pdf
  • Add link to email in PERSONAL card
  • Minor bugs fixed and code refactor for readability

Version: v1.0.3 - 26/05/18

  • CODES card added for developed codes

Version: v1.0.2 - 14/02/18

  • Bug fixed: syntax error in last item of last card is handled properly

Version: v1.0.1 - 13/02/18

  • Links added to publications
  • Minor bugs fixed

Version: v1.0.0 - 05/02/18

  • Create résumé in pdf format (via Latex)
  • Create résumé in three languages: English, Spanish and Catalan
  • Five main sections: general, research, teaching, experience and others
  • Each section with different subsections
  • Two distributions tested: Unix and Windows
  • Minor bugs identified

8. Farewell

Please, contact me for any suggestion or bug at mesado31@gmail.com.
Thank you for using writeLatexCV!