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-citationC-c [,然后按Enter键,您可以插入一个搜索词来在参考书目中进行搜索。然后,RefTeX将以Pandoc格式插入您选择的书目项目的关键字。

09-25 22:07