R markdown:我可以将pdf作为图像插入到r markdown文件中吗?

问题描述 投票:11回答:3

我试图将pdf图像插入到r markdown文件中。我知道可以插入jpg或png图像。我只是想知道是否也可以插入PDF图像。非常感谢!

r
3个回答
10
投票

对不起,我发现之前有一个类似的帖子:Add pdf file in Rmarkdown file

基本上,我可以使用类似下面的东西适用于html输出: <img src="myFirstAlignment2.pdf" alt="some text" width="4200" height="4200">

类似下面的东西适用于pdf输出:(1)可能的解决方案 \begin{center} <br> \includegraphics[width=8in]{myFirstAlignment2.pdf} <br> \end{center} (2)可能的解决方案![Alt](myFirstAlignment2.pdf)

如果pdf文件不在您的工作目录中,则myFirstAlignment2.pdf应替换为path\myFirstAlignment2.pdf


6
投票

如果您只是尝试将已导出的图像(例如,某些R分析)插入到pdf图像中,您还可以使用knitr引擎中的标准图像选项。

有类似的东西:

```{r, out.width="0.3\\linewidth", include=TRUE, fig.align="center", fig.cap=c("your caption"), echo=FALSE}
knitr::include_graphics("./images/imagename.pdf")
```

遗憾的是,您无法指定图像输出的初始尺寸(fig.width和fig.height),您需要在初始输出中预先定义,但您可以指定文档中图像的最终尺寸( out.width)。但是,如下所述,这仅限于缩小。

如果您的文件位于同一个工作目录中,您当然也可以省略初始目录规范。请注意指定图像路径时的操作系统差异。

另一种方法是使用@hermestrismegistus在this post上注明的Markdown语法:

![Image Title](./path/to/image.pdf){width=65%}

这也可以并排收集多个图像:

![Image Title](./path/to/image.pdf){width=33%}![Image2 Title](./path/to/image2.pdf){width=33%}![Image3 Title](./path/to/image3.pdf){width=33%}

编辑:

在更广泛地使用文本引用后,我发现使用r块和include_graphics选项是最有用的。还因为图像对齐方面的灵活性(理由)。

举个例子:

```{r image-ref-for-in-text, echo = FALSE, message=FALSE, fig.align='center', fig.cap='Some cool caption', out.width='0.75\\linewidth', fig.pos='H'}
knitr::include_graphics("./folder/folder/plot_file_name.pdf")
```

该引用稍后可以在文本中使用,例如,图\@ref(fig:image-ref-for-in-text)说明了等等。

使用此格式需要注意的一些重要事项:

  1. 您只能通过代码块扩展PDF图像,直到原始out.width文件中设置的out.height.pdf条件。所以我建议在原始图像的较大一侧略微设置它们(只需注意任何图表文本都会相应缩放)。
  2. 文本参考代码(在本例中为image-ref-for-in-text)不能包含任何下划线(_),但可以包含短划线(-)。你会知道你是否通过陈述! Package caption Error: \caption outside float.的错误消息弄错了
  3. 为了阻止你的情节漂移到文档的错误部分,但不幸的是会产生一些空白区域,上面的例子包括fig.pos='H'。其中H指的是“保持”位置。通过在最后一个花括号之后立即放置一个句号(句号.),可以对前Markdown选项实现相同的效果。

例:

![Image Title](./path/to/image.pdf){width=75%}.

不幸的是,后一种选择导致一些难看的全停。我更喜欢include_graphics选项的另一个原因。


1
投票

关于最佳答案的评论,有一种方法可以使用第二个选项,输出不会很小。

使用以下语法,高度为大数。在括号中包含文本是必要的。

![Alt](./file.pdf){width=100% height=400}

推荐问答