使用 biblatex 引用命令设置 RefTeX

使用 biblatex 引用命令设置 RefTeX

如何使用 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

通过 YASnippet 调用 biblatex 引文

我还使用以下内容\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宏的正确参数(引用标签)。

相关内容