克尼特公司;Rmarkdown docx表格
当同时使用克尼特公司;Rmarkdown docx表格,r,knitr,r-markdown,docx,pandoc,R,Knitr,R Markdown,Docx,Pandoc,当同时使用knitr和rmarkdown创建word文档时,您可以使用现有文档设置输出样式 例如,在my yaml标题中: output: word_document: reference_docx: style.docx fig_caption: TRUE 在这个样式中,我创建了一个默认的表格样式-这里的目标是使kable表格输出具有正确的样式 当我编织word文档并使用style.docx时,表格不会根据表格进行样式化 到目前为止,使用样式检查器没有任何帮助,无法确定
knitr
和rmarkdown
创建word文档时,您可以使用现有文档设置输出样式
例如,在my 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")
```
``{r kable}
n这本质上是一个组合,以及我自己的实验,以展示如何使用TableNormal
样式自定义表,如由kable
生成的表:
RMD:
---
output:
word_document
---
```{r}
knitr::kable(cars)
```
- 单击RStudio中的“编织单词”。→ 文档在Word中打开,但没有任何自定义样式
- 在该文档(而不是新文档)中,添加所需的样式。解释基本原理。关键不是应用直接样式,而是修改样式。看
- 具体来说,要设置表格样式,需要添加表格样式。我的Word版本是非英语版本,但根据上面链接的文章,表格样式可通过“表格工具上下文选项卡上的设计选项卡”获得
- 选择
TableNormal
作为样式名称,并定义所需的样式。在我的实验中,大多数风格都有效,但有些却不行。(向第一列添加颜色并使第一行加粗没有问题;忽略每第二行高亮显示。)此答案中的最后一个屏幕截图说明了此步骤
- 将文档保存为
style.docx
- 修改RMD文件中的标题以使用引用DOCX(请参阅;不要弄错缩进–我花了10分钟才找到这个错误):
- 再次编织到DOCX–现在应该应用该样式
按照我上面描述的步骤生成此输出:
这里是用于定义TableNormal
的表格样式对话框的屏幕截图。不幸的是,它是德语的,但也许有人可以提供英文版本:
由于这似乎不适用于大多数用户(除了我…),我建议我们系统地测试这一点。基本上,有4个步骤可能出错:
- 错误的RMD(不太可能)
- 最初生成的DOCX中的差异
TableNormal
样式在DOCX中保存方式的差异
- 使用参考DOCX格式化最终DOCX的方式不同
因此,我建议使用上面发布的相同最小RMD()来找出结果的差异:
- 我的
- 添加了与
TableNormal
相同的文档:
- 这个
这三个文件是在以下系统上生成的:Windows 7/R 3.3.0/RStudio 0.99.896/pandoc 1.15.2/Office 2010
我在使用Windows 7/R 3.2.4/RStudio 0.99.484/pandoc 1.13.1/Office 2010的系统上得到了相同的结果
我想最有可能的罪魁祸首是pandoc和Office版本。不幸的是,我目前无法测试其他配置。现在有兴趣看到以下内容:对于无法工作的用户,会发生什么
- …如果你从我的开始李>
- 如果这不起作用,那么如果您使用我的作为参考文档呢
- 如果什么都不起作用,那么生成的XML文件(在DOCX容器中)是否存在引人注目的差异?请共享您的文件和确切的版本信息
有许多用户运行这些测试,应该可以找出问题的原因。TableNormal
对我也不起作用
在我的荷兰语版Word 2016(Office 365)上,我发现我可以使用紧凑的样式标记表
输入(refdoc.docx
包含Compact
样式):
和RMarkdown:
# Methoden {#methoden}
```{r}
kable(cars)
```
输出:
我能够使用reference.docx中定义的默认表格样式获得word输出
它的默认表格样式不是“TableNormal”,而是“table”
我发现这一点是因为我用一个小玩意儿编织了一个RMarknown
---
date: "December 1, 2017"
output:
word_document:
reference_docx: Template.docx
---
`r knitr::kable(source)`
然后,我查看了生成的文档的XML,以查看它默认的样式
require(XML)
docx.file <- "generated_doc.docx"
## unzip the docx converted by Pandoc
system(paste("unzip", docx.file, "-d temp_dir"))
document.xml <- "temp_dir/word/document.xml"
doc <- xmlParse(document.xml)
tblStyle <- getNodeSet(xmlRoot(doc), "//w:tblStyle")
tblStyle
require(XML)
docx.file这实际上是。幸运的是,它在2.0版或更高版本的pandoc
中得到了解决
我测试了新版本,发现有一个新添加的隐藏样式,名为“Table”。按照@CL.的建议更改reference.docx
中的“表”样式现在就可以了
此外,请查看pandoc
的v2.0发行说明:
对于表格样式(),请使用表格
而不是表格常规
<代码>表格常规
是默认表格样式,不能修改
您需要有一个引用\u docx:style.docx
,其中包含“Table”样式。(见以上@Liang Zhang的解释和链接)
使用pandoc()创建基准参考文档。在命令行(或Windows上的cmd.exe)中运行:
pandoc-o custom-reference.docx--打印默认数据文件reference.docx
在这个新创建的reference.docx
文件中,找到创建的表(带标题的基本1行表)
选中表格后,点击“表格设计”,找到“修改表格样式”:
根据需要修改表格的样式,并在RMD文档中使用此参考文档(参见@CL.的第一个答案)
使用此参考文档,您还可以更改表格和数字标题样式。截至2021年,我无法获得任何其他建议答案
但是,,
---
date: "December 1, 2017"
output:
word_document:
reference_docx: Template.docx
---
`r knitr::kable(source)`
require(XML)
docx.file <- "generated_doc.docx"
## unzip the docx converted by Pandoc
system(paste("unzip", docx.file, "-d temp_dir"))
document.xml <- "temp_dir/word/document.xml"
doc <- xmlParse(document.xml)
tblStyle <- getNodeSet(xmlRoot(doc), "//w:tblStyle")
tblStyle
---
date: "2038-01-19"
author: "The Reasonabilists"
title: "The end of time as we know it"
output:
officedown::rdocx_document:
reference_docx: styles.docx
---
```{r setup, include = FALSE}
# Don't forget about me: I'm important!
library(officedown)
```
---
date: "2038-01-19"
author: "The Reasonabilists"
title: "The end of time as we know it"
output:
officedown::rdocx_document:
reference_docx: styles.docx
tables:
style: My Table
---
```{r setup, include = FALSE}
# Don't forget about me: I'm important!
library(officedown)
```
```{r}
head(mtcars)
```