使用RMarkdown和knitr时可以更改MSWord Normal样式而不影响R代码块输出

时间:2014-12-18 00:32:33

标签: r ms-word rstudio knitr r-markdown

我正在尝试使用RMarkdown v2(见下文)编写文档,然后使用" Knit Word"将其编织到MSWord。在RStudio内(v 0.8.1091)(knitr v1.8)。我修改了通过编织创建的docx文档中的正常样式,使得具有正常样式的文本将是双倍间距的,并且段落的第一行将缩进。我将此docx文件包含在YAML标头中的reference_docx中。这种方法很好,除了R代码也是双倍间距的,第一行是缩进的(见下文)。我曾经假设代码块是一种不同的风格,我可以改变,但我还没有确定那种风格。

那么,如何更改生成的MSWord文件中的主文本而不更改R代码块样式?

我的RMarkdown文档看起来像这样......

---
title: "Chapter XX: XXXXX"
author: "Derek H. Ogle"
output:
  word_document:
    highlight: tango
    reference_docx: CSS.docx
---

R code can be shown in a box

```{r}
tmp <- rnorm(100)
summary(tmp)
```

R results can be included in a dynamic sentence, like this one that shows that the mean of the temporary data.frame is `r round(mean(tmp),2)` and the standard deviation is `r round(sd(tmp),2)`.

生成的Word文档看起来像这样...... enter image description here

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在Word中打开CSS.docx,搜索名为SourceCode的样式。然后编辑此样式以使其具有单行间距。

enter image description here

答案 1 :(得分:0)

您的模板文件应为 t x扩展名,而不是 c x。 (确保将其另存为模板)

据我所知,您的示例文本由样式&#34;第一段&#34;定义。它基于&#34; Body Text&#34;并且输出代码有自己的样式,称为&#34;源代码&#34;基于&#34;正常&#34;。

更改身体文字&#34;所以所有段落都改变了(而不仅仅是第一段)不应该改变&#34;源代码&#34;。但是&#34;源代码&#34;基于&#34;普通&#34;。事实证明&#34; Body Text&#34;反过来基于&#34;正常&#34;。所以,如果你改变&#34;正常&#34;你改变了两个。我怀疑它发生了什么。

Sytle from the text of the example

对于代码输出,我们有以下依赖关系

Sytle from the code output

最后是风格&#34;正文#34;本身是基于普通

Style dependency from body text

我建议从空白输出文档重新启动,以重新定义一个全新的模板,以确保没有任何问题被搞砸。我自己必须这样做(起初我无法复制问题,然后我以某种方式改变了#34;正常&#34;风格,a ^ _ ^)......