Pandoc风格的引文
Pandoc使用Markdown格式,该格式支持使用BibTeX文件中的键进行自动引用。该格式的一些示例是:Blah blah [@doe99]
Blah blah [@doe99, p.33]
Blah blah [see @doe99, pp. 33-35; also @smith04, ch. 1].
Emacs和Pandoc / Markdown
有一个Pandoc-Mode用于通过Emacs与Pandoc进行交互,可以与Markdown-Mode结合使用。 Pandoc模式和Markdown模式不支持自动完成来自bibtex文件的引用。具有这种对TeX文件的支持的模式是Reftex。我正在寻找一种在编辑Markdown文件时获得Reftex样式自动完成功能的方法。
其他编辑器中的自动补全
Textmate有一个解决方案:Autocomplete pandoc-style citations from a bibtex file in textmate。
该功能也位于Vim-Pandoc中:
通过在LaTeX Box's处窃取来实现自动完成
实施bibtex引文完成,即使结果
看起来不太像原始的
如何从Emacs中的bibtex文件中自动获得潘多克式引文的自动补全?
最佳答案
为此,您可以使用reftex-citation
。
建立
启用RefTeX
您必须为正在编辑的文件启用RefTeX,这可以通过M-x reftex-mode
或设置file variable来完成,例如将-*- mode: reftex; -*-
添加到文件的第一行。
告诉RefTeX您的书目在哪里
您需要告诉RefTeX where your bibliography file is。可以通过在.emacs中添加以下内容(并根据您的设置编辑路径)来完成此操作:
;; So that RefTeX finds my bibliography
(setq reftex-default-bibliography '("path/to/bibfile.bib"))
请注意,
reftex-default-bibliography
是一个列表,因此可以向其添加多个路径。如果对不同的文件使用不同的参考书目,则最好将每个文件的参考书目告诉RefTeX。恐怕我只知道这样做的丑陋方法。这个想法是因为RefTeX可以从LaTeX宏中提取正确的参考书目,因此您可以将LaTeX宏嵌入注释中。因此,您可以在Pandoc中添加这样的注释以及书目规范:
bibliography::bibliography_name.bib
<!-- \bibliography{bibliography_name} So that RefTeX knows about the bibliography -->
告诉RefTeX如何格式化引文
要使
reftex-citation
以Pandoc所使用的格式插入,您必须自定义reftex-cite-format
,例如将以下内容插入.emacs:(eval-after-load 'reftex-vars
'(progn
(setq reftex-cite-format '((?\C-m . "[@%l]")))))
您可能也希望包含其他格式。有关如何执行此操作的说明,请参见https://tex.stackexchange.com/a/31992/5701。请注意,此设置是全局设置,因此如果您还将RefTeX用于LaTeX,也会受到影响。
用
要插入引文,请执行
M-x reftex-citation
或C-c [
,然后按Enter键,您可以插入一个搜索词来在参考书目中进行搜索。然后,RefTeX将以Pandoc格式插入您选择的书目项目的关键字。