移除Latex标签(但不是其内容)的最简单方法?

移除Latex标签(但不是其内容)的最简单方法?,latex,tags,Latex,Tags,我正在使用TeXnicCenter编辑LaTeX文档 现在我想删除某个标记(比如,emph{blablabla}}),它在我的文档中多次出现,但不是标记的内容(因此在本例中,我想删除所有强调)。 最简单的方法是什么 也可能正在使用Windows 7上易于使用的其他程序 编辑:为了响应regex的建议,它必须能够处理嵌套标记 编辑2:我真的想从文本文件中删除标记,而不仅仅是禁用它。任何合理的高级编辑器都应该允许您使用搜索/替换,将emph{bla}替换为bla等。使用正则表达式执行类似s/\\em

我正在使用TeXnicCenter编辑LaTeX文档

现在我想删除某个标记(比如,
emph{blablabla}
}),它在我的文档中多次出现,但不是标记的内容(因此在本例中,我想删除所有强调)。 最简单的方法是什么

也可能正在使用Windows 7上易于使用的其他程序

编辑:为了响应regex的建议,它必须能够处理嵌套标记


编辑2:我真的想从文本文件中删除标记,而不仅仅是禁用它。

任何合理的高级编辑器都应该允许您使用搜索/替换,将
emph{bla}
替换为
bla
等。

使用正则表达式执行类似
s/\\emph\{([^\}]*)\}/\1/g
。如果您不熟悉正则表达式,则说明:

s -- replace
/ -- begin match section
\\emph\{ -- match \emph{
( -- begin capture
[^\}]* -- match any characters except (meaning up until) a close brace because:
  [] a group of characters
  ^ means not or "everything except"
  \} -- the close brace
  and * means 0 or more times
) -- end capture, because this is the first (in this case only) capture, it is number 1
\} -- match end brace
/ -- begin replace section
\1 -- replace with captured section number 1
/ -- end regular expression, begin extra flags
g -- global flag, meaning do this every time the match is found not just the first time
这是Perl语法,这是我所熟悉的

perl-pe的/\\emph\{([^\}]*)\}/\1/g”文件名
将“测试”将文件打印到命令行

perl-pi-e的/\\emph\{([^\}]*)\}/\1/g”文件名
将在适当位置更改文件


您的编辑器中可能有类似的命令,但如果没有,这将(应该)起作用。

Crowley应该将此添加为答案,但如果您将所有\emph{替换为{您应该能够在不干扰其他内容的情况下执行此操作。它仍将在大括号中,但除非您执行了一些奇怪的操作,否则它不重要

正则表达式将是一个简单的
s/\\emph\{/\{/g
,但是在编辑器中的搜索和替换也会这样做


编辑:抱歉,在正则表达式中使用了错误的大括号,现已修复。

\renewcommand{\emph}[1]{1}

我假设您的意思是\emph{blablabla}如果你出于某种原因不这样做,你可能会在我的回答中从我的正则表达式中删除\\。我知道这是一个老问题,但你找到了这样做的方法吗,特别是在嵌套标记上,并真正删除它们吗?我已经在网上搜索了几个小时,什么也没有。有些答案只处理特定的案例。如果要回答,不妨兴致勃勃地去做o如果标签中有另一个标签要删除,它是否能正常工作(即,在遇到正确的右大括号之前,将有一个右大括号)?@Raberberski:不。将括号与regexp匹配是一个相当困难的问题。正如Heinzi所说,在这种情况下更困难。下面是一些讨论的链接。他们正在考虑用尖括号替换,但用卷曲括号应该没有问题。他们递归地解析出每个嵌套文本。只是想添加它以替换regex在背面,这将是:Find:\\emph\{([^\}]*)\}Replace:$1最好说:“用
{
替换
\emph{/code>”?很好的解决方法!(当时我没能理解Crowley的答案)