【问题标题】:Replace balanced brackets with balanced braces in LaTeX在 LaTeX 中用平衡括号替换平衡括号
【发布时间】:2010-06-26 16:44:02
【问题描述】:

假设每个 [ 都有一个匹配的 ] 并且 [ 和 ] 之间的任何大括号是平衡的,我如何编写一个 (La)TeX 命令,将所有 [ 替换为 { 并将所有 ] 替换为 }?它需要能够处理嵌套的括号。

例如,我希望能够编写一个命令\mynewcommand,使\mynewcommand{{[[{1}{2}][{3}{4}]]}}\mycommand{{{{{1}{2}}{{3}{4}}}}} 相同。

【问题讨论】:

  • 您希望它用花括号替换括号作为分组字符还是要排版的字符?
  • 我希望它用对分组和参数传递有效的大括号替换它们(即,让它们像 \bgroup 和 \egroup 一样工作是不够的)。

标签: latex replace tex


【解决方案1】:

可能最简单的方法是使用 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 系统中都可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多