/texgloss

A glossary for the TeX macro language in Japanese

Creative Commons Attribution 4.0 InternationalCC-BY-4.0

TeX 言語辞典

これは何?

TeX 言語に関する用語を項目ごとに解説する辞典である.インターネット上に散らばる TeX 言語の “断片情報” を読み解く手助けとなることを目指している.原則として「TeX 言語」に関わる用語のみを対象としており,特に LaTeX の用語辞典ではない点に留意されたい.Knuth によるオリジナルの TeX 処理系に加え pdfTeX, XeTeX, LuaTeX, pTeX, upTeX を記述の対象とする.

本文

4プロセッサモデル

アクティブ文字 (active character)

カテゴリーコード (category code; catcode)

カテゴリーコードは,TeX における個々の文字種の役割を規定する値である.各文字種に割り当てられたカテゴリーコードは,主に TeX の字句解析に対して影響を及ぼす.オリジナルの TeX 処理系には,次表に示す16種類のカテゴリーがある.

カテゴリーコード 役割(種類) 通常この役割を担う文字
0 コントロール・シークエンスを開始 \
1 グループの開始 {
2 グループの終了 }
3 数式・非数式の切り替え $
4 アライメントの区切り &
5 行の終了 ^^M(文字コード13)
6 パラメタ文字 #
7 上付き文字 ^
8 下付き文字 _
9 無視される ^^@(文字コード0)
10 空白文字 (文字コード32)
11 英文字 A-Z,a-z
12 記号 0-9,!,?ほか多数
13 アクティブ文字 ~
14 コメントの開始 %
15 無効文字 ^^?(文字コード127)

コントロール・シークエンス (control sequence; CS)

日本語では「制御綴」ともいう.

コントロール・ワード (control word)

コントロール・シンボル (control symbol)

展開 (expansion)

TeX 言語では,いわゆる「項置き換え」のことを展開という.一般には,マクロおよびその引数 (arguments) を,その時点におけるマクロ定義に基づいて,置換テキストに置き換える操作のことを言う.また一部のプリミティブも展開することが可能で,仕様に基づいて何らかのトークン列に置き換えられる.アクティブ文字の扱いもマクロと同様で,その定義に基づきて置換テキストに置き換えることを展開という.

展開の処理は,4プロセッサモデルにおける展開器によって行われる.展開できるトークン(マクロ,アクティブ文字,一部のプリミティブ)は「展開可能」,そうでないトークンは「展開不能」と表現される場合がある.これらの表現は,トークン列に対しても拡張され得る.展開可能なトークンを1つ以上含むトークン列が「展開可能」であり,すべてのトークンが展開不能な場合は「展開不能」である.

一回展開

展開可能なトークンに対して,その定義や仕様に基づく展開(置き換え)操作を1度だけ適用することを一回展開という.

通常,TeX の展開器はトークン列はいわゆる最左戦略に基づき読み込んだトークン列をそれ以上展開することのできないトークン列になるまで,中断されることなく展開を続けるため一回展開を意識する場面は少ない.例外は \expandafter プリミティブの使用時で,\expandafter 〈トークン1〉〈トークン2〉〈トークン1〉〈トークン2を一回展開したトークン列〉 に展開される.

完全展開

先頭完全展開

展開限定文脈

トークン (token)

トークンとは,字句解析結果の最小単位である.トークンは,以下の3つに大別される.

  • コントロール・シークエンス
  • 文字トークン
  • パラメタトークン

コントロール・シークエンスについては,当該項目を参照されたい.パラメタトークンはカテゴリーコード6の文字(通常は #)とそれに続くカテゴリーコード12の 1-9 の数値である(例えば #1 はパラメタトークンである).

コントロール・シークエンスとパラメタトークンでないものはすべて文字トークンになる.文字トークンは必ず1文字1トークンで,概念的には(文字コード,カテゴリーコード)の組として理解できる.

トークン列 (token list)

トークン列とは0個以上のトークンの並び(列)である.

入力ストリーム (input stream)

入力バッファともいう.

マクロ

文字列 (string)

TeX 言語における文字列とは,空白トークン(文字コードが32でカテゴリーコードが10のトークン)を除きすべてのトークンのカテゴリーコードが12であるようなトークン列のことである.プリミティブ \string は後続の1トークンを文字列化する.また \the\meaning など一部プリミティブも文字列に展開される.

参考文献

ライセンス

このドキュメントには CC 4.0 BY ライセンスが適用される.


Takuto ASAKURA (wtsnjp)