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