我在R中使用knitr包和pandoc将.Rmd文件转换为PDF。 Pandoc链接到.bib文件,并自动在PDF末尾插入参考书目 我的.bib文件中的条目如下所示,取自http://johnmacfarlane.net/pandoc/demo/biblio.bib:
@Book{item1,
author="John Doe",
title="First Book",
year="2005",
address="Cambridge",
publisher="Cambridge University Press"
}
@Article{item2,
author="John Doe",
title="Article",
year="2006",
journal="Journal of Generic Studies",
volume="6",
pages="33-34"
}
要构建我的参考书目,我使用以下函数,取自:http://quantifyingmemory.blogspot.co.il/2013/02/reproducible-research-with-r-knitr.html
knitsPDF <- function(name) {
library(knitr)
knit(paste0(name, ".Rmd"), encoding = "utf-8")
system(paste0("pandoc -o ", name, ".pdf ", name, ".md --bibliography /Users/.../Desktop/test.bib --csl /Users/.../Desktop/taylor-and-francis-harvard-x.csl"))
}
我的.Rmd文件的内容是:
This is some text [@item1]
This is more text [@item2]
# References
输出的PDF看起来像这样:
如果我尝试插入附录,参考文献仍然会在文档末尾打印,如下所示:
如何在引用后插入附录?
答案 0 :(得分:34)
使用较新的pandoc版本,您可以使用<div id="refs"></div>
source
This is some text [@item1]
This is more text [@item2]
# References
<div id="refs"></div>
# appendix
答案 1 :(得分:12)
最终,引用处理将更改为可以将引用放在任何您喜欢的位置(https://github.com/jgm/pandoc/issues/771),但是现在没有简单的方法可以执行此操作。
根据建议here,您可以将附录放在单独的文件中,使用pandoc将其转换为LaTeX片段,然后使用--include-after-body
标记包含该片段。然后它会出现在参考书目之后。
答案 2 :(得分:2)
在 Rmarkdown 文档中工作时,请在引文所在的位置输入以下文本。它可以放置在文档的任何部分,允许其他材料(如附录)在必要时跟随。该方法依赖于 pandoc 的 fenced divs,它将在 Rmarkdown 中工作。
::: {#refs}
:::
上述代码不应位于 R 代码块中,而应单独放置在空行中。一旦由 pandoc 通过 knitter 处理,此代码将产生与@soca 在答案中提到的 <div id="refs"></div>
相同的结果。这两行代码始终允许将引用准确放置在文档的任何部分。
在下面的示例中,引用首先放在同名标题下,而文档中的所有代码块都放在代码附录中。这里是放置在Rmarkdown中的pandoc围栏div,可以用来生成后面的图片。
# References
::: {#refs}
:::
# Appendix A: R Code
```{r ref.label=knitr::all_labels(), echo=TRUE, eval=FALSE}
```
假设在 yaml frontmatter 中有一个 .bib 文件,前面的 Rmarkdown 会产生类似于以下的输出:
有用的链接: