Next Previous Contents

3. TeX 命令

准备 TeX 可以排版的文件是很容易的,只要确定本文文档的段落之间,都有一空白列,然后执行:

tex your_text_file
结果将会产生一个相同文档名字,但副文档为 .dvi 文档。 TeX 内定用 10 点的 Computer Modern Roman 字型,单行行距的方式,格式化文件,并自动调整左边和右边的边缘。如果你收到像 $ 一样的错误信息,就在它的前面加一个反斜线 \,再一次执行TeX 。你应该能够用前面选择的 .dvi 翻译器,列印产生的文档。TeX 输入的一个特质是,双引号与单引号的前面和后面,分为开始和结束,两种不同的符号,如果你使用 Emacs 的 TeX 模态输入,它会自动帮你做这些:
"These are ASCII-type quotes."
``These are `TeX-style' quotes.''

3.1 指令概论

TeX 中用一个反斜线 (``\'') ,当作命令的开始,举例来说,改变列距的命令为:

\baselineskip=24pt

基线是一条不含重音的字元底部的线,两条基线之间的距离,就是 \baselineskip的量,这里指定为 24 点。TeX 里的测量或尺寸,常用下列的单位:

pt                % 点 :       1/72 in.
pc                % 铅字体 :       12 pt.
in                %  吋 :   72.27 pt.
cm                % 公分 :  2.54 cm = 1 in.
mm                % 公? :  10 mm = 1 cm.

一些命令不指定尺寸的单位,举例来说:

\smallskip        % 大约 3 pt.
\medskip          % 两个 \smallskips.
\bigskip          % 两个 \medskips.

一个 \smallskip 在垂直的空间插入 3 pt 的距离,因为 TeX 会调整每一页中断位置,每一节标题和其他垂直的空间的单位尺寸,所以哪些量都是大概量,这对水平的间隔也是相同的。

\hsize=6.5in
这个命令,设定列宽为 6.5吋, TeX 藉由调整字距,装满每一列,如果在容忍度内, TeX 不能够装满一列,它会产生一个警告信息,而且尽可能调整好水平的间隔,格式的容忍度设定,参考 容忍度 一节。

有许多指定水平,垂直和容忍度的命令,普遍使用的命令,在下面会被提及。

3.2 字型命令

 在 TeX中,内定的字型是 10 pt 的 Computer Modern Roman 字型,可使用下列的命令,指定字形为斜体,粗体或打字机体:

  \rm          % 罗马体  ( 内定 ).
  \it          % 意大利斜体字
  \bf          % 粗体字
  \tt          % 打字机体
  \sl          % 斜体字
这个命令,会在他们出现的位置,开始改变文中的字形,就像:
This text is Roman, \it and this text is italic.  \bf This text is
bold, and \rm this text is in Roman again.

为了要在你的文件指定字型,可使用 \font 命令:

\font\romantwelve=cmr12
这创造了字型命令 \romantwelve,将字型换成12 点 Computer Modern Roman 字型。
\romantwelve
This is the Computer Modern Roman font at 12 points.
字型的资料可以看 teTeX 套件中的文档:
/usr/lib/teTeX/texmf/doc/fonts/fontname/fontname.dvi

如果你要列印一个字型的例子, TeX 下列文档:

/usr/lib/teTeX/texmf/tex/plain/base/fontchart.tex
而且在你要在提示号中,填上要列印的字型名字。

你也能由改变字型的大小,得到不同的效果,字型是依指数函数,由字型规格命令之后的 scaled \magstep 命令,来改变大小。

\font\sfmedium=cmss12 scaled \magstep 1
这个命令将会使用1.2 倍的 12 点 sans serif 字型。字型从 0 到 5 ,分为五种倍率,可供放大缩小,每种倍率都以1.2 倍的大小增加。

3.3 段落型态和尺寸大小

上面提到, TeX 内定以10 点 Computer Modern Roman 的字型排版,行距,\hsize 内定为 6.5 吋,如果你要改变 \hsize 为 5.5 吋,举例来说,使用这个命令:

\hsize=5.5in

在 TeX 中,调整水平或垂直的单位,就是这个量, dimension ,能随改变它的定义,而被增加或减少,跟尺寸大小有关的,是 skip ,它被放在 TeX 内在的暂存器, skip 与 \newskip 命令一起被定义, \smallskip在 TeX 定义是:

\newskip\smallskipamount \smallskipamount=3pt plus 1pt minus 1pt
更简洁的 \smallskip 命令为:
\vskip\smallskipamount

有许多的控制输出页的尺寸大小,这些都收集在 页面设计 那一节。 TeX 格式段落时,会自动调整内文与左边和右边边缘的距离,如果你只要调整左边的边缘的距离,使用这命令:

\raggedright

如果只要调整右边的边缘的距离,则使用 \rightline命令:

\rightline{This is the line to be typeset.}

\line 命令,会尽量以填满每一列的方法来排版:

\line{This text will be spaced to fit the entire line.}

\hfil 命令,会把它所在的那一列,都填满,举例来说, \rightline 命令等于: equivalent to:

\line{\hfilThis line will be right justified.}

要以对称中间的方式排版,则用 \centerline命令:

\centerline{This is the line to be centered.}

为了要改变左边边缘的距离,如下例,改变 \hoffset的值:

\hoffset=1.5in

\parindent 命令指定每个段落的第一行缩排的量:

\parindent=.5in

二个其他尺寸命令, \leftskip\rightskip使得在他们之后的段落,分别向左或向右缩排:

\leftskip=.5in
\rightskip=.5in
控制命令 \narrower 等于
\leftskip=\parindent
\rightskip=\parindent
也就是 \narrower ,会以 \parindent 的值,把段落边缘变窄。

如前面所提 \baselineskip 内定行距为12 pt 。为了要使行距变成内定值的两倍,可使用下列的命令:

\baselineskip=\baselineskip*1.6
\parskip 命令,除了保有 \baselineskip 的命令,还会额外增加段落之间的距离,其内定为不增加额外的空间,但在段落之间会多增加1 个点的距离,使内文更正确地填满每一页。如果要在段落之间,增加一空白列,则使用这命令:
\parskip=\baselineskip

容忍度 ( 在每列末端哪些黑色的长方形是什么? )

TeX 通常会严格的在容忍度下格式文件。如果, 有一些理由,文件不能在容忍度下格式化,虽然 TeX 会产生一个警告信息,它还是尽可能格式化文件。如果每一列本文太短,而被伸展太多, TeX 会警告你, \hbox 是 underfull 。如果每一列本文太长,而必须被压缩,则会警告你, \hbox 是overfull 。

每一个 overfull \hbox, TeX 会在每列末端,产生 实心黑色的长方形。这实心的长方形,代表不能够在 \hbadness 参数规定内,格式化这一列。文件在指定的尺寸大小下的适合性,是用 badness来衡量,它是一个介于 0 到 10000之间数字。badness 为0 ,代表最完美, 10000 代表适合性最差, \hbadness 内定为 1000。如果你把 \hbadness 设为 10000 , TeX 永远不会报告 underfull 。有时 TeX 允许一列,能扩充到右边的边缘,这是 TeX作者的美学决定的一部份,这是由内定为 0.1 pt 的 \hfuzz 参数所决定的。如果本文装不进一列内,\tolerance 的参数会处理\hbox overfull 的问题。 \tolerance 内定为 200 ,把设定改为1000 ,则会抑制 overfull \hbox 和实心黑色长方形的产生。

3.4 页面设计

除了早先提到的左边的边缘,和行宽之外, TeX 也让你可以指定顶端,末端,和垂直的间隔。像在早先提到的 \hsize\hoffset 尺寸大小一样, TeX 也提供那 \vsize\voffset 命令。\vsize 内定为 8.9 吋, \voffset 内定为 0 吋。

正常地, teTeX 会把本文第一行的开端,放在离顶端下面 1 吋,且离左边的边缘1 吋的位置。你能用命令,让本文更靠近每页的顶端:

\voffset=-0.5in

如果你要增加一份文件里的垂直空间,命令 \smallskip\medskip, 和\bigskip 将会增加大约 3 , 6 , 或 12 点的空白垂直间隔。这些都是大约的量, TeX 将会以一个点,一个点的方式调整,正确地填满每一页。

\vfill命令,会在每一页的段落之间,增加一个可调整的垂直间隔,它可以无限地伸展,所以它会把每一页,剩下的垂直间隔填满。如果你要指定一个尺寸大小,如下指定 \vskip 为:

\vskip 10pt

\hss\vss 命令类似 \hfil\vfill,但是他们可以无限地收缩和伸展。

\vskip\vfill 命令,可产生弹性的长度,如果没有内文,他们不增加空间,举例来说,在任一页的顶端。如果你要增加一绝对的空间,使用 \vglue

TeX 会尽量去填满 \vsize 的尺寸,直到新的一页开始。 \vfill \eject 会强迫跳行,如果不用 \vfill ,内文会继续填满每一页,直到 \break 出现。

如果你要 TeX 更能够有弹性的使用垂直标识,在你的文件中,可用 \raggedbottom命令,然后 TeX 将会些微地调整每页的底部边缘,使垂直的间隔更一致。

3.5 页数、标首和注脚

teTeX 的页数,内定放在每页底部中心的位置,如果你要改变放页数的位置和格式,你能藉由改变 \headline\footline的定义,变更标首和注脚, \footline 内定包含 \folio 命令,因此会列印页数, \headline 内定包含 \hfil命令,因此会列印一空白列。

\pageno命令,如同是TeX's 的内在页数计算器。你能藉由变更\pageno ,而改变页数,如果 \pageno 是负的,则页数以罗马数字列印:

\pageno=10
\pageno=-1

不列印页数的命令, \nopagenumbers ,可速记为:

\headline={\hfil}
\footline={\hfil}

内定的 footline ,也包含字型命令 \tenrm,将页数字的字型,设定为 10 点罗马字型,举例来说,如果你要以 12 点罗马字型,列印页数,首先你先定义12 点罗马字型,然后在 \footline定义中使用,字型命令在 Font commands 这一节中会讨论。

\font\twelvrm=cmr12
\footline={\hss\twelvrm\folio\hss}

你能藉由重新定义 \headline ,来制定一条 rule ,在每页的顶端,放一个水平线:

\headline={\hrulefill}

使用 \ifodd,指定偶数页和奇数页放的位置不同,它的语法如下:

\ifodd[condition][true-action]\else[false-action
一个用 \headline 指定偶数页和奇数页摆法不同的例子,就如:
\headline={\ifodd\pageno odd-page-header \else even-page-header}
如果是奇数页, \ifodd 就使用第一个参数,否则使用第二个参数。

3.6 标题和巨集

TeX 只提供制定每节标题,使用 \beginsection 命令,它在内文之上,留一个空间,用粗体字列印标题,标题之后增加一个 \smallskip ,并使得下一个段落不缩排。

底下提到的LaTeX 标识章节的命令,会替每一节,标上节数,而且将会列印每一节名称,并在标首,列印页数,并自动地把这些章节,加入目录表。

在 plain TeX 中你必须亲自加上这些命令。\def ,允许你定义新的命令,假如你要列印章名,首先你要定义使用的字型,如果使用放大的sans serif 字型,则定义如下:

\font\chapterfontsans=cmss12 scaled \magstep 4
如果你要使用高约24 个点的字型,则使用 \chapterfontsans 命令,转变到这个字型,然而,在这个例子中,它主要被用在\chaptertitlesans之中。它的定义为:
\def\chaptertitlesans#1{\hbox{}\bigskip\bigskip
  \noindent{\leftline{\chapterfontsans#1}}
  \par\bigskip\bigskip\noindent}
第一行中, \hbox{}\bigskip\hbox{}指令,在每页的顶端,放置一个 12 点的空间,这样章名,既不缩排,也不会使得下个段落紧接在后,如果你在\sschaptertitle 巨集和下一个段落之间,要放置一条空白列,则最后的 \noindent ,会作用到这空白列,而非下列的段落。为了要正确地格式化,在这个例子中,使用 \sschaptertitle

定义里的 #1 陈述,由第一个参数,替换到 \chaptertitlesans; ,也就是章名, TeX 的参数以 #1, #2, #3,等等前后顺序宣告,一个如何使用\chaptertitlesans 的例子如下:

\chaptertitlesans{Chapter 1}
This is the starting text of the first paragraph of the chapter.
The paragraph will not be indented.  The chapter's title is
"Chapter 1."


Next Previous Contents