问题描述
我正在使用 huxtable
包在 bookdown 呈现的 PDF 中创建表格。表格完全按照我想要的方式格式化,直到我运行 print_md
命令,之后边框从列名下方向上移动到标题下方。此外,标题从居中位置移动到右对齐。看看:
df <- data.frame(
"colname1" = c("something indicator"),"colname2" = "[Something](http://www.overleaf.com)","colname3" = "[Something again](http://www.overleaf.com)")
df <- df %>%
as_hux() %>%
theme_basic() %>%
set_tb_padding(2)
df <- df %>%
set_contents(1,2:3,c("colname2","colname3")) %>%
insert_row("","Header",after = 0) %>%
merge_cells(1,2:3) %>%
set_align(1,everywhere,"center") %>%
set_tb_padding(1,0) %>%
set_bold(1,everywhere)
df
表格格式正确。但。您会注意到 URL 的格式不正确。它应该只显示括号内的部分,点击后会将您带到括号中的站点。
这可以通过以下代码修复:
df %>% print_md()
现在 URL 看起来应该是这样,但边框错误地向上移动了一行,并且“标题”现在是右对齐而不是中心对齐。我如何阻止这种情况发生?
解决方法
不要问我为什么它有效。但是将 print_md()
更改为 set_markdown()
修复了边框和对齐问题。
编辑:我将@dash2 的评论添加到此答案中。
print_md()
导致问题的原因是它将表格转换为 Markdown 格式,然后 R Markdown 从中读取并生成表格。所以一些特征(对齐)在翻译中丢失了。最好以预期的输出格式打印表格,无论是 Latex、HTML 还是您使用的任何格式,而不是 Markdown。
但是仍然需要尊重带有降价超链接的单元格 - print_md()
只是错误的处理方式。而是使用 set_markdown()
。这将确保在 huxtable 本身内,带有 markdown 代码的单元格在打印表格之前被解释为 markdown。打印的表格将保留预期的格式。
感谢@dash2 创建了如此强大的包!