从 TeXShop 中的源中删除命令和相关花括号的脚本?

从 TeXShop 中的源中删除命令和相关花括号的脚本?

当我在 TeXShop 中编辑源代码时,我经常发现我想删除单词或短语中的强调。但删除单词\emph开头的 和{}周围的 比我想要的更烦人。

我想我正在寻找的是一个可以在命令开始时执行的脚本(例如\emph),它将从左到右扫描并删除除花括号之间的文本之外的所有内容(即,它将删除“\emph”,“{”和“}”)

有些东西会让我

This is \emph{emphasized} text 

This is emphasized text 

在代码本身中。

答案1

这不是 TeX 解决方案,但您可以使用正则表达式,例如在 vim 中:

:%s/\\emph{\([^}]*\)}/\1/g

注意事项:不会删除内部\emph的(\emph{foo \emph{bar} baz}),也不会删除\emph跨越多行的。(欢迎提出改进意见!)

答案2

如果必须对全部在大型文档或某些大部分中使用该\emph命令,我建议您根本不要触摸 \emph 命令,而是重新定义该命令(在序言或正文中)。主要优点是您可以轻松地在样式之间切换,而无需触摸每个强调的单词。MWE:

\documentclass{article}
\begin{document}
% Normal behaviour  
normal text \emph{emphasis text} \par
% Emphasis out
\renewcommand{\emph}[1]{#1}
normal text \emph{emphasis text} \par
% Emphasis become bold text
\renewcommand{\emph}[1]{\textbf{#1}} 
normal text \emph{emphasis text} \par
% Emphasis become underlined text
\renewcommand{\emph}[1]{\underline{#1}}
normal text \emph{emphasis text} \par
\end{document}

强调

答案3

如果我理解正确的话,你想要的是这样的:

\documentclass{article}

% \disable takes two arguments and only uses the second
\makeatletter
\let\disable\@secondoftwo
\makeatother

\begin{document}

This is \emph{emphasized} text

This is \disable\emph{emphasized} text

\end{document}

相关内容