マクロツイーター

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

スゴイLuaTeXの新プリミティブ \begincsname を徹底紹介

LuaTeX、スゴイですね!😍

というわけで、本記事ではLuaTeXのスゴイ(多分🙃)拡張プリミティブである\begincsnameについて解説します。

必要な前提知識

  • \csnameが何か知っていること。

いきなり説明

  • \begincsname‹トークン列›\endcsname[展開可能]: 「\csname‹トークン列›\endcsname」と同様に、トークン列を完全展開して得られる文字トークン列1を名前とする制御綴に展開される。ただしその制御綴の意味が未定義である場合は代わりに空に展開され、この場合に「\relax化」が発生しない2

つまり従来は

\ifcsname‹トークン列›\endcsname
  \csname‹トークン列›\endcsname
\fi

のように書かないといけなかった(しかもこれは先頭完全展開可能でない)のが\begincsnameを使うと一回展開で済む形になります。

まとめ

スゴイ(多分🙃)


  1. 完全展開した結果に制御綴が混じっている場合はエラーになります(\csnameと同様)。
  2. さらに「文字列プールの消費」も発生しません。この辺りの仕様は\ifcsnameと同じです。