假设我有一个TeX文件,其中包含以下内容:
A \foo[B]{C \bar{D \baz[E]{F}}} G \foo{H} I
我正在寻找一个工具,它可以自动删除所有出现的\foo命令,用'y'替换\foo[x]{y},即使'y'包含换行符和/或许多嵌套括号。上述案文将变为:
\foo
\foo[x]{y}
A C \bar{D \baz[E]{F}} G H I
我有哪些选择?命令行会很好,但我会考虑任何其他选择。
sg3maiej1#
这可以通过unix(或Linux)中的sed命令完成。如果你使用的是windows,cygwin提供了一个unix模拟器,可以很好的工作。
sed -e 's/\\foo\[[^]]*\]/\\foo/g' -e 's/\(\\foo{[^}]*}*\)} /\1 /g' -e 's/\\foo{//g' <your tex file>
会这么做这使用了正则表达式。第二个单引号前的g使它删除所有的foo命令,即使在一行tex代码中有多个出现。这假设对应于每个foo命令的右花括号后面有一个空格。
1条答案
按热度按时间sg3maiej1#
这可以通过unix(或Linux)中的sed命令完成。如果你使用的是windows,cygwin提供了一个unix模拟器,可以很好的工作。
会这么做这使用了正则表达式。第二个单引号前的g使它删除所有的foo命令,即使在一行tex代码中有多个出现。这假设对应于每个foo命令的右花括号后面有一个空格。