несколько независимых справочных разделов в Rmarkdown

Я хочу включить отдельные разделы ссылок для основного текста и дополнительного текста в документ Rmarkdown. Подход предложен здесь и здесь в основном работает, но если есть ссылки, которые появляются в обоих указанных файлах .bib, то они появляются в обоих списках, даже если они цитируются только в одном разделе.

Я решил эту проблему, переименовав ключи во втором файле .bib, а затем используя измененные ключи цитирования в дополнении. Это работало, пока я не процитировал одну и ту же статью в основном тексте и дополнении. Затем они были истолкованы как разные цитаты, поэтому они помечены буквами «a» и «b», например, (Smith et al. 2000a) и (Smith et al. 2000b), хотя это одна и та же ссылка.

Я обошел эту проблему, включив во второй файл .bib только те ссылки, которые указаны в дополнении. Если эти ссылки также цитируются в основном тексте, я оставляю их без изменений, но если они появляются только в дополнении, то я изменяю ключ цитирования. Затем измененные ключи появляются только во второй библиографии. Кажется, это работает, но громоздко (и подвержено ошибкам, если цитаты в тексте добавляются или удаляются и т. д.).

Есть ли способ лучше? Я хотел бы указать один файл .bib, который включает в себя любую возможную ссылку, которая будет цитироваться (плюс еще кучу — она связана с Zotero, и я использую пакет citr для вставки цитат). Затем я хотел бы каким-то образом сбросить диапазон, в котором сканируются цитаты. Например, я бы

---
bibliography: "My Library.bib"
output:
  bookdown::pdf_book:
    fig_caption: yes
    df_print: paged
    number_sections: no
    pandoc_args: --lua-filter=multiple-bibliographies.lua    
    toc: no
    keep_tex: true
    base_format: rticles::elsevier_article
---
# Main text
A bunch of text here with citations.

<!-- list all citation (and only those) occurring before the "\restartbib" function. -->
# Refereneces
::: {#refs}
:::

\restartbib

# Supplement
Some more text with citations, some of which also may be cited in the main text.

<!-- list all citation occurring after the "\restartbib" function. -->
# Supplemental Refereneces
::: {#refs}
:::

Функция \restartbib указывает, что любые цитаты, встречающиеся до функциональной команды (и только эти цитаты), перечислены в ссылке, которая также указана перед функциональной командой. Точно так же любые цитаты, идущие после команды, появляются только в следующей библиографии (если они также не цитируются в предыдущем разделе). Короче говоря, эта функция сделает две библиографии независимыми друг от друга. В идеале эту функцию можно было бы вызывать столько раз, сколько необходимо для >2 независимых библиографий.

Это какой-то способ сделать это?


person Glenn Stauffer    schedule 11.05.2020    source источник