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