如何写一个LaTeX类文件,并设计你本身的简历

2017/8/29 20:26:03html

原文地址
https://www.sharelatex.com/blog/2011/03/27/how-to-write-a-latex-class-file-and-design-your-own-cv.htmlapi

每一个人都想要一个看起来专业的简历,内置的LaTeX模板也没有什么缺点。可是你要是想本身定制一个简历,就得像我同样。这意味着你须要根据本身的想法定制一个样式。众所周知,这挺难的。在这个系列的博文中,我但愿可以指导你创造本身风格的类文件,并告诉你按照你的想法定制你本身的简历其实很简单。咱们将把目光聚焦于简历样式,可是其中的方法确实通用的。ide

什么是类文件?

当你在你的LaTex文件里写\documentclass{article}的时候,你就引用了一个类文件article.cls。这个类文件,定义了全部像\section\title的命令,这些命令使你的文档变得结构化。这些命令如何影响格式和页面布局,也是由它控制的。布局

创建你本身的类文件

定制一个文档格式最方便的方法就是将全部的格式信息放在一个私人类文件中。这样能将文章的内容和格式清楚地分开,并能方便地进行复用。请创建一个cv.tex文件,并添加以下内容:字体

\documentclass{my_cv}

\begin{document}

\section{Education}
\subsection{University of Nowhere}

\section{Work}
\subsection{ABC Limited.}

\end{document}

这个将尝试加载类文件my_cv.cls,但如今它还不存在。在cv.tex的同一个目录下,创建文件my_cv.cls,添加以下内容:ui

\LoadClass{article}

若是如今你编译你的文档,你应该会看到一切都仍是默认的文章样式。日志

那么如今发生了什么呢?类文件须要包含不少格式信息和内部设置,以使得LaTeX正常工做,可是咱们并不想人工地输入全部的东西。相反地,咱们的类文件能够基于article.cls。咱们使用LoadClass来引用article.cls而且加载其中定义的全部的命令和格式 。须要注意的是,咱们并无使用一般的\documentclass命令来引用article.cls,由于\documentclass仅在你的LaTeX文档的开头使用。code

告诉LaTeX你的类一些事情

全部的类文件在文件的起始部分,都应该包含与下面相似的两行。如今把这些添加到my_cv.cls的顶端吧。orm

\NeedsTeXFormat{LaTeX2e}
\ProvideClass{my_cv}[2011/03/06 My custom CV class]

命令\NeedsTeXFormat告诉编译器这个宏包是属于LaTeX的哪一个版本的。当前LaTeX的版本是LaTeX2e,几乎全部的发行版本都是用这个。htm

命令\ProvidesClass告诉编译器你的宏包一些信息。第一个参数应该与这个类的文件名一致,描述了这个宏包的名称。第二个参数是可选的,这个将出如今日志或者其余地方。这个描述必须以上述格式的日期开始,这个日期应该是这个宏包最近修改的日期。这将在检查是否有新的版本的时候用到。例如,若是你使用\documentclass{my_cv}[2012/01/01]的时候,因为这个日期比宏包中的日期要晚,因而一个警告会被抛出,代表这个类已通过时了。

修改section标题

标准的文章的section的标题并不适合简历,所以咱们使用一些更优雅的东西代替它们。为了达到这个目的,咱们从新定义\section命令,来输出一个自定义的标题。

幸运的是,有一个很棒的的宏包,叫作titlesec,提供了一个简单的方法去自定义咱们的标题风格。在你的类文件中添加以下语句

\RequirePackge{titlesec}

须要注意的是,咱们应该使用\RequirePackage而不是一般的\usepackage命令,由于这是在一个类文件中。即便在其余宏包使用一样的命令,\RequirePackage确保每一个宏包被加载一次。

titlesec宏包提供了titleformat命令,能让咱们自定义咱们的section标题。在my_cv.cls的末尾添加吐下内容以自定义标题的样式:

\titleformat{\section}         % Customise the \section command 
  {\Large\scshape\raggedright} % Make the \section headers large (\Large),
                               % small capitals (\scshape) and left aligned (\raggedright)
  {}{0em}                      % Can be used to give a prefix to all sections, like 'Section ...'
  {}                           % Can be used to insert code before the heading
  [\titlerule]                 % Inserts a horizontal line after the heading

若是咱们如今编译cv.tex,咱们将看到一级标题更适合一个简历:

咱们也能自定义\subsection标题:

\titleformat{\subsection}
  {\large\scshape\raggedright}
  {}{0em}
  {}

二级标题如今也是一样的样式:

你应该尝试一些可行的格式选项进行选择:

  • \bf\it —— 标题加粗或斜体
  • \scshape —— 小型大写字母
  • \small\normalsize\large\Large\LARGE\huge\Huge —— 设置字体大小
  • \rmfamily\sffamily\ttfamily —— 相应地设置字体为 serifed, san serifed or typewriter

添加日期到section标题上

咱们能定义一些新的命令,使得咱们在section标题上添加日期。在你的类文件中添加以下内容:

\newcommand{\datedsection}[2]{%
  \section[#1]{#1 \hfill #2}%
}
\newcommand{\datedsubsection}[2]{%
  \subsection[#1]{#1 \hfill #2}%
}

这定义了两个新的命令\datedsection\datedsubsection,它们有两个参数:以前的section名字和在页面右侧的日期。\hfill命令告诉LaTeX尽量多地填充空间以使得第二个参数(#2)位于页面的右侧。修改cv.tex来使用这些命令:

\documentclass{my_cv}

\begin{document}

\section{Education}
\datedsubsection{University of Nowhere}{2004--2008}
I attended the University of Nowhere from 2004 to 2008.

\section{Work}
\datedsubsection{ABC Limited.}{2008--Now}
I have worked at ABC Limited from 2008 onwards.

    \end{document} ​

咱们的简历如今包含了日期:

总结

以上就是咱们指南第一部分的所有了,可是幸亏覆盖了足够多的内容让大家开始制做有用的类文件。这个简历模板看起来已经比较合理,它并无使用不少命令,但对于其余咱们可以自定义的部分,咱们仅是刚刚开始。在这个指南的下面几节,我将讲述宏包的参数传递,创造一个精致的标题和如何设置通用的布局选项。

感谢你的阅读!

相关文章
相关标签/搜索