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
一堆包含引用的文本。

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

\restartbib

# Supplement
一些包含引用的文本,其中一些也可能在主文本中引用。

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

\restartbib 函数将指定任何在函数命令之前出现的引用(仅这些引用)都被列在同一个参考文献章节中。同样,任何在命令之后出现的引用仅出现在接下来的文献表中(除非它们也被引用在前一节中)。简而言之,该函数将使两个参考文献章节彼此独立。 理想情况下,该函数可以被调用多次,以生成 >2 个独立参考文献章节。

有没有办法实现这个?

点赞