在 tex 文件中进行高级搜索

在 tex 文件中进行高级搜索

有没有办法在 tex 文件中执行高级搜索查询?我所说的“高级搜索查询”是指所有无法仅使用单个搜索词执行的查询。

例如,\emph只需搜索 就可以轻松“显示所有跟在逗号后面的命令” , \emph,但对于更高级的任务,例如:

\emph“显示所有执行该命令的值的实例包含逗号”或

“显示所有使用\emph命令的实例接下来是逗号”。

这只是一个例子。我能想到许多其他查询,在使用 Latex 时可能会有用。

xml是什么引发了这个问题:我对在 Oxygen 中使用 -files 和搜索选项有所了解XPath。对于 Latex,我使用TexShop可以在三个不同的查找面板之间进行选择的地方:Apple 搜索栏、Apple 搜索面板和 Ogrekit。Ogrekit 更高级,所以我认为可以用它来执行“高级搜索查询”。但我不知道怎么做。

话虽如此,我更喜欢关于的答案TexShopOgrekit但总的来说,我很乐意得到任何关于如何在我的文档中搜索更复杂模式的提示。

答案1

TeXShop 内置了正则表达式搜索功能。因此,使用 SeanAlred 的回答中的示例文本,我们可以搜索使用实例,\emph如下所示:

在此处输入图片描述

反复点击Next(或 CONTROL-G):

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

答案2

此外,Emacs 的正则表达式引擎能够匹配多行模式,因此 Sean 提供的适合 Emacs 语法的正则表达式可以在这里使用:

在此处输入图片描述

答案3

使用普通方式无法实现这一点grep,但使用 可以实现pcregrep,这在现代 Linux 发行版中相当标准。

$ pcregrep -M '\\emph{[^}]*,' file.tex
  multiple lines.  See a \emph{really, really
  good tutorial} on \emph{unix, commandline}.
Here is an \emph{that spans a couple lines but
  unfortunately, the comma is on another line}

file.tex包含

This is a basic text file.
It contains many lines, some of which span
  multiple lines.  See a \emph{really, really
  good tutorial} on \emph{unix, commandline}.
Here is an \emph{that spans a couple lines but
  unfortunately, the comma is on another line}

您不太可能找到一个不支持 PCRE 正则表达式的编辑器来做到这一点。

相关内容