【问题标题】:Centering image and text in R Markdown for a PDF report在 R Markdown 中为 PDF 报告居中图像和文本
【发布时间】:2014-08-31 21:26:22
【问题描述】:

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

我尝试过使用:

->Text<-

->![](image1.jpg)<-

这样不行!还有其他方法可以完成这项工作吗?

【问题讨论】:

    标签: r markdown r-markdown


    【解决方案1】:

    如果要将 R 代码块的输出(例如绘图)居中,则可以使用 fig.align option in knitr

    ```{r fig.align="center"}
    plot(mtcars)
    ```
    

    【讨论】:

      【解决方案2】:

      我也有同样的问题。我已经尝试了上面提供的所有解决方案,但没有一个有效……但我找到了一个适合我的解决方案,希望也适用于其他人。

      <center>
      
      ![your image caption](image.png)
      
      </center>
      

      此代码将使图像和标题居中。您必须&lt;center&gt;、图像代码和&lt;/center&gt; 之间留出一行,否则图像将居中但标题会消失。

      如果你想让你的图片有一个可点击的链接,你可以嵌入类似的东西

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

      但是,标题将不再出现。

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

      <center>
      
      ![](image.png)
      
      [your image caption](www.link_to_image.com)
      
      </center>
      

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

      【讨论】:

      • 最有用(请加粗):“必须在&lt;center&gt;、图像代码和&lt;/center&gt; 之间留行,否则图像将居中但标题会消失。 "
      • 没有什么对我有用..考虑到军舰的澄清
      • 这似乎不适用于 OP 要求的 PDF 输出。也许您可以在回答中这么说?
      • 如果你不想要一个标题,你似乎不能使用这个技术。
      【解决方案3】:

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

      \begin{center}
      Text
      \end{center}
      

      当然,有一个问题:begin{...}\end{...} 之间的所有内容都被 Pandoc 解释为原始 LaTeX,因此您不能使用此技术将 R 代码块或 Markdown 内容的输出居中。

      【讨论】:

      • 如果我们想将 R 代码块的输出居中怎么办?
      • 如前所述,任何“特殊”的新错误都只是表示您不能再在其中使用 markdown 或 html。只允许 LaTeX 语法。至于 R 代码块,由于 knitr 的fig.align="center",它们实际上非常容易放置。
      【解决方案4】:

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

      knitr::opts_chunk$set(echo = TRUE, fig.align="center")
      

      【讨论】:

        【解决方案5】:

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

        include_graphics() 函数提供了一个简单的解决方案。唯一的参数是文件的名称(如果它在子文件夹中,则带有相对路径)。通过将echo 设置为FALSEfig.align=center,你会得到想要的结果。

        ```{r, echo=FALSE, fig.align='center'}
        include_graphics("image.jpg")
        ```
        

        【讨论】:

        • 很好的解决方案!只想补充一点,这是来自knitr 包,而不是rmarkdown 包,如果有人使用这个解决方案的话。
        【解决方案6】:

        我使用了乔纳森的答案来谷歌将图像插入 LaTeX,如果您想插入一个名为 image1.jpg 的图像并将其居中,您的代码在 Rmarkdown 中可能如下所示

        \begin{center}
        \includegraphics{image1}
        \end{center}
        

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

        【讨论】:

          【解决方案7】:

          乔纳森给出的简单解决方案通过修改来欺骗潘多克。而不是直接的 Latex 命令,例如

          \begin{center}
          Text
          \end{center}
          

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

          header-includes:
          - \newcommand{\bcenter}{\begin{center}}
          - \newcommand{\ecenter}{\end{center}}
          

          然后你使用:

          \bcenter
          Text and more
          \ecenter
          

          这对我来说适用于使整个文档居中,其中包含许多代码块和降价命令。

          【讨论】:

          • 这非常有效
          【解决方案8】:

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

          \centering
          ![](image1.jpg)
          

          【讨论】:

            【解决方案9】:

            如果您知道您的格式是 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!")`
            

            【讨论】:

              【解决方案10】:

              现在有一个更好的解决方案,更优雅,基于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

              【讨论】:

                【解决方案11】:

                没有一个答案有效,但这个

                \newcommand{\bcenter}{\begin{center}}
                \newcommand{\ecenter}{\end{center}}
                

                但接下来的问题是它只适用于一个数字,然后不适用于任何其他数字。

                我刚开始学习 R,我知道这会很困难,但最糟糕的是几乎没有我可以参考的信息。

                【讨论】:

                  【解决方案12】:

                  只是为了更新问题。为此,您可以通过简单的方法将fig.align="center" 添加到带有chuck knitr 选项的块中:

                      knitr::opts_chunk$set(echo = TRUE,
                                            fig.align="center" #align all the figures in the center
                                            )
                  
                  

                  【讨论】:

                    【解决方案13】:

                    在文本中插入 pdf 图形时,这些解决方案都不适合我。经过大量的试验和错误,对我来说(对于 pdf 输出)的诀窍是:

                    \hfil ![](image1.pdf) \hfil
                    

                    【讨论】:

                    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                    猜你喜欢
                    • 1970-01-01
                    • 2021-04-04
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-11-24
                    • 2017-01-03
                    • 1970-01-01
                    • 2021-03-18
                    • 2023-03-25
                    相关资源
                    最近更新 更多