【问题标题】:adding \label{} in kable kableExtra latex output在 kable kableExtra 乳胶输出中添加 \label{}
【发布时间】:2019-01-07 22:32:27
【问题描述】:

我正在尝试使用 \label{} 选项在 R 中创建一个乳胶格式的表格。

类似

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_value 将 \label{label_value} 参数添加到乳胶表中

\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 中自动创建可以保存然后包含在乳胶文档中的表格

【问题讨论】:

  • \label 参数放在哪里?您可以像常规字符串一样手动编辑 kable 的输出。您只需要确保为结果字符串提供原始输出中的属性
  • 看起来 gsub() 可以很好地编辑使用标题参数时创建的自动标签并仍然保留属性。感谢OganM的建议

标签: r latex kable kableextra


【解决方案1】:

如果您在对 kable 的调用中添加标题,您将根据您为代码块指定的名称自动获得一个标签。
如果您像示例中那样在顶层运行它,这有点笨拙:您需要将标签放在标题中,您将获得两个标签,一个是您的标签,一个是自动生成的无用标签。例如,

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}

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

【讨论】:

  • 很好的解决方案 user2554330。我目前正在 Tex Shop 中使用 R 制作的表格/图形编写手稿,因此我正在寻找一种简单的方法来自动合并表格和图形,并且效果很好。我不知道在 R-markdown 中创建手稿是否适合我,但也是一个很好的建议。
  • 如果您安装了自定义引擎,您可以在 TeXShop 中使用 Sweave 样式的 knitr。 (不要使用 Sweave,使用 knitr。)它会自动生成标签。如果您找不到或找出引擎的代码,请发布另一个问题,但可能不在 Stackoverflow 上:tex.stackexchange.com 会更合适。
【解决方案2】:

您可以使用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}

【讨论】:

  • 这很有趣:knitr::opts_current 帮助页面说opts_current$set 什么都不做。我想这仅在 knitr 文档中是正确的,而不是在顶级代码中。
【解决方案3】:

有一个内置选项。

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

更多信息请访问:https://github.com/haozhu233/kableExtra/issues/486

【讨论】:

  • 我喜欢它,但没有给你足够的控制权,因为它以“tab:”文本为前缀。
猜你喜欢
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 2018-10-24
  • 1970-01-01
相关资源
最近更新 更多