表达式reftex-view-crossref-extrareftex-view-crossref函数设置了其他模式。它由宏正则表达式,搜索正则表达式和突出显示组组成(如下图所示):



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

[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}}
注意:如果您只想在搜索/匹配中突出显示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/

10-12 18:08