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

名前: kreson
日時: 2006-06-09 11:33:08
IPアドレス: 58.188.33.*

>>42985 間があいてしまいましたが, これ試してみました. \makeatletter \newif\ifDRAFT \newenvironment{hoge}{\hogedef\bgroup}{\egroup} \newcounter{hoge} \long\def\hogedef#1{ \refstepcounter{hoge} \@namedef{hoge\the\c@hoge}{#1} \par\noindent [hoge~\the\c@hoge] \par#1} \def\hogeref#1{\ref{hoge:#1}} \def\hogeuse#1{ \@ifundefined{hoge\ref@csname{hoge:#1}} {\@latex@warning{Undefined hoge `#1' on page \thepage}} {\ifDRAFT [hoge~\hogeref{#1}] \else \@nameuse{hoge\ref@csname{hoge:#1}} \fi}} \makeatother と定義して \hogedef{a}\label{hoge:a} \DRAFTtrue \hogeuse{a} \DRAFTfalse \hogeuse{a} \begin{hoge} b \end{hoge} \label{hoge:b} \DRAFTtrue \hogeuse{b} \DRAFTfalse \hogeuse{b} を処理すると [hoge 1] a [hoge 1] a [hoge 2] b [hoge 1] a となり, 環境にした場合だけおかしくなります. b の方も hogedef にすると問題はありません. \hogedef の中に長文が入るので環境の方がいいかなと思い, 上のようにしたのですが, 何がまずいのでしょうか?

この書き込みへの返事:

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