将R Markdown中的图像和文本居中以获得PDF报告

Nex*_*eer 30 markdown r r-markdown

我想使用R Markdown将图像和/或文本居中,并从中编织PDF报告.

我尝试过使用:

->Text<-

->![](image1.jpg)<-
Run Code Online (Sandbox Code Playgroud)

这不是诀窍!完成任何其他方式?

Lin*_*len 38

如果您将R代码块的输出居中,例如绘图,则可以使用fig.align knitr中选项.

```{r fig.align="center"}
plot(mtcars)
```
Run Code Online (Sandbox Code Playgroud)


小智 38

我有同样的问题.我已经尝试了上面提供的所有解决方案,但没有一个能够工作......但是我找到了一个对我有用的解决方案,并希望对其他人有用.

<center>

![your image caption](image.png)

</center>
Run Code Online (Sandbox Code Playgroud)

此代码将以图像和标题为中心.必须<center>在图像代码之间留下线条</center>,否则图像将居中,但标题将消失.

如果您希望图像具有可点击链接,则可以嵌入类似的内容

[![your image caption](image.png)](www.link_to_image.com)
Run Code Online (Sandbox Code Playgroud)

但是,标题将不再出现.

因此,如果您想要一个可点击的标题,则必须分两步完成:

<center>

![](image.png)

[your image caption](www.link_to_image.com)

</center>
Run Code Online (Sandbox Code Playgroud)

同样在这里,确保每个命令之间都有空行.如果您希望图像和标题都可以单击,则将上面的中间和最后一个代码组合在一起.我希望这能有所帮助.

  • 最有用的(请加粗):"必须在`<center>`,图像代码和`</ center>`之间留下线条,否则图像将居中但标题将消失." (6认同)
  • 这是线程上唯一正确的答案! (3认同)
  • 按照OP的要求,这似乎不适用于PDF输出。也许您可以在回答中说出来? (3认同)

j3y*_*ypi 13

没有一个答案以相同的方式适用于所有输出类型,而其他答案则专注于代码块中的图形而不是外部图像。

include_graphics()函数提供了一个简单的解决方案。唯一的参数是文件的名称(如果它在子文件夹中,则为相对路径)。通过设置echoFALSEfig.align=center您将获得所需的结果。

```{r, echo=FALSE, fig.align='center'}
include_graphics("image.jpg")
```
Run Code Online (Sandbox Code Playgroud)

  • 很好的解决方案!只是想补充一点,如果有人使用此解决方案,则这是来自“knitr”包,而不是“rmarkdown”包。 (2认同)

cyl*_*ude 11

我使用Jonathan的答案谷歌插入图像到LaTeX,如果你想插入一个名为image1.jpg的图像并让它居中,你的代码可能在Rmarkdown中看起来像这样

\begin{center}
\includegraphics{image1}
\end{center}
Run Code Online (Sandbox Code Playgroud)

请记住,LaTex不要求文件扩展(.jpg).这个问题帮助我得到答案.谢谢.


Jon*_*han 9

您可以在R Markdown中使用原始LaTeX.试试这个:

\begin{center}
Text
\end{center}
Run Code Online (Sandbox Code Playgroud)

有,当然,一个catch:之间的所有内容begin{...},并\end{...}解释为通过Pandoc生胶乳,所以你不能使用这种技术来居中R代码里面块或减价内容的输出.

  • 如果我们想要集中R代码块的输出怎么办? (6认同)

小智 8

您可以使用以下方法将整个文档的中心(或其他)对齐设置为Knitr选项:

knitr::opts_chunk$set(echo = TRUE, fig.align="center")
Run Code Online (Sandbox Code Playgroud)


小智 7

Jonathan 给出的简单解决方案通过修改来欺骗 Pandoc。而不是直接的 Latex 命令,例如

\begin{center}
Text
\end{center}
Run Code Online (Sandbox Code Playgroud)

您可以在 YAML 标头中定义自己的命令:

header-includes:
- \newcommand{\bcenter}{\begin{center}}
- \newcommand{\ecenter}{\end{center}}
Run Code Online (Sandbox Code Playgroud)

然后你使用:

\bcenter
Text and more
\ecenter
Run Code Online (Sandbox Code Playgroud)

这对我有用,可以将整个文档居中,中间有许多代码块和降价命令。


igo*_*rkf 7

我正在使用 Beamer 从 Rmarkdown 编织 pdf,对我有用的是:

\centering
![](image1.jpg)
Run Code Online (Sandbox Code Playgroud)