名前: 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 の中に長文が入るので環境の方がいいかなと思い, 上のようにしたのですが, 何がまずいのでしょうか?
この書き込みへの返事: