【发布时间】:2016-10-06 21:55:35
【问题描述】:
当同时使用 knitr 和 rmarkdown 创建 word 文档时,您可以使用现有文档来设置输出样式。
例如在我的 yaml 标头中:
output:
word_document:
reference_docx: style.docx
fig_caption: TRUE
在这种样式中,我创建了一个默认的表格样式 - 这里的目标是让 kable 表格输出具有正确的样式。
当我编织 word 文档并使用 style.docx 时,表格不会根据表格进行样式化。
到目前为止,使用样式检查器没有帮助,不确定默认表格样式是否是要修改的错误样式。
示例代码:
```{r kable}
n <- 100
x <- rnorm(n)
y <- 2*x + rnorm(n)
out <- lm(y ~ x)
library(knitr)
kable(summary(out)$coef, digits=2, caption = "Test Captions")
```
很遗憾,我没有可以上传进行测试的程式化文档。
TL;DR:想要自动对 rmarkdown 和 knitr 的表格输出进行样式化(通过 kable)
更新:到目前为止,我发现更改 docx 中的“紧凑”样式会自动更改表格的文本内容 - 但这并不能解决整体表格样式,例如单元格颜色和对齐。
更新 2: 经过更多的研究和创建样式后,我发现knitr 访问段落样式似乎没有问题。但是表格样式不在该样式类别下,似乎不适用于我的个人测试。
更新 3: 涉足 ReporteRs 包 - 虽然它能够根据需要生成表格,但这样做所需的语法很费力。而是自动应用样式。
更新 4: 您无法更改 TableNormal 样式,也无法设置 Table Normal 样式。 XML 方法不是我们想要的。我有一个 VBA 宏可以解决问题,如果可能的话,我只想删除该进程。
【问题讨论】:
-
这与
kable无关,因为pandoc进行了从markdown 到docx 的转换。您可以尝试在参考 docx 文件中创建TableNormal表格样式。 -
就@daroczig 而言,这本质上是
pandoc问题,并且可能与stackoverflow.com/questions/17858598/… 重复。那篇文章只涉及边框,但我怀疑底层 xml 可能会被黑客入侵以获得更精细的格式...... -
我对 reference_docx 的样式有类似的问题。也许这是同一个问题? github.com/rstudio/rmarkdown/issues/668
-
@zacdav 这是事后的结果,但如果你可以的话,我强烈建议您将
knitr与 pdflatex 一起使用。 Latex 需要更多时间才能弄清楚,但是已经提出了大量问题的信息。通常你需要做的任何事情都已经完成,然后你复制/粘贴。 -
@Prevost 这是专门用 word 完成的,因为客户需要这种格式。
标签: r knitr r-markdown docx pandoc