表达式reftex-view-crossref-extra
为reftex-view-crossref
函数设置了其他模式。它由宏正则表达式,搜索正则表达式和突出显示组组成(如下图所示):
我正在尝试匹配以下模式(组织模式脚注):
[fn:author2000title:Optional text]
author2000title
是我想要匹配的biblatex标签。如何写MACRO-RE
和SEARCH-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/