1

我正在写一个很长的文档,并且我经常将一些术语格式化为斜体。一段时间后,我意识到也许这就是我现在想要的,所以我想删除所有将文本格式化为斜体的乳胶命令。

例子:

\textit{Vim} is undoubtedly one of the best editors ever made. \textit{LaTeX} is an extremely powerful, intelligent typesetter. \textbd{Vim-LaTeX} aims at bringing together the best of both these worlds

我如何运行一个替换命令来识别所有实例\textit{whatever}并将它们更改为justwhatever而不影响不同的命令,例如\textbd{Vim-LaTeX}本示例中的命令?

编辑:从技术上讲,有帮助的答案是来自 Igor 的答案,我会将其标记为正确的答案。尽管如此,应该考虑康拉德的回答,因为它显示了要遵循的正确乳胶策略。

4

2 回答 2

6

您根本不应该在文本中使用格式化命令。

LaTeX 是围绕语义标记的思想构建的。所以不要说“这个文本应该是斜体”,你应该使用它的函数来标记文本。例如:

\product{Vim} is undoubtedly one of the best editors ever made. \product{LaTeX}
is an extremely powerful, intelligent typesetter. \product{Vim-LaTeX} aims at
bringing together the best of both these worlds

…然后,在你的序言、一个包或一个文档类中,你(重新)定义一个宏\product来设置你想要的格式。这样,您可以在您认为有必要时调整宏,而无需更改代码。

或者,如果您想完全删除格式,只需让宏显示其裸参数:

\newcommand*\product[1]{#1}
于 2012-07-16T13:37:06.887 回答
3

使用这个替换命令:

% s/\\textit{\([^}]*\)}/\1/

如果 textit 可以跨越多行:

%! perl -e 'local $/; $_=<>; s/\\textit{([^}]*)}/$1/g; print;'

你也可以在没有 perl 的情况下做到这一点:

%s/\\textit{\(\_.\{-}\)}/\1/g

这里:

  • \_.-- 任何符号,包括换行符
  • \{-}——*不贪心。
于 2012-07-16T13:36:54.047 回答