用 LaTeX 中的平衡括号替换平衡括号
如何编写一个 (La)TeX 命令,将所有 [ 替换为 {,将所有 ] 替换为 },假设每个 [ 都有一个匹配的 ],并且 [ 和 ] 之间的任何大括号都是平衡的?它需要能够处理嵌套括号。
例如,我希望能够编写命令 \mynewcommand
以便 \mynewcommand{{[[{1}{2}][{3}{4}]]}}
与 \mycommand{{{{{1}{2}}{{3}{4}}}}}
相同。
How can I write a (La)TeX command that replaces all [ with { and all ] with }, assuming that every [ has a matching ], and that any braces between the [ and ] are balanced? It needs to be able to deal with nested brackets.
For example, I want to be able to write a command \mynewcommand
so that \mynewcommand{{[[{1}{2}][{3}{4}]]}}
is the same as \mycommand{{{{{1}{2}}{{3}{4}}}}}
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
也许最简单的方法是使用 e-TeX 和 \scantokens
这将使用 #1 中的材料定义 \temp,但每个“[”...“]”对都变成 TeX 大括号组(“{”... “}”)。然后你可以使用 \temp 来做任何你想做的事情。正如我所说,这需要 e-TeX,它在所有现代 TeX 系统中都可用。
Probably the easiest way is to use e-TeX and \scantokens
This will define \temp with the material in #1 but with every "[" ... "]" pair turned into a TeX brace group ("{" ... "}"). You can then use \temp to do whatever you want. As I say, this requires e-TeX, which is available in all modern TeX systems.