如何使用 biblatex 的引用命令设置 RefTeX?在管理参考文献的工作流程?Seamus 描述了使用 RefTeX 的工作流程,并提到
\autocite
将朋友添加到 aucTeX 的引用插入机制中并不太困难。
我希望与 RefTeX 一起使用的 biblatex 引用命令是\autocite
、\smartcite
和\textcite
。另外,我希望 RefTeX 能够与 csquotes' 一起使用\blockcquote
。
请注意,我并没有要求任何与编译有关的东西(比如 定制 emacs 以使用 biblatex-biber 而不是 bibtex)。
答案1
您需要挂接的变量是reftex-cite-format
。在我的 Emacs 初始化文件中的某个地方,我有以下代码:
(eval-after-load 'reftex-vars
'(progn
;; (also some other reftex-related customizations)
(setq reftex-cite-format
'((?\C-m . "\\cite[]{%l}")
(?f . "\\footcite[][]{%l}")
(?t . "\\textcite[]{%l}")
(?p . "\\parencite[]{%l}")
(?o . "\\citepr[]{%l}")
(?n . "\\nocite{%l}")))))
您应该将所需的命令添加到此列表中。每对中的第一个元素是您想要按下C-c [
以选择给定引用格式的字母。空方括号表示可选参数;RefTeX 有变量来控制它是否提示您输入这些参数。并且%l
是引用键所在的位置。
(您也可以通过 设置这个变量M-x customize-variable
,但我讨厌 Emacs 的这个特定功能。)
我不确定的语法\blockcquote
是什么...如果它具有比引用键更多的非可选参数,RefTeX 可能无法完全支持它(即,它插入命令,但你必须向后移动以填写其他参数)。
答案2
biblatex
与RefTeX集成的另一种方法csquotes
是通过YASnippet。
您可以为想要使用的每个引用宏创建一个代码片段,然后让代码片段调用reftex-citation
。
我使用一种设置,输入“ct”并按下Tab,然后在以下两个片段之间进行选择。
为了\auctocite
:
# -*- mode: snippet -*-
# name: autocite \autocite
# key: ct
# --
\autocite[$3]{${2:label$(unless yas/modified-p (reftex-citation 'dont-insert))}}$0
为了\textcite
:
# -*- mode: snippet -*-
# name: textcite \textcite
# key: ct
# --
\textcite[$3]{${2:label$(unless yas/modified-p (reftex-citation 'dont-insert))}}$0
我还使用以下内容\blockcquote
:
# -*- mode: snippet -*-
# name: Formal blockquote \blockcquote
# key: fbq
# expand-env: ((yas/indent-line 'fixed))
# --
\blockcquote[$2]{${1:label$(unless yas/modified-p (reftex-citation 'dont-insert))}}{%
$0%
}
有关使用 biblatex 引用的片段集合,请参阅https://github.com/Sleft/yasnippet-latex-mode/tree/master/cite。
答案3
为了使 RefTeX 与包一起工作,csquotes
我在我的包中使用了这个.emacs
:
(eval-after-load "tex"
'(TeX-add-style-hook "csquotes"
(lambda ()
(TeX-add-symbols
'("textcquote" [ "pre-note (post-note if alone)" ] [ "post-note" ] TeX-arg-cite [ "Punctuation" ] t ignore ignore)
'("blockcquote" [ "pre-note (post-note if alone)" ] [ "post-note" ] TeX-arg-cite [ "Punctuation" ] t ignore ignore)
'("foreigntextcquote" "Language" [ "pre-note (post-note if alone)" ] [ "post-note" ] TeX-arg-cite [ "Punctuation" ] t ignore ignore)
'("foreignblockcquote" "Language" [ "pre-note (post-note if alone)" ] [ "post-note" ] TeX-arg-cite [ "Punctuation" ] t ignore ignore)
))))
这样,当您运行时,C-c C-m blockcquote
它会提示您输入正确的参数,并且您将获得用于选择引用标签的 RefTeX 对话框。
我从某个地方拿了这封信,但不记得在哪里了。如果您需要编辑它,最重要的部分是调用TeX-arg-cite
宏的正确参数(引用标签)。