kableExtra column_spec 中的宽度不准确
width in kableExtra column_spec not exact
我想对齐 2 个具有不同列号的表。使用 column spec 的 width 函数时,我得到不同的列宽。在我的理解中,宽度为 9cm 的列应该与宽度为 6cm 和 3cm 的 2 列一样大。我的逻辑对吗?
我的代码:
library(kableExtra)
library(xtable)
df = mtcars[1:5,1:4]
df = xtable(df)
align(df) = c("l","l","r","r","r")
df %>% xtable2kable(include.rownames=FALSE) %>% column_spec(1, width = "6cm") %>% column_spec(2, width = "3cm") %>%
column_spec(3, width = "3cm") %>% column_spec(4, width = "2cm") %>% row_spec(0, bold = T, color = "white", background = "#2F2E41")
df = mtcars[1:5,c(1,3,4)]
df = xtable(df)
align(df) = c("l","l","r","r")
df %>% xtable2kable(include.rownames=FALSE) %>% column_spec(1, width = "9cm") %>%
column_spec(2, width = "3cm") %>% column_spec(3, width = "2cm") %>% row_spec(0, bold = T, color = "white", background = "#2F2E41")
Ofc 我可以手动设置宽度,直到表格完全对齐。或者有没有更好的方法来解决问题?
提前致谢!
在 LaTeX 中,每一列之间都有一个分隔符和一个宽度。分隔的大小在 \tabcolsep
中。当你有更多的列时,你会得到更多的分隔符,因此总体上 table 更宽。
您可以通过将分隔设置为零来解决此问题,例如将此 LaTeX 代码放在文档的前面:
\setlength{\tabcolsep}{0pt}
在 LaTeX 中,我想你也可以将宽列的宽度设置为 9cm 加上 \tabcolsep
这样你就可以在其他地方保持分隔,但我不确定 kableExtra
是否支持.
编辑添加:
这似乎无需修改就可以工作 \tabcolsep
:创建一个包含它的新长度(实际上是两次,两边都有分隔),然后使用它。你会把这样的代码放在文档的前面
\newlength{\widecolsize}
\setlength{\widecolsize}{9cm}
\addtolength{\widecolsize}{2.0\tabcolsep}
然后使用此代码生成 table:
df %>% xtable2kable(include.rownames=FALSE) %>% column_spec(1, width = "\\widecolsize") %>%
column_spec(2, width = "3cm") %>% column_spec(3, width = "2cm") %>% row_spec(0, bold = T, color = "white", background = "#2F2E41")
我想对齐 2 个具有不同列号的表。使用 column spec 的 width 函数时,我得到不同的列宽。在我的理解中,宽度为 9cm 的列应该与宽度为 6cm 和 3cm 的 2 列一样大。我的逻辑对吗?
我的代码:
library(kableExtra)
library(xtable)
df = mtcars[1:5,1:4]
df = xtable(df)
align(df) = c("l","l","r","r","r")
df %>% xtable2kable(include.rownames=FALSE) %>% column_spec(1, width = "6cm") %>% column_spec(2, width = "3cm") %>%
column_spec(3, width = "3cm") %>% column_spec(4, width = "2cm") %>% row_spec(0, bold = T, color = "white", background = "#2F2E41")
df = mtcars[1:5,c(1,3,4)]
df = xtable(df)
align(df) = c("l","l","r","r")
df %>% xtable2kable(include.rownames=FALSE) %>% column_spec(1, width = "9cm") %>%
column_spec(2, width = "3cm") %>% column_spec(3, width = "2cm") %>% row_spec(0, bold = T, color = "white", background = "#2F2E41")
Ofc 我可以手动设置宽度,直到表格完全对齐。或者有没有更好的方法来解决问题?
提前致谢!
在 LaTeX 中,每一列之间都有一个分隔符和一个宽度。分隔的大小在 \tabcolsep
中。当你有更多的列时,你会得到更多的分隔符,因此总体上 table 更宽。
您可以通过将分隔设置为零来解决此问题,例如将此 LaTeX 代码放在文档的前面:
\setlength{\tabcolsep}{0pt}
在 LaTeX 中,我想你也可以将宽列的宽度设置为 9cm 加上 \tabcolsep
这样你就可以在其他地方保持分隔,但我不确定 kableExtra
是否支持.
编辑添加:
这似乎无需修改就可以工作 \tabcolsep
:创建一个包含它的新长度(实际上是两次,两边都有分隔),然后使用它。你会把这样的代码放在文档的前面
\newlength{\widecolsize}
\setlength{\widecolsize}{9cm}
\addtolength{\widecolsize}{2.0\tabcolsep}
然后使用此代码生成 table:
df %>% xtable2kable(include.rownames=FALSE) %>% column_spec(1, width = "\\widecolsize") %>%
column_spec(2, width = "3cm") %>% column_spec(3, width = "2cm") %>% row_spec(0, bold = T, color = "white", background = "#2F2E41")