Skip to content

Tex

数字排版有四个重要环节:标记语言、页面描述语言、光栅图像处理器、输出设备。TEX是最精确、最高级的面向专业排版的标记语言。TEX家族可以划分为四个层次:引擎、格式、宏包、驱动。通常选择XETEX引擎和LATEX格式。

TEX系统针对不同格式和引擎的组合,提供了一系列的命令行程序,完成不同的编译和转换功能。比如源文件是pla TEX格式时,可以分别用tex, pdftex, xetex程序调用TEX, pdfTeX, XETEX引擎;源文件是LATEX格式时,相应的程序则是 latex, pdflatex, xelatex。

LATEX 源文件的语句可以分为三种:命令 (command) 、数据和注释 (com‐ment) 。命令又分为普通命令和环境 (environment)。普通命令以\起始,大多只有一行;而环境包含一对起始声明和结尾声明,用于多行内容的场合。命令和环境可以互相嵌套。数据就是普通内容。注释语句以 % 起始,它在编译过程中被忽略。

LATEX 文档的结构可以分为物理结构和逻辑结构。前者指的是源文件的组织形式,包括序言 (preamble)和正文两部分;后者则是最终输出文档的结构,包括标题、目录、章节等。

序言用来完成一些设置,比如指定文档类型,引入宏包,定义命令、环境等;文档的实际内容则放在正文部分。它们的基本用法如下:

tex
\documentclass[options]{class}
%文档类声明
\usepackage[options]{package}
%引入宏包
...
\begin{document}
%正文
...
\end{document}

常用的文档类 (documentclass) 有三种:article, report, book,它们的基本选项:

文档类常用选项

10pt, 11pt, 12pt正文字号,缺省 10pt。LATEX 会根据正文字号选择标题、上下标等的字号。
letterpaper, a4paper纸张尺寸,缺省是 letterpaper。
notitlepage, titlepage标题后是否另起新页。article缺省noti‐tlepage,report 和book缺省有titlepage。
onecolumn, twocolumn栏数,缺省单栏。
oneside, twoside单面双面。article和report缺省用单面,book缺省用双面。
landscape横向打印,缺省是纵向。
openany, openright此选项只用于 report 和 book。report 缺省openany,book 缺省 openright。
draft草稿模式。有时某些行排得过满,draft 模式可以在它们右边标上粗黑线提醒用户。

一份文档的开头通常有标题、作者、摘要等信息,之后是章节等层次结构,内容则散布于层次结构之间。文档比较长时我们还可以使用目录。

标题、作者、日期等命令用法如下,注意 \maketitle命令要放在最后。

tex
\title{LaTeX Notes}
\author{Alpha Huang}
\date{\today}
\maketitle

article 和 report 可以有摘要,book 里没有。摘要环境用法如下:

tex
\begin{abstract}
...
\end{abstract}

LATEX提供了七种层次结构命令,每个高级层次可以包含若干低级层次。article中没有chapter,而report和book则支持所有层次。

tex
\part{...} %Level -1
\chapter{...} %Level 0
\section{...} %Level 1
\subsection{...} %Level 2
\subsubsection{...} %Level 3
\paragraph{...} %Level 4
\subparagraph{...} %Level 5

我们可以用 \tableofcontents 命令来生成目录。系统会自动设定目录包含的章节层次,用户也可以显式指定目录层次深度。比如下面的命令指定目录深度为 2,也就是只显示 subsection 及以上层次的目录。注意设定目录深度命令要放在列目录命令的前面。

tex
\setcounter{tocdepth}{2} %设定目录深度
\tableofcontents %列出目录

初次使用目录,或章节图表等层次结构发生变化时,都需要执行两遍编译命令才能获得正确结果。LATEX 之所以设计成这样是因为当时的电脑内存容量有限。

如果我们不想让某些层次的标题出现在目录里,则可以给 例 2.2 中的命令加上星号。

tex
\chapter*{...}
\section*{...}
\subsection*{...}
\subsubsection*{...}

类似地,我们也可以用下面的命令生成插图和表格目录,插图和表格功能将在后面相关章节中介绍。这两种目录也都需要编译两遍。

tex
\listoffigures
\listoftables

文档的内容可以分为文本模式和数学模式。

文档中可以输入的文字符号大致可以分为:普通字符、控制符、特殊符号、预定义字符串、注音符号等。

普通字符可以直接输入,而有些字符 (例如 # $ % ^ & _ { } ~ 等) 被用作特殊的控制符,输入时多数需要在前面加个 \。而 \本身则要用 \textbackslash命令来输入,因为 \ 被用作换行指令。

tex
\# \$ \^ \& \_ \{ \} \~ \textbackslash \%

LATEX 中有短划线 (hypen) 、中划线 (en‐dash) 和长划线 (em‐dash) 。短划线又称连字符,用来连接单词;中划线用来连接数字,可以通过重复两次短划线得到;长划线类似于中文的破折号,重复三次短划线。为了便于比较,这里也给出数学模式的减号。

拉丁文字体主要有三大类:衬线字体 (roman, serif) 、无衬线字体 (sans serif) 4和等宽字体 (monospace, typewriter) 。衬线字体笔画的边缘部分有些修饰,类似于中文的宋体、仿宋、楷体、魏体等。无衬线字体的笔画则是平滑的,类似于中文的黑体。

字体还可以有粗体 (bold) 、斜体 (italic) 、伪斜体 (oblique, slanted) 、小型大写字母 (small caps) 等修饰效果。TEX 提供了介于正常字体和粗体之间的半粗体 (medium weight) 。斜体通常对原字体进行了重新设计,它修饰精细,多用于衬线字体;伪斜体基本上是把原字体倾斜,多用于无衬线字体,一般伪斜体看起来比斜体要宽一些。小型大写字母的形状和大写字母相同但尺寸较小,一般高度和小写字母相似。

tex
\usepackage[normalem]{ulem}
\emph{emphasis}\\
\uline{underline}\\
\uwave{waveline}\\
\sout{strike-out}

通常 LATEX 会自动换行,我们也可以用 \ 或 \newline 命令来强制换行;用 \newpage 命令来强制换页。

LATEX 中的段落缺省两端对齐 (fully justified) ,下面的三个环境可以让段落分别居左、居右或居中对齐。另有三个命令 (\raggedright, \centering,\raggedleft) 可以完成同样功能。

LATEX 正文中第一个段落缺省不缩进首行,我们可以用 indentfirst宏包使得第一段也缩进首行。段落首行缩进的距离可以用 \parindent 变量来控制,段落之间的距离可以用 \parskip 变量来控制。

tex
\usepackage{indentfirst}
...
\setlength{\parindent}{2em}
\addtolength{\parskip}{3pt}

行间距是段落中相邻两行基线之间的距离,LATEX 缺省使用单倍行距。我们可以用 \linespread 命令来控制行距。

tex
\linespread{1.3} %一倍半行距
\linespread{1.6} %双倍行距

脚注可以使用 \footnote 命令;如要改变脚注编号形式,可以使用以下命令。在 例 2.10 中,footnote 是一个计数器 (counter) ;计数器有五种显示格式 (见 表 2.7) ,重定义 \thefootnote 宏时可任选。