使用Knitr和.Rnw for LaTeX,如何在PDF输出中打印完整的参考书目?

时间:2015-10-25 17:23:49

标签: r pdf latex knitr bibliography

我似乎无法破解所有可能性,并在RStudio,knitr的PDF输出,.Rnw脚本和“编译PDF”按钮中插入了完整的参考书目。 PDF中的所需文本将是引用作品的详细信息。

这是一个名为jabrefbibtest.bib的Lilliputian bibtex文件,保存在工作目录中。

@Book{GreentargetEngagement2012,
  Title                    = {"2012 - In - House Counsel New Media Engagement Survey"},
  Author                   = {"Inside Counsel "},
  Publisher                = {"Greentarget"},
  Year                     = {"2012"},
  Pages                    = {"20"},
  Plots                    = {"9"},
  Tables                   = {"0"},
  Url                      = {"http://www.greentarget.com/wp-content/uploads/2012/01/2012GTZGICSurveyReportFinal-WebsiteVersion.pdf"}
}
@Book{CitiprivateBank,
  Title                    = {"Intellectual Leadership with Law Watch"},
  Author                   = {""},
  Publisher                = {""},
  Year                     = {"2008"},
  Pages                    = {"2"},
  Plots                    = {"1"},
  Tables                   = {"4"},
  Url                      = {"http://www.citigroup.com/privatebank/lawassociates/pdfs/lawwatch/slipsheet.pdf"}
}

剥离的.Rnw脚本是

\documentclass[11pt]{article}  

\usepackage[backend=bibtex]{biblatex}
% \addbibresource{}     # not sure if this is needed

\begin{document}

<<bibbackground, echo=FALSE, include=FALSE>>=
setwd("~/R/knitr docs/")
Sys.setenv(TEXINPUTS=getwd(),
           BIBINPUTS=getwd(),
           BSTINPUTS=getwd())
@

\bibliographystyle{plain}
\bibliography{jabrefbibtest}

Here is one citation \cite{GreentargetEngagement2012} and here is a second \cite{CitiprivateBank}.

Now do full References show below?

\printbibliography   
\end{document}

日志:

! Package biblatex Error: '\bibliographystyle' invalid.

See the biblatex package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.59 \bibliographystyle{plain}

Use the package option 'style' instead.
I'm ignoring this command.


! LaTeX Error: Can be used only in preamble.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.60 \bibliography
                  {jabrefbibtest}
Your command was ignored.
Type  I <command> <return>  to replace it with another command,
or  <return>  to continue without it.

LaTeX Warning: Citation 'GreentargetEngagement2012' on page 1 undefined on inpu
t line 62.
[more omitted]

除了 The Latex Companion 动态文件与R和knitr ,谢毅辉,两本LaTeX引物和262页的biblatex手册我一直在努力这些网站的复杂建议。徒劳。

https://tex.stackexchange.com/questions/71565/knitr-and-biblatex

https://tex.stackexchange.com/questions/63852/question-mark-instead-of-citation-number

http://texblog.org/2013/08/20/rknitr-automatic-bibliography-generation-with-biblatex-in-rstudio/

http://www.inside-r.org/packages/cran/knitcitations/docs/bibliography

在评论之后编辑

所有PDF文件都是:

参考 这是一个引用[?],这是第二个[?]。 现在完整的参考文献如下所示?

4 个答案:

答案 0 :(得分:2)

正如错误消息告诉你的那样:

  1. 不要使用\bibliographystyle{plain}(这对biblatex不起作用);使用style中的\usepackage[]{biblatex}选项代替;
  2. \bibliography{jabrefbibtest}必须放在序言中而不是正文中。
  3. 纠正这些问题之后,它应该有效:

    \documentclass[11pt]{article}  
    
    \usepackage[backend=bibtex]{biblatex}
    \bibliography{jabrefbibtest}
    % or use \addbibresource{jabrefbibtest.bib}
    
    \begin{document}
    
    Here is one citation \cite{ABFWomenFirstChairs2015} and
    here is a second \cite{ACCGCSkills2013}.
    
    Now do full References show below?
    
    \printbibliography   
    \end{document}
    

    BTW,RStudio可能不支持biber的默认后端biblatex,因此使用了backend=bibtex选项。

答案 1 :(得分:1)

我正好使用下面的这个设置来获取(注意我不喜欢在knitr / rmarkdown中更改wd并删除它;而且你在Rnw中的键与mwe中的键不匹配) :

enter image description here

\documentclass[11pt]{article}

\usepackage[american]{babel}
\usepackage[style=apa,backend=biber,bibencoding=latin1]{biblatex}
\DeclareLanguageMapping{american}{american-apa}

\addbibresource{jabrefbibtest.bib}


\begin{document}

<<bibbackground, echo=FALSE, include=FALSE>>=
#setwd("~/R/knitr docs/")
Sys.setenv(TEXINPUTS=getwd(),
           BIBINPUTS=getwd(),
           BSTINPUTS=getwd())
@

%\bibliographystyle{plain}

Here is one citation \cite{GreentargetEngagement2012} and here is a second \cite{CitiprivateBank}.

Now do full References show below?

\printbibliography
\end{document}

在Rnw编织之后,我必须通过LaTeX编译器运行tex文件,以便第一次渲染引用。

答案 2 :(得分:0)

我总是将\bibliography{jabrefbibtest}放在我希望引用发生的脚本末尾。

答案 3 :(得分:0)

要在您的参考书目中包含.bib文件中的所有引用,即使是那些您最终没有引用的引用,也包括该行 行\nocite{*}

之前的\printbibliography