文章目录
- 标准的类选项
- 指定纸张大小
- 页面格式
- 其他选项
- 与某些选项相关的参数
- 页面样式
- 页眉
- 页的编号
- `fancyhdr`页眉页脚宏包
- (重)定义fancy页面样式
- Using extramarks
- 文档中页面风格切换
- 与段落有关的距离
- 页面格式
- 单双列页面
- 文档中的部分
- 标题
- 摘要
- 章节
- 附录
- 书的结构
- 目录表
- 自动条目
- 显示目录表
- 其他条目
- 其他列表
- 精调正文
- 插入任意距离
- 插入长度可变的...和___序列
- 段落间距
- 段落的缩进
- 断行
- 命令`\\`
- 其它的断行命令
- 分页
- 正常分页
- 有图表时的分页
- 两列模式时的分页
- 两面模式时的分页
- 有限制的分页.
- 控制分页
- 索引
标准的类选项
指定纸张大小
l e t t e r p a p e r ( 11 × 8.5 i n ) a 4 p a p e r ( 29.7 × 21 c m ) l e g a l p a p e r ( 14 × 8.5 i n ) a 5 p a p e r ( 21 × 14.8 c m ) e x e c u t i v e p a p e r ( 10.5 × 7.25 i n ) b 5 p a p e r ( 25 × 17.6 c m ) \begin{array}{c} \rm letterpaper(11\times 8.5in) & \rm a4paper(29.7\times 21cm)\\ \rm legalpaper(14\times 8.5in) & \rm a5paper(21\times 14.8cm) \\ \rm executivepaper(10.5\times 7.25in) & \rm b5paper(25\times 17.6cm)\end{array} letterpaper(11×8.5in)legalpaper(14×8.5in)executivepaper(10.5×7.25in)a4paper(29.7×21cm)a5paper(21×14.8cm)b5paper(25×17.6cm)
通常情况下,纸张格式中长的方向是竖直方向,即所谓的纵向模式。利
用选项landscape
可以使短的方向成为竖直方向,即横向模式。
页面格式
在一页上的文本可以用下面的选项来使得以一列或两列形式分布:onecolumn twocolumn
默认值是onecolumn
。当用的是twocolumn
选项时,两列间距以及列间可能存在的标尺的宽度用\columnsep
和\colunnseprule
来指定,后面将会讲到它们。
要想奇偶页的页码打印方式不一样,可以用选项loneside twoside
当用的是oneside
时,所有页码的打印方式是一样的;然而,当用的是twoside
时,在即时标题中若当前页码为奇数,页码出现在右边,若为偶数,页码出现在左边。注意它并不是强迫打印机双面打印。这里的想法是当以后真的双面印刷时,页码总是在每页的外侧,阅读时容易看到。这是book类的默认值。
- 对于article和report类,默认值是
oneside
。 - 对于book类,每一章通常都是开始于右边,即从奇数页开始。选项
openright openany
可以控制这个功能:用openany
时,总是在下一页上开始新的一章, 而用的是默认值openright
时,必要时可以插上一空页。 - 通常book或report的标题是单独一页的,而在article中,标题则是与开头的文本在同一页上。利用选项
notitlepage titlepage
其他选项
还剩下的标准选项有:
leqno
显示公式中的公式编号出现在左边,而不是像通常那样放在右边。fleqn
显示公式左对齐,而不是居中。可以参数\mathindent
来设置缩进大小。openbib
参考文献的格式可以改变成每一片断位于一个新行上。默认方式下,每个条目的文本都是聚在一起的。draft
如果LATEX的断行机制不能很好的发挥作用,总有些文本在右边界突出,那么这个选项就会用一个粗黑条来标识它,以使得突出易见。
final 与draft相反,这是默认值。无论文本行有多宽,也不会加上标识。
如果同时给出了多个选项,那就要用逗号把它们分开,例如,
\documentclass [11pt,twoside,fleqn] {article}
选项顺序是无关紧要的。如果同时指定了两个矛盾的选项,无法确定哪个将发挥作用。这主要看在类文件中的具体定义了,因此最好避免出现这种情形。
与某些选项相关的参数
有些选项要使用一些已有确定默认值的参数:
\mathindent
当选择了fleqn
时,指定公式相对于左边界的缩进量;\columnsep
为twocolumn
选项指定两列间距;\columnseprule
为twocolunn
选项确定两列间竖线的宽度。默认值是宽度为零,即设以竖线。
这些参数的标准值可以用LATEX 命令\setlength
来修改。例如,要把\mathindent
改为2.5cm,可以用
\setlength{\mathindent}{2.5cm}
对这些参数的修改,既可以在导言中进行,也可以在文档的其它任意地方进行。在导言中进行的修改,适用于整个文档,而在文本内的修改,其作用终止于下一次修改,或者它所在的环境结束。在后一种情形中,先前的值就开始继续发挥作用。
页面样式
\pagestyle{样式}
对不可省参数,有如下可取的值:
plain
页面的页眉是空的,页脚由居中的页码组成。当在导言中没有\pagestyle时,这是默认值。
empty
页眉和页脚都是空的;也不显示页码。
headings
页眉由页码及文档类所决定的标题信息(章节标题)组成;页脚为空。
对每一章的第一页没有作用。
myheadings
同headings差不多,除了页眉的标题不是自动选取,而且由\markright或\markboth命令显式决定(见下面的解释)。
\thispagestyle{样式}
的作用同\pagestyle 一样,只是它只对当前页起作用。
例如,利用命令
\thispagestyle{empty}
可以取消当前页的页码。这实际上只是不打印页码,下一页的页码就与没有用该命令一样。
页眉
对于页面样式headings
和myheadings
,出现在页眉中的信息可以用下面的声明米确定:
\markright{右边纸页眉}
\markboth{左边纸页眉}{右边纸页眉}
\markboth
声明用于文档类选项为\twoside
,这时假定偶数页位于左边,奇数页右边。而且,对左边页,页码打印在页眉的左边,对右边页,页码打印在页眉的右边。
对于单面输出,认为所有页都是右手方向的。在这种情况下,应该用声明\markright
。但对双面输出,也可以用它来重新定义\markboth
中的右边纸页眉。
对于页面样式headings
,位于页眉上的标准信息是章、节和小节的标题,具体要看文档和页面样式,对此有如下的图解:
如果在一页上有不只一个\section
或\subsection
,就在页眉上显示最后那一个的内容。
命令\leftmark
存放页面上最后一个左标记(页眉上的内容),\rightmark
存放页面上第一个右标记(页眉上的内容)。
页的编号
定义页编号的声明形式如下:
\pagenumbering{数字形式}
数字形式
可取如下值:
arabic
通常(阿拉伯)数字,roman
小写罗马数字,Roman
大写罗马数字,alpha
小写字母Alpha
大写字母。
标准值是arabic
。这个声明把当前页码重置为1。为了用罗马数字显示前言的页码,而其余部分用罗马数字显示,而且第一章开始的页码为 1 ,那就必须在开始前言时用声明\pagenumbering{roman}
,然后紧接第一个\chapte
r命令,把其重设为\pagenumbering{arabic}
。
如果想使页码不是从1开始编号,那么可以使用命令.
\setcounter{page}{页码}
这里的页码是前一页的编号。
fancyhdr
页眉页脚宏包
fancyhdr
宏包提供了新的页面风格 fancy ,我们可以通过 fancy 风格来设置我们的页眉页脚。页眉页脚的设置一般都放在导言区或文档类模板中。放置到自定义的文档类模板中的包加载命令为 \RequirePackage
,但效果和 \usepackage
是一样的。首先我们先使用 \RequirePackage{fancyhdr}
或 \usepackage{fancyhdr}
命令引入fancyhdr
宏包。
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancypagestyle{preContent}{
\fancyhead{}
\renewcommand\headrulewidth{0pt}
\fancyfoot[C]{\thepage}
}
fancyhdr
将页面布局分成如下几个部分:
可以看到由页面页脚左中右共6个部分组成,考虑到双面文档的奇数页和偶数页则共有12个部分。另外还有2个装饰性的分割线。
我们用 \renewcommand{\headrulewidth}{0pt}
来清除页眉中的分割线,如果想清除页脚中的分割线可以使用 \renewcommand{\footrulewidth}{0pt}
。
(重)定义fancy页面样式
\fancypagestyle{pagestyle}{commands}
其中pagestyle
是一种页面格式的名字,也可以是已经存在的页面格式(包括标准格式),这样可以重定义标准格式。
\fancyhead[places]{field}
\fancyfoot[places]{field}
\fancyhf[places]{field}
其中,places
是内容field
的放置位置,用逗号分隔,其选项参数如下:
参数 | 意义 | 分组 |
---|---|---|
E | 偶数页 | 1 |
O | 奇数页 | 1 |
L | 左区域 | 2 |
C | 中间区域 | 2 |
R | 右区域 | 2 |
H | 页眉 | 3 |
F | 页脚 | 3 |
这些参数应用在 \fancyhead{},\fancyfoot
{} 和 \fancyhf{}
命令中。其中第三组参数只应用在 \fancyhf{}
命令中。通常我们只用 \fancyhf{}
命令来清空页眉页脚,而真正的设置都是使用带前两组参数的 \fancyhead{}
和 \fancyfoot{}
来完成。
可以看到不同组的参数在使用过程中可以进行组合,如 OR
表示奇数页右区域,EL
表示偶数页左区域。而 \fancyhead[OR,EL]{\thepage}
表示页眉的奇数页右侧和偶数页左侧放置页码。
\fancyheadoffset[places]{field}
\fancyfootoffset[places]{field}
\fancyhfoffset[places]{field}
这些定义了偏移量,以使标题粘贴到边距中(如果为负数,则粘贴到内部)。places
不能包含C。
\headrulewidth
和 \footrulewidth
是决定页眉下方分割线的粗细和页脚上方分割线粗细的宏命令,\headrule
和 \footrule
是详细定义分割线的宏命令。\headwidth
是一个决定页眉页脚总体宽度的长度参数。
Using extramarks
标准marks:
\rightmark %当前的节名;
\leftmark %当前的章名;
\chaptermark \sectionmark \subsectionmark命令用来定义\leftmark和\rightmark;
我们可以通过改变\chaptermark,\sectionmark and \subsectionmark
命令来改变chapter,section和subsection信息的呈现方式。
以chapter info为例,其由三部分组成:
- 宏命令
\thechapter
,是一个数字 - 章节名称(in English,
Chapter
),由宏命令\chaptername
储存 - chapter标题
下面第一个例子将呈现"CHAPTER 2. Do it now",第二个例子呈现"2. Do it now"
\renewcommand{\chaptermark}[1]{ \markboth{\MakeUppercase{ \chaptername}\ \thechapter.\ #1}{}}
\renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ #1}{}}
扩展marks:
\firstleftmark
\lastrightmark
\firstrightmark
\lastleftmark
其中,\firstrightmark=\rightmark
和\lastleftmark=\leftmark
。就像标准标记,用于页眉和页脚。在其他地方它们不能正常工作。
\extramarks{left}{right}
\firstleftxmark
\firstrightxmark
\topleftxmark
\toprightxmark
\lastleftxmark
\lastrightxmark
\firstxmark
\lastxmark
\topxmark
命令 \extramarks{left}{right}
定义了额外两个页眉marks,剩下的命令和没有x的命令类似。
例子:
\fancypagestyle{appendixFancy}{
\fancyhf{}
\renewcommand\headrulewidth{.5pt}
\renewcommand\footrulewidth{0pt}
\fancyhead[OC]{\fzkai{\leftmark}} % 页眉章标题
\fancyhead[EC]{\fzkai{\@title}} % 页眉文章题目
\fancyhead[OR,EL]{\thepage} % 页眉编号
}
您可以使用\\
命令生成多行字段。也可以使用\vspace
命令在页眉字段中添加额外空间。
文档中页面风格切换
在文档中进行风格切换依然使用的是 \pagestyle{}
命令,如文档的开始使用 \pagestyle{preContent}
设置前言的页面风格,正文之前使用 \pagestyle{mainFancy}
设置正文页面风格,附录之前使用 \pagestyle{appendixFancy}
设置附录的页面风格。
与段落有关的距离
用\setlength
来设定新值:
-
\parskip
两个段落之间的距离。以ex
为单位,可以使它随着字体尺寸而自动改变,其应是一个橡皮长度。 -
\parindent
段落中第一行的缩进量。 -
\baselinestr
这是一个度量两条基线之间正常间距的数值,所谓基线就是字母所坐的位置,即忽略类似于g和y这样的字母下挂的部分。这个值初始化为1,表示标准的线距。它可以用下面的命令改值:\renewcommand{\baselinestretch}{因子}
这里的因子是十进制小数,如1.5表示增加了50%。这样其就适用于所用的字体尺寸。如果这条命令放在导言外,那么要直到选择了另一条字体尺寸命令,其才会发挥作用。
这些参数既可以放在导言中,也可以放在文档的其它任何地方。在后一种情况里,这种修改的作用持续到下一次修改为止, 或者它所在的环境结束。
真正的行间距是包含在\baselineskip
这个长度参数中,只要声明了一个字体尺寸,就会自动设置其值。对每一种字体尺寸, 都存在一个正常值,把它乘上\baselinestretch
,就是\baselineskip
。
如果在一个段落中间修改\baselineskip
,新值确定了整段的行间距。更精确地说,在一段结束时的值才有效。
页面格式
每一页都是由页眉、 包含实际文本的正文,以及页脚组成的。所谓页样式的选择就是确定在页眉和页脚中应包含哪些信息。
对于页眉,正文与页脚之间的距离,上页边界和左页边界,文本行宽,以及页眉、正文和页脚的高度,LATEX 都有默认值。在图3.1中演示了这些格式化长度的意义。可以给这些长度声明一个新值,这些声明最好放在导言中,使用命令\setlength
。例如,可以用\setlength{\textwidth}{12.5cm}
来使文本行宽变为12.5cm 。
\oddsidemargin
奇数页的左边界,\evensidemargin
偶数页的左边界,\topmargin
从上页边到页眉顶的距离,\headheight
页眉的高度,\headsep
页眉基线到正文顶部的距离,\topskip
从正文顶部到正文第一行的基线之间的距离,\textheight, \textwidth
主要正文的高度和宽度,\footskip
从正文底部到页脚底部的距离,\paperwidth, \paperheight
由纸张大小选项所确定的总宽度和高度,包含所有的页边。
LATEX中的度量是从纸张上边一英寸的点和纸张左边–英寸的点开始的。因此整个左边界是\oddsidemargin
加上一英寸。已经包含了这个额外一英寸的LATEX2e参数\paperwidth
和\paperheight
是通过在\documentclass
中的纸张大小选项赋值的;在内部用它来计算页边界,从而使文本居中。用户也可以使用这两个参数。
对于文档类book或者选项twoside ,每一页上正文的底边恰好处在相同的位置上。而对于其它的类或选项,这就会稍有点儿变化。在前面那两种情形中,常量底边是用内部命令\flushbottom
来得到的,而变化的底边是用命令\raggedbottom
生成的。用户也可以用这两个声明来随时改变底边的形式,从而使之与文档类和选项无关。
单双列页面
文档类选项twocolumn
可以使整篇文档的每页都是双列形式显式。而默认值是每页为单列形式。如果要使某一单独页以双列或单列形式排版,可以用下面的声明来达此目的:
\twocolumn[文本]
它中止当前页,用两列形式排版后面的每一页。这里的不省略文本是用一列形式显示在页面顶部的,所用的是整页的宽度。
\onecolumn
中止当前的双列页面形式,用单列形式排版后续的每一页。
选项twocolumn
会自动地改变某些相对于单列格式时的样式参数,例如缩进量。而对于命令\twocolumn
,就不会进行这种操作。如果你想要进行这种改变,那就必须用相应的\setlength
声明来实现这一点。如果整篇文档都是双列格式,那么类选项不失为一种最好的方案。
还有一个页面样式参数\columnwidth
,它表示一列文本的宽度。对于单列文本,它与\textwidth
是相同的,当选择的是twocolumn
时,LATEX就会
根据\textwidth
和\columnsep
的值来计算出其值。
文档中的部分
标题
标题页可以用如下环境来生成没有格式的形式:.
\begin{titlepage}标题页文本\end{titlepage}
或者用如下命令利用LATEX已预定义好的格式:
\title{标题文本}
\author{作者名与地址}
\date{日期文本}
在标题页的LATEX标准格式中,所有内容将来都是以居中的形式出现的。
如果标题太长,也会自动断行。作者自己可以用命令\\
来选择断行点,也就是说所用形式为\title{...\\...\\...}
。
如果有几个作者,其姓名可以用\and彼此分开,如
\author{G. Smith \and J. Jones}
这些姓名将在会打印在一行上。而
\author{作者1\\学术团体1\\地址1 \and 作者2\\学术团体2\\地址2}
就会把作者1,学术团体1,地址1
和作者2,学术团体2,地址2
分成两部分,分别一行行的居中排列。而且这相邻的两块在标题页上也是居中的。
如果不想把作者名左右相邻排版,也可以把它们上下排列,这时只要用\\
取代\and
就可以了。此时,可以用紧接\\
后的可以省略的长度定义[距离]
来调整竖直距离。
如果没有给出\date
命令,就会自动在标题页的作者项后加上当前日期。另一方面,命令\date{日期文本}
就会在出现日期的地方显示日期文本。这个地方可以插入任何文本,也可以用断行命令\\
以插入多行文本。
命令
\thanks{脚注文本}
可以出现在title,author和date
文本的任何地方。它会在命令出现的地方加上一个标志,而在标题页上以脚注的形式排版脚注文本。
要想以出现在title, \author, \date和\thanks
中的条目生成标题页,就必须用命令
\maketitle
标题页本身没有页码,后续文档第一页的页码为1。只有在book和report中,标题页才会单独占一页。而在article中,当使用了命令\maketitle
时,就会以来自于\title, \author
以及可能有的\date 和\thanks
中的条目在第一页上创建居中标题头。如果用了titlepage
文档选项,那么即使在article中也会让标题位于单独一页上。
对于在titlepage
环境中的没有格式的标题页,命令\title和\author
是没有作用的,整个标题页的设计来自于作者在这个环境中的定义。在这种情形里,当结束titlepage
标题页环境时,就会实现标题页的排版,因此也不需用命令\maketitle
。
摘要
可以用下面的命令生成摘要:
\begin{abstract}摘要文本\end{abstract}
在文档类report中,摘要是位于单独一页上的,而且有页码;在article中,摘要是紧接标题头位于第一页上,除非选择了文档类选项titlepage
,在这种情形中,摘要也是单独占一页的。在文档类book中没有摘要。
章节
下面的命令可以用来自动生成有序的章节:
\part \chapter \section \subsection \subsubsection \paragraph \subparagraph
除\part
外,其它命令形成一个章节序列。在文档类book和report中,最高的章节层次是\chapter
。章用命令\section
分为节,它又可以进一步用\subsection
等等再细分。在文档类article
中,序列是由\section
开始的,因为这时\chapter
是不可用的。
所有这些命令的语法是
\章节命令[短标题]{标题}或者
\章节命令*{标题}
在第一种情形中,把序列中下一个编号赋给章节,并把这个编号同来自于“标题”的文本一起做为章节标题显示出来。“短标题” 文本是用于目录和页眉(假定已选择了headings页面样式)。如果没有这部分文本,就假定其与“标题”是一样的。除非这里的标题太长,不适用出现在上述地方,否则通常就不出现这部分文本。
在第二种(*-形式)情形中,不会打印出节号,而且不会在目录表中列出该项。
章节标题的大小和编号的长度与章节命令在序列中的位置有关。对于文档类
article,\section
命令就生成单个数字,而\subsection
命令生成两个数字,中间用句号分开这两部分,其它依次类推。
在文档类book和report中,用\chapter
命令给出的章标题是单个数字为编号,而\section
得到的则是两个数字,依次类推。而且,\chapter
命令总是开始新页,并在章节标题上面打印Chapter n,这里的n表示当前章编号。
对于每个章节命令,都有一个内部记数器,每当调用一次命令,对应记数器就会增一,而当调用下一个更高级的章节命令时,其就会被重置为0。这些记数器不受*-
形式的影响,这个事实在如下情况中会造成一种困难:那就是当标准形式和*-
形式混用,而*-
形式命令在序列中的位置要比标准形式的高。然而,如果*-
形式总是低于标准形式,这就不会产生什么问题。下面的序列
\section . . . \subsection . . . \subsubsection* . . .
的结果就是\section
和\subsection
有编号,而\subsubsection
没有编号。
章节命令\part
是一个特殊情形,它对其它命令的编号没有影响。章节的自动编号就意味着在写作的时候,可能不需要知道编号。作者没有必要按最终的顺序进行创作,也可以加进或去掉一些章节。
每一个章节命令都有一个层次号,如\section
总是第1层,\subsection
为第2层…,\subparagraph
为第5层。在文档类article中,\part
为第0层,而在book和report类中,\part
为第-1层,\chapter
成为第0层。
章节编号向下进行的层次由secnumdepth
决定。对于book和report,其值为2,而对于article ,其值为3。 这也就是说对于book和report,章节编号只进行到\subsection
层次,而对于article,则是到\subsubsection
。
为了拓展(或减小)章节编号的层次,那就必须改变secnumdepth
的值。这可以用命令
\setcounter{secnumdepth}{ 数}
来实现。在article中,secnumdepth
可以取-1到5之间的值,而对于book和report,可取-2到5之间的值。取最小值意味着禁止所有的章节编号。
在文档中也可以用如下命令来改变章节命令的初始值:
\setcounter{章节名称}{数}
附录
可以用命令\appendix
来加进附录。这一命令具有重设article中的节记数器和book与report中章记数器的作用,而且它把这些章节命令的编号形式从数字变为大写字母A,B, … 。另外,还用单词’Appendix’代替‘Chapter’,因此后续章节的标题前缀变为‘Appendix A’,‘Appendix B’,等等。低层章节命令的编号中用字母取代了章节编号,如A.2.1。另外一种方法是,附录也可以包含在如下一个环境中:
\begin{appendix}
附录文本
\end{appendix}
书的结构
-
\frontmatter
:前言,目录
关闭章节序号, 页码使用罗马数字; -
\mainmatter
:正文的主体
开启章节序号计数,重置页码,页码使用阿拉伯数字; -
\appendix
:重置章节序号计数, 章节序号使用字母,对页码没有影响; -
\backmatter
:参考文献,索引,版本记录
关闭章节序号,对页码没有影响。
目录表
自动条目
出现在目录表中的章节深度可以在导言中用命令
\setcounter{tocdepth}{数}
来设定。这里的数与上面描述的secnumdepth
记数器中的意义相同,而自动分章节的最大层次是固定的。到哪一层次的章节可以包含在目录表中,与自动章节编号中的是一样的,也就是说,对book和report到\subsection
,对article到\subsubsection
。
显示目录表
目录表的生成和显示是用下面的命令实现的:
\tableofcontents
把这条命令放在希望目录所位于的地方,通常就放在标题页和摘要的后面。
这就导致了一个两难的处境,因为目录表的信息是显示在靠文档开头地方,而这些信息直到文档结束才可能全知道。LATEX是如下解决这个问题的:当目录第一次被处理时,并没有包含进任何目录表信息,而是由LATEX打开一个与文档文件同名,而后缀为.toc的新文件;在后面的处理过程中,把目录表所需的条目写到这个文件中。
当下次对这个文档运行IATEX时,\tableofcontents
命令使得文件文档名.toc被读入,从而打印出目录表。当继续后面的处理时,如果在运行后前一次后做了 很大改变,那么.toc 文件会被更新。也就是说打印出来的目录表总是对应于前一次文档的。正是由于这个原因,对于最后的文档,应该运行两次LATEX。
其他条目
*-形式的章节命令不会自动加入到目录表中。为了把它或其它条目插入到目录表中,可以用命令:
\addcontentsline{toc}{章节名称}{条目文本}
\addtocontents{toc}{条目文本}
用第一条命令,就会形成目录表格式的相应条目,其中section标题头要比chapter的向里缩进一些,但比subsection缩进的少。这是由章节名称参数决定的,取值为章节命令没有了前缀\字符(如section )。 条目文本与页码一起插入到目录表中。如果想同标准形式那样也有章节编号,那么条目文本必须具有形式\protect \numberline{章节名称}{文本}
。
\addtocontents
命令把任何所希望的命令或文本加入到.toc 文件中。它可以是一条格式化命令,如\protect\newpage
,当显示目录表时这些命令会发挥作。
其他列表
除了目录表,图与表的清单列表也可以由LATEX自动生成和显示出来。
生成这些列表的命令为:
\listoffigures 读和/或生成文件.lof
\listoftables 读和/或生成文件.lot
在这些列表中的条目是根据figure和table环境中的\caption命令自动生成的。其它条目可以用与目录表相同的命令生成,它们的一般形式为:
\addcontentsline{类型}{格式}{条目}
\addtocontents{类型}{条目}
这里的类型代表toc (目录表)、lof (图的列表)和lot (表格的列表)三种类型中的一种。格式
参数就是上面描述的目录表中的章节名称,或者图列表中的figure,以及表格列表中的table。条目参数表示要插入相应文件中的文本。
精调正文
用命令\
,可以生成一个很小距离。这一点是有用的,例如,当双引号“和”与单引号‘和’在一起时,可以用\
,,把它们分开。
插入任意距离
可以用下面的命令在文本间插入任意大小的距离:
\hspace{距离}
\hspace*{距离}
这里的距离就是所要指定的间隔长度,例如1.5cm或3em。(注意一个em就是当前字样中字母M的宽度)
这两条命令在调用点和接下来要显示的对象之间插入宽度等于上述距离的空白。用标准形式(没有* ),可以使得若间隔位于两行之间时,就去掉这个的空档,这就如同在一行的开头,空格要去掉一样。而另一方面,*-形式不管任何情况,都会插入空白。
这里定义的距离也可以是负数,这样该命令就如同退格,在另一个字符上打印新的字符。
命令\hfill
就是\hspace{\fill}
的缩略形式。它会在其两边的文本之间插入足够大的空白,从而使它们分别靠近左右页边。
在一行上有多个\hfill
,那个它们每个都会插入相同宽度的空白,从而使这一行变得左右协调。
如果\hfill
位于一行的开头,根据\hspace
标准形式的行为准则,这个空白是被去掉的。如果确实需要在一行的开头或结尾加上一个橡皮空白,那就必须用\hspace*{\hfill}
。
插入长度可变的…和___序列
还有两条命令,其用法同\hfill
完全一样:
\dotfill和\hrulefill
当不想插入空白时,可以用这些命令插入点或直线。
也可以用许多其它的长度固定的水平距离:
\quad和\qquad
命令\quad
插入一个长度等于当前字样尺寸的空白,即若当前为10pt字样,则插入10pt,而\qquad
是其两倍。
段落间距
段落间的正常间距是由长度\parskip
设置的,可以用命令\setlength
来改变其初始值:
\setlength{\parskip}{距离}
也可以用如下命令在某一特定段落间加上额外的竖直距离:
\vspace{距离}
\vspace*{距离}
即使在此处开始一个新页,或者命令位于新页的开头,*-
形式也要加上这个额外空档,而同样对这两种情形,标准形式禁止加上额外竖直距离。
如果在一个段落中间用这两条命令,那就在当前行后面加上额外间距,而且按能常那样对当前行进行左右调整。
距离
参数可以为负数,这样可以抬高后面文本的相应于正常打印的位置。
命令\vfill
是\vspace{\fill}
的缩略形式。其等价于水平间距的\hfill
,它会插入足够的竖直空白,以使得文本的顶部和底部与页面的顶部和底部对齐。对于同时出现多个\hfill
的解释,也同样适用于\vfill
。如果这条命令位于一页的开头,它没有任何作用,这同标准形式\vspace*{\fill}
一样。如果想在页面底部加上一个橡皮间距,那就必须用*-
形式\vspace*{\fill}
了。
其它的用于增加段落间距的命令是
\bigskip \medskip \smallskip
这些命令根据在文档类中声明的字体尺寸来确定增加的竖直距离。
如果不用空行,也可以用命令\par
来表明一个段落的结束。
段落的缩进
段落缩进的大小是由长度\parindent
决定的,可以用命令\setlength
改变它的值
\setlength{\parindent}{距离}
这样每段的第一行左边都有一个宽度为上面距离
参数指定的空白。如果想取消某一段落的缩进,或者如果没有缩进时想强迫出现缩进时,可以用下面的命令做到:
\noindent
和\indent
要把它们放在段落的开始,这样它们才会发挥作用。
断行
把文本断成行的操作是由TEX和IATEX自动进行的。然而,也有这样的时刻,你想强迫或希望在某地方断行,或不想在某地方断行。
命令\\
可以用命令\\
来得到一个有或没有额外行距的新行。该命令的语法为
\\[距离]
\\*[距离]
这里的可省参数距离
是一个长度,它用来定义增加多少额外的行间距。如果此时需要开始一个新页,那就不加这个额外间距,新页开头为下面的文本行。*-
形式禁止在两行之间分页。
用\\*[10cm]
,当前行就会结束,在这行与后面文本加上一个10cm的竖直距离,而且这两行文本必须在同一页上。如果需要一个分页,那就会在当前行前面进行,这样当前行,10cm 的竖直距离,以及后面的文本就位于新页上。
命令\newline
与没有可省参数的\\
命令是一样的。也就是说,新行之前没有额外的空白,而且此处也可以分页。
这两条命令都可以用在段落中间,除此而外,它们再没有其它意义。
其它的断行命令
命令\linebreak
用来鼓励或强迫在文本中某点断行。它的形式为
\linebreak[数]
这里的数为可省参数,它是一个介于0到4之间的数,用来表示断行的重要性。这条命令鼓励断行,越大的数,鼓励的力度就越大。取0值表示允许在本来不会断行的点处(如一个单词的中间)可以断行,而4意味着必须断行,它等同于没有参数的\linebreak
。这条命令与\\
或\newline
的区别在于当前行要进行左右调整,增加单词问距,以使文本充满该行。而对于\\
和\newline
,当前行用空白填充最后一个单词后的空白,单词间距保持正常值不变。
与之相反的命令为
\nolinebreak[数]
它不鼓励在给定点断行,这里的数表示不鼓励的力度。而且没有参数的命令\nolinebreak
同\nolinebreak[4]
有一样的效果,即在这里绝对不可能进行
断行。
另外一种使文本呆在一行上的方法是用命令\mbox{文本}
。对于类似于’Voyager-1’这样的表达式,如果想在连字符处禁止断行,用这个命令就是非常方便的。
分页
正常分页
命令
\pagebreak[数]
\nopagebreak[数]
等价于断行时的\linebreak
和\nolinebreak
。如果\pagebreak
位于两段之间,那就会在此处进行分页。如果它位于一段的中间,那么就会在当前行完成后进行分页。同样要对该行进行左右调整。
命令\nopagebreak
具有相反的作用:在两段之间,它禁止在这儿分页;在一段中间,那它禁止可能在当前行后面出现的分页。
界于0到4之间的可省略参数表达了鼓励或不鼓励分页的力度。而且\linebreak要做更多的事:除了把断开的行增加单词间距,进行左右调整,还要增加行间距,以使页面项部和底部分布一致。
要在一页中间结束该页,用空白填充余下空间,再开始一个新页的命令是
\newpage
它等价于分页中的\newline
命令。
有图表时的分页
如果文本中有表格,图画或者为插图预留的空间,它们会被插入在与相应于命令出现的地方,前提条件是在当前页上要有足够的空间。如果没有足够的空间,就会继续正文,而把图表保留到下一页上。
命令
\clearpage
同\newpage
命令一样结束当前页,而且用一页或多页来输出没有打印的图表。
两列模式时的分页
如果选择了文档类选项twocolumn
,或者用了命令\twocolumn
,那么命令\pagebreak
和\newpage
就会结束当前列,开始一个新列,即把列当做页处理。另一方面,\clearpage
和\cleardoublepage
就是中止当前页,如果必要的话,插入一个空列。
两面模式时的分页
当选择了文档选项twoside
时,还可以用一个分页命令:
\cleardoublepages
它的作用同\clearpage
一样 (当前页被中止,所有未打印的图表输出在后面的页上),而且接下来的页应是奇数页。如果必要的话,由此会得到一个具有偶数页码的空页。
有限制的分页.
声明\samepage
可以使得分页只会发生在段落之间,显示公式或文本的前后,一个章节标题的前后,或者列表环境中的\item
(第一个除外) 之间。如果想在正文其它地方进行分页,那就必须用命令\pagebreak
了。
控制分页
LATEX2e用如下命令提供了稍微增加当前页高度的可能性:
\enlargethispage{尺寸}
\enlargethispage*{尺寸}
这两命令把定义中的尺寸
只加到当前页的\textheight
上。有时候只需要稍微一点儿的调整,就可以避免一一个糟糕的分页。命令的*-
形式在当前页上无论如何也要调整行距,以最大化文本高度。
\documentclass{book}
.......
\includeonly{...}
\begin{document}
\frontmatter \include{toc}
\mainmatter
\include{chap1} . . . \include{chap8}
\backmatter \printindex
\end{document}
这里文件toc.tex就是由如下文本组成:
\setcounter{page}{7}
\tableofcontents \listoftables \listoffigures
通过在\includeonly
命令中填加适当的项,就可以有选择地处理各章:例
如,利用\includeonly{toc,chap8}
就可以只处理目录表和第8章。
索引
\usepackage{makeidx} % Required to make an index
\makeindex % Tells LaTeX to create the files required for indexing
\makeindex
这一命令激活所有的\index
命令,并打开一个文件,其基本名与文档文件相同,后缀.idx 。现在\index
命令就会向这个文件中写入索引条目和当前页码,格式为:
\indexentry{索引条目}{页码}
在正文中生成index命令
\index{索引文本}
打印索引表
\printindex