Как настроить reftex-view-crossref-extra в Emacs? - PullRequest
27 голосов
/ 07 сентября 2011

Выражение reftex-view-crossref-extra устанавливает дополнительные шаблоны для функции reftex-view-crossref. Он состоит из Macro Regexp, Search Regexp и Highlight Group (как показано ниже):

(выделение MACRO-RE SEARCH-RE).

MACRO-RE сопоставляется с макросом. SEARCH-RE - это регулярное выражение используется для поиска перекрестных ссылок. `% s 'в этом регулярном выражении заменяется с аргументом макроса в точке. Выделение является целым числом указание, какая подгруппа матча должна быть выделена.

Я пытаюсь найти следующую комбинацию (сноски в режиме org):

[fn:author2000title:Optional text]

author2000title - это метка biblatex, для которой я хочу найти соответствие. Как я могу написать MACRO-RE и SEARCH-RE, чтобы reftex-view-crossref работал с такими записями?

1 Ответ

2 голосов
/ 23 мая 2013

Возможно, это поможет вам найти решение для вашей специальной настройки. Чтобы проверить это, я установил небольшой тестовый файл org

* Heading 1
  \oinc{mylabel}
   stuff
* Heading 2
  otherstuff [fn:mylabel:Display text]

Настройка reftex-view-crossref-extra на

(setq reftex-view-crossref-extra '(("\\\\oinc" "\\[fn:%s:[^]]*?\\]" 0)))

если поместить точку в \oinc{mylabel} внутри фигурных скобок и нажать C-c &, [fn...] будет выделено и идентифицировано как первое и единственное совпадение.

Редактировать : замените "\\\\oinc" на регулярное выражение, содержащее метку, определяющую используемые вами макросы, например, "\\\\mylabel\\|\\\\oinc". Вы не можете определить эталонные соответствия для стандартных команд \label и т. Д .; их обработка жестко закодирована; но вы можете определить новую команду для псевдонима стандарта¹, и, используя это для определения ваших меток, вы можете использовать reftex-view-crossref, чтобы настроить поиск так, как показано здесь,

Подводя итог: MACRO-RE - это регулярное выражение, совпадающее с макросами без параметров, которые вас интересуют, SEARCH-RE - это регулярное выражение, которое соответствует вашему желаемому справочному формату и в котором вы должны поместить %s, которое будет заменено на аргумент макроса соответствует MATCH-RE. Если ваш SEARCH-RE содержит круглые скобки захвата, вы можете выделить только часть совпадений захвата, указав третий элемент списка HIGHLIGHT в качестве целого числа, ссылаясь на вводимые в скобки символы как обычное для регулярного выражения, то есть 0 для всего соответствия, 1 для первого захвата, 2 для второго и т. Д., Где порядок открывающих паренов определяет нумерацию захваченных матчей.

С уважением, Том

1: \newcommand{\mylabel}[1]{\label{#1}}

Nota Bene: если вы хотите, чтобы при поиске / сопоставлении выделялось только mylabel, измените его на

(setq reftex-view-crossref-extra '(("\\oinc" "\\[fn:\\(%s\\):[^]]*?\\]" 1)))

обратите внимание на соответствующие символы в SEARCH-RE, втором элементе в списке.

...