将 biblatex 与 R Markdown 结合使用

将 biblatex 与 R Markdown 结合使用

我正在尝试使用 R Markdown 文件编译 PDF 输出,并biblatex使用该包和 R Studio 构建我的参考书目。

这是我的代码/文件

index.Rmd

---
title: |

  Hello World!

author: |
  Juan Pérez

bibliography: refs.bib
---


# Intro

Lorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsumLorem ipsum.

[@Somoza1968]

在单独的文件中我有_output.yml文件:

bookdown::pdf_document2:
  latex_engine: lualatex
  includes: 
    in_header: preamble.tex
  keep_tex: yes
  citation_package: biblatex

在单独的文件中我有Refs.bib

@Book{Somoza1968,
  title         = {Argentina, la mortalidad según tablas de vida de 1914, 1946-1948 y 1959-1961},
  publisher     = {CELADE},
  year          = {1968},
  author        = {Somoza, Jorge L.},
  address       = {Santiago},
  timestamp     = {2018-07-03},
  type          = {Book},
}

preamble.tex

\usepackage[]{biblatex}

没有任何其他选项,它可以工作,但每次我想添加一个选项biblatex(例如style=alphabetic)时,我都会收到此错误消息:

tlmgr search --file --global '/biblatex-dm.cfg'
! LaTeX Error: Option clash for package biblatex.

Error: Failed to compile index.tex. See index.log for more info.
In addition: Warning message:
In parse_packages(logfile, quiet = c(TRUE, FALSE, FALSE)) :
  Failed to find a package that contains biblatex-dm.cfg
Execution halted

有什么想法可能是什么问题吗?我需要为 R Studio 进行特定配置吗?欢迎提出任何建议,说明哪种方法可能是使用 R Markdown 构建自定义书目的最佳实践。

答案1

LaTeX 的一个规则是,加载包两次不是一个好主意,并且使用不同的选项加载同一个包两次是错误的。

这就是这里发生的情况。你biblatex手动加载你的文件,然后在你的文件中preable.tex写入,这样 markdown 转换就会再次为你加载。只要你使用与 markdown 序言不同的选项加载包,就会出现错误。citation_package: biblatex.ymlbiblatexpreamble.tex

解决方案很简单:不要加载biblatex你的preamble.tex。让 markdown 帮你处理citation_package: biblatex

biblatex使用时传递选项的方式citation_package: biblatex是通过.yml文件。https://github.com/jgm/pandoc-templates/blob/9134a5a5f73231ea323a9af4aa806c7945633a7d/default.latex#L313暗示了两件事(我找不到关于第二点的文献)

  • 您可以biblio-style: <style>在文件中使用.yml来传递样式,就像在 LaTeX 中的加载选项中biblatex所做的那样。style=<style>biblatex
  • 您可以使用biblatexoptions: [<option_1>=<val_1>,...,<option_n>=<val_n>]将任意选项传递给biblatex

例如,https://stackoverflow.com/q/44633939https://stackoverflow.com/q/45028623https://rdrr.io/rforge/Pmisc/man/markdownHeader.html

所以你可以_output.yml

bookdown::pdf_document2:
  latex_engine: lualatex
  includes: 
    in_header: preamble.tex
  keep_tex: yes
  citation_package: biblatex
  biblio-style: alphabetic
  biblatexoptions: [backend=biber, maxbibnames=999]

并且不会加载biblatexpreamble.tex因此它只加载其他内容,例如

\usepackage{csquotes}

相关内容