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