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

名前: 北見 けん
日時: 2006-06-12 18:47:57
IPアドレス: 211.128.71.*

>>43372 > “\end{hoge}”自体を引数の区切りにする すみません、これ不正確でしたね。 書き込んだ後で気が付いたのですが不精してそのままになっていました。 “\end{hoge}”自体を引数の区切りにするつもりで \def\macro#1\end{hoge}{マクロ定義} のようにしたとしても、 “\end”までが引数の区切りになって、“hoge”が定義内容になってしまいます。 ので、“\end”に続く環境名を取り込んで“hoge”かどうか判断しなければいけません。 ## hoge 環境の使い方として、 ## \begin{hoge} と \end{hoge} の間には他の \end が含まれることがない ## というような仕様にするのなら、この判断は省略できるでしょう。 例えば、最初に現れる \end{hoge} までを取得するには次のようにします。 ## これでも hoge 環境自体はそのままでは入れ子にできません。 ## hoge 環境の入れ子を許容するなら \begin も取り込んだり面倒です。 ## その場合には、実際には無いかもしれない \begin に対処するため複雑になります。 \def\hogestring{hoge}% 比較用文字列 \def\macro{\def\contents{}\@macro}% 取り込み開始。環境の中身を \contents に溜め込みます。 \def\@macro#1\end#2{% \expandafter\def\expandafter\contents\expandafter{\contents#1}% \def\tempa{#2}% \ifx\tempa\stringhoge \end{hoge}% \else \expandafter\def\expandafter\contents\expandafter{\contents\end{#2}}% \expandafter\@macro \fi } ## 実際には動かしていないので、予期しない不具合があるかもしれません。

この書き込みへの返事:

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