![如何在保留参数的同时删除所有出现的命令?](https://linux22.com/image/422078/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%BF%9D%E7%95%99%E5%8F%82%E6%95%B0%E7%9A%84%E5%90%8C%E6%97%B6%E5%88%A0%E9%99%A4%E6%89%80%E6%9C%89%E5%87%BA%E7%8E%B0%E7%9A%84%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我有一个 tex 文件,其中多次出现了我自己定义的命令\add{...}
。此命令将文本字符串作为参数,并为其赋予不同的颜色(例如 \textcolor{red}{#1})。现在我需要删除所有这些命令,同时保持参数本身完好无损。我可以想出一些迂回的方法来做到这一点;只需删除所有出现的命令\add
,让匹配的命令{
和}
命令在文档中保持浮动。或者甚至可以更改\add
命令的定义,使其将参数的颜色设置为文档的默认颜色。
我想知道的是,如何\add
从我的文档中完全删除命令,包括括号。我一直很小心,只在文本字符串上使用命令,从不进行任何数学或引用,这样各\add{...}
部分内就不会有嵌套的括号。我认为这应该意味着某种类似正则表达式的技术可以解决我的问题?
(需要说明的是,我知道这种\add
标记修订的方式远不如使用 latexdiff,但我愿意与我的教授争论的只有这么多。)
答案1
如果您可以运行perl
,则可以使用以下命令获取您想要的内容:
perl -pi.bak -e 's/\\add{(.*?)}/\1/g' <filename>
这将运行perl
,将文件备份为<filename>.bak
,并用替换每个出现的\\add{<stuff>}
(<stuff>
嵌套括号将使其失败,但您说您没有嵌套括号)。