gpt4 book ai didi

r - 我无法生成\标签{图 :mwe-plot} with knitr

转载 作者:行者123 更新时间:2023-12-02 07:59:19 24 4
gpt4 key购买 nike

当使用 knit 从 *.Rmd 文件转换为 *.md 时,我在生成绘图的 \label{} 时遇到问题> 通过 knitr 文件;然后通过 pandoc 转换为 *.pdf

下面包含我的*.Rmd的 MWE:

```{r Setup, include=FALSE, results="hide", warning=FALSE}
opts_chunk$set(dev="cairo_pdf", fig.lp="fig:", echo=FALSE, results="hide",
message=FALSE, warning=FALSE)
```

```{r mwe-plot, fig.cap = "MWE plot."}
library(ggplot2)
ggplot(mtcars, aes(factor(cyl))) +
geom_bar()
```

我编织:

knit("mwe.Rmd") 

然后我使用pandoc

pandoc -o mwe.pdf mwe.md 

我应该能够在我的*.Rmd源代码中与Figure\ref{fig:mwe-plot}交叉引用该图。但如果我运行的话,似乎 \label{fig:mwe-plot} 尚未在 mwe.tex 中创建:

pandoc -o mwe.pdf mwe.md

谢谢!

最佳答案

问题是您正在编写 R markdown 文件,并且与 LaTeX 相关的选项在此类文档中不起作用(它们没有效果)。 fig.cap 有效,但 fig.lp 无效,并且您根本不会添加任何 \label{} 因为输出Rmd 文档的钩子(Hook)是 markdown,一般没有标签等。

在这种情况下,您需要在 fig.cap 中手动编写 \label{},就像您在 LaTeX 文档中显式添加它一样。例如:

```{r mwe-plot, fig.cap = "\\label{fig:mwe-plot}MWE plot."}
library(ggplot2)
ggplot(mtcars, aes(factor(cyl))) +
geom_bar()
```

现在 knit 会使用 Markdown 图像标记约定将该标题逐字转储到 Markdown 文件中(在 R 中输入字符串时需要转义反斜杠,因此 中的 \\ Fig.cap 参数)。然后 Pandoc 将能够使用此标题和标签以及对它的引用都应该自行解析。

另一个选项更复杂;没有什么可以阻止您编写自己的自定义 Hook 来为您执行此操作,但是您必须研究 LaTeX Hook 和 MD Hook ,以了解如何组合您需要的两者元素。

请注意,此问题(与 LaTeX 输出相关的 block 选项)适用于写入 Rmd 文件时的所有此类 block 选项。这在 KNitr 网站的“选项”页面中有所暗示,但当我第一次开始使用带有 markdown 的 Knit 并使用 pandoc 进行渲染时,它仍然让我感到惊讶。

关于r - 我无法生成\标签{图 :mwe-plot} with knitr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24086498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com