大多数人的 CV 都是使用 Microsoft Word 之类的所见即所得的软件制作的。但作为一个 TeXer,CV 显然得用 TeX 制作。TeX 中有很多文档类、宏包可以用来制作 CV(另见 Writing the curriculum vitae with LaTeX);但我一直钟情于 moderncv 文档类。
六年前,看到 moderncv 文档类的第一眼,我就完全被她吸引了,简洁又不失华丽。打那之后,自用的同时,一直竭力向身边的朋友推荐。
第一个接受我推荐的是一个师弟。那还是在五年前,我用 moderncv 文档类给他写中文 CV。当时比较流行的中文处理方法还是 CJK 宏包,而 moderncv 与 CJK 在兼容性方面有一些 bug;这也导致当时写得很辛苦。第二个接受我推荐的是一个哥们。因为是英文 CV,所以处理起来相当方便。之后接受我推荐的人越来越多,但我基本再未捉刀代笔过了。
去年,出于找工作的目的,我使用 moderncv 制作了自己的 CV;中间或多或少遇到了一些麻烦,但最后都处理得不错。身边的一些伸手党看到之后,也想使用;由于 moderncv 文档类没有说明文档,也希望我能简单描述一下如何使用。
moderncv 最早发布于 2006 年 03 月 01 日,当前最新版本为 version 1.3.0 version 1.5.1 version 2.0.0,发布于 2013 年 02 月 09 日 2013 年 04 月 29 日 2015 年 07 月 28 日。
安装
对于 MiKTeX 和 TeX Live 完全安装的同学,moderncv 已经安装好了;不是完全安装的,请通过相关组件检查并安装;对于其它 TeX 发行版,请自行检查。当然,手动安装也是可以的,可以在 CTAN 下载,放入对应目录,并刷新 FNDB。
使用
下面我将结合 moderncv 文档类中自带的 template.tex 文件来具体分析下如果快速上手。另外,对于需要制作中文 CV 的朋友,可能会对 template-zh.tex 感兴趣,我劝您最好别看它,里面使用的 CJK 那个古董早该退出历史舞台了。
设置文档类
\documentclass[10pt,a4paper,roman]{moderncv}
- 10pt 是字体大小,其余可选项有 11pt、12pt。字体的大小总该懂吧;也就三个选择,不明白的每个都去试一下。
- a4paper 是纸张大小,其余可选项有 letterpaper(美洲常用标准,比 A4 短、宽)、a5paper、legalpaper(美洲常用标准,比 A4 长、宽)、executivepaper(比 A4 短、窄)、landscape(横向);需要的话请移步维基百科相关页面。
- roman 是字体族,其余可选项有 sans,分别代表衬线字体、无衬线字体。我总觉得字体族默认选择 sans 有些不妥,毕竟整个 CV,文字可能很多,全部使用无衬线字体很影响阅读。
设置 CV 样式
% moderncv themes
\moderncvstyle{classic}
\moderncvcolor{blue}
%\renewcommand{\familydefault}{\sfdefault}
%\nopagenumbers{}
- classic 是整体样式,其余可选项有 casual、oldstyle、banking、empty。具体的样子可以参见 moderncv 宏包中的例子。个人比较喜欢 classic,尤其喜欢每个 Section 前的短横线;当然 banking 样式下个人信息的排版很不错。
- blue 是颜色样式,其余可选项有 orange、green、red、purple、grey、black、burgundy(2.0.0 新增加的颜色)。具体的样子可以参见 moderncv 宏包中的例子。要严肃的话推荐 black,其余随意。
- 第三行代码用来选择默认字体,我一般把它注释掉。由于现在有了 XeTeX 等强大的引擎,可以用 fontspec 直接加载西文字体,当然,前提是你得有字体的 otf 或者 ttf 等文件。我一般喜好使用衬线字体 Minion Pro 配合无衬线字体 Myriad Pro,待会我会提到如何使用新的字体。
- 最后一行代码用来控制是否显示页码。CV 超过一页的话,建议显示页码,即注释掉这个代码。当然,我已经习惯自己定义页眉页脚,也不需要这个选项了。
设置编码方式
% character encoding
%\usepackage[utf8]{inputenc}
%\usepackage{CJKutf8}
- 因为会使用 XeTeX 引擎,代码最好是 UTF-8 字符,因此指定 inputenc 参数完全是多余的,第一行代码直接注释掉。
- 处理中文可以直接使用 XeTeX + fontspec + xeCJK,所以这行代码完全多余,直接注释掉。
调整页面边距
% adjust the page margins
\usepackage[scale=0.75]{geometry}
%\setlength{\hintscolumnwidth}{3cm}
%\setlength{\makecvtitlenamewidth}{10cm}
- TeX 用户应该都知道大名鼎鼎的 geometry 宏包吧,在此不再赘述。
- 修改“显示时间的列的宽度”;直观点说,如果使用的是 classic 样式,那么调整的就是 Section 前面的短横线的长度。一般不作修改,注释掉。
- 有的时候姓名比较长,使用 classic 样式的时候,因为要在右上角显示个人信息,可能姓名会出现换行的情况。第三行代码可以设置姓名所占空间的宽度。一般不作修改,注释掉。
多语言环境设置
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xeCJK}
\setmainfont{Minion Pro}
\setsansfont{Myriad Pro}
\setmonofont{Courier New}
\setCJKmainfont{SimSun}
\setCJKsansfont{KaiTi}
\setCJKmonofont{SimHei}
%\setCJKmathfont{}
- 第一行代码中的 fontspec 宏包用来处理加载一般西文字体。第二行代码中的 xunicode 宏包用来指明代码是 unicode 编码。其实这两个宏包可以用 xltxtra 代替。
- 第三行代码中的 xeCJK 宏包用来处理加载中文字体。
- 第四、五、六行代码分别用来设置西文字体的正文衬线族、正文无衬线族、正文等宽族。第七、八、九行代码分别用来设置中文字体的正文衬线族、正文无衬线族、正文等宽族。最后一行用来设置数学公式中的中文字体族。xeCJK 宏包功能很强大,可参见其说明文档。
- 有了上述设置,可以随便写中文了。
个人信息设置
% personal data
\name{John}{Doe}
\title{Resumé title} % optional
\address{street and number}{postcode city}{country}% optional
\phone[mobile]{+1~(234)~567~890} % optional
\phone[fixed]{+2~(345)~678~901} % optional
\phone[fax]{+3~(456)~789~012} % optional
\email{john@doe.org} % optional
\homepage{www.johndoe.com} % optional
\social[linkedin]{john.doe} % optional
\social[twitter]{jdoe} % optional
\social[github]{jdoe} % optional
\extrainfo{additional information} % optional
\photo[64pt][0.4pt]{picture} % optional
\quote{Some quote} % optional
- 姓名较长,使用 classic 样式的时候,可能需要调整姓名所占的空间的宽度。
- \address 改进了,之前只能填写 2 行地址,现在最多可以 3 行,灵活了不少。
- 有的时候在个人信息里需要放两个 E-mail 地址、两个电话等等,实现办法可以参考这里和这里。
-
我在使用 \homepage 的时候遇到了一个与 hyperref 宏包相关的 bug。我之前的个人主页中有字符"~",直接输入
\homepage{graduate.math.nus.edu.sg/~g0800878/}
输出的 PDF 文件中看不到"~"。如果输入
\homepage{graduate.math.nus.edu.sg/\textasciitilde g0800878/}
输出的 PDF 文件中可以看见"~"了;但同时出现了另一个问题,在 PDF 文件中点击 homepage 这个链接,Adobe Acrobat 9.5 Pro 直接报错
The Web Capture operation you have requested has failed because of an error
最后我用了一个“野蛮”的办法绕过去了,直接在 \extrainfo 中输入
\extrainfo{\homepagesymbol http://graduate.math.nus.edu.sg/\textasciitilde g0800878/}
以上的问题可以按照下面的方法解决,在“moderncv.cls”文件中删除“baseurl=http://,”,或者在导言区的末尾加上
\AfterPreamble{\hypersetup{baseurl={}}}
感谢 Xi Zhang 提供解决办法。
-
一般每份 CV 都需要注明更新时间,我一般直接借用 \quote 来实现。
{\footnotesize Last updated: \today}
-
有的同学可能需要更多的组件,比如 Linkedin 的信息等,实现办法可以参考这里。
列表样式
关于这个,我真不用多费口舌了,直接在 template 上修改就好了,一边用一边就会了。
编译
- 如果仅使用英文,保证 TeX 系统是最新的,然后直接编译即可,PDFLaTeX、XeLaTeX 都可以。
- 如果有使用中文,保证 TeX 系统是最新的同时,还需要:保证 XeTeX 版本高于 0.9995.0 (2009 年 06 月 29 日)的版本;安装有 l3kernel 宏包和 l3packages 宏包;安装有 fontspec 宏包和 xeCJK 宏包;安装有想用的字体。一切都搞定之后使用 XeLaTeX 编译即可。
一些特殊要求的实现
-
修改链接的颜色:在导言区加入
\AtBeginDocument{ \hypersetup{colorlinks,urlcolor=red} }
具体可以参考这里。
最后是个伸手党的福利——我自己 CV 的 tex 源文件。
欢迎 E-mail 与我联系,欢迎批评指正。
以上,2013 年 02 月 17 日。2015 年 09 月 18 日更新。
Pingback: LaTeX技巧739:moderncv笔记 | LaTeX工作室
Hello Professor Sun,
There might be a typo in your moderncv notes.
You may prefer to say "全部使用无衬线字体很影响阅读".
Thank you again for sharing.
Best,
Ziwei
已改。十分感谢。
祥教授牛逼啊。
谢谢大帝引用 🙂
Pingback: 用Latex写中英文简历,CV | ZHANG RONG
请教一下。。personal data 和 content 的间距太大,想缩小该如何修改呢?
很抱歉,现在才看到。我不是很清楚你的意思,如果可以请 email 给我你的 tex 文件以及生成的 pdf 文件。
我也有这个问题,例如这个 http://blog.madrzejewski.com/creer-cv-elegant-latex-moderncv/cv-latex-moderncv-exemple/
怎么减小个人信息和formation之间的距离?
谢谢!
在 \makecvtitle 之后加上这句命令 \vspace*{-90pt},其中的 -90pt 可以自己调整。
font minion pro not found
下了一个minion.ttf,不知道放哪里,而且放了之后好像还有map之类的。。网上东西太乱太杂,不知道该怎么解决
错误写的很清楚——缺少 minion pro。你需要的是 minion pro 而不是 minion。
写得非常清楚,请问是否有关于该模板下的cls,sty等文件是缺一不可吗?即使有这些文件,也显示编辑错误。不知道是否可以通过编译cls,sty等文件更改?谢谢
Pingback: Linux下的经典软件 – Blog for xiaoshuilan 10001
老师您好!想尝试写moderncv模板的简历,发现老师您CV的Tex源文件的链接失效了,可否抽空更新一下呢?感谢!
Pingback: Linux下的经典软件(史上最全) - 算法网