\chapter{\TeX} % 第九章+
■ このスレッドは過去ログ倉庫に格納されています
0462名無しさん@お腹いっぱい。
2014/02/13(木) 21:07:48.15別に,\edef の仕様どおりの挙動.
まず,「展開」と「実行」は違うことに注意.
また,\edef\fuga{\hoge{HAGE}} の際には
「\hoge{HAGE} を完全に展開したもの」が必要になる.
そして,最初の(エラーになったほうの)例では \hoge{HAGE} を展開すると
\def\hage{#1}
になる.(ここで「実行」ではなく「展開」だけしていることに注意しつつ)
これをさらに展開すると,\def(これは展開できない primitive)はそのまま残り,
(\def が実行されたわけではないので)その次の \hage を展開しようとする.
しかし,\hage の前の \def は実行されてなどいないので
\hage は未定義のままでエラーが生じる.
なお,その次のエラーにならないほうの例では,\def\hage{} と \hage の定義を与えたことで
\hoge{HAGE}→ \def\hage{HAGE} → \def{HAGE}
と展開され,結局 \huga は \def\huga{ \def{HAGE} } と定義されたのと同じになる
(ので,\huga を使ったときに妙なことになる).
■ このスレッドは過去ログ倉庫に格納されています