マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

TeXのプリミティブで展開可能なやつ(1)

まとめてみた。

注意

  • 多くのプリミティブは展開結果が必ず\the-文字列になる。展開結果が必ず空になる(付随して内部状態が変化する)ものについては☆印、以上のどれにも当てはまらないものには★印を付けた。
  • 各項目の説明には、そのプリミティブの(一回)展開結果のトークン列が何かを記した(無印のものは文字列として述べているが、実際には\the-文字列であることに注意)。ただし☆印のものは”動作”を記した(展開結果は常に空である)。

元祖TeXのやつ

  • “条件トークン”、すなわち各種if-トークンと\else\or\fi ☆:TeXの内部の「条件判断に関する内部状態」を変化させる。詳細は以下の記事を参照。

  • “マーク変数”、すなわち\topmark\firstmark\botmark\splitfirstmark\splitbotmark ★:現在の状況で(各々のマーク変数の機能に即して)該当するマークのトークン列。

  • \csname‹トークン列›\endcsname ★:「‹トークン列›を完全展開して得られる文字トークン列を脱トークン化した文字列を名前とする制御綴」のトークン。
    ※完全展開の結果に制御綴が含まれる場合はエラーになる。
    ※当該の制御綴が未定義の場合は、「その制御綴がローカルに\relaxに等値される」という副作用をもつ。
    ※このパターン以外で現れる\endcsnameは展開不能である。

  • \endinput ☆:現在のファイルからの読込を「既に読んだ行」までで停止する。

  • \expandafter‹トークン1›‹トークン2›… ★:‹トークン1›の後に「‹トークン2›以降のトークン列を一回展開した結果」を続けたトークン列。

  • \fontname‹フォント›:そのフォントの定義で「‹TFM名› at ‹使用サイズ›pt」の形(使用サイズがデザインサイズに等しい場合は‹TFM名›のみ)の文字列。
    ‹フォント›は「fontdefトークン」「\font」「\textfont\scriptfont\scriptscriptfontの後に数式ファミリ番号を続けたもの」の何れか。

  • \input‹ファイル名› ☆:以降は指定のファイルから入力を読むようになる。
    ‹ファイル名›は空白トークン(これは吸収される)または展開不能の制御綴で終結する。ファイル名が終結するまで完全展開が起こる。
    ※ただし最近の処理系だと文字列をクオートする("…"で囲う)ことで「空白を含むファイル名」を引数にとれる(参照)
    ※もっと最近の処理系だと\input{‹ファイル名›}のように引数を波括弧で囲う書式も可能である。この場合は、引数のトークン列を完全展開した結果(制御綴を含んでもよい)を脱トークン化した文字列がファイル名として用いられる。

  • \jobname:ジョブ名の文字列。
    ※「ジョブ名」はコマンドオプションの-jobnameの値。省略時の既定値は(システム依存だが多くの場合)「最初に読んだファイルのベース名」になる。

  • \meaning‹トークン›:そのトークンの意味を説明した文字列。
    ※例えば、\meaning$は「math shift character $」、\meaning\quadは「macro:->\hskip 1em\relax」に展開される。

  • \noexpand‹トークン› ★:【展開限定文脈で】そのトークン自身に展開され、それ以上展開されない。
    ※通常は展開限定文脈以外で使われることはない。

  • \number‹整数›:その整数の(典型の)十進表記。

  • \romannumeral‹整数›:その整数の小文字ローマ数字表記。ゼロ以下の場合は空になる。

  • \string‹トークン›トークンが文字トークンの場合は、その文字。制御綴の場合はそれを文字列化したもの(後続の空白は無し)。
    ※「制御綴の文字列化」は、制御綴名の前に\escapecharの文字を前置した形の文字列。ただし\escapecharが(欧文)文字コードの範囲外の値の場合は何も前置されない。

  • \the‹内部値›:その内部値(パラメタ、レジスタ)の現在の値を表すトークン列。普通は\the-文字列であるが、以下の場合は例外となる:

    • \the‹トークン列レジスタ・パラメタ› ★:そのレジスタ・パラメタが現在保持するトークン列そのもの。
    • \the‹フォント› ★:そのフォントを選択するためのfontdefトークン。
      ※この中の‹フォント›\fontnameの項の説明と同じ。

e-TeXのやつ

  • 拡張“マーク変数”、すなわち\topmarks‹番号›\firstmarks‹番号›\botmarks‹番号›\splitfirstmarks‹番号›\splitbotmarks‹番号› ★:現在の状況で該当するマークのトークン列。

  • \detokenize{‹トークン列›}:引数のトークン列を(展開せずに)脱トークン化した結果の文字列。
    ※結果は\the-文字列であることに注意。実質的に「(字句解析前の)文字列に戻す」働きをもつのは\scantokensの方である。

  • \eTeXrevision:e-TeXのリビジョン番号の文字列。
    \eTeXversionは読取専用整数パラメタ。

  • \scantokens{‹トークン列›} ☆:引数のトークン列を(展開せずに)脱トークン化した結果の文字列を内容とする仮想的な入力ファイルを作って、以降はこの仮想的なファイルから読み込むようにする。

  • \unexpanded{‹トークン列›} ★:【展開限定文脈で】引数のトークン列自身に展開され、それ以上展開されない。

  • \unless‹ifトークン›… ☆:後続の条件文の真偽を反転させた条件文を開始する。
    \unlessの直後に真偽型のif-トークンそのものが続く必要がある。条件部を含めて一度で展開されることに注意。

(続く)