Re: こんなマクロありませんか

名前: 北見 けん
日時: 2006-06-22 12:10:00
IPアドレス: 211.128.71.*

>>43525 > 長くなりますがログを添付します. > これでわかるでしょうか? 実をいうと私の方ではもう原因や対処法などはわかっていたのです。 少し意地が悪かったでしょうか。 マクロを組んでいれば、最初は思い通りに動かないのが当たり前なので、 原因分析の練習になるかと思ってヒントを出したのでした。 ヒントというのは > > ! File ended while scanning use of \@macro. > ですから、どこか途中からおかしくなるのですよね。 > どこまでは正常に動いているのか、ログをよく見るとわかります。 > > そのあとで \@macro が実行されているわけですが、それはおかしいですよね。 > \@macro がどこから呼び出されているのか確かめてみてください。 のことです。 “どこまでは正常に動いているのか”については、 > \hogeuse{hoge1} をコメントアウトするか, > \def\hogeuse#1{\@nameuse{hoge \ref@csname{#1}}} > のように \@nameuse の中で hoge と \ref@csname を離すと > エラーはでませんでした. というお答えから想像すると、43486のソースで49行目の > hoge~\ref{hoge:hoge1}: まではうまく動いていて、次の \hogeuse{hoge1} でおかしくなるのだということが お分かりになったのだと思います。 “そのあとで \@macro が実行されているわけですが、それはおかしいですよね。”については いかがでしょうか。 \@macro は hoge 環境の内部マクロですから \hogeuse{hoge1} が実行される際に 現れるのはおかしいことです。 ログファイルを見ると「\@macro #1\end #2->」とあるすぐ上の行に 「\macro ->\def \contents {}\@macro 」と書かれているので、 \macro によって呼び出されているのがわかります。同様にさかのぼってゆくと、 大分上のほうになりますが 「\hoge #1->\refstepcounter {hoge}\label {hoge:#1}\macro 」とかかれた行があって、 \hoge というマクロから呼び出されていることがわかります。 最初の \hogeuse から \hoge まではマクロが5,6個展開されているだけのようですから、 何とか追跡できると思います。試してみてください。 \hoge が呼び出されてしまう仕組みが分かれば、どこをどう修正すればよいかも分かると思います。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)