如何寫一個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} ​

咱們的簡歷如今包含了日期:

總結

以上就是咱們指南第一部分的所有了,可是幸虧覆蓋了足夠多的內容讓大家開始製做有用的類文件。這個簡歷模板看起來已經比較合理,它並無使用不少命令,但對於其餘咱們可以自定義的部分,咱們僅是剛剛開始。在這個指南的下面幾節,我將講述宏包的參數傳遞,創造一個精緻的標題和如何設置通用的佈局選項。

感謝你的閱讀!

相關文章
相關標籤/搜索