【发布时间】:2014-08-31 21:26:22
【问题描述】:
我想使用 R Markdown 将图像和/或文本居中并从中编织出 PDF 报告。
我尝试过使用:
->Text<-
-><-
这样不行!还有其他方法可以完成这项工作吗?
【问题讨论】:
标签: r markdown r-markdown
我想使用 R Markdown 将图像和/或文本居中并从中编织出 PDF 报告。
我尝试过使用:
->Text<-
-><-
这样不行!还有其他方法可以完成这项工作吗?
【问题讨论】:
标签: r markdown r-markdown
如果要将 R 代码块的输出(例如绘图)居中,则可以使用 fig.align option in knitr。
```{r fig.align="center"}
plot(mtcars)
```
【讨论】:
我也有同样的问题。我已经尝试了上面提供的所有解决方案,但没有一个有效……但我找到了一个适合我的解决方案,希望也适用于其他人。
<center>

</center>
此代码将使图像和标题居中。您必须在<center>、图像代码和</center> 之间留出一行,否则图像将居中但标题会消失。
如果你想让你的图片有一个可点击的链接,你可以嵌入类似的东西
[](www.link_to_image.com)
但是,标题将不再出现。
因此,如果您想要一个可点击的标题,您必须分两步完成:
<center>

[your image caption](www.link_to_image.com)
</center>
这里也一样,确保每个命令之间有空行。如果您希望图像和标题都可点击,则将上面的中间代码和最后一个代码组合起来。我希望这会有所帮助。
【讨论】:
<center>、图像代码和</center> 之间留行,否则图像将居中但标题会消失。 "
您可以在 R Markdown 中使用原始 LaTeX。试试这个:
\begin{center}
Text
\end{center}
当然,有一个问题:begin{...} 和 \end{...} 之间的所有内容都被 Pandoc 解释为原始 LaTeX,因此您不能使用此技术将 R 代码块或 Markdown 内容的输出居中。
【讨论】:
fig.align="center",它们实际上非常容易放置。
您可以将整个文档的中心(或其他)对齐方式设置为 Knitr 选项,使用:
knitr::opts_chunk$set(echo = TRUE, fig.align="center")
【讨论】:
没有一个答案以相同的方式适用于所有输出类型,而其他答案则关注代码块内的图形而不是外部图像。
include_graphics() 函数提供了一个简单的解决方案。唯一的参数是文件的名称(如果它在子文件夹中,则带有相对路径)。通过将echo 设置为FALSE 和fig.align=center,你会得到想要的结果。
```{r, echo=FALSE, fig.align='center'}
include_graphics("image.jpg")
```
【讨论】:
knitr 包,而不是rmarkdown 包,如果有人使用这个解决方案的话。
我使用了乔纳森的答案来谷歌将图像插入 LaTeX,如果您想插入一个名为 image1.jpg 的图像并将其居中,您的代码在 Rmarkdown 中可能如下所示
\begin{center}
\includegraphics{image1}
\end{center}
请记住,LaTex 不要求文件扩展名 (.jpg)。这个问题帮助我得到了答案。谢谢。
【讨论】:
乔纳森给出的简单解决方案通过修改来欺骗潘多克。而不是直接的 Latex 命令,例如
\begin{center}
Text
\end{center}
您可以在 YAML 标头中定义自己的命令:
header-includes:
- \newcommand{\bcenter}{\begin{center}}
- \newcommand{\ecenter}{\end{center}}
然后你使用:
\bcenter
Text and more
\ecenter
这对我来说适用于使整个文档居中,其中包含许多代码块和降价命令。
【讨论】:
我正在使用投影仪从 Rmarkdown 编织 pdf,对我有用的是:
\centering

【讨论】:
如果您知道您的格式是 PDF,那么我看不到 HTML 标签 可能有用......它似乎绝对不适合我。其他纯 LaTeX 解决方案显然工作得很好。但 Markdown 的重点不是做 LaTeX,而是允许多种格式编译,我相信,包括 HTML。
因此,考虑到这一点,对我有用的是 Nicolas Hamilton 对Color Text Stackoverflow question 的回答的变体:
#############
## CENTER TXT
ctrFmt = function(x){
if(out_type == 'latex' || out_type == 'beamer')
paste0("\\begin{center}\n", x, "\n\\end{center}")
else if(out_type == 'html')
paste0("<center>\n", x, "\n</center>")
else
x
}
我把它放在我的初始设置块中。
然后我很容易在我的.rmd 文件中使用它:
`r ctrFmt("Centered text in html and pdf!")`
【讨论】:
现在有一个更好的解决方案,更优雅,基于fenced div,已在pandoc 中实现,如here 所述:
::: {.center data-latex=""}
Some text here...
:::
您需要做的就是相应地更改您的css 文件。例如,以下块可以完成这项工作:
```{cat, engine.opts = list(file = "style.css")}
.center {
text-align: center;
}
```
(显然,您也可以直接将块的内容输入到您的.css 文件中...)。tex 文件包含正确的居中命令。
此方法的关键优点是它允许在块内编写markdown 代码。
在我之前的回答中,r ctrFmt("Centered **text** in html and pdf!") 不会将“文本”一词加粗,但如果在 fenced div 内,它会加粗。
对于图像等...lua 过滤器可用here
【讨论】:
没有一个答案有效,但这个
\newcommand{\bcenter}{\begin{center}}
\newcommand{\ecenter}{\end{center}}
但接下来的问题是它只适用于一个数字,然后不适用于任何其他数字。
我刚开始学习 R,我知道这会很困难,但最糟糕的是几乎没有我可以参考的信息。
【讨论】:
只是为了更新问题。为此,您可以通过简单的方法将fig.align="center" 添加到带有chuck knitr 选项的块中:
knitr::opts_chunk$set(echo = TRUE,
fig.align="center" #align all the figures in the center
)
【讨论】:
在文本中插入 pdf 图形时,这些解决方案都不适合我。经过大量的试验和错误,对我来说(对于 pdf 输出)的诀窍是:
\hfil  \hfil
【讨论】: