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

Ant*_*nko 27 regex emacs pattern-matching org-mode

该表达式reftex-view-crossref-extrareftex-view-crossref函数设置了其他模式.它由Macro Regexp,Search Regexp和Highlight Group组成(如下图所示):

(MACRO-RE SEARCH-RE HIGHLIGHT).

MACRO-RE与宏匹配.SEARCH-RE是用于搜索交叉引用的正则表达式.此正则表达式中的`%s'将替换为点处的宏参数.HIGHLIGHT是一个整数,表示应突出显示匹配的哪个子组.

我正在尝试匹配以下模式(组织模式脚注):

[fn:author2000title:Optional text]
Run Code Online (Sandbox Code Playgroud)

author2000title是我想要匹配的biblatex标签.我怎么能写MACRO-RESEARCH-RE,使得 reftex-view-crossref这几样工程的纪录?

Tom*_*ner 2

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

\n\n
* Heading 1\n  \\oinc{mylabel}\n   stuff\n* Heading 2\n  otherstuff [fn:mylabel:Display text]\n
Run Code Online (Sandbox Code Playgroud)\n\n

设置reftex-view-crossref-extra

\n\n
(setq reftex-view-crossref-extra \'(("\\\\\\\\oinc" "\\\\[fn:%s:[^]]*?\\\\]" 0)))\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我将点放在\\oinc{mylabel}大括号内,然后按C-c &[fn...]则会突出显示并识别为第一个且唯一的匹配项。

\n\n

编辑:替换"\\\\\\\\oinc"为包含您使用的定义宏的标签的正则表达式,例如"\\\\\\\\mylabel\\\\|\\\\\\\\oinc". 您无法为标准命令\\label等定义参考匹配;它们的处理是硬编码的;但您可以定义一个新命令,别名为 standard\xc2\xb9,并使用它来定义标签,可以使用reftex-view-crossref此处显示的设置方式来搜索自定义引用。

\n\n

总结一下:MACRO-RE是一个与不带您感兴趣的参数的宏相匹配的正则表达式,SEARCH-RE是一个与您所需的参考格式相匹配的正则表达式,并且您应该在其中放置一个%s将被与 . 匹配的宏的参数替换的MATCH-RE。如果您SEARCH-RE包含捕获括号,则可以仅突出显示捕获匹配的部分,方法是提供第三个列表元素HIGHLIGHT作为整数,引用正则表达式常用的捕获括号,即0整个匹配、1第一次捕获、2第二次捕获等.,其中左括号的顺序定义了捕获的匹配的编号。

\n\n

亲切的问候,\n汤姆

\n\n

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

\n\n

注意:如果您只想mylabel在搜索/匹配时突出显示,请将其更改为

\n\n
(setq reftex-view-crossref-extra \'(("\\\\oinc" "\\\\[fn:\\\\(%s\\\\):[^]]*?\\\\]" 1)))\n
Run Code Online (Sandbox Code Playgroud)\n\n

SEARCH-RE请注意列表中第二个元素中的匹配括号。

\n