Автозаполнение цитат из Pandoc из файла Bibtex в Emacs

Цитирования в стиле Пандока

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 для взаимодействия с Pandoc через Emacs, который можно комбинировать с Markdown-Mode. Pandoc-Mode и Markdown-Mode не поддерживают автозавершение цитат из файлов bibtex. Режим, поддерживающий такую ​​поддержку файлов TeX, Reftex. Я ищу способ получить автозаполнение стиля Reftex при редактировании файлов Markdown.

Автозаполнение в других редакторах

Существует решение для Textmate: Автозаполнение цитат из pandoc-стиля из файла bibtex в textmate.

Эта функция также находится в Vim-Pandoc:

Автозаполнение было реализовано путем взлома LaTeX Boxреализация цитирования бибтекса, даже если результаты не похожи на оригинал.

Как я могу получить автозаполнение для цитат в стиле pandoc из файла bibtex в Emacs?

Ответ 1

Для этого вы можете использовать reftex-citation.

Настройка

Включить RefTeX

Вы должны включить RefTeX для файла, который вы редактируете, который можно сделать с помощью M-x reftex-mode или путем установки переменной file, например, добавив -*- mode: reftex; -*- в первую строку файла.

Сообщите RefTeX, где вы, библиография,

Вам нужно указать RefTeX где находится ваш библиографический файл. Это можно сделать, добавив следующее в ваш .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.