这个问题可能更适合 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" )}}