Можно ли указать несколько файлов библиографии (BibTeX) в метаданных Pandoc?

Часто сайты научных журналов и другие источники предлагают загружаемые *.bib файлы для ссылки на отдельные статьи. Если я использую их, мне нравится сохранять их такими, какие они есть, а не объединять их в один файл. В командной строке можно указать несколько файлов, передав --bibliography Вариант несколько раз. Могу ли я также перечислить несколько файлов в метаданных YAML внутри *.md сам документ?

2 ответа

Если вы хотите использовать biblatex для средства форматирования цитирования, вы можете настроить несколько файлов bib в своей теме YAML:

---
bibliography:
- mybib1.bib
- mybib2.bib
---

Вам нужно будет скомпилировать с:

pandoc myfile.md -o myfile.pdf --biblatex

Это работает, потому что латексные шаблоны содержат $for(bibliography)$ цикл:

$if(biblatex)$
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$
$for(bibliography)$
\addbibresource{$bibliography$}
$endfor$
$endif$

Библиографии могут быть указаны в метаданных документа, т. Е. Через Markdown в блоках YAML:

---
bibliography:
- one.bib
- two.bib
- three.bib
---

Это работает только если pandoc-citeproc вызывается как фильтр, передавая --filter=pandoc-citeproc в командной строке. Например,

$ pandoc --filter=pandoc-citeproc --from=markdown --to=latex my-file.md

Чтобы понять почему, мы должны сделать шаг назад и посмотреть, как Пандок обрабатывает цитаты. Обычно, т. Е. Если альтернативный метод цитирования не был запрошен через --natbib или же --biblatex, pandoc использует pandoc-citeproc для обработки цитат, обеспечивая сопоставимую обработку цитат в разных форматах. pandoc-citeproc работает как фильтр pandoc: программа получает полный документ в формате JSON pandoc и выполняет следующие шаги:

  1. получить файл (ы) библиографии из поля метаданных библиографии;
  2. собрать все цитаты в документе;
  3. создайте библиографию и вставьте соответствующий текст в документ;
  4. закодируйте полученный документ снова в JSON и запишите в stdout.

Затем Pandoc продолжит свою работу, используя измененный документ.

bibliography Поле может быть установлено либо через командную строку, либо в самом документе. Единственная разница между использованием параметров командной строки или метаданных YAML заключается в том, что pandoc вызывает pandoc-citeproc автоматически, если библиография задана как параметр CLI. Поскольку мы не хотим этого, нам нужно явно указать pandoc, что должен быть вызван фильтр pandoc-citeproc.

Другие вопросы по тегам