Подтвердить что ты не робот

Как настроить reftex-view-crossref-extra в Emacs?

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

(MACRO-RE SEARCH-RE HIGHLIGHT).

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

Я пытаюсь сопоставить следующий шаблон (примечания org-mode):

[fn:author2000title:Optional text]

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

4b9b3361

Ответ 1

Возможно, это поможет вам найти решение для вашей специальной настройки. Чтобы проверить это, я настраиваю небольшой тестовый файл 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 как целое число, относящееся к захвату parens как ususal для регулярного выражения, то есть 0 для всего матча, 1 для первого захвата, 2 для второго и т.д., где порядок открытия парсеров определяет нумерацию захваченных совпадений.

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

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

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

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

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