今年一年の中で \expandafter
について考える機会にあまり恵まれなかった \expandafter
初級者のために、\expandafter
な問題を出題する。
plain pdfTeX において、起動直後に以下のコードを実行したとする。
\catcode`H=\active \catcode`E=\active \catcode`L=\active \catcode`O=\active \defO{L}\defL{H}\defH{E}この状態において、
\detokenize{OOOOO}というトークン列の各トークンの間に適切な個数の
\expandafter
を追加して、それの展開結果が(カテゴリコード 12 の)「HELLO
」になるようにせよ。【ヒント】 e-TeX 拡張命令の
\detokenize
は、\detokenize{<トークン列>}
の形で用い、これの一回展開結果は、引数のトークン列に含まれる各トークン(展開されない)に\string
を施したものを並べたトークン列になる。((正確にいうと、制御語の後に空白が入るという点で\string
とは異なる。例えば、\detokenize{A \B\C D}
の展開結果は、\the
-文字列の「A \B \C D
」である。))
なお、これは \expandafter
初級者のための問題であるので、\expandafter
マスターや \expandafter
芸人が取り掛かるとものの数分で終わってしまうであろう。そういう人は、代わりに「Hello World」 でも作ってみては如何だろうか。