「TeXBook筆記」修訂間的差異

出自Tan Kian-ting的維基
跳至導覽 跳至搜尋
→‎Ch6
 
(未顯示同一使用者於中間所作的 11 次修訂)
行 2: 行 2:


講plainTeX的書。讀這本書建議搭配 ''TeX for the Impatient'' 這本書,查詢 plainTeX指令或變數的定義。
講plainTeX的書。讀這本書建議搭配 ''TeX for the Impatient'' 這本書,查詢 plainTeX指令或變數的定義。
Double bend 的部分沒有讀,跳過,所以只是重點摘要而已。


\show\controlSequence 可以查詢controlSequence(姑且可理解為指令)的定義。
\show\controlSequence 可以查詢controlSequence(姑且可理解為指令)的定義。
行 151: 行 153:
|-
|-
| 5
| 5
|
| [\n]
| 換行
| 換行
|-
|-
行 195: 行 197:
|}
|}


 { } $ & # ^ _ % ~ 不能用一般字元的寫法,原則上要加脫逸字元_、$等,但是”  “用
 { } $ &amp; # ^ _ % ~ 不能用一般字元的寫法,原則上要加脫逸字元\_、\$等,但是\用<code>\backslash</code>


\^ 和 \~表diacritics於字母。
\^ 和 \~表diacritics於字母。


每一個character除了control sequence都是token,包含1個空白字元。
每一個character除了control sequence都是token,包含1個空白字元。
== Ch8 TeX與輸入的字元 ==
\char[10進數字] = \char'[8進數字]=\char"[16進數字]
輸入 ASCIIcode字元
\char`+(單名controlsequence|單字元) = 該字元
\\char98 不等於 \b,因為不能將\char用於control sequence中。
<span id="ch9-tex用的羅馬字體"></span>
== Ch9 TeX用的羅馬字體 ==
該章講述TeX有連字設計(ligature)以及特殊符號、字元,和變音符號(diacritic)的打法。
<span id="ch10單位"></span>
== Ch10 Dimension ==
plainTeX使用的單位有:
*pt
*pc pica
*in inch
*bg = big point = 1/72 in
*cm
*mm
*dd = didot point. 1157dd = 1238pt
*cc = cicero = 12dd
*sp = scaled point ( = 1/65536pt)
<code>&quot;3in&quot; &quot;3 in&quot; &quot; &quot;+ 3 in&quot; &quot;.0pc&quot; &quot;-2.7pc&quot;</code>都是合法大小。
TeX把各單位轉換成sp,並且利用整數型別來運算,確保精度。2^30sp (=5.78m)以上的dimen數值不處理。
<code>\magnification=1200</code> 放大到1.2倍。
但是magnification要確保電腦的字型支援。
<code>\hsize=&lt;dimen&gt;</code>
<code>\vskip=0.5truecm</code> 加上<code>true</code>確保使用magnification的時候,還是能夠維持這個大小。
em、ex這種相對大小有用,但是不是具有統一標準。
<code>&lt;dimen&gt;</code>可以指暫存器或參數。
''只讀single bend不讀double bend''
== Ch11 Boxes 盒子 ==
plainTeX的重要要素組成:box 和 glue
box 有參考點、height高度、depth深度、weight寬度
一個字母或是漢字也是box,TeX會自動把字母轉換成box,但box並非意味着字型都服服貼貼在盒子裏面,也可能像義大利體那樣,會溢出一部分。Italic correction就是義大利體外溢出盒子的量,以為修正。
<code>\hrule</code>和<code>\vrule</code>其實是很扁或很長的黑色方格子,如果要畫方格子,需要用<code>\hrule</code>或是<code>\vrule</code>。
<code>\vbox{\hbox{foo}\hbox{bar}}</code>就可以組成盒子,但一般TeX會自己換行不用自己組。
頁是垂直排列盒子,行是水平排列盒子。
height, depth, width可以小於0,width小於0可作為倒退鍵功能。
<code>\kern-1.6ex</code>(負數寬度盒子)
<code>\lower0.5ex</code>(下移盒子)
<code>\setbox0=\hbox{...}</code>設置box
<code>\showbox0</code> %顯示box0的組成,顯示如:
<code>. \hbox(高度+深度)x寬度 [, shifted 下移量]</code>
== Ch12 膠水 glues ==
box間的伸縮空隙
有stretch和shrink的權重
縮有限制量,伸有無限量。
段間的垂直glue:
* <code>\smallskip</code>
* <code>\medskip</code>
* <code>\bigskip</code>
<code>\vskip [預設dimen] plus [伸dimen] minus [縮dimen]</code>
比如<code>\vskip 6pt plus 2pt minus 2pt</code>
水平glue<code>\hskip .5em\relax</code>,<code>\relax</code>表示之後沒有更多參數了。




[[category:資訊]]
[[category:資訊]]

於 2025年1月7日 (二) 23:06 的最新修訂

講plainTeX的書。讀這本書建議搭配 TeX for the Impatient 這本書,查詢 plainTeX指令或變數的定義。

Double bend 的部分沒有讀,跳過,所以只是重點摘要而已。

\show\controlSequence 可以查詢controlSequence(姑且可理解為指令)的定義。

Ch1

講命名TeX的緣由

Ch2

講字元的輸入用法

kerning/ligature 自動啟用

kerning:VA中間自動adjust縮小間隙

ligature:合字(differ的iff)

  • \thinspace
  • \lq:英文左雙引號
  • \rq:英文右雙引號


Ch3, 4

\xxx 是control sequence,比如:

  • control word:\input␣MS(␣代表半形空白字元,下同)
  • control symbol:\+符號+字母(不空白)


  • \␣:指1個空格
  • \␣\␣:指2個空格

連續空格代表同一個空格

\TeX␣\␣Ignore \TeX後面接空格以示區隔;\␣指空白

plainTeX有900以上指令,300+左右是Primitive不能細分的

\show\sl 回傳

\sl=macro:

\fam\slfam\tensl

  • \slfam: slanted math mode font
  • \tensl: 10 pt slanted
  • \rm 羅馬體
  • \sl slanted
  • \it italic
  • \tt monospace
  • \bf bold font

the {\bf bold} font,中間的{}指定group

\/:義大利體修正


一個特例:{\bf f\/}

=>方能正確顯示出來

\temrm: set to 10pt roman \ninerm: set to 9pt roman

兩個都是字型變數

字型大小改變,會在基線上安排位置

\font\cs=外部字型

TeX只有16fonts

Ch5 Grouping

{ }:group character

{}定義在裡面的不會跑到外面

{\TeX}這樣可以避免吃掉空白的字元

或是\TeX{},{}是空群組

\centerline{要置中的文字}

{\it xxx},不會弄得外面也是義大利體

Ch6

(running TeX)

TeX有互動命令列

輸出log

\hrule 水平線

\vskip 1pt(6pt, .5cm,...) 垂直間距

\centerline

\sl

.~空白不換行

\vfill 充滿一頁

\eject跳出頁面

Ch7 TeX如何讀取輸入文字

輸入的行和輸出的行不相關。

  • \n如空白
  • 兩個空白於一列如同一個空白
  • 空行表示段落結束
  • 本章和次章講述非常首先的環節,TeX如何處理資料。
  • TeX對文字有15分類,將ASCII 256字元分類如下:
類號 範例 說明
0 \ 脫逸字元
1 { 群組頭
2 } 群組尾
3 $ 數學切換
4 & 表格定位
5 [\n] 換行
6 # 函數參數
7 ^ 上標
8 _ 下標
9 < null > 忽視字元
10 <半形空白> 空白字元
11 [A-Za-z] (一般字母)
12 其他字元 其他字元
13 ~ active character
14 % 註釋字元
15 < delete > 不合法字元(invaild)

 { } $ & # ^ _ % ~ 不能用一般字元的寫法,原則上要加脫逸字元\_、\$等,但是\用\backslash

\^ 和 \~表diacritics於字母。

每一個character除了control sequence都是token,包含1個空白字元。

Ch8 TeX與輸入的字元

\char[10進數字] = \char'[8進數字]=\char"[16進數字]

輸入 ASCIIcode字元

\char`+(單名controlsequence|單字元) = 該字元

\\char98 不等於 \b,因為不能將\char用於control sequence中。


Ch9 TeX用的羅馬字體

該章講述TeX有連字設計(ligature)以及特殊符號、字元,和變音符號(diacritic)的打法。

Ch10 Dimension

plainTeX使用的單位有:

  • pt
  • pc pica
  • in inch
  • bg = big point = 1/72 in
  • cm
  • mm
  • dd = didot point. 1157dd = 1238pt
  • cc = cicero = 12dd
  • sp = scaled point ( = 1/65536pt)

"3in" "3 in" " "+ 3 in" ".0pc" "-2.7pc"都是合法大小。

TeX把各單位轉換成sp,並且利用整數型別來運算,確保精度。2^30sp (=5.78m)以上的dimen數值不處理。

\magnification=1200 放大到1.2倍。

但是magnification要確保電腦的字型支援。

\hsize=<dimen>

\vskip=0.5truecm 加上true確保使用magnification的時候,還是能夠維持這個大小。

em、ex這種相對大小有用,但是不是具有統一標準。

<dimen>可以指暫存器或參數。

只讀single bend不讀double bend


Ch11 Boxes 盒子

plainTeX的重要要素組成:box 和 glue

box 有參考點、height高度、depth深度、weight寬度

一個字母或是漢字也是box,TeX會自動把字母轉換成box,但box並非意味着字型都服服貼貼在盒子裏面,也可能像義大利體那樣,會溢出一部分。Italic correction就是義大利體外溢出盒子的量,以為修正。

\hrule\vrule其實是很扁或很長的黑色方格子,如果要畫方格子,需要用\hrule或是\vrule

\vbox{\hbox{foo}\hbox{bar}}就可以組成盒子,但一般TeX會自己換行不用自己組。

頁是垂直排列盒子,行是水平排列盒子。

height, depth, width可以小於0,width小於0可作為倒退鍵功能。

\kern-1.6ex(負數寬度盒子)

\lower0.5ex(下移盒子)

\setbox0=\hbox{...}設置box

\showbox0 %顯示box0的組成,顯示如:

. \hbox(高度+深度)x寬度 [, shifted 下移量]

Ch12 膠水 glues

box間的伸縮空隙

有stretch和shrink的權重

縮有限制量,伸有無限量。

段間的垂直glue:

  • \smallskip
  • \medskip
  • \bigskip

\vskip [預設dimen] plus [伸dimen] minus [縮dimen]

比如\vskip 6pt plus 2pt minus 2pt

水平glue\hskip .5em\relax\relax表示之後沒有更多參數了。