Можно ли указать несколько файлов библиографии (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 и выполняет следующие шаги:
- получить файл (ы) библиографии из поля метаданных библиографии;
- собрать все цитаты в документе;
- создайте библиографию и вставьте соответствующий текст в документ;
- закодируйте полученный документ снова в JSON и запишите в stdout.
Затем Pandoc продолжит свою работу, используя измененный документ.
bibliography
Поле может быть установлено либо через командную строку, либо в самом документе. Единственная разница между использованием параметров командной строки или метаданных YAML заключается в том, что pandoc вызывает pandoc-citeproc
автоматически, если библиография задана как параметр CLI. Поскольку мы не хотим этого, нам нужно явно указать pandoc, что должен быть вызван фильтр pandoc-citeproc.