首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在模型摘要中向表中添加LaTeX引用标签

在模型摘要中向表中添加LaTeX引用标签
EN

Stack Overflow用户
提问于 2022-03-23 00:42:05
回答 1查看 295关注 0票数 0

我正试图用R(而不是RMarkdown,this question帮助回答)来生成modelsummary表,而且我很难添加参考标签(例如,tab:hello)。正如文森特在this answer中指出的那样,modelsummary的额外参数应该自动向前推进,但这似乎不适用于LaTeX标签。下面是一个例子:

代码语言:javascript
复制
library(modelsummary)
library(kableExtra)

x <- rnorm(100)
y <- rnorm(100)

modelsummary(lm(y ~ x),
             output = "latex",
             caption = "test",
             label = "hello")

这就产生了:

代码语言:javascript
复制
\begin{table}
\caption{test}
\centering
\begin{tabular}[t]{lc}
\toprule
  & Model 1\\
\midrule
(Intercept) & \num{-0.143}\\
 & (\num{0.100})\\
x & \num{-0.023}\\
 & (\num{0.092})\\
\midrule
Num.Obs. & \num{100}\\
R2 & \num{0.001}\\
R2 Adj. & \num{-0.010}\\
AIC & \num{283.4}\\
BIC & \num{291.2}\\
Log.Lik. & \num{-138.698}\\
F & \num{0.061}\\
\bottomrule
\end{tabular}
\end{table}

同时,调用kable可以很好地工作。

代码语言:javascript
复制
df <- cbind.data.frame(x, y)
kable(head(df), "latex",
      caption = "test",
      label = "hello")

它产生:

代码语言:javascript
复制
\begin{table}
\caption{\label{tab:hello}test}
\centering
\begin{tabular}[t]{r|r}
\hline
x & y\\
\hline
0.8078318 & -0.0219732\\
\hline
0.4660209 & -0.9973773\\
\hline
-1.0620694 & -0.1360954\\
\hline
0.5639881 & 0.0185161\\
\hline
0.3459854 & 0.1333345\\
\hline
-0.8035314 & -0.0759982\\
\hline
\end{tabular}
\end{table}

奇怪的是,这只在指定标题时起作用。仅在label中定义kable不会产生标签。

理想情况下,我只想生成一个标签,但是如果我也需要添加一个标题,我可以处理这个问题(因为这似乎也是kable的一个问题--或者只是一般的LaTeX表)。

提前感谢您的帮助!非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-24 12:03:54

我认为这是LaTeX本身的一个限制,它需要一个适当的表编号和引用的标题。关于讨论和备选机制,请参见这一答案:

https://tex.stackexchange.com/a/438267/16188

除此之外,我认为值得注意的是,这不是一个modelsummary-specific问题。您可能知道,modelsummary支持几个生成不同输出格式的表生成包:kableExtragtflextablehuxtable。LaTeX的默认表制造者是kableExtra

下面是一个在kableExtra中复制相同问题的最小示例:

代码语言:javascript
复制
library(kableExtra)
dat <- mtcars[1:3, 1:3]

未出现标签:

代码语言:javascript
复制
kbl(dat, format = "latex", label = "fig:test") |>
    kable_styling()
#> \begin{table}
#> \centering
#> \begin{tabular}[t]{l|r|r|r}
#> \hline
#>   & mpg & cyl & disp\\
#> \hline
#> Mazda RX4 & 21.0 & 6 & 160\\
#> \hline
#> Mazda RX4 Wag & 21.0 & 6 & 160\\
#> \hline
#> Datsun 710 & 22.8 & 4 & 108\\
#> \hline
#> \end{tabular}
#> \end{table}

标签出现:

代码语言:javascript
复制
kbl(dat, format = "latex", caption = "", label = "fig:test") |>
    kable_styling()
#> \begin{table}
#> 
#> \caption{\label{tab:fig:test}}
#> \centering
#> \begin{tabular}[t]{l|r|r|r}
#> \hline
#>   & mpg & cyl & disp\\
#> \hline
#> Mazda RX4 & 21.0 & 6 & 160\\
#> \hline
#> Mazda RX4 Wag & 21.0 & 6 & 160\\
#> \hline
#> Datsun 710 & 22.8 & 4 & 108\\
#> \hline
#> \end{tabular}
#> \end{table}

值得注意的是,在modelsummary中,通过使用\\“转义”反斜杠,我倾向于将标题直接嵌入到title参数中。例如:

代码语言:javascript
复制
library(modelsummary)
mod <- lm(mpg ~ hp, mtcars)
modelsummary(mod, title = "\\label{fig:test}", output = "latex")
#> \begin{table}
#> 
#> \caption{\label{fig:test}}
#> \centering
#> \begin{tabular}[t]{lc}
#> \toprule
#>   & Model 1\\
#> \midrule
#> (Intercept) & \num{30.099}\\
#>  & (\num{1.634})\\
#> hp & \num{-0.068}\\
#>  & (\num{0.010})\\
#> \midrule
#> Num.Obs. & \num{32}\\
#> R2 & \num{0.602}\\
#> R2 Adj. & \num{0.589}\\
#> AIC & \num{181.2}\\
#> BIC & \num{185.6}\\
#> Log.Lik. & \num{-87.619}\\
#> F & \num{45.460}\\
#> RMSE & \num{3.86}\\
#> \bottomrule
#> \end{tabular}
#> \end{table}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71580556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档