参考文献在Knitr / RMarkdown

时间:2016-02-28 02:03:28

标签: r latex knitr r-markdown beamer

我目前正准备在RStudio进行演示(使用RMarkdown和Knitr,输出到Beamer演示文稿),其中有很多参考文献。

我使用的是非常典型的YAML标头:

---
title: "Title"
author: "Me"
date: "February 27th, 2016"
output: 
  beamer_presentation
csl: ../../apa.csl
bibliography: ../../RefenceDesk.bib 
---

此演示文稿编译并且引用按原样显示,但不幸的是它们都出现在一张幻灯片上(实际上是在页面上运行)。有没有办法让参考文献出现在多张幻灯片上?

3 个答案:

答案 0 :(得分:10)

{.allowframebreaks}是投影机中多滑道参考书目的解决方案。它使用常规的pandoc模板开箱即用(参见my previous answer)。但是,knitr有一个设置可以通过在其beamer模板中重新定义\widowpenalties来阻止它。如果您使用.tex检查keep_tex: true文件,则可以验证。

在我看来,这是一个错误。快速解决方法是将\widowpenalties重置为其默认值。它可以在您的yaml前端事项中完成:

---
title: Title
header-includes:
  - \widowpenalties 1 150
output: 
  beamer_presentation
---

然后,您可以指示参考部分:

## References {.allowframebreaks}

答案 1 :(得分:2)

虽然这不是使用常规pandoc引文模板,但我找到了另一种可用于在幻灯片中放置引用的方法,但它依赖于natbib引用包。

在YAML前面,我补充道:

---
title: "Title"
output: 
  beamer_presentation:
    citation_package: natbib
bibliography: ../../RefenceDesk.bib 
biblio-style: "apalike"
---

参考幻灯片没有获得标题,我似乎无法调整字体大小(在\scriptsize文件的末尾使用.Rmd),但至少它们是连贯的。< / p>

编辑:对于简约性,我删除了csl: ../../apa.csl行,因为natbib不需要它。

答案 2 :(得分:2)

正如@David上面在评论中所说:

  

对我而言,它并没有与## References {.allowframebreaks}一起使用,但它与#References {.allowframebreaks}一起使用。

我想指出,显然要让参考幻灯片正常工作,您必须在 YAML 部分创建一个由slide_level: __设置的标题级别相同的最后一张幻灯片。

因此,用户应设置以下之一:

  • #References {.allowframebreaks}。对于那些使用slide_level: 1,或者
  • 的人
  • ##引用{.allowframebreaks}。对于那些使用slide_level: 2,或者
  • 的人
  • ###引用{.allowframebreaks}。对于那些使用slide_level: 3等等......