regex - 如何在 Emacs 中设置 reftex-view-crossref-extra?

标签 regex emacs pattern-matching org-mode

表达式 reftex-view-crossref-extrareftex-view-crossref 设置附加模式功能。它由宏正则表达式、搜索正则表达式和高亮组组成(如下图所示):

(MACRO-RE SEARCH-RE HIGHLIGHT).

MACRO-RE is matched against the macro. SEARCH-RE is the regexp used to search for cross references. `%s' in this regexp is replaced with with the macro argument at point. HIGHLIGHT is an integer indicating which subgroup of the match should be highlighted.



我正在尝试匹配以下模式(组织模式脚注):
[fn:author2000title:Optional text]
author2000title是我想要匹配的 biblatex 标签。我该怎么写MACRO-RESEARCH-RE ,使得 reftex-view-crossref适用于此类记录?

最佳答案

也许这会帮助您找到适合您的特殊设置的解决方案。为了测试这个,我设置了一个小的组织测试文件

* 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 中匹配的括号,列表中的第二个元素。

关于regex - 如何在 Emacs 中设置 reftex-view-crossref-extra?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331950/

相关文章:

regex - 在 perl 正则表达式替换命令行中使用 bash 变量名称作为匹配替换

带有重叠定界符的 Java Pattern.split()

c# - 切换模式匹配大小写回退

javascript - JavaScript如何替换字符串后缀?

php - 如何将 RGB(A) 值保存在数组中?

python - 为 emacs-jedi 安装 python 服务器

macos - Emacs 和 Emacsclient 版本不同

emacs - 更改 Common Lisp REPL 中文本的颜色

Java和Regex,获取匹配的子字符串

scala - 模式匹配 - 值不是绑定(bind)变量的成员