引用包:在R bookdown中biblatex无法工作

5

编辑:经过一些调查,这个问题实际上与输出yml中的以下选项有关:

citation-package: biblatex

没有使用这个选项时,bookdown会使用默认的citeproc,不清楚如何修改作者数量。然而,当使用这个选项时,引用就不能正常工作了,我的文档中只包含粗体的引用名,而不是内联引用。所以我真的需要知道为什么引用包biblatex不能正常工作。
原问题如下:
我无法让bookdown遵守我的maxcitename=2设置。我尝试使用这个输出yml。
output: 
  bookdown::pdf_book:
    includes:
      in_header: preamble.tex
    keep_tex: yes
    toc_depth: 3
    toc_appendix: yes

在preamble.tex文件中加入以下代码:

\usepackage[backend=bibtex, maxcitenames=2, style=authoryear]{biblatex}

我也尝试使用了这个输出yml:

bibliography: [likertimputebiblio.bib, packages.bib]
biblatexoptions: [maxcitenames=2]
csl: harvard-university-of-wolverhampton.csl
link-citations: true
nocite: | 
  @R-bookdown

我也尝试了这个输出 yml:

site: bookdown::bookdown_site
documentclass: book
header-includes:
  - \usepackage[backend=bibtex, maxcitenames=2, style=authoryear]{biblatex}

但是似乎什么都不起作用。

请帮忙,谢谢。


请准确描述它是如何中断的?这只是这个情况吗:https://tex.stackexchange.com/questions/114442/biblatex-is-ignoring-maxcitenames ?没有更多信息,我们无法确定。 - Dason
嗨,问题类似但不完全相同。maxcitenames正在使用默认的3个autheryear格式。如果我在preamble.tex文件中使用该行,则它会按预期出现在main.tex文件中。但是,如果在输出yml中使用,则不会被拉入。我认为这是一个bookdown问题,因为我在main.tex文件中看到名称已经被部分处理了,因此呈现不正确。此外,此行\ usepackage [backend = bibtex,maxcitenames = 2,style = authoryear] {biblatex}在由knitr编译的R Sweave文件(.Rnw)中完美地工作 - julianhatwell
此外,我现在发现包含 citation_package: biblatex 的输出 yml(与 includes 处于相同的缩进级别)实际上会破坏所有文本引用。它们只会以粗体显示 bibref。 - julianhatwell
另外,选项biblatexoptions:[maxcitenames=2]将被包含在main.tex文件中的\ExecuteBiblatexOptions{maxcitenames=2},但仅当引用包:biblatex也被使用时(但这会破坏一切,所以没有用)。 - julianhatwell
所以我得出结论,biblatex 不是默认使用的,这就是为什么 preamble.tex 解决方案没有任何作用的原因。当我在 output.yml 中使用 citation_package: 选项切换到使用 biblatex 时,这会破坏引用 - 这是一个更大的问题。 - julianhatwell
显示剩余2条评论
1个回答

3
这个问题的解决经过了长时间的坚持不懈!在设置输出yml时,缩进在output:等下面...
citation_package: biblatex

...内联引用未能链接到.bib文件,因此引用名称只以粗体显示,并且未能进行任何内联引用。

预期的解决方案应该是使用附加选项:

biblatexoptions: [backend=bibtex, maxcitenames=2]

(maxcitenames=2是我想使用biblatex的主要原因),但是这个选项却报错"option backend not recognized."最终解决方案是修改目录中的默认模板。

C:\Program Files\R-3.4.0\library\rmarkdown\rmd\latex

在第100行,来自于

\usepackage$if(biblio-style)$[style=$biblio-style$]$endif${biblatex}

为了

\usepackage$if(biblio-style)$[backend=bibtex, style=$biblio-style$]$endif${biblatex}

我建议包的作者修复这个错误,因为backend=bibtex是一个有效的选项,应该被传递。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接