расширенный поиск в tex-файлах

расширенный поиск в tex-файлах

Есть ли способ выполнять расширенные поисковые запросы в tex-файлах? Под «расширенным поисковым запросом» я подразумеваю все запросы, которые не могут быть выполнены с использованием только одного поискового термина.

Например, легко «показать все \emphкоманды, следующие за запятой», просто выполнив поиск , \emph, но как насчет более сложных задач, таких как:

"покажите мне все случаи, когда значение \emphкомандысодержитзапятая" или

"покажите мне все случаи, когда \emphкомандаза ним следуетзапятая».

Это всего лишь пример. Я могу придумать много других запросов, которые могут оказаться полезными при работе с Latex.

Что вызвало этот вопрос: Я немного знаю о работе с xml-файлами в Oxygen и о XPathпараметрах поиска. Для Latex я использую TexShopwhere я могу выбирать между тремя различными панелями поиска: Apple search bar, apple search panel и Ogrekit. Ogrekit более продвинутый, поэтому я подумал, что с его помощью можно выполнять "расширенные поисковые запросы". Но я не знаю как.

Тем не менее, я бы предпочел получить ответы на вопросы TexShopи , Ogrekitно в целом я был бы рад любым подсказкам о том, как искать более сложные шаблоны в моих документах.

решение1

В TeXShop встроен поиск по регулярным выражениям. Поэтому, используя пример текста в ответе SeanAlred, мы можем искать примеры использования \emphследующим образом:

введите описание изображения здесь

Повторное нажатие Next(или CONTROL-G):

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

решение2

Кроме того, движок регулярных выражений Emacs способен сопоставлять многострочные шаблоны, поэтому регулярное выражение, предоставленное Шоном, адаптированное к синтаксису 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, который мог бы это сделать.

Связанный контент