33

我在 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 如下所示:

在此处输入图像描述

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

在此处输入图像描述

如何在参考文献后插入附录?

4

3 回答 3

54

使用较新的 pandoc 版本,您可以使用<div id="refs"></div> 源指定参考书目的位置

This is some text [@item1]

This is more text [@item2]

# References

<div id="refs"></div>

# appendix
于 2017-05-31T20:42:19.480 回答
16

最终引用处理将发生变化,以便可以将引用放在您喜欢的任何地方(https://github.com/jgm/pandoc/issues/771),但现在没有简单的方法可以做到这一点。

正如这里所建议的,您可以将附录放在单独的文件中,使用 pandoc 将其转换为 LaTeX 片段,然后使用--include-after-body标志包含该片段。然后它会出现在参考书目之后。

于 2013-05-07T21:16:53.413 回答
5

在 Rmarkdown 文档中工作时,在引用位置输入以下文本。它可以放在文档的任何部分,以便在必要时添加其他材料,如附录。该方法依赖于 pandoc 的围栏 div,它将在 Rmarkdown 中工作。

::: {#refs}
:::

上述代码不应位于 R 代码块中,而应单独放置在空行中。一旦 pandoc 通过 knitter 处理,此代码将产生与<div id="refs"></div>@soca 的答案中提到的相同的结果。这两行代码始终允许在文档的任何部分中准确放置引用。

在下面的示例中,引用首先放在同名标题下,而文档中的所有代码块随后放在代码附录中。这是放置在 Rmarkdown 中的 pandoc 围栏 div,可用于生成以下图像。

# References
::: {#refs}
:::

# Appendix A: R Code
```{r ref.label=knitr::all_labels(), echo=TRUE, eval=FALSE}

```

如果 yaml frontmatter 中标识了 .bib 文件,则前面的 Rmarkdown 会产生类似于以下内容的输出: 在此处输入图像描述

有用的网址:

于 2021-04-18T23:11:38.180 回答