Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
克尼特公司;Rmarkdown docx表格_R_Knitr_R Markdown_Docx_Pandoc - Fatal编程技术网

克尼特公司;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)
    ```