Appearance
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}
\maketitlearticle 和 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 宏时可任选。