「TeXBook筆記」修訂間的差異
Tankianting(討論 | 貢獻) |
Tankianting(討論 | 貢獻) |
||
(未顯示同一使用者於中間所作的 10 次修訂) | |||
行 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: | ||
|} | |} | ||
{ } $ & # ^ _ % ~ 不能用一般字元的寫法,原則上要加脫逸字元\_、\$等,但是\用< | { } $ & # ^ _ % ~ 不能用一般字元的寫法,原則上要加脫逸字元\_、\$等,但是\用<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>"3in" "3 in" " "+ 3 in" ".0pc" "-2.7pc"</code>都是合法大小。 | |||
TeX把各單位轉換成sp,並且利用整數型別來運算,確保精度。2^30sp (=5.78m)以上的dimen數值不處理。 | |||
<code>\magnification=1200</code> 放大到1.2倍。 | |||
但是magnification要確保電腦的字型支援。 | |||
<code>\hsize=<dimen></code> | |||
<code>\vskip=0.5truecm</code> 加上<code>true</code>確保使用magnification的時候,還是能夠維持這個大小。 | |||
em、ex這種相對大小有用,但是不是具有統一標準。 | |||
<code><dimen></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
表示之後沒有更多參數了。