emacs - 在 Emacs 中自动完成 Bibtex 文件中的 Pandoc 风格引文

标签 emacs autocomplete markdown bibtex pandoc

Pandoc 风格的引文

Pandoc使用 Markdown 格式,支持使用 BibTeX 文件中的键自动引用。该格式的一些示例是:

废话[@doe99]

废话[@doe99,第33页]

Blah blah [参见@doe99,第 33-35 页;还有@smith04,ch。 1].

Emacs 和 Pandoc/Markdown

有一个Pandoc-Mode用于通过 Emacs 与 Pandoc 交互,可以与 Markdown-Mode 结合使用。 Pandoc-Mode 和 Markdown-Mode 不支持自动完成 bibtex 文件的引文。对 TeX 文件具有这种支持的模式是 Reftex 。我正在寻找一种在编辑 Markdown 文件时获得 Reftex 式自动完成功能的方法。

其他编辑器中的自动补全

Textmate有一个解决方案:Autocomplete pandoc-style citations from a bibtex file in textmate .

该功能也在 Vim-Pandoc 中:

Autocompletion was implemented by hacking away at LaTeX Box's implementation of bibtex citation completion, even if the results don't look much like the original.

如何从 Emacs 中的 bibtex 文件中自动完成 pandoc 样式的引文?

最佳答案

为此,您可以使用reftex-引用

设置

启用 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 如何格式化引文

要以 Pandoc 使用的格式插入 reftex-引用,您必须自定义 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-itationC-c [,然后按 Enter,您就可以插入搜索词在您的引用书目中搜索。然后,RefTeX 将以 Pandoc 格式插入您选择的引用书目项目的关键字。

关于emacs - 在 Emacs 中自动完成 Bibtex 文件中的 Pandoc 风格引文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13607156/

相关文章:

javascript - 如何将美人鱼图添加到 rocket.chat 实例?

vim - 文件类型特定的行空间设置

testing - 我可以运行 JUnit 4 以从命令行测试 Scala 代码吗?

ruby-on-rails - 是否有与 rails3 兼容的 emacs 模式?

php - Emacs+geben : Open local files when debugging instead of remote ones

autocomplete - Android Studio - 自动标记关闭 - 以新行关闭

javascript - 如何阻止地址自动填充谷歌地点

javascript - 我怎样才能用jquery控制我的Json?

markdown - 如何在 jupyter markdown 单元格中创建新行

Emacs 缓冲区本地字体