我正在尝试使用 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
.yml
biblatex
preamble.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/44633939,https://stackoverflow.com/q/45028623,https://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]
并且不会加载biblatex
,preamble.tex
因此它只加载其他内容,例如
\usepackage{csquotes}