まとめてみた。
注意事項
- 多くのプリミティブは展開結果が必ず\the-文字列になる。そうでないものについて注意のため印を付けている。
- 無印:(状態変化無しで)展開結果が必ず\the-文字列になる。
- ★印:(状態変化無しで)展開結果が\the-文字列以外になりえる。
- ☆印:展開に付随して内部状態が変化し、展開結果が必ず空になる。
- ◇印:展開に付随して内部状態が変化し、展開結果が非空になりえる。
- 各項目の説明には「そのプリミティブの一回展開結果のトークン列が何か」を記した。ただし☆・◇印のものは“動作”を記した。
- 展開結果の記述に関する注意:
- 展開結果が“文字列”として述べられている場合、それは実際には\the-文字列*1を指す。
- 数値・寸法・グルー値を\the-文字列として表す場合の書式は「そのデータ型のパラメタを
\the
で出力する場合」と同じである。※例えば寸法値10ptは10.0pt
という\the-文字列で表される。
- 引数の記述に関する注意:
元祖TeXのやつ
“条件トークン”☆:TeXの内部の「条件判断に関する内部状態」を変化させる。
- “条件トークン”とは「if-トークン」「
\else
」「\or
」「\fi
」を指す。元祖TeXがもつif-トークンは以下の通り:\if‹トークン1›‹トークン2›
\ifcase‹整数›
\ifcat‹トークン1›‹トークン2›
\ifdim‹寸法比較›
\ifeof‹整数:ストリーム番号›
\iffalse
\ifhbox‹整数:ボックス番号›
\ifhmode
\ifinner
\ifmmode
\ifnum‹整数比較›
\ifodd‹整数›
\iftrue
\ifvbox‹整数:ボックス番号›
\ifvmode
\ifvoid‹整数:ボックス番号›
\ifx‹トークン1›‹トークン2›
- 詳細は以下の記事を参照。
- 条件文における「展開」(マクロツイーター)
- “条件トークン”とは「if-トークン」「
“マーク変数” ★:現在の状況で(各々のマーク変数の機能に即して)該当するマークのトークン列。
- ここで“マーク変数”は以下のものを指す:
\botmark
\firstmark
\splitbotmark
\splitfirstmark
\topmark
- ここで“マーク変数”は以下のものを指す:
\csname‹トークン列›\endcsname
◇:「‹トークン列›
を完全展開して得られる文字トークン列を脱トークン化した文字列を名前とする制御綴」のトークンに展開される。- 当該の制御綴が未定義の場合は、「その制御綴がローカルに
\relax
に等値される」という副作用をもつ。 - 完全展開の結果に制御綴が含まれる場合はエラーになる。
\endcsname
自体は展開不能である。
- 当該の制御綴が未定義の場合は、「その制御綴がローカルに
\endinput
☆:現在のファイルからの読込を「既に読んだ行」までで停止する。\expandafter‹トークン1›‹トークン2›…
★:‹トークン1›
の後に「‹トークン2›以降のトークン列を一回展開した結果」を続けたトークン列。\fontname‹フォント›
:そのフォントの定義を表す文字列。- 書式は「
‹TFM名› at ‹寸法:使用サイズ›
」だが、使用サイズがデザインサイズに等しい場合は「‹TFM名›
」のみになる。
- 書式は「
\input‹ファイル名›
☆:以降は指定のファイルから入力を読むようになる。\jobname
:ジョブ名の文字列。- 「ジョブ名」はコマンドオプションの
-jobname
の値。既定値はシステム依存だが、多くの場合は「最初に読んだファイルのベース名」になる。
- 「ジョブ名」はコマンドオプションの
\meaning‹トークン›
:そのトークンの意味を説明した文字列。- 例えば、
\meaning$
は「math shift character $
」、\meaning\quad
は「macro:->\hskip 1em\relax
」に展開される。
- 例えば、
\number‹整数›
:その整数の(典型の)十進表記の文字列。\romannumeral‹整数›
:その整数の小文字ローマ数字表記の文字列。ゼロ以下の場合は空になる。\string‹トークン›
:トークンが文字トークンの場合は、その文字。制御綴の場合はそれを文字列化したもの(後続の空白は無し)。- 「制御綴の文字列化」は、制御綴名の前に
\escapechar
の文字を前置した形の文字列。ただし\escapechar
が(欧文)文字コードの範囲外の値の場合は何も前置されない。
- 「制御綴の文字列化」は、制御綴名の前に
\the‹内部値›
:その内部値(レジスタ・パラメタ)の現在の値を表すトークン列。普通は\the-文字列であるが、以下の場合は例外となる:
e-TeXのやつ
-
\ifdefined‹トークン›
\ifcsname‹トークン列›\endcsname
※\csname
と異なり“\relax
化”の副作用を決して起こさない。\iffontchar‹フォント›‹整数:文字コード›
e-TeX拡張の“マーク変数”★:
\botmarks‹整数:マーク番号›
\firstmarks‹整数:マーク番号›
\splitbotmarks‹整数:マーク番号›
\splitfirstmarks‹整数:マーク番号›
\topmarks‹整数:マーク番号›
\detokenize{‹トークン列›}
:引数のトークン列を(展開せずに)脱トークン化した結果の文字列。- 結果は\the-文字列であることに注意。実質的に「(字句解析前の)文字列に戻す」働きをもつのは
\scantokens
の方である。
- 結果は\the-文字列であることに注意。実質的に「(字句解析前の)文字列に戻す」働きをもつのは
\eTeXrevision
:e-TeXのリビジョン番号の文字列。- なお
\eTeXversion
は読取専用整数パラメタである。
- なお
\scantokens{‹トークン列›}
☆:「引数のトークン列を(展開せずに)脱トークン化した結果の文字列」を内容とする仮想的な入力ファイルを作って、以降はこの仮想的なファイルから読み込むようにする。\unexpanded{‹トークン列›}
★:引数のトークン列自身。※展開限定文脈である場合はそれ以上展開されない。- 展開限定文脈以外では普通に展開される。
\the‹トークン列レジスタ・パラメタ›
の展開と同じ規則である。
- 展開限定文脈以外では普通に展開される。
\unless‹ifトークン›…
☆:後続の条件部の真偽を反転させた条件文を開始する。\unless
の直後に真偽型のif-トークンそのものが続く必要がある。条件部を含めて一回で展開されることに注意。