排版神器LaTeX使用方法

写在开始

距离假期结束的日子越来越近,与大多数学生党一样,我也在开学前夕疯狂补作业。但与以往不同的是,在恶补作业的过程中我没有了以前那种恶心感,看着电脑上敲出的文档,甚至还有一丢丢的喜欢,当然仅仅是从格式上看,深究内容的话,它还是一坨令人作呕的翔,但现在它起码是一坨附着华丽的金箔、闪闪发光的翔。摒弃了繁琐易出错的word排版,我选择了掀起印刷界的革命、到现在也是扛把子的神器——LaTeX。

关于LaTeX与TeX

首先介绍一下LaTeX的发音:雷泰赫,TeX是三个希腊字母,连在一起的意思是“科技”与“艺术”,LaTeX可以看作是TeX的宏包,为了避开底层TeX的复杂语法与操作LaTeX诞生,但是二者可以视为同一种东西。TeX的发明者D.E.Knuth是计算机科学界大名鼎鼎的人物,关于他的奇闻异事有很多,其中一则便与TeX的诞生有关。Knuth因为他的著作、有计算机科学界的圣经之称的《计算机程序设计与艺术》一书获得图灵奖,那时他年仅36岁,但是当出版商将他的著作印刷出来拿给他看时,追求极致完美的他怒不可遏,书籍出版商的排版在他眼里丑态百出,他毅然决定暂停书籍剩余部分的写作,决心自己开发一套完美的印刷排版软件,这就是《计算机程序设计与艺术》中途辍笔近10年的原因。
Knuth为TeX版本编号为圆周率数字,意思是让它趋于完美,目前最新的版本为3.1415926并且有相当长的时间没有更新过了。Knuth鼓励大家寻找TeX中的bug,并奖励第一个发现bug的人$1.28,第二个$2.56…后面依次翻倍。稍微了解数学的人都应该知道指数爆炸,多么可怕!但是Knuth就是有这样的自信,而领到他的签名支票的人很少去兑换,而是将这支票装裱收藏,视作自己一生莫大的荣誉。本篇文章将初探LaTeX,并介绍使用LaTeX排版出美观文章的方法。

工具准备

LaTex的版本较多,在其支持中文之前使用较多的是CTeX,随着LaTeX对中文宏包ctex支持,现在主流版本为TeXLive,TexLive的下载安装比较简单方便,需要一点点的配置,可以参考其它的教程帖进行,在此就不再赘述了。其实安装TexLive之后就可以进行编辑生成文档了,可以通过文本编辑器编写源码用cmd命令行的方式编译生成文档,这样做可以一步步了解由代码生成文档的过程,对于仅仅是想用LaTeX排版、撰写文章的人来说这样显得有点繁琐,与编写程序一样,我们需要一个类似于IDE的软件来帮我们做这些编译生成文档的工作,可以使用vscode+插件,在此推荐TexStudio。这也是一款完全免费的软件,但是下载的官方网站貌似不能打开,在此分享一个版本,软件的安装过程也比较简单,没有什么特别的设置。安装完成后打开软件界面是这样的

左侧是文件树,从这里可以方便的切换编辑文件,右侧主要分为两大部分:代码编辑区和预览区,在代码编辑区完成编辑之后点击构建并查看按钮,如果没有错误的话在预览区就可以生成pdf的预览。如果使用中文编辑的话软件需要一点设置:点击选项->设置->构建->默认编辑器,选择XeLaTeX或PdfLaTeX,以及编辑器->默认字体编码选择UTF-8,这样就软件就设置好了。
新建文件,另存为.tex格式,输入以下测试代码:

1
2
3
4
5
6
7
8
9
\documentclass[a4paper, punct,space,nospace, fancyhdr, fntef,UTF8]{article}

\usepackage{ctex}
\title{\heiti 测试文档}
\author{\heiti 你的名字}
\date{\today}
\begin{document}
\maketitle
\end{document}

构建查看,在预览区得到相应的pdf样式。

LaTeX源文件的基本结构

LaTeX源码分为两部分:导言区和正文区,导言区类似于C语言的声明和宏定义,在这里可以同样定义该文档的种类、包含使用的宏包、宏定义命令等。正文区以一对\begin{}和\end{}开始和结束,{}中的关键字为document,与main关键字一样,这里是程序的入口,一篇文档只能有一个document环境。
导言区的格式相对固定,下面是常用代码

1
2
3
4
5
6
7
8
9
10
11
%定义文档类可选article、book、letter等
\documentclass[a4paper, punct,space,nospace, fancyhdr, fntef,UTF8]{article}
\usepackage{} %使用宏包,{}填包名,如编辑中文ctex、插入图片graphicx、插入数学公式amsmath等
\title{} %标题
\author{} %作者
\date{} %日期
\newcommand{cmd}{def} %自定义新命令

\begin{document}
正文区
\end{document}

在LaTeX中都是以一对\begin{}和\end{}开启一段新的环境,正文中的插入图片、公式、项目符号等等,都是如此,下面将依次介绍LaTeX正文中的各个元素。

LaTeX正文写作

标题

LaTeX中的标题定义为section关键字,写法如下:

1
2
3
4
\section{title}			%一级标题
\subsection{title} %二级标题
\subsubsection{tiele} %三级标题
\\paragraph{title} %段内标题

三级标题以后可以使用段内标题或项目符号,{}内填写标题内容和字体格式,比如使用黑体、小四可以写作:

1
\section{\heiti \zihao{-4} 题目}   %喜闻乐见的拼音

关于字体与字号的设置,在LaTeX中涉及中文的地方都可以这样写。

设置行距和页边距

如果直接使用上文中的导言区并在正文中写内容的话,你会发现正文的页边距不对劲,有大量留白,此时就要设置页边距了。A4纸的打印标准为上下2.54cm,左右3.18cm,因此可以在导言区设置:

1
\geometry{left=3.18cm,right=3.18cm,top=2.54cm,bottom=2.54cm}

设置行间距方法有很多可以通过\linskip{}命令跳过具体的长度,也可以用类似于word中n倍行距的方法,下面介绍使用n倍行距设置:

1
2
3
4
5
\usepackage{setspace}		%导言区使用setpace宏包

\begin{spacing}{n}
%在这之间正文文字行距为单倍行距
\end{spacing}

LaTeX中插入图片

在LaTeX中插入图片要引入宏包graphicx,简单的插入图片可以使用

1
\includegraphics[keyvals]{imagefile}

[]中是可选参数,包括旋转角度、缩放比例、宽高尺寸等,{}为文件名。在使用{}中的文件名之前先要指定当前的搜索路径:

1
\graphicspath{{figure1/},{figure2/}}   %可以添加多个文件夹注意要用{}和,分隔开

若图片太大可以在[]中添加缩放系数scale=n,n为缩放系数,或是指定尺寸width=1cm,height=2cm,在指定尺寸前先搞清楚图片比例,避免出现失调的现象。LaTeX支持多种图片格式:eps,jpg,png,pdf等,但貌似不支持wmf格式,对viso用户来说确实不太方便,但visio中有替代方案:visio绘图完毕之后,选择设计里的纸张大小,选择适应绘图大小,这样纸张就被裁剪成适应绘图的大小,此时再将绘图导出pdf,然后保存到之前设置的文件夹中,就可以在正文插入了。对于matlab绘图,可以将绘图保存为eps格式,然后再插入。以上两种插图方法均可保证绘图插入文档后放大不失真。

在进行学术论文写作时,往往要将图片居中显示,为其设置题注和交叉引用,在LaTeX中也可以完成这些操作:

1
2
3
4
5
6
7
\begin{figure}[htbp]					%htbp的意思就是让排版效果尽量好看
\begin{center} %居中
\includegraphics{文件名} %文件名
\caption{题注} %题注
\label{引用标号} %引用标记
\end{center}
\end{figure}

\label{}是引用时需要使用的标记,可以通过\ref{}方式交叉引用,{}中填写与\label{}中相同的内容,这个引用方式不仅适用于图片的交叉引用,还适用于所有的标题、公式参考文献的引用,要求就是要有一对\label{}和\ref{}的组合。

LaTeX中插入数学公式

数学公式的编排应该是LaTeX中最令人赏心悦目的功能了,数学公式有行内公式和行间公式的区别,又有带标号与不带标号的区别,下面一一介绍:

  • 行内公式:由一对$符号包裹,中间的内容为数学公式
  • 行间公式:由一对$$f符合包裹,中间内容为数学公式
  • 编号公式:需要开启equation命令
    1
    2
    3
    4
    \begin{equation}
    \dot{x}=Ax+bu %公式内容
    \label{equ1} %引用编号
    \end{equation}

关于公式内容的书写LaTeX有自己的一套书写方法,并被MathType、AxMath等数学公式编辑器所沿用,由于数学公式的写法内容较多,可以参考别的资料,在此就不再列举了。

自定义命令

了解以上几项内容之后,就基本可以写出一篇简单的文档了,为了积累编写文档过程中的经验,减少代码的重复率,可以使用自定义命令。
与学习编程时的自定义函数一样,自定义命令可以使源码更简洁,对于LaTeX文档编写来说更是减少了工作量,甚至形成自己的宏包。自定义命令需要在导言区完成,以上文中的插入图片为例,如果每次插入图片都要输入这么多行代码的话确实不够简洁,因此我们可以使用自定义命令,每次调用这个命令时传入3个参数:文件名、题注、引用标号,代码如下:

1
2
3
4
5
6
7
8
9
10
\newcommand{\insertPic}[3]  %第一个{}是新命令的名称,[]中是参数个数,第二个{}中是命令的具体实现
{
\begin{figure}[htbp]
\begin{center}
\includegraphics{#1} %#1代表参数1
\caption{#2}
\label{#3}
\end{center}
\end{figure}
}

在导言区定义完新命令之后,正文区的插图命令可以由一行完成,例如:

1
\insertPic{figure4.pdf}{一阶对象的控制量与被控量}{gra4}

在实际编写时可以把所有自定义的命令放到一个单都得tex文件中,这样经过积累之后就可以形成自己的专用宏包了。

总结

LaTeX是伟大的发明,也是迄今为止最完美的软件之一,由它编写出来的文档精美绝伦。它甚至可以用来做海报、简历和ppt。使用LaTeX,把双手从富文本编辑中解放出来,印刷出版界的标杆我们有什么理由不去学习呢?
由于LaTeX的内容实在是太多,在一篇文章中全部写完是不可能的,本文只能是管中窥豹,但是实践是学习的最好方法,在应用中学习、积累最终会完全掌握这门工具。