引数中で失敗するマクロ

Re: 引数中で失敗するマクロ

- 前田 一貴 の投稿
返信数: 0
\test の定義部を次のようにすればうまくいくでしょう.

\bgroup
\catcode`\{=10
\catcode`\}=10
\catcode`\<=1
\catcode`\>=2
\gdef\test<%
\xdef\temp<expandafter{ }>
>
\egroup

文字のカテゴリコードは,TeX エンジンがファイルからその文字を読み取った時点での設定が適用されます.
つまり,

\def\test{%
\bgroup
\catcode`\{=10
\catcode`\}=10
\catcode`\<=1
\catcode`\>=2
\xdef\temp<expandafter{ }>
\egroup
}

の場合,これを「読み取った時点での」 < や > のカテゴリコードは
12ですので,そのように \test は定義されます.
その後 \test の展開で \catcode`\<=1 が実行されようが,
既に12になっている < のカテゴリコードが変わることはありません.