将 LaTeX 参考标签添加到模型摘要中的 table
Adding a LaTeX reference label to a table in modelsummary
我正在尝试在 R 中生成表格(不是 RMarkdown,因为 helps answer) with modelsummary
and I'm having a tough time adding reference labels (e.g., tab:hello
). As Vincent points out in ,modelsummary
的额外参数应该自动向前推进,但这似乎不适用于 LaTeX 标签。这是一个例子:
library(modelsummary)
library(kableExtra)
x <- rnorm(100)
y <- rnorm(100)
modelsummary(lm(y ~ x),
output = "latex",
caption = "test",
label = "hello")
这会产生:
\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
:
效果很好
df <- cbind.data.frame(x, y)
kable(head(df), "latex",
caption = "test",
label = "hello")
产生:
\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}
奇怪的是,这 仅在指定标题时有效 。在 kable
中仅定义 label
不会生成标签。
理想情况下,我只想制作一个标签,但如果我还必须添加标题,我可以处理(因为这似乎也是 kable
的问题- -- 或者只是一般的 LaTeX 表格)。
提前感谢您的帮助!非常感谢。
我认为这是 LaTeX 本身的一个限制,它需要标题才能正确 table 编号和引用。请参阅此答案以获取讨论和替代机制:
https://tex.stackexchange.com/a/438267/16188
除此之外,我认为有必要指出这不是 modelsummary
特有的问题。您可能知道,modelsummary
支持多个 table-making 包,它们产生不同的输出格式:kableExtra
、gt
、flextable
或 huxtable
。 LaTeX 的默认 table-maker 是 kableExtra
.
这是 kableExtra
中重现相同问题的最小示例:
library(kableExtra)
dat <- mtcars[1:3, 1:3]
没有出现标签:
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}
出现标签:
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
参数中。例如:
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}
我正在尝试在 R 中生成表格(不是 RMarkdown,因为 modelsummary
and I'm having a tough time adding reference labels (e.g., tab:hello
). As Vincent points out in modelsummary
的额外参数应该自动向前推进,但这似乎不适用于 LaTeX 标签。这是一个例子:
library(modelsummary)
library(kableExtra)
x <- rnorm(100)
y <- rnorm(100)
modelsummary(lm(y ~ x),
output = "latex",
caption = "test",
label = "hello")
这会产生:
\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
:
df <- cbind.data.frame(x, y)
kable(head(df), "latex",
caption = "test",
label = "hello")
产生:
\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}
奇怪的是,这 仅在指定标题时有效 。在 kable
中仅定义 label
不会生成标签。
理想情况下,我只想制作一个标签,但如果我还必须添加标题,我可以处理(因为这似乎也是 kable
的问题- -- 或者只是一般的 LaTeX 表格)。
提前感谢您的帮助!非常感谢。
我认为这是 LaTeX 本身的一个限制,它需要标题才能正确 table 编号和引用。请参阅此答案以获取讨论和替代机制:
https://tex.stackexchange.com/a/438267/16188
除此之外,我认为有必要指出这不是 modelsummary
特有的问题。您可能知道,modelsummary
支持多个 table-making 包,它们产生不同的输出格式:kableExtra
、gt
、flextable
或 huxtable
。 LaTeX 的默认 table-maker 是 kableExtra
.
这是 kableExtra
中重现相同问题的最小示例:
library(kableExtra)
dat <- mtcars[1:3, 1:3]
没有出现标签:
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}
出现标签:
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
参数中。例如:
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}