множество независими секции за справка в 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 източник