提问人:Robert 提问时间:10/15/2023 更新时间:10/16/2023 访问量:78
Quarto文档上带有kableExtra的多列脚注
Multicolumn Footnote with kableExtra on Quarto document
问:
我有一个用kableExtra生成的表格,上面有一个跨越几列的脚注。如果我在 R 中单独运行它,它会正确显示。但是,当在 Quarto 文档中运行时,它会将脚注的文本限制为第一列的宽度。
这是一个可重现的例子
library(kableExtra)
dt <- mtcars[1:5, 1:4]
# HTML table
kbl(dt, caption = "Demo Table") %>%
kable_styling(bootstrap_options = "striped",
full_width = F) %>%
add_header_above(c(" ", "Group 1" = 2, "Group 2[note]" = 2)) %>%
footnote(c("Let's make a very long table footnote"))
答:
0赞
Quinton.Quagliano
10/15/2023
#1
将 Quarto 编织为 PDF(通过 LaTeX)时,为作品添加参数:threeparttable = TRUE
footnote()
# In LaTeX format
base::library(package = kableExtra)
dt <- mtcars[1:5, 1:4]
# PDF table
kableExtra::kbl(
x = dt,
caption = "Demo Table",
booktabs = TRUE
) %>%
kableExtra::kable_styling(
bootstrap_options = "striped",
full_width = FALSE
) %>%
kableExtra::add_header_above(
c(
" ",
"Group 1" = 2,
"Group 2[note]" = 2
)
) %>%
kableExtra::footnote(
general = "Let's make a very long table footnote",
threeparttable = TRUE, # PAY ATTENTION HERE
footnote_as_chunk = TRUE
)
这是使用threeparttable LaTeX包来产生我们想要的效果。此处明确提到了此选项。
对于HTML,恐怕这个问题要困难得多,因为您将无法访问LaTeX包,因此无法工作。整理你的代码 - 我注意到删除你的标题行实际上允许文本扩展更多。因此,删除此代码会产生这种效果:threeparttable = TRUE
kableExtra::add_header_above(
c(
" ",
"Group 1" = 2,
"Group 2[note]" = 2
)
) %>%
基于此,脚注换行在某种程度上是由于组的标题列的格式。我玩了许多函数的参数,但无法找到防止文本换行的明确方法。似乎有些人对新的(呃)Quarto 格式和这个包有一些问题,也许值得阅读这里的一些未解决的问题。
鉴于所有这些,我建议要么切换到 PDF 格式,放弃标题行,要么查看其他可能能够做到这一点的软件包(也许?gt
评论
0赞
Robert
10/15/2023
感谢您抽出宝贵时间探索这个问题。我需要使用 HTML,所以暂时没有 PDF。我会通读未解决的问题,甚至可能打开我自己的一个问题。
0赞
Quinton.Quagliano
10/15/2023
没关系!如果您找到解决方案,我绝对建议您回到这里进行编辑 - 我将来可能需要它;)
2赞
Robert
10/15/2023
明确!如果 Quarto 要像 Posit 想要的那样成为这片土地的法律,那么这个故障应该会得到解决。
0赞
Julian
10/16/2023
#2
这似乎是错误,我会打开一个问题。同时,您可以尝试 parse-latex 过滤器,首先将表构建为 latex 表,然后让过滤器将其转换为 HTML,即
---
format: html
filters: [parse-latex]
---
```{r}
library(kableExtra)
dt <- mtcars[1:5, 1:4]
# HTML table
kbl(dt,format = "latex", caption = "Demo Table") %>%
kable_styling(bootstrap_options = "striped",
full_width = F) %>%
add_header_above(c(" ", "Group 1" = 2, "Group 2[note]" = 2)) %>%
footnote(general = "Here is a general comments of the table that might be very long. "
)
```
评论
0赞
Robert
10/17/2023
非常好。非常感谢!
评论