For the most up-to-date version of these instructions, go to https://bitbucket.org/mmabey/resume/overview.
This template is based on the resume.cls
class first created by Trey Hunner, then
modified and posted on LaTeX Templates. Key
modifications to the original template include:
- Automatically generated PDF index of the sections and subsections.
- Reordering of the fields for experience entries so that the position title and date are on the first line and the organization and location are on the second line. (See also issues #12 and #13.)
- Ability to specify a "logo" which appears in the upper right-hand corner of the document.
- Separation, renaming of sections to allow more flexibility in the document layout.
- Introduction of footers that show the date the document was revised, page number (for documents >2 pages long), and a name (such as a last name).
- Improvement of margins and spacing to improve readability and minimize content breaking between pages when it shouldn't.
- A personalized bibliography for researchers with published work they want to showcase, and a way to divide the publications into groups.
- Flags for specifying that the document is a CV (which usually has way more content than a resume), allowing for dynamic content inclusion. With this, a resume and a CV can be produced from the same source files, reducing the amount of work necessary to keep the two current with each other.
- So much more!
NOTE: You must have version >=3.4 of the biblatex
package installed. There were significant deprecations with
that release that aren't backwards compatible.
Table of Contents:
[TOC]
I recommend downloading just the template
branch (zip,
gz, or
bz2) and start your own repository. If you want to still get
template updates using git, then I recommend cloning only the template
branch by using git's --single-branch
option:
git clone git@bitbucket.org:mmabey/resume.git --single-branch --branch template
Or, for HTTP cloning:
git clone https://mmabey@bitbucket.org/mmabey/resume.git --single-branch --branch template
To use the template, the only files you really need are:
- resume.cls: Provides the
resume
document type so you can do\documentclass{resume}
. - biblatex.cfg: Configuration file for BibLaTeX, which defines how publications are listed. BibLaTeX was the best option I could find for creating multiple bibliographies with a customized prefix to the reference numbers. Note: BibLaTeX is very different from BibTeX, which is the default on most LaTeX installations, so if you haven't used it before it might do you some good to read up on the documentation.
- Makefile: While not strictly required, the functions it has may be useful, particularly the
resume
,cv
, andclean
targets. The first two will compile files matchingResume_*.tex
andCV_*.tex
, respectively. Theclean
target should remove all the files that LaTeX creates when compiling your document. To run the targets on the command line, runmake cv
,make resume
, ormake clean
. You'll need to havemake
installed.
Beyond that, you're welcome to use or not use any of the files as a guide for bringing everything together. I hope it goes without saying that I don't give my permission to copy the content to your own resume/CV.
I've found that it's helpful to have all of the content of my resume and CV in distinct files so I can reference (with
\input{}
) each of them separately as needed. This allows me to update the content once and have it reflected in both
documents (resume and CV). Hence, I have both a CV_*.tex
file and a Resume_*.tex
file. (I discuss how to switch
content on and off for the two types of documents below under Flags.)
Taking this a step further, I also created different layouts for when I need a CV with a different emphasis (order of sections).
Here are the things you must do if creating a document from scratch.
Just like any other LaTeX document, you must first set up the class of the document by pointing to the .cls
file you're using, which is resume.cls
in this instance:
#!latex
\documentclass{resume}
Here's where you want to do any other package importing using the \usepackage{}
command. If you don't use the font
option, this is also where you'll want to set up the font you want (see the LaTeX Font
Catalogue for options).
The next thing you want to do is set up the document heading to display your name, contact info, etc. Here's how I set this up:
#!latex
\name{Michael K. Mabey}
\footername*{Mabey}
\address{(480)\,788--3411 \\ \href{mailto:mmabey@asu.edu}{mmabey@asu.edu} \\ \href{http://mikemabey.com}{mikemabey.com}}
The above renders as:
For detailed information about each of these commands, see the Document Heading Commands and Changing the Footers sections.
If you plan to add a set of publications to your document, there's one final thing you should do in the preamble: add
the .bib
file as a bibliography resource, like this:
#!latex
\addbibresource{pubs_mike_mabey.bib}
This is one way that BibLaTeX differs from BibTeX, which is that you are required to declare the bibliography resource
files in the preamble (before the \begin{document}
command). I discuss some other differences under Creating a
Bibliography.
At this point, you can now add the \begin{document}
command and start declaring different environments as explained
below.
When you call the resume
document class, you can specify a number of options as described below. All of these options
can be combined, except where they would obviously conflict (because they change the same element(s) of the document.)
Giving the margins
option sets the margins on all four sides of the documents. If you show content in the
footer, be careful that you don't make the margins so small that the content
pushes the footer off the page. Below is an example of how to use this class option:
#!latex
\documentclass[margins=0.75in]{resume}
The default for all margins is 0.75in
.
The vmargins
and hmargins
options set the vertical and horizontal margins, respectively. If you show content in the
footer, be careful that you don't make the margins so small that the content
pushes the footer off the page. Below are examples of how to use these class options:
#!latex
\documentclass[vmargins=0.5in]{resume}
\documentclass[hmargins=1in]{resume}
These set a vertical margin of 0.5in
and a horizontal margin of 1in
. The default for all margins is 0.75in
, set by
the margins
option.
Use the font
option to specify which font you want the document to have. The following fonts are currently supported:
- Bera Sans - Use:
[font=berasans]
- Cantarell - Use:
[font=cantarell]
- Computer Modern - Use:
[font=computermodern]
--- this is the default font if no other valid option is provided - Lato - Use:
[font=lato]
- Quattrocento Sans - Use:
[font=quattrocento]
- Source Sans Pro - Use:
[font=sourcesanspro]
These are the fonts from the LaTeX Font Catalogue that I found professional-looking and were in the Sans Serif family. The latter criterion was important to me because I wanted my resume/CV to be more tailored for screen viewing.
Other supported (but not necessarily recommended) fonts:
- Alegreya Sans - Use:
[font=alegreya]
- Alegreya Sans Black - Use:
[font=alegreyablack]
- Biolinum - Use:
[font=biolinum]
- Cabin - Use:
[font=cabin]
- Cabin Condensed - Use:
[font=cabinc]
- Comfortaa - Use:
[font=comfortaa]
- Computer Modern Bright - Use:
[font=cmbright]
- DejaVu Sans - Use:
[font=dejavusans]
- DejaVu Sans Condensed - Use:
[font=dejavuc]
- Droid Sans - Use:
[font=droidsans]
- Fira Sans - Use:
[font=firasans]
- GFS Neohellenic - Use:
[font=gfsneohellenic]
- Gillius - Use:
[font=gillius]
- Iwona - Use:
[font=iwona]
- Iwona Condensed - Use:
[font=iwonac]
- Iwona Light - Use:
[font=iwonal]
- Iwona Light Condensed - Use:
[font=iwonalc]
- Kurier - Use:
[font=kurier]
- Kurier Condensed - Use:
[font=kurierc]
- Kurier Light - Use:
[font=kurierl]
- Kurier Light Condensed - Use:
[font=kurierlc]
- Latin Modern Sans - Use:
[font=lmodern]
- Latin Modern Sans Extended - Use:
[font=lmodernex]
- Libris ADF - Use:
[font=libris]
- LX Fonts - Use:
[font=lxfonts]
- Merriweather Sans - Use:
[font=merriweather]
- Merriweather Sans Light - Use:
[font=merriweatherl]
- Mintspirit - Use:
[font=mintspirit]
- Open Sans - Use:
[font=opensans]
- Paratype Sans - Use:
[font=paratype]
- Paratype Sans Caption - Use:
[font=paratypecap]
- Paratype Sans Narrow - Use:
[font=paratypen]
- Raleway - Use:
[font=raleway]
- Roboto - Use:
[font=roboto]
- Roboto Condensed - Use:
[font=robotoc]
- Roboto Light - Use:
[font=robotol]
- Roboto Light Condensed - Use:
[font=robotolc]
- Roboto Thin - Use:
[font=robotot]
- TeX Gyre Adventor - Use:
[font=tgadventor]
- TeX Gyre Heros - Use:
[font=tgheros]
- Universal - Use:
[font=universal]
- URW Gothic - Use:
[font=urwgothic]
- URW Nimbus Sans - Use:
[font=urwnimbus]
- Venturis ADF Sans - Use:
[font=venturis]
If you want to use a font NOT listed above, use the option [font=none]
, and not even the default font will load,
allowing you to set up your own font from the catalogue.
Fonts that have some kind of conflict or issue:
- Arev -> conflicts with the STIX package
- Epigrafica -> conflicts with the STIX package
- GNU Freefont Sans -> incompatible with pdflatex, must use either the XeTeX or LuaTeX typesetting engine
- KP Sans-Serif -> error compiling:
No room for a new \mathgroup
- Libertinus Sans -> error compiling:
No room for a new \mathgroup
- Nimbus 15 Sans -> error compiling:
No room for a new \mathgroup
- Noto Sans -> error compiling:
No room for a new \mathgroup
- Tapir -> error compiling:
No room for a new \mathgroup
The cvmode
option can be set with a value of either true
or false
(case sensitive). Actually, anything other than
false
will evaluate to true
, including just [cvmode]
. This may be a more convenient way of switching between
resume and CV modes. Below is an example of how to use this class option:
#!latex
\documentclass[cvmode=FALSE]{resume}
The default for cvmode
is true
.
The linkicon
option can be set with a value of either true
or false
(case sensitive). Actually, anything other
than false
will evaluate to true
, including just [linkicon]
. Setting it to true
adds a small icon next to any
links in the document created with the \href{}{}
command (from the hyperref
package). This just gives the reader a
visual cue that the text is click-able, when they otherwise might not know it was a link.
Here's an example of a URL with the icon:
... and another without the icon:
The value passed to the pagethreshold
option determines when page numbers appear in the document footer. The default
value is 2, which means that there must be more than 2 pages in the document to have numbered pages. Hopefully it also
goes without saying that the value must be an integer. If not, the default value will be used.
As an alternate to the \icon
macro (see the section on that command), you can specify the
icon file and its size as options to the document class. Here's an example of how you might use them:
#!latex
\documentclass[icon=figs/icon.png, iconsize=0.5in]{resume}
Attempting to compile with only one of these options and not both will result in an error. Also, the value for
iconsize
must be a dimension, not just a number.
If you want to explicitly set whether the "Revised" date appears in the footer (see the section on
footers for more information), you can call this class option, setting it to
true
or false
. If no true
/false
parameter is given, it will default to true
, showing the date.
If you want to set your last name for matching entries in bibliographies using the class options instead of the other
command (see the section on the \MyLastName
command for more information), use the
lastname
option, setting it to your last name.
Note: If you just call this option without a value, it will have no effect.
If you want to set the name that appears in the footer by using the class options instead of the other command (see the
section on Changing the Footers for more information), use the footername
option, setting it to the value you want.
Note: If you just call this option without a value, it will have no effect.
Environments are the sections of LaTeX that use the \begin{}
and \end{}
commands. Most of the environments provided
begin with "r" as a reminder that they're part of this resume class.
The rSection
environment is meant to signify a major section in the document, such as "Education" or "Experience". The
title of the section is always converted to all caps, bolded, and followed by a horizontal rule.
#!latex
\begin{rSection}{Professional Experience}
\end{rSection}
The above renders as:
At the technical level, the rSection
environment creates a rSectionHeading
, and then begins an environment that
simply adds a 1.5em
margin on the left side for aesthetics.
The rSection
environment also allows you to give titleOnly
as a parameter, which will turn on the titleOnly
global
flag. This is a shortcut that allows you to write something like this:
#!latex
\begin{rSection}[titleOnly]{Section Heading}
% Section content here...
\end{rSection}
instead of this:
#!latex
\begin{rSection}{Section Heading}
\setboolean{titleOnly}{true}
% Section content here...
\setboolean{titleOnly}{false}
\end{rSection}
See the section on the rExperience
environment for more examples using this flag.
The rSectionHeading
environment is what formats the header for the rSection
environment. This comes in handy when
you want a new section, but don't want the extra formatting and margins created by the rSection
environment. It
renders very similarly to the example given in the section above on rSection
.
The rBulletList
environment is the principal way to list items in the document. It handles a number of spacing,
layout, and style considerations to simplify and unify itemized lists. There are three ways to use a rBulletList
:
- Basic usage
- Multi-column
- Nested
The most basic use of a rBulletList
environment is something like this:
#!latex
\begin{rBulletList}
\item CSE 465 Information Assurance with Dr.\ Gail-Joon Ahn: Fall 2010, Fall 2015.
\item CSE 469 Computer and Network Forensics with Dr.\ Gail-Joon Ahn: Spring 2015.
\item FSE 100 Introduction to Engineering with Dr.\ Ryan Meuth: Spring 2014.
\item CSE 423/424 Capstone I and CSE 485/486 Capstone II with Dr.\ Debra Calliss: Spring 2014.
\item CSE 467 Data \& Information Security with Dr.\ Gail-Joon Ahn: Spring 2011.
\end{rBulletList}
Which renders as:
Many times it is necessary to have a multi-column list. To do this, add a parameter specifying how many columns you
need. To keep the columns even, you may need to add one or more empty items at the end with \item[]
.
#!latex
\begin{rBulletList}[2]
\item Computer and Network Forensics
\item Advanced Topics in Digital Forensics
\item Information Assurance
\item Security Toolkit Programming with Python
\item Cryptography
\item Software Security
%\item[] % Uncomment as necessary to make the items even out
\end{rBulletList}
The above renders as:
If you need to have a list nested within another list, rBulletList
will alternate the bullet symbol between a small
dot (on odd-level lists, e.g. first level, third level, etc.) and a small white circle (on even-level lists). For
example:
#!latex
\begin{rBulletList}
\item Student Program Committee Member:
\begin{rBulletList}
\item IEEE Security \& Privacy \hfill \emph{2016}
\end{rBulletList}
\item Conference Proceedings Subreviewer:
\begin{rBulletList}
\item ACM CODASPY \hfill \emph{2013, 2014, 2015, 2016}
\item SACMAT \hfill \emph{2014}
\item ASIACCS \hfill \emph{2014}
\end{rBulletList}
\item Student Volunteer:
\begin{rBulletList}
\item ACM CCS \hfill \emph{2014}
\end{rBulletList}
\end{rBulletList}
Which renders as:
For those times when the only content you need is a bulleted list in a section, the rBulletSection
is the best option.
Like the rBulletList
environment, it allows for multiple columns but defaults to using just one column. As an example
that uses multiple columns:
#!latex
\begin{rBulletSection}[2]{Teaching Interests}
\item Computer and Network Forensics
\item Advanced Topics in Digital Forensics
\item Information Assurance
\item Security Toolkit Programming with Python
\item Cryptography
\item Software Security
\end{rBulletSection}
The above renders as:
At the technical level, the rBulletSection
environment creates a rSection
environment and then a rBulletList
inside that, but with the added benefit of handling the vertical space between the horizontal rule (from the rSection
header) and the first bullet. This space varies depending on the number of columns specified, but it is unified by the
rBulletSection
environment code.
The rBulletSubsection
environment is useful when you need to sub-divide the contents of a rSection
environment with
formatting different from a rExperienceHeader
or rExperienceBullets
environment. The subsection title is bolded, but
not capitalized, and no horizontal rule is inserted. For example:
#!latex
\begin{rSection}{Service}
\begin{rBulletSubsection}{Department}
\item Team Leader: ASU team in the UCSB International CTF \hfill \emph{2009, 2010, 2014, 2015}
\item Panelist: PhD Open House Student Panel \hfill \emph{Feb 2014, Feb 2015}
\end{rBulletSubsection}
\end{rSection}
The above renders as:
The rExperience
environment displays the four key pieces of information related to job experience:
- The job title
- The organization the job was with
- The month and year the job started and ended
- The location of the organization
You can specify experience information in two different ways. The first way is to pass all four fields in as parameters
as shown in the examples a little lower down. The second way is to set the fields before beginning the rExperience
environment so you don't have to pass them as arguments (see #14). Here's an example of the second way:
#!latex
\expPosTitle{Head Boss of Everyone}
\expPosPeriod{Jan 1999 -- Dec 1999} % Start and end dates
\expOrgName{Santa's Workshop}
\expOrgLoc{North Pole, AK}
\begin{rExperience}
\item Experience description goes here
\end{rExperience}
When LaTeX prints the environment, it will pull from the variables set by the \expPos...
and \expOrg...
commands to
fill in the necessary information. This is simply provided as a convenience (and to enable forward-compatibility with
the fix for issue #13). You can still give the four parameters directly to the command in the order you want them to
appear (see issue #12). In other words, the first field you pass to the \begin{rExperience}
command will go in the
top-left position, the next will go in the top-right position, and so on.
You can also add more information to the experience header by calling the \expExtra{}
command with the content that
should appear after the four standard headers. For example:
#!latex
\expPosTitle{Research Assistant}
\expPosPeriod{Nov 2009 -- Present}
\expOrgName{SEFCOM}
\expOrgLoc{Tempe, AZ}
\expExtra{\textit{Lab Directors}: Gail-Joon Ahn, Adam Doup\'{e}\\
\textit{Sponsors}: Department of Energy, National Science Foundation}
\begin{rExperienceHeader}
\end{rExperienceHeader}
The above renders as:
You can customize the order that the four fields appear, to a limited degree (issue #12). To do this, add a line like the following to the document's preamble:
#!latex
\setExpOrder{tpnl}
The letters passed to the command refer to the four fields displayed by the experience header. The available options for
the \setExpOrder{}
command are:
tpnl
: Job title, period of the experience, organization's name, organization's location (Default)tlnp
: Job title, location, organization's name, period of the experiencenltp
: Organization's name, location, job title, period of the experiencenptl
: Organization's name, period of the experience, job title, location. This is the order that was used in Trey Hunner's original template
You can also customize the style used on each field (e.g. bold, italic, normal) according to the field's position (top-left, bottom-right, etc.). The default styles are:
- Top-Left: Bold, using the
\bf
command - Top-Right: Italic, using the
\em
command - Bottom-Left: Plain, using the
\textnormal
command - Bottom-Right: Plain, using the
\textnormal
command
To change these, call the following commands, passing the format command as a parameter:
\setExpStyleTL{}
: Changes the top-left field's style\setExpStyleTR{}
: Changes the top-right field's style\setExpStyleBL{}
: Changes the bottom-left field's style\setExpStyleBR{}
: Changes the bottom-right field's style
The defaults are set with calls equivalent to the following:
#!latex
\setExpStyleTL{\bf}
\setExpStyleTR{\em}
\setExpStyleBL{\textnormal}
\setExpStyleBR{\textnormal}
If you're interested in more technical details, the parameter you pass when setting a new style must be a command or
macro that requires no arguments (rather than an environment) because the style is ultimately stored by using TeX's
\let
command, which essentially makes a copy of a command at the point where \let
is called. For more information on
\let
, I recommend this post on
StackExchange.
The rExperience
environment intelligently switches between showing the rExperienceHeader
and rExperienceBullets
environments based on the status of the titleOnly
flag. If the flag is true, a rExperienceHeader
is shown with no
body text. If it is false, a rExperienceBullets
environment is shown along with all the text inside the
\begin{rExperience}
and \end{rExperience}
commands.
The purpose of this environment is to allow for an "experience summary" section that simply lists the various positions with their associated organizations, locations, and date ranges, but without the explanation of what the job entailed. The benefit of using this environment is that you can put the details about a single job experience in one place, keeping dates and other information consistent.
Note: The default value of the titleOnly
flag is false.
As an example, here is a rExperience
environment that sets the titleOnly
flag to true:
#!latex
\begin{rSection}[titleOnly]{Experience Summary}
\begin{rExperience}{Teaching Assistant}{Aug 2010 -- Dec 2015}{Arizona State University}{Tempe, AZ}
\item More explanation of experience here
\end{rExperience}
\begin{rExperience}{SAT/ACT Instructor}{Sep 2015 -- Oct 2015}{Minerva Learning, LLC}{Chandler, AZ}
\item Tutoring experience explained here
\end{rExperience}
\end{rSection}
The above renders as:
But when the titleOnly
flag is removed (which defaults to false), like so:
#!latex
\begin{rSection}{Experience Detail} % <--- No titleOnly flag specified
\begin{rExperience}{Teaching Assistant}{Aug 2010 -- Dec 2015}{Arizona State University}{Tempe, AZ}
\item More explanation of experience here
\end{rExperience}
\begin{rExperience}{SAT/ACT Instructor}{Sep 2015 -- Oct 2015}{Minerva Learning, LLC}{Chandler, AZ}
\item Tutoring experience explained here
\end{rExperience}
\end{rSection}
then it renders like this:
The rExperienceHeader
environment displays the four key pieces of information related to job experience:
- The job title
- The organization the job was with
- The month and year the job started and ended
- The location of the organization
Note: You typically won't need to use the rExperienceHeader
environment directly, since the rExperience
environment does exactly what the rExperienceHeader
environment does, but with the ability to switch between
rExperienceBullets
and rExperienceHeader
as necessary (given the state of the titleOnly
flag).
The purpose of the rExperienceBullets
environment is to provide a convenient way to write about your experience in a
bulleted format. In addition to printing the position, title, and other information about your experience (it uses the
rExperienceHeader
environment to do this), it begins a rBulletList
environment so you can give each bullet with the
\item
command. Here's a simple example:
#!latex
\begin{rExperienceBullets}{SAT/ACT Instructor}{Sep 2015 -- Oct 2015}{Minerva Learning, LLC}{Chandler, AZ}
\item Individual tutor for a high school student preparing for the PSAT.
\end{rExperienceBullets}
The above renders as:
Note: You typically won't need to use the rExperienceBullets
environment directly, since the rExperience
environment does exactly what the rExperienceBullets
environment does, but with the ability to switch between
rExperienceBullets
and rExperienceHeader
as necessary (given the state of the titleOnly
flag).
See Flags below.
See Flags below.
As mentioned previously, the rSection
environment uses a global flag called titleOnly
to determine when to skip displaying the body of the rSection
environment. You shouldn't ever have to access or modify
this flag directly, but if you need to, you can do so like this:
#!latex
\ifthenelse{\boolean{titleOnly}}{do this if true}{do this if false}
Note: The titleOnly
flag defaults to false
and should be reset to have a value of false
after you're done in a
section where you needed it to be true
.
With the resume.cls
class, you can switch content on and off based on whether you're building a resume or a CV, the
idea being that CVs are more verbose that resumes, so there's likely content that you don't want to show in one or the
other. Using this feature, you can have one set of information to maintain but be able to build two different document
types.
There is a flag defined in the class file that defaults to true
, indicating that the document type is a CV. This flag
is called isCV
. You can use it directly by doing something like the following:
#!latex
\ifthenelse{\boolean{isCV}}{do this if true}{do this if false}
There's also a shortcut version of the above, the \isCV{}
macro. This is how you use it:
#!latex
\ifthenelse{\isCV{}}{do this if true}{do this if false}
Since the flag default to true
, if you want to set the flag to false, one call to the \setNotCV{}
macro will switch this flag, along with some other minor settings just for resumes.
There are four shortcuts for switching content on and off based on the isCV
flag. Two are commands and two are
environments. The CVonly
and ResumeOnly
environments work like other environments and require a \begin
and \end
.
Intuitively, the contents of the environment will only appear if the isCV
flag is true
or false
, respectively.
Here are some examples:
#!latex
\begin{CVonly}
This will only appear in a CV.
\end{CVonly}
#!latex
\begin{ResumeOnly}
This will only appear in a resume.
\end{ResumeOnly}
The \rCVonly{}
and \rResumeOnly{}
command shortcuts work just like the environments do, but provide a different
syntax structure for switching the content on and off. Here are the equivalent versions of the examples above:
#!latex
\rCVonly{This will only appear in a CV.}
#!latex
\rResumeOnly{This will only appear in a resume.}
As shown in Getting Started, setting \name{}
will display your name at the top
center of the document with a font size of \huge{}
. If you
want to change the size of your name, change the definition of the \namesize
macro. If you want to change anything
else about how your name appears, redefine the \printname
macro.
You shouldn't have to change this macro unless you have a problem with the size of the name at the top of the document. The original definition is simple:
#!latex
\def\namesize{\huge} % Size of the name at the top of the document
Under normal circumstances, you won't have to call this macro. When you do the typical \begin{document}
command,
\printname
will automatically be called. Similarly, you shouldn't have to change the definition of the macro unless
you dislike some aspect of how the name is displayed. Here is the original definition:
#!latex
\def \printname {
\begingroup
\hfil{\namesize\bf \@name}\hfil
\nameskip\break
\endgroup
}
The \address{}
sets your contact information so it can be displayed after your name. The \\
macro has been redefined
for addresses to be a diamond-shaped separator (see \addressSep
for more detail).
Everything inside the \address{}
command will appear on the same line. To add another line, use an additional
\address{}
command. You can have up to three lines using this method.
Just like \printname
, you won't have to call this macro under normal circumstances because \begin{document}
already calls it. Here is the original definition:
#!latex
\def \printaddress #1{
\begingroup
\def \\ {\addressSep\ }
\centerline{#1}
\endgroup
\par
\addressskip
}
This macro defines the separator between discreet items in the \address{}
command. The default is a diamond, but you
can change this by redefining the macro. Here is the original definition:
#!latex
\def \addressSep {$\diamond$} % Set default address separator to a diamond
I originally created this macro to display a QR code in the top right corner that links to my LinkedIn account. It takes two parameters: (1) the width that the image should have, and (2) the path to the icon image.
Just like \printname
and \printaddress
, you won't have to call this macro under normal circumstances because
\begin{document}
already calls it.
The following skips are defined to allow more convenient changes to some of the skips that appear in a document. You should only have to redefine these macros if you're unhappy with the amount of space between different types of content.
\sectionskip
\sectionlineskip
\nameskip
\addressskip
\bibheadingskip
\bibpostskip
Here are the original definitions for these skips:
#!latex
\def\sectionskip{\smallskip} % The space after the heading section
\def\sectionlineskip{\medskip} % The space above the horizontal line for each section
\def\nameskip{\medskip} % The space after your name at the top
\def\addressskip{} % The space between the two address (or phone/email) lines
\def\bibheadingskip{\vspace{-2\parskip}} % The space after the bib heading and before the first entry
\def\bibpostskip{\vspace{-4\parskip}} % The space at the end of the bibliography before any other content
The needspace
package allows you to reserve a certain amount of space before printing any more content. What this does
is tells the LaTeX compiler that if there is not at least the specified amount of space remaining on the page to put the
next content on a new page. This is the simplest way I could find to keep section headings with their content and that
sort of thing. These are the defined spaces:
\secHeadSpace
- For section headings, to keep them with the contents of the section.\subsecSpace
- For subsection headings.\expHeaderSpace
- For experience headings.\bibSpace
- For bibliography titles, to keep them together with their publications.
Their original definitions are:
#!latex
\def\secHeadSpace{7\baselineskip}
\def\subsecSpace{2\baselineskip}
\def\expHeaderSpace{3\baselineskip}
\def\bibSpace{3\baselineskip}
The length of a \baselineskip
is equal to the height of the text in a line plus the spacing between one line and the
next. So, {2\baselineskip}
is the amount of vertical space taken by two lines of text plus any spacing around them.
I'm not sure why it is necessary to have so much space reserved for section headings, but I've had issues when I use a multiplier of less than 7.
To change the symbols used in the rBulletList
environment, redefine the \rBulletSymbolOdd
and \rBulletSymbolEven
macros. Here are there original definitions:
#!latex
\def\rBulletSymbolOdd{$\cdot$}
\def\rBulletSymbolEven{$\vysmwhtcircle$}
I like to add a list of publications to my resume. When I first started working on my CV, I wanted a way to separate my publications by type of venue, e.g. conference, journal, etc. I also wanted to be able to add a prefix to each entry that also indicated the type of venue so I could reference the paper in other parts of the CV. For example, a publication at a conference should have the prefix "C" so it would appear as [C1] in the list of publications and in any references to it elsewhere.
While there are solutions that satisfy one or the other of my requirements, the only thing that allowed me to do both was switching from the default BibTeX to BibLaTeX. While in certain circumstances it might make sense to just use the commands provided natively by BibLaTeX, I made a custom command for printing a bibliography so it would be easier to unify the appearance and the spacing every time.
If you want to customize/change the appearance of the bibliography, the two places you can do that are (1) in the
definition of the \mybibliography
command, and (2) in the biblatex.cfg
file. Consult the documentation on
BibLaTeX for details.
Note: As discussed in the Basic Setup section, you need to include a call to
\addbibresource
in the preamble, i.e. before you call \begin{document}
.
The \mybibliography
command takes exactly three arguments:
- The title for the list of publications, e.g. "Peer-Reviewed Conference Proceedings"
- The reference prefix, e.g. "C"
- A keyword for filtering entries from the
.bib
file, e.g. "conference"
The third argument, the keyword, must match exactly the entries you want to appear in this list of publications. In the
.bib
file, use the Keywords
field for this. The following example has the "conference" and "major" keywords properly
added:
@InProceedings{Paglierani2013,
Title = {Towards Comprehensive and Collaborative Forensics on Email Evidence},
Author = {Paglierani, Justin and Mike Mabey and Ahn, Gail-Joon},
Booktitle = {Collaborative Computing: Networking, Applications and Worksharing (Collaboratecom), 2013 9th International Conference Conference on},
Year = {2013},
Month = oct,
Pages = {11-20},
Doi = {10.4108/icst.collaboratecom.2013.254125},
Keywords = {conference,major}
}
You can have whatever keywords you want as part of an entry, as long as they are comma-delimited and match the case you
use in your call to \mybibliography
(e.g. all lowercase). The reason I include the "major" keyword is because that's
the keyword I use to filter the publications I want to appear on my resume, which has a selected list of publications.
Using the example fields above, a call to \mybibliography
would look like this:
#!latex
\mybibliography{Peer-Reviewed Conference Proceedings}{C}{conference}
The above renders like this:
Another good thing to do with a list of publications is to accentuate your name in some way, so that people reviewing
your resume/CV can pick you out in the list of authors more easily. To do this, make a call to the \MyLastName
macro
sometime before you call \mybibliography
(I do it along with setting my name and contact info). Here's an example:
#!latex
\def\MyLastName{Mabey}
You can see the result in the example given above for \mybibliography
. Every time my name appears in the list of
authors it is wrapped with a \textbf{}
command. If you want to change how your name is accentuated, you'll need to
change the code in biblatex.cfg
under \renewbibmacro*{name:first-last}
.
By default there are a few fields used to populate the footer of the document. The table below shows the default settings for showing the footer fields. The fields spread themselves out so they are balanced. In other words, if the page number has been suppressed, the revised date will be repositioned to the right side so the footer doesn't feel right-heavy.
Field | CV | Resume | Position |
---|---|---|---|
Footer name | If set | If set | Left or Center |
Revised date | Yes | Yes | Center if possible |
Page # | If > 2 pgs | Not shown | Center or Right |
To change the footer name, use the \footername{}
and \footername*{}
commands. The starred version will only show the
footer name if isCV
is set. I set this field to my last name so people reviewing my CV will have a little reminder of
whose CV they're looking at.
To explicitly turn on or off page numbers, use the \showPageNumbers
and \hidePageNumbers
macros, respectively. When
isCV
is set, page numbers will only be displayed if there are at least 2 pages in the document. To change this
threshold, use the \setShowPageThreshold{}
macro.
The revised date is always on by default. To turn it off, make a call to the \hideRevisedDate
macro.
As the sophistication of the class increased, so did the number of additional packages it used. Here is a (non-exhaustive) list of the packages required for this class:
- array
- biblatex
- environ
- etoolbox
- expl3
- fancyhdr
- filemod
- fontawesome
- fontenc
- geometry
- graphicx
- hyperref
- microtype
- multicol
- needspace
- pageslts
- quoting
- scrextend
- stix
- suffix
- wrapfig
- xkeyval
- xparse
- xstring
Note: All these packages are a part of TeXLive.