当我在 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}