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