The teTeX HOWTO: Linux-teTeX 部份指導: TeX 命令

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