【发布时间】:2019-09-13 22:13:45
【问题描述】:
对于 R 包 huxtable 中的表如何设置列宽,我有点困惑。文档说,在对set_col_width 的调用中,参数value(如果为数字)将列宽指定为总宽度的比例(由set_width 设置)。但是,当我将表格写入 Word 时,value 的数字向量似乎改为指定绝对列宽(我实际上喜欢),显然以英寸为单位,而不管set_width 中设置的值如何。对于 pdf 输出,列宽规范似乎根本没有任何影响。
考虑以下示例。
library(dplyr)
library(huxtable)
test=data.frame(var1=1918:1925,var2=c(9009,1000:1006),var3 = 1100:1107)
HUX <- hux(test)
# add caption, borders, and colnames
HUX <- set_caption(HUX,"Example table") %>%
set_caption_pos("topleft") %>%
set_top_border(1,,1) %>%
set_bottom_border(final(1), , 1) %>%
set_align(,,"left") %>%
add_colnames()
number_format(HUX)[,2:3] <- list(function(x) prettyNum(x, big.mark=","))
如果我设置列宽,它们会反映在 Word 输出中,而不是 pdf 输出中,但显然是绝对宽度,而不是比例宽度。
HUX <- set_width(HUX,1) %>%
set_col_width(1:3, c(2,1,1))
quick_docx(HUX)
quick_pdf(HUX)
file.remove(c("huxtable-output.pdf","huxtable-output.docx"))
HUX <- set_width(HUX,1) %>%
set_col_width(1:3, c(2,3,1))
quick_docx(HUX)
quick_pdf(HUX)
上面的代码改变了列宽(以及整个表格的宽度,尽管set_width 中设置的宽度没有改变),但只在Word 中,而不是在pdf 输出中。更改set_with中的参数在Word中没有效果,但确实会移动pdf中的表格(虽然表格本身的外观没有变化),大概是因为“表格绘图区域”更小,边缘因此移动,并且表格的位置在这个“区域”中是左对齐的。
file.remove(c("huxtable-output.pdf","huxtable-output.docx"))
HUX <- set_width(HUX,0.5) %>%
set_col_width(1:3, c(2,3,1))
quick_docx(HUX)
quick_pdf(HUX)
现在,当我尝试使用有效(我认为)LaTex 长度来指定列宽时,它对 pdf 没有任何影响,而且它实际上也没有为 Word 输出设置列宽。
file.remove(c("huxtable-output.pdf","huxtable-output.docx"))
HUX <- set_width(HUX,1) %>%
set_col_width(1:3, paste0(c(2,3,1),"in"))
quick_docx(HUX)
quick_pdf(HUX)
此外,现在,在尝试了 LaTex 长度规范后,之前确实成功设置 Word 输出的列宽的代码(上面)不再这样做了。
file.remove(c("huxtable-output.pdf","huxtable-output.docx"))
HUX <- set_width(HUX,1) %>%
set_col_width(1:3, c(2,3,1))
quick_docx(HUX)
quick_pdf(HUX)
如果我在这里遗漏了一些明显的东西,我深表歉意,但我似乎无法让这个列宽规范按我预期的方式工作。非常感谢任何可以为我解决这个问题的人。
最重要的是,我希望能够显式设置列宽,而不管表格的单元格内容如何(即列宽不会缩小到单元格内容的宽度),尤其是对于写出或编织成pdf。
让它适用于 Word 也很好,但顺便说一句,写入 Word 似乎不会保留表格标题(但我总是可以稍后在 Word 中添加标题)。
我正在使用huxtable 4.5.0。
【问题讨论】:
-
请参阅
?flextable::width,了解它在 Word 中的工作方式。请参阅?col_width了解为什么set_col_width(1:3, c(2,3,1))具有未定义的行为。试试set_col_width(1:3, c("2in", "3in", "1in"))……准备好尝试一下——col_width的实现不是很令人满意。 -
好的,谢谢。我做了一些实验(绝不是全面的),并在下面的答案中报告结果。但你是对的。
width和col_width有点挑剔。
标签: r pdf word column-width