# knitr and biblatex

I'd like to create a PDF report with knitr with LaTeX-code in RStudio with biblatex for citations. However, the in-text-citations are always undefined and no bibliography is printed. The same bibliography works perfectly with a pure .tex-document stored in the same folder and containing the same citations, same path to the .bib-file etc. However, as for all references (also with hyperref) I have to compile twice. I thought this might be the problem with knitr (that the compilation is run only once), but the hyperref-references to figures work well. Any idea what might go wrong with the bibliography when using knitr and how I can solve the problem?

MWE:

\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}


From the log-file:

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

-
Show us a reproducible example. Do you have use texi2dvi enabled? rstudio.org/docs/using/customizing –  Roman Luštrik Sep 13 '12 at 11:04
@RomanLuštrik I added an MWE. In the Rstudio options, I can only find Invoke compiler via texi2dvi script. I have now enabled it, but this doesn't solve the problem. –  AnjaM Sep 13 '12 at 11:44
The message seems to be very explicit. As a temp fix, you can run pdflatex on that .tex file again (outside Rstudio). –  Roman Luštrik Sep 13 '12 at 13:02
@RomanLuštrik So there is no way to get it with one click in knitr/RStudio? That's a bit disappointing. How does it create the within-text-figure references then? As far as I know, they also need a 2nd compilation. –  AnjaM Sep 13 '12 at 13:23
Try running the latex output file once in miktex or what ever after ward. For me after I run it once in miktex the citations show up using Rstudio. I think this is because the encessary files are created by miktex and then can be run later when using R studio. –  Tyler Rinker Sep 13 '12 at 14:33

## migrated from stackoverflow.comSep 14 '12 at 17:41

This question came from our site for professional and enthusiast programmers.

RStudio allows you to use a custom LaTeX program with that

• you can set up a script that does the proper processing
• there are automatic solutions for this, e.g. latexmk

Another option is that RStudio allows to specify build tools for a project. This may be

• either a Makefile
• or again a custom script

In addition, you may want to tell the RStudio developers about the need to have a bibliography in Sweave documents. You can tell them that I'd need it, too :-)

-
Have you managed to get that to work? –  Dieter Menne Aug 21 at 9:57

This kinda works when I press the compile button twice. It is just an ugly system call to biber.

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

Test \cite{Doe}

\printbibliography
\end{document}

<<>>=
system("biber mwe")
@

-

The standard procedure for getting citations to work properly is that you have to:

1) Run LaTeX

2) Run BibTex

3) Run LaTeX

4) Run LaTeX

One option is to use the command texify, others use a makefile. I am not entirely sure about what knitr runs, but probably it does not run the sequence enough. Personally, I use Emacs with ESS, combined with AuCTeX; it really works well for me.

P.S. I don't think you need to specify that it's a .bib file.

-