TeX 言語のプリミティブ \the
は色々なパラメタやレジスタの現在の値を調べるのに用いられる。
\the が \the-文字列になる例
以下は、整数、寸法、グルー値の値をもつパラメタ・レジスタに \the
を適用した例である。
\the\count255 \the\skip0 \the\year \the\hsize \the\baselineskip \the\catcode`\@ \the\badness
これらは何れも、1 回展開すると、\the
の引数であるパラメタの現在の値を表す文字列(「42
」や「-1.0pt plus 1.0fil
」など)に展開される。((つまり、ここでは \the
は「文字列に変換する」役割を果たしている。ユーザが値を調べるのには文字列化する必要があるので \the
が使われるわけである。ここで注意したいのは、値を“取得”するのに \the
が要るわけではない、ということである。例えば、\year
の値を \count255
に代入したいのであれば、\count255=\year
で十分であり、右辺に \the
は要らない。))「文字列」といっても実際は文字トークンの列であり、しかも \the
で展開されて生じる文字トークンのカテゴリコードは、英字も含めて全て 12(ただし空白は 10)というやや特殊なことになっている。このため、そういうカテゴリコードをもつ文字トークン列のことを特に「\the
-文字列」と呼ぶことがある。*1
このように、整数、寸法、グルー値をもつパラメタについては、\the
は「\the
-文字列」を“返す”のであるが、これ以外に、\the
が適用可能なパラメタで、かつ展開結果が「\the
-文字列」にならない場合がある。一般には 2 つのケースが知られている。
\the が \the-文字列にならない例 2 つ
1 つ目は「トークン列型のパラメタ」である。
\the\toks0 \the\everypar
これらの 1 回展開はその現在の値であるトークン列になり、これは(一般には)\the
-文字列ではない。
もう 1 つは「現在のフォントを表すパラメタ((テキストフォント用の \font
と数式フォント用の \textfonnt
、\scriptfont
、\scriptscriptfont
。pTeX 系ではこれに和文フォントの \jfont
と \tfont
が加わる。))である。
\the\font \the\scriptfont1
これらの 1 回展開は「現在のフォント」と一致する fontdef トークンとなる。例えば、plain TeX *2の初期値では、現在のテキストフォントは cmr10 であり、かつ cmr10 を表す fontdef は \tenrm
であるから、\the\font
を展開すると \tenrm
(\the
-文字列ではなく制御綴のトークン)となる。同様に、\the\scriptfont1
を展開すると \seveni
((「現在の数式ファミリ 1 のスクリプトスタイルのフォント」は cmmi7 で、それに対応する fontdef トークンが \seveni
。))が得られる。
\the が \the-文字列にならない例がもう 1 つ
「\the
の展開が \the
-文字列にならない場合」には以上の 2 つがある、ということであれば、ちゃんとした TeX 言語の解説書には書かれていることなのでわざわざブログに書く必要もない。実は、\the
-文字列にならない場合がもう 1 つあるようなのである。
\hoge
が fontdef トークンである場合、\the\hoge
を 1 回展開すると\hoge
になる。
例えば、plain TeX で \the\tenrm
を展開すると \tenrm
自身(もちろん制御綴トークン)になる。((もちろん、「解釈できない \the
は単に消える」という規則があるわけではない。例えば、「\the\relax
」を展開しようとするとエラーになる。))
これを知っていて何か役に立つかといえば、恐らく、「ブログの記事が 1 つ書ける」以外の利用価値はないと思われる。