【问题标题】:width in kableExtra column_spec not exactkableExtra column_spec 中的宽度不准确
【发布时间】:2020-01-03 23:05:15
【问题描述】:

我想用不同的列号对齐 2 个表。当使用列规范的宽度函数时,我得到不同的列宽。据我了解,宽度为 9 厘米的列应与宽度为 6 厘米和 3 厘米的 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")

我可以手动设置宽度,直到表格完全对齐。或者有没有更好的方法来解决这个问题?

提前谢谢你!

【问题讨论】:

    标签: r latex r-markdown kable kableextra


    【解决方案1】:

    在 LaTeX 中,每列之间存在分隔以及宽度。分隔的大小在\tabcolsep 中。当你有更多的列时,你会得到更多的分隔符,因此整个表格会更宽。

    您可以通过将分隔设置为零来解决此问题,例如将此 LaTeX 代码放在文档的前面:

    \setlength{\tabcolsep}{0pt}
    

    在 LaTeX 中,我认为您还可以将宽列的宽度设置为 9cm 加上\tabcolsep,这样您就可以在其他地方保持分隔,但我不确定kableExtra 是否支持。

    编辑添加:

    这似乎在不修改 \tabcolsep 的情况下工作:创建一个包含它的新长度(实际上是两次,你得到两边的分离),并使用它。你会在文档的前面放这样的代码

    \newlength{\widecolsize}
    \setlength{\widecolsize}{9cm}
    \addtolength{\widecolsize}{2.0\tabcolsep}
    

    然后使用以下代码生成表格:

    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")
    

    【讨论】:

    • 设置 \setlength{\tabcolsep}{0pt} 给了我我想要的行为谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2022-01-13
    • 2023-03-16
    相关资源
    最近更新 更多