在另一个图或表的标题中的rmarkdown中交叉引用一个表或图

时间:2020-05-05 18:09:24

标签: r latex r-markdown tex

我正在制作一个rmarkdown文档,将其编织成PDF,并有一个图(图1)和一个表(表1),其中表更详细地说明了该图。我没有给任何一个提供标准标题的问题,但我想将表标题更改为“图1的说明”。有什么办法吗?

下面列出了代码块,如果需要提供更多信息,请告诉我:

YAML:

- \usepackage{caption} #and several others

output:
  bookdown::pdf_document2:
    keep_tex: no
    latex_engine: xelatex

代码块: 图1:

```{r figure-1, fig.cap="Figure"}
ggplot()
```

表1:

```{r table, fig.cap="Explanation of Figure \@ref(fig:figure-1)"}
knitr
kableExtra::kable(caption = "Explanation of Figure \@ref(fig:figure-1)")
```

带有一个反斜杠的主要错误消息是“错误:'@'是字符串中无法识别的转义”,并建议我忘记引用字符选项,这是不正确的。

文档带有两个反斜杠,但会产生标题“图形说明reffig:table”

3个反斜杠:与1相同的错误。

4个反斜杠:错误是“ pandoc-citeproc:未找到引用引用。!程序包标题错误:\ caption在float之外。”

感谢任何建议!

1 个答案:

答案 0 :(得分:0)

我尝试了多种不同的方法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}
``` 

现在,您可以使用普通的乳胶代码Fig-1,在乳胶标题中引用\ref{Fig-1}了:

```{=latex}
\begin{table}
\caption{Explanation of Figure \ref{Fig-1}}
``` 
```{r table}
kableExtra::kable(x = mtcars)
```

```{=latex}
\end{table}
``` 

注意: *我认为这只是一种解决方法。 *不可能同时使用块选项fig.cap = ""和乳胶代码