0

すべての [ を { に、すべての ] を } に置き換える (La)TeX コマンドを作成するにはどうすればよいでしょうか。ネストされたブラケットを処理できる必要があります。

たとえば、と同じ\mynewcommandようにコマンドを記述できるようにしたい。\mynewcommand{{[[{1}{2}][{3}{4}]]}}\mycommand{{{{{1}{2}}{{3}{4}}}}}

4

1 に答える 1

2

おそらく最も簡単な方法は、e-TeX と \scantokens を使用することです

\newcommand*\mycommand[1]{%
  \begingroup
    \everyeof{\noexpand}%
    \endlinechar=-1\relax
    \catcode`\[=1\relax
    \catcode`\]=2\relax
    \edef\temp{\scantokens{#1}}%
  \expandafter\endgroup
  \expandafter\def\expandafter\temp\expandafter{\temp}%
}

これは #1 のマテリアルで \temp を定義しますが、すべての "[" ... "]" ペアは TeX ブレース グループ ("{" ... "}") になります。その後、 \temp を使用して、必要なことを行うことができます。私が言うように、これには e-TeX が必要です。これは、最新のすべての TeX システムで利用できます。

于 2010-06-27T07:40:13.907 に答える