TEX:文档的布局与组织

news2024/11/18 21:31:17

文章目录

  • 标准的类选项
    • 指定纸张大小
    • 页面格式
  • 其他选项
    • 与某些选项相关的参数
  • 页面样式
    • 页眉
    • 页的编号
    • `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}
可以取消当前页的页码。这实际上只是不打印页码,下一页的页码就与没有用该命令一样。

页眉

对于页面样式headingsmyheadings,出现在页眉中的信息可以用下面的声明米确定:

\markright{右边纸页眉}
\markboth{左边纸页眉}{右边纸页眉}

\markboth声明用于文档类选项为\twoside ,这时假定偶数页位于左边,奇数页右边。而且,对左边页,页码打印在页眉的左边,对右边页,页码打印在页眉的右边。
对于单面输出,认为所有页都是右手方向的。在这种情况下,应该用声明\markright 。但对双面输出,也可以用它来重新定义\markboth中的右边纸页眉。
对于页面样式headings,位于页眉上的标准信息是章、节和小节的标题,具体要看文档和页面样式,对此有如下的图解:

在这里插入图片描述

如果在一页上有不只一个\section\subsection,就在页眉上显示最后那一个的内容。

命令\leftmark存放页面上最后一个左标记(页眉上的内容),\rightmark存放页面上第一个右标记(页眉上的内容)。

页的编号

定义页编号的声明形式如下:

\pagenumbering{数字形式}

数字形式可取如下值:

  • arabic 通常(阿拉伯)数字,
  • roman 小写罗马数字,
  • Roman 大写罗马数字,
  • alpha 小写字母
  • Alpha 大写字母。

标准值是arabic。这个声明把当前页码重置为1。为了用罗马数字显示前言的页码,而其余部分用罗马数字显示,而且第一章开始的页码为 1 ,那就必须在开始前言时用声明\pagenumbering{roman},然后紧接第一个\chapter命令,把其重设为\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 将页面布局分成如下几个部分:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/388774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XMLHttpRequest、ajax、Promise、axios、async await

1.XMLHttpRequest(xhr) 什么是xhr xhr是浏览器提供的js对象,通过它来向服务器来请求资源。jquery中的Ajax是基于xhr对象来封装资源的 使用xhr发起get请求 // 1. 创建 XHR 对象var xhr new XMLHttpRequest()console.log(xhr, 我是xhr);// 2. 调用 open 函数xhr.…

性能优化(2)-渲染优化

一、渲染优化 如果把浏览器呈现页面的整个过程一分为二,前面所讲的主要是浏览器为呈现页面请求所需资源的部分;本章将主要关注浏览器获取到资源后,进行渲染部分的相关优化内容。 在前面的前端页面的生命周期课程中,介绍过关键渲染路径的概念,浏览器通过这个过程对HTML,CSS, J…

<学习笔记>从零开始自学Python-之-web应用框架Django( 十二)上下文处理器

1.在模板中处理上下文处理 上下文就是一系列模板变量和相应的值。模板使用上下文填充变量,放到标签里显示在页面。在 Django 中,上下文使用 django.template 模块中的 Context 类表示。 它的构造方法接受一个可选参数:一个字典&#xff0…

HCIE-Cloud Computing LAB备考第二步:逐题攻破--第二题:FusionAccess-思维导图+题目=建立逻辑

第二题 FusionAccess markmap思维导图1 将上述思维导图跟下述题目结合,以题目顺序辅助记忆思维导图,有了思维大纲,做起实验,也就有逻辑线路,必定手掐把拿。 2.1 搭建FA实验环境(随机二考一) FA1、FA2两台服务器,请通过VNC登陆,按照题目要求根据服务器参数选择安装对…

推荐几款主流好用的markdown编辑器

介绍 随着技术的不断发展和人们对效率的追求,Markdown 编辑器已经成为了许多人写作的首选工具。Markdown 是一种轻量级的标记语言,使用简单,方便快捷,且可以方便地转换成各种格式的文件。在这篇文章中,我们将介绍几款…

移动端适配之动态 rem 方案

代码 就是设置浏览器字体&#xff0c;从而实现根据屏幕动态计算大小 <script>const WIDTH 750; // 设计图尺寸const setView () > {document.documentElement.style.fontSize screen.width / WIDTH "px";};window.onorientationchange setView;setVi…

JUC入门 | 黑马

一、进程和线程 进程 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至CPU&#xff0c;数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理I0的 当一个程序被运行&a…

OpenGL中的坐标系

1、2D笛卡尔坐标系2D笛卡尔坐标系跟我们高中的时候学习的坐标系一样&#xff0c;是由x、y决定的。2、3D笛卡尔坐标系3D笛卡尔坐标系坐标由x、y、z决定&#xff0c;满足右手定则。3、视口glViewport(GLint x,GLint y,GLsizei width,GLsizei height)窗口和视口大小可以相同&#…

手敲Mybatis-反射工具天花板

历时漫长的岁月&#xff0c;终于鼓起勇气继续研究Mybatis的反射工具类们&#xff0c;简直就是把反射玩出花&#xff0c;但是理解起来还是很有难度的&#xff0c;涉及的内容代码也颇多&#xff0c;所以花费时间也比较浩大&#xff0c;不过当了解套路每个类的功能也好&#xff0c…

@mixin与@include介绍

目录mixin与include介绍定义一个mixin使用mixin传递变量如何引入mixinmixin与include介绍 在Sass里面&#xff0c;我们经常会见到mixin与include。 其中 mixin允许定义一个可以在整个样式表中重复使用的样式 include就是将我们定义的mixin引入到文档中 定义一个mixin mixin…

【春招面经】视源股份前端一面

前言 本次主要记录一下视源股份CVTE前端一面 &#xff08;3.3下午4点15&#xff09; 文章目录前言本次主要记录一下视源股份CVTE前端一面 &#xff08;3.3下午4点15&#xff09;问题总结介绍一下项目的来源以及做这个项目的初衷一直监听滚动&#xff0c;有没有对性能产生影响&a…

大数据技术之——zeppelin数据清洗

一、zeppelin的安装zeppelin解压后进入到conf配置文件界面。修改zeppelin-site.xml[roothadoop02 conf]# cp zeppelin-site.xml.template zeppelin-site.xml[roothadoop02 conf]# vim zeppelin-site.xml将IP地址和端口号设置成自己的修改 zeppelin-env.shexport JAVA HOME/opt/…

Linux小黑板(10):信号

我们写在linux系统环境下写一个程序&#xff0c;唔&#xff0c;"它的功能是每隔1s向屏幕打印hello world。"这时&#xff0c;我们在键盘上按出"Ctrl C"后,进程会发生什么&#xff1f;&#xff1f;我们清晰地看到&#xff0c;进程已经在我们按出"Ctrl…

UML2——行为图

目录 一、前言 二、活动图 三、交互图 3.1 一般序列图 3.2 时间约束序列图 3.3 协作图 四、用例图 五、状态图 一、前言 UML 是由视图&#xff08;View&#xff09;、图&#xff08;Diagrams&#xff09;、模型元素&#xff08;Model elements&#xff09;和通用机制等几…

(图像分割)基于图论的归一化分割

解释&#xff1a;将图像映射成图&#xff0c;以图为研究对象&#xff0c;利用图的理论知识获得图像的分割。 下面介绍&#xff1a;图的基本理论&#xff0c;基于图论的归一化分割算法 一、图的基本理论 图G&#xff1d;&#xff08;V&#xff0c;E&#xff0c;&#xff09;&…

《管理世界》数据复现:国有资本参股如何影响民营企业?——基于债务融资视角的研究

摘要&#xff1a; 本文以债务融资为切入点&#xff0c;从“未阐明的规则”和“阐明的规则”两个层面探讨了国有资本参股的“反向混改”是否以及如何影响民营企业。研究发现&#xff1a;国有资本参股可以显著降低民营企业的债务融资成本&#xff0c;扩大债务融资规模。…

性能测试——LoadRunner: Controller的使用

Controller Controller是用来创建测试环境&#xff0c;执行在VUG中编写的测试脚本 可以直接点击Controller的快捷方式打开,也可以在VUG中打开 这里将虚拟用户数设置为3,比较适合自己的电脑性能 整个controller分为下面几个模块 这里先设置左下角的目标计划 设置初始化:双击…

PHP 8.1.14升级低版本openssl扩展的操作方法

问题背景&#xff1a; PHP8.1.4内嵌openssl源码编译出来的openssl库版本号是1.0.2.x系列&#xff0c;低版本的openssl扩展存在安全漏洞&#xff0c;需要将该扩展升级openssl 社区最新版本3.0.8 操作步骤&#xff1a; 安装最新版本的openssl wget https://github.com/openssl…

Java面试总结(四)

synchroize的实例、静态、代码块的锁对象 修饰实例方法 修饰静态方法 修饰代码块 1、修饰实例方法 &#xff08;锁当前对象实例&#xff09; 给当前对象实例加锁&#xff0c;进入同步代码前要获得 当前对象实例的锁 。 synchronized void method() {//业务代码 }2、修饰静…

在vue中如果computed属性是一个异步操作怎么办?

在计算属性中使用异步方法时&#xff0c;可以使用async/await来处理异步操作。由于计算属性是基于它们的依赖缓存的&#xff0c;所以我们需要使用一个返回Promise的异步方法来确保计算属性能够正常运行。 下面是一个简单的示例&#xff0c;演示如何在计算属性中使用异步方法&am…