Re: \edef\hoge{\bm{huga}}でのエラーを回避する

名前: トノ
日時: 2004-09-22 23:20:28
IPアドレス: 61.210.14.*

>>31635 \edef による定義の段階で \alph だけでなく \bm までもが展開されてしまうのが 原因でしょう。\noexpand で抑制すれば大丈夫なようです。 》 # 何故\edef中で\bm(や\{など)を使ってはいけないのかよく分からない… 私も「何故」という問いに答えられるほどには習熟していませんが、 》 # \edefではなくて\defだと\Ba = \bm{\alph{27}}と展開されて この理解が間違いだというのは指摘できます。 ※ 「展開されて」というのは、「定義されて」の単純な書き間違いだと 思いますが‥‥ \edef でなく \def を使えば、\Ba = \bm{\alph{n}} と定義されるはずです。 このことは、次のソースを処理すれば確かめられます。 \RequirePackage{amsmath, amssymb, bm} \makeatletter \newcounter{n} \setcounter{n}{1} \@whilenum \value{n} < 27 \do{ \expandafter\def\csname B\alph{n}\endcsname{ \bm{\alph{n}} } \stepcounter{n} } \typeout{\string\Ba=\meaning\Ba<} 「n」は、あくまでも「アルファベット小文字のエヌ」であって、「変数 n」では ないのです。その辺り、他のプログラミング言語に慣れておられる方は、 かえって混乱されるのかもしれません。 こういった点で充分理解されないまま 》 # エラーになってしまうようなTeXのデータ処理の仕組みも良いとは思えない… というような発言をされると、Knuth 教徒から叩かれますよ。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)