Cross-referencing 一个 table 或 rmarkdown 中另一个图的标题中的图或 table
Cross-referencing a table or figure in rmarkdown in the caption of another figure or table
我正在制作一个 rmarkdown 文档,编织成 PDF 并有一个图(图 1)和一个 table(table 1),其中 table 解释了更多的图细节。我没有问题给他们任何一个标准标题,但我想将 table 标题更改为 "Explanation of Figure 1"。有什么办法吗?
下面列出了代码块,如果我需要提供更多信息,请告诉我:
YAML:
- \usepackage{caption} #and several others
output:
bookdown::pdf_document2:
keep_tex: no
latex_engine: xelatex
代码块:
图一:
```{r figure-1, fig.cap="Figure"}
ggplot()
```
Table 1:
```{r table, fig.cap="Explanation of Figure \@ref(fig:figure-1)"}
knitr
kableExtra::kable(caption = "Explanation of Figure \@ref(fig:figure-1)")
```
带有一个反斜杠的主要错误消息是 "Error: '@' is an unrecognized escape in character string",提示我忘记引用字符选项,这是不正确的。
文档使用两个反斜杠编织但生成标题 "Explanation of Figure reffig:table"
3 个反斜杠:与 1.
相同的错误
4个反斜杠:错误为"pandoc-citeproc: reference ref not found. ! Package caption Error: \caption outside float."
感谢任何建议!
我尝试了很多不同的方法 text references、块标题、kable 函数中的标题参数,我确信某处有一个聪明的解决方案,所以这里只是使用纯 Latex 的解决方法。
在带有数字的块之前添加带有label
的乳胶块:
```{=latex}
\begin{figure}
\caption{Figure 1}
\label{Fig-1}
```
```{r figure-1, echo = FALSE}
ggplot(mtcars) +
geom_point(aes(cyl, gear))
```
```{=latex}
\end{figure}
```
现在您可以参考 latex-caption 中的 Fig-1
以获得具有普通乳胶代码 \ref{Fig-1}
的 table:
```{=latex}
\begin{table}
\caption{Explanation of Figure \ref{Fig-1}}
```
```{r table}
kableExtra::kable(x = mtcars)
```
```{=latex}
\end{table}
```
备注:
* 在我看来,这只是一种解决方法。
* 不可能同时使用块选项 fig.cap = ""
和乳胶代码
只是一种解决方法,但可能会有所帮助。
\@ref(fig:xxx)
选项在编织到 html_document2
时效果很好。
对我来说 pdf - 在终端中使用 pandoc
时创建工作正常。
例如:
---
title: "Cross ref"
output:
bookdown::html_document2:
collapsed: no
theme: readable
toc: yes
link-citations: yes
---
```{r firstplot, fig.cap = "A plot with points." }
library(ggplot2)
plot_A = ggplot(data = data.frame(x = c(1:10),
y = seq(3, 8, length.out = 10)),
aes(x = x, y =y))+
geom_point()
plot_A
```
Now a second plot with a reference to Fig.: \@ref(fig:firstplot).
```{r secondplot, fig.cap = "This is the same as Fig.: \@ref(fig:firstplot)
but now with a red line." }
library(ggplot2)
plot_A + geom_line(alpha = .75,col = "red")
```
编织后只需移动到包含 html 的文件夹并使用 pandoc
pandoc mini_ex-crossref.html -o mini_ex.pdf
我正在制作一个 rmarkdown 文档,编织成 PDF 并有一个图(图 1)和一个 table(table 1),其中 table 解释了更多的图细节。我没有问题给他们任何一个标准标题,但我想将 table 标题更改为 "Explanation of Figure 1"。有什么办法吗?
下面列出了代码块,如果我需要提供更多信息,请告诉我:
YAML:
- \usepackage{caption} #and several others
output:
bookdown::pdf_document2:
keep_tex: no
latex_engine: xelatex
代码块: 图一:
```{r figure-1, fig.cap="Figure"}
ggplot()
```
Table 1:
```{r table, fig.cap="Explanation of Figure \@ref(fig:figure-1)"}
knitr
kableExtra::kable(caption = "Explanation of Figure \@ref(fig:figure-1)")
```
带有一个反斜杠的主要错误消息是 "Error: '@' is an unrecognized escape in character string",提示我忘记引用字符选项,这是不正确的。
文档使用两个反斜杠编织但生成标题 "Explanation of Figure reffig:table"
3 个反斜杠:与 1.
相同的错误4个反斜杠:错误为"pandoc-citeproc: reference ref not found. ! Package caption Error: \caption outside float."
感谢任何建议!
我尝试了很多不同的方法 text references、块标题、kable 函数中的标题参数,我确信某处有一个聪明的解决方案,所以这里只是使用纯 Latex 的解决方法。
在带有数字的块之前添加带有label
的乳胶块:
```{=latex}
\begin{figure}
\caption{Figure 1}
\label{Fig-1}
```
```{r figure-1, echo = FALSE}
ggplot(mtcars) +
geom_point(aes(cyl, gear))
```
```{=latex}
\end{figure}
```
现在您可以参考 latex-caption 中的 Fig-1
以获得具有普通乳胶代码 \ref{Fig-1}
的 table:
```{=latex}
\begin{table}
\caption{Explanation of Figure \ref{Fig-1}}
```
```{r table}
kableExtra::kable(x = mtcars)
```
```{=latex}
\end{table}
```
备注:
* 在我看来,这只是一种解决方法。
* 不可能同时使用块选项 fig.cap = ""
和乳胶代码
只是一种解决方法,但可能会有所帮助。
\@ref(fig:xxx)
选项在编织到 html_document2
时效果很好。
对我来说 pdf - 在终端中使用 pandoc
时创建工作正常。
例如:
---
title: "Cross ref"
output:
bookdown::html_document2:
collapsed: no
theme: readable
toc: yes
link-citations: yes
---
```{r firstplot, fig.cap = "A plot with points." }
library(ggplot2)
plot_A = ggplot(data = data.frame(x = c(1:10),
y = seq(3, 8, length.out = 10)),
aes(x = x, y =y))+
geom_point()
plot_A
```
Now a second plot with a reference to Fig.: \@ref(fig:firstplot).
```{r secondplot, fig.cap = "This is the same as Fig.: \@ref(fig:firstplot)
but now with a red line." }
library(ggplot2)
plot_A + geom_line(alpha = .75,col = "red")
```
编织后只需移动到包含 html 的文件夹并使用 pandoc
pandoc mini_ex-crossref.html -o mini_ex.pdf