参考文献后,Pandoc插入附录

时间:2013-05-07 20:07:05

标签: r markdown knitr pandoc

我在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看起来像这样:

enter image description here

如果我尝试插入附录,参考文献仍然会在文档末尾打印,如下所示:

enter image description here

如何在引用后插入附录?

3 个答案:

答案 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 会产生类似于以下的输出: enter image description here

有用的链接: