在 kable kableExtra 乳胶输出中添加 \label{}

adding \label{} in kable kableExtra latex output

我正在尝试使用 \label{} 选项在 R 中创建格式为 table 的 Latex。

类似于

library(tidyverse)
library(knitr)
library(kableExtra)

data_frame(a = 1:3, b = 2:4) %>% 
  kable(align = 'c', format = 'latex') %>% 
  kable_styling(full_width = FALSE)

结果输出如下,但我想将 \label{label_value} 参数添加到带有 label_value 的乳胶 table 我可以定义

\begin{table}[H]
\centering
\begin{tabular}{c|c}
\hline
a & b\
\hline
1 & 2\
\hline
2 & 3\
\hline
3 & 4\
\hline
\end{tabular}
\end{table}

我正在尝试在 R 中自动创建 tables,我可以将其保存然后包含在乳胶文档中

如果您在对 kable 的调用中放置一个标题,您将根据您为代码块指定的名称自动获得一个标签。
如果你是 运行 它在你的例子中的顶层,它有点笨拙:你需要把标签放在你的标题中,你会得到两个标签,你的标签和 auto-generated 无用的标签.例如,

library(tidyverse)
library(knitr)
library(kableExtra)

data_frame(a = 1:3, b = 2:4) %>% 
  kable(align = 'c', format = 'latex', 
       caption = "Table caption \label{tab:example}") %>% 
  kable_styling(full_width = FALSE)

产生

\begin{table}[t]

\caption{\label{tab:}Table caption \label{tab:example}}
\centering
\begin{tabular}{c|c}
\hline
a & b\
\hline
1 & 2\
\hline
2 & 3\
\hline
3 & 4\
\hline
\end{tabular}
\end{table}

我不确定,但我希望在某些情况下您需要手动编辑掉 auto-generated 标签 \label{tab:}。所以使用 knitr 或者 R-markdown 来避免这个问题。

您可以使用knitr::opts_current来控制自动生成带有标题的标签:

> library(knitr)
> library(kableExtra)
> opts_current$set(label = "hello")
> data.frame(a = 1:3, b = 2:4) %>% 
+     kable(align = 'c', format = 'latex', 
+           caption = "Table caption") %>% 
+     kable_styling(full_width = FALSE)
\begin{table}

\caption{\label{tab:hello}Table caption}
\centering
\begin{tabular}[t]{c|c}
\hline
a & b\
\hline
1 & 2\
\hline
2 & 3\
\hline
3 & 4\
\hline
\end{tabular}
\end{table}

有一个 built-in 选项。

kable(..., label = "something")

更多信息位于:https://github.com/haozhu233/kableExtra/issues/486