Замените сбалансированные скобки на сбалансированные скобки в LaTeX - PullRequest
0 голосов
/ 26 июня 2010

Как я могу написать (La) TeX команду, которая заменяет все [на {и все] на}, предполагая, что у каждого [есть соответствие], и что любые скобки между [и] сбалансированы?Необходимо иметь возможность работать с вложенными скобками.

Например, я хочу иметь возможность написать команду \mynewcommand, чтобы \mynewcommand{{[[{1}{2}][{3}{4}]]}} было таким же, как \mycommand{{{{{1}{2}}{{3}{4}}}}}.

1 Ответ

2 голосов
/ 27 июня 2010

Вероятно, самый простой способ - это использовать 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}%
}

Это будет определять \ temp с материалом в # 1, но с каждой парой "[" ... "]", превращенной в группу скоб TeX ("{" ... "}"). Затем вы можете использовать \ temp, чтобы делать все, что вы хотите. Как я уже сказал, для этого требуется e-TeX, который доступен во всех современных системах TeX.

...