LaTeX の“仕様”(Lamport 本に書いてあるもの)では以下のように定められているようです:
- 命令や環境を定義する命令(
\newcommand
等)は入れ子にすることができる。 - ただしその場合は、内側の命令の環境を定義では引数を持たせることができない。
しかし、実際(つまり“実装”)では、\newcommand
の定義本体はそのまま \def
の定義本体となるため、結局 TeX のマクロの定義の入れ子と同じ処理(#
を二重にする)で通ってしまいます。
(恐らく Lamport 氏は「#
を二重にする」という文法を LaTeX に入れたくなかったのだと想像しています。)
というわけで、この話は、pure-LaTeX を書こうとする(酔狂な?)人以外にはどうでもよいトリビアでした。