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
knitr.Rmd->Word文档:图形的控制细节_R_Rstudio_Knitr_R Markdown - Fatal编程技术网

knitr.Rmd->Word文档:图形的控制细节

knitr.Rmd->Word文档:图形的控制细节,r,rstudio,knitr,r-markdown,R,Rstudio,Knitr,R Markdown,我正在为一本书编写解决方案手册,使用带有以下YAML头的.Rmd文件: --- title: "DDAR: Solutions and Hints for Exercises" date: "`r Sys.Date()`" output: word_document: reference_docx: solutions-setup.docx --- 在这里,我使用reference_docx控制文档的总体布局,以获得输出Word文档 将会有很多图形,我想设置一些全局图形参数,以提

我正在为一本书编写解决方案手册,使用带有以下YAML头的.Rmd文件:

---
title: "DDAR: Solutions and Hints for Exercises"
date: "`r Sys.Date()`"
output: 
  word_document:
    reference_docx: solutions-setup.docx
---
在这里,我使用reference_docx控制文档的总体布局,以获得输出Word文档

将会有很多图形,我想设置一些全局图形参数,以提供相对紧凑的边界框和合理的字体大小 在图中,无需根据我在PDF文档中看到的内容调整每个参数

我尝试了下面的方法,但是PAR设置似乎没有任何效果:

{r设置,echo=FALSE} 选项数字=4 帕尔玛=c5,4,1,1+.1

取而代之的是,我在我的文档中得到了如下图像,它们的边框比我想要的大,字体比我想要的大得多

我知道如何在用LaTeX生成的.Rnw文件中控制所有这些,但我 找不到如何在.Rmd->Word中执行此操作。有一个大钩子我可以吗 使用我不认为有一个out.width块选项可以重新缩放 LaTeX中的图形。

实际使用小边距作为使用挂钩的示例。以下是根据本文档改编的解决方案

---
output: word_document
---

```{r setup, echo=FALSE}
library(knitr)
knit_hooks$set(small.mar = function(before, options, envir) {
    if (before)    par(mar=c(5,4,1,1)+.1)  # smaller margin on top and right
})
opts_chunk$set(small.mar=TRUE)
```

```{r}
plot(iris$Sepal.Length)
```
使用opts_chunk$setsmall.mar=TRUE可以避免将其传递给文档中的每个块

边距显示为libreoffice中docx输出的固定屏幕截图,默认参考docx

实际上,使用较小的边距作为使用挂钩的示例。以下是根据本文档改编的解决方案

---
output: word_document
---

```{r setup, echo=FALSE}
library(knitr)
knit_hooks$set(small.mar = function(before, options, envir) {
    if (before)    par(mar=c(5,4,1,1)+.1)  # smaller margin on top and right
})
opts_chunk$set(small.mar=TRUE)
```

```{r}
plot(iris$Sepal.Length)
```
使用opts_chunk$setsmall.mar=TRUE可以避免将其传递给文档中的每个块

边距显示为libreoffice中docx输出的固定屏幕截图,默认参考docx


@scoa的回答显示了如何使用a在每个块的开头设置一些图形参数。这是必要的,因为默认情况下,KNITR打开一个新的图形设备来记录情节并在评估代码之后关闭它,因此PAR设置将被丢弃,即,稍后的块的图形参数不能在早期设置块中设置,但需要单独为每个块设置。p>

如果不需要这个行为,GULAL.PAL=真值可以使用:

opts_knit$set(global.par = TRUE)
为边距找到正确的值有时是相当痛苦的。在这些情况下,我们可以提供帮助。在选项crop=TRUE的所有块中,将删除白边距。要将此应用于所有块,请使用

library(knitr)
knit_hooks$set(crop = hook_pdfcrop)
opts_chunk$set(crop = TRUE)
这也适用于docx输出,因为当打印格式不是PDF(例如PNG)时,ImageMagick中的程序convert用于从?hook_pdfcrop修剪白色边距


请注意,在某些情况下,裁剪绘图有时会产生明显不同的绘图缩放因子的副作用:这种情况发生在两个绘图上的元素大小相同,但其中一个绘图周围的白边更大的情况下。如果在裁剪后将两者都调整为固定的输出宽度,则具有较大边距的绘图上的元素看起来更大。但是,这与docx输出无关,因为在这种情况下不能使用out.width/out.height。

@scoa的回答显示了如何使用a在每个块的开头设置一些图形参数。这是必要的,因为默认情况下,KNITR打开一个新的图形设备来记录情节并在评估代码之后关闭它,因此PAR设置将被丢弃,即,稍后的块的图形参数不能在早期设置块中设置,但需要单独为每个块设置。p>

如果不需要这个行为,GULAL.PAL=真值可以使用:

opts_knit$set(global.par = TRUE)
为边距找到正确的值有时是相当痛苦的。在这些情况下,我们可以提供帮助。在选项crop=TRUE的所有块中,将删除白边距。要将此应用于所有块,请使用

library(knitr)
knit_hooks$set(crop = hook_pdfcrop)
opts_chunk$set(crop = TRUE)
这也适用于docx输出,因为当打印格式不是PDF(例如PNG)时,ImageMagick中的程序convert用于从?hook_pdfcrop修剪白色边距


请注意,在某些情况下,裁剪绘图有时会产生明显不同的绘图缩放因子的副作用:这种情况发生在两个绘图上的元素大小相同,但其中一个绘图周围的白边更大的情况下。如果在裁剪后将两者都调整为固定的输出宽度,则具有较大边距的绘图上的元素看起来更大。但是,这与Dox输出无关,因为在这种情况下不能使用Out.Wist/Out.Health.

您使用的PAR边距是默认的R边距,其大小与您的图像显示的大小有关。如果你让它们小得多,会发生什么?你使用的利润率是默认的R利润率,这大约是你的图片显示的大小。如果你让它们更小的话,会发生什么呢?但是,你可能要补充的是:让PAC设置从当前的块中被保存下来,并且避免一些与边缘的冲突。@ CL.,你应该做一个回答,它比分钟要好。完成了。我想


我们的答案给出了一个非常全面的图片。投票赞成,但有两件事你可能想补充:使PAR设置从当前的块被保留,以避免一些与利润的麻烦。@ CL.,你应该做一个答案,它比分钟更好。完成。我认为我们的答案给出了一个非常全面的图片。OPTSZ针织$GETGloal.Pal.Talk是正确的方式来编织尊重全球PAR选项。我知道pdfcrop,但这不适用于MS Word.docx输出,其中图像都是以PNG格式生成的。啊,我忘了docx上下文。关于你的第一句话:是的。这正是我写的,不是吗?更新:hook_pdfcrop也适用于.docx和png图像。看见HookgPDFCISDATION:当情节格式不是PDF,例如PNG,IMAGEMAGIK中的程序转换用来修剪白边。OPTSKNIKET$GETGloal.Par=Trite是正确地建立KNITR尊重全局PAR选项的方法。我知道pdfcrop,但这不适用于MS Word.docx输出,其中图像都是以PNG格式生成的。啊,我忘了docx上下文。关于你的第一句话:是的。这正是我写的,不是吗?更新:hook_pdfcrop也适用于.docx和png图像。看见hook_pdfcrop:当打印格式不是PDF(例如PNG)时,ImageMagick中的程序convert用于修剪白色边距。