knitr 和 biblatex

knitr 和 biblatex

我想用中的代码knitr创建PDF 报告以引用。但是,文内引用始终未定义,并且不会打印任何参考书目。相同的参考书目与存储在同一文件夹中且包含相同引用、相同文件路径等的纯文档完美兼容。但是,对于所有参考文献(也使用),我必须编译两次。我认为这可能是 的问题(编译仅运行一次),但对图表的引用运行良好。知道使用时参考书目可能出现什么问题以及如何解决问题吗?LaTeXRStudiobiblatex.tex.bibhyperrefknitrhyperrefknitr

梅威瑟:

\documentclass{article}

\usepackage[style=authoryear-comp, maxnames=1, bibencoding=utf8, backend=biber]{biblatex}
\bibliography{ZoteroOutput.bib}

\begin{document}

According to the literature \parencite{gonzalez2003} we can assume...

\printbibliography

\end{document}

来自文件log

Package biblatex Warning: Please (re)run Biber on the file:
(biblatex)                mwe
(biblatex)                and rerun LaTeX afterwards.

答案1

RStudio 允许您使用自定义 LaTeX 程序接着就,随即

  • 您可以设置一个脚本来执行适当的处​​理
  • 对此有自动解决方案,例如latexmk,像这样:(Sys.setenv(RSTUDIO_PDFLATEX = "/Library/TeX/texbin/latexmk")或者任何路径)

另一个选择是 RStudio 允许为项目指定构建工具。这可能是

  • Makefile
  • 或者再次自定义脚本

此外,您可能想告诉 RStudio 开发人员在 Sweave 文档中需要有参考书目。您可以告诉他们我也需要它 :-)

答案2

knitr使用withLaTeX代码来RStudio生成PDF 以供引用实际上非常容易biblatex

您必须使用bib_engine = "biber"tinytex::latexmk内的选项knitr::knit2pdf

就像这里一样:knitr::knit2pdf(file.Rnw, bib_engine = "biber")

答案3

我认为问题出在你身上backend,因为 Rstudio 用于texi2dvi编写 pdf,因此它不知道biber

尝试改变:

\usepackage[backend=biber]{biblatex}

\usepackage[backend=bibtex]{biblatex}

在序言中。

通常这是可行的。

答案4

当我按两次编译按钮时,这个功能就起作用了。这只是一个丑陋的系统调用biber

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{Doe,author={John Doe},title={Title}}
\end{filecontents}
\usepackage[backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}

Test \cite{Doe}

\printbibliography
\end{document}

<<biber>>=
system(paste("biber", sub("\\.Rnw$", "", current_input())))
@

相关内容