删除格式化命令的所有实例

删除格式化命令的所有实例

这个问题可能更适合 bash,但如果有人遇到同样的问题也发布在这里...

当我与其他人一起编辑文档时,我经常用颜色标记不同人的编辑内容,这样当我们阅读文档的新版本时,每个人都知道自己编辑了什么。例如,我会这样做\newcommand{\supernano}[1]{\textcolor{blue}{#1}},然后在文本中将新文本放入\supernano{}

一旦我们都阅读并讨论了新版本,我们就会删除所有的颜色编码,但到目前为止,我一直在手动进行,通过搜索和删除每个实例\supernano{并浏览文本以找到相应的}

有人知道有更有效的方法吗?我想一定有一些使用正则表达式的 bash 方法来删​​除命令实例,同时保留其中的文本,但我找不到类似的例子。

答案1

不要删除\supernano。对于最终版本,只需将命令的定义更改为仅输入纯文本:

% \newcommand\supernano[1]{\textcolor{blue}{#1}} %%  draft version
\newcommand\supernano[1]{#1}                     %%  final version

但在重新发明轮子之前,先看看这个包更改的例子

答案2

我的第一个建议是遵循@Fran 的建议然后运行\newcommand\supernano[1]{#1}

但是,如果您想从输入流中物理删除所有实例\supernano{和相关实例},并且您愿意并能够使用 LuaLaTeX 编译您的文档,您可以在文档的序言中插入以下代码块:

\usepackage{luacode} % for '\luaexec' macro, escape Lua's '%' as '\%'
\luaexec{ % Define a couple of Lua funcions:
function StripFirstLast ( s ) % Remove first and last chars from input
   return ( s:sub ( 2 , -2 ) )
end
function DisableSupernano ( s )
   return ( s:gsub ( '\\supernano\%s-(\%b{})', StripFirstLast ) )
end
}
% Assign 'DisableSupernano' to LuaTeX's "process_input_buffer" callback:
\AtBeginDocument{\directlua{luatexbase.add_to_callback (
   "process_input_buffer" , DisableSupernano , "DisableSupernano" )}}

相关内容