Я хочу включить отдельные разделы ссылок для основного текста и дополнительного текста в документ 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 независимых библиографий.
Это какой-то способ сделать это?