【问题标题】:Adding space around figures in RMarkdown在 RMarkdown 中的数字周围添加空间
【发布时间】:2018-06-27 07:23:49
【问题描述】:

我想在 RMarkdown 中的数字周围添加空格。我正在编写 PDF,真的不喜欢数字(或方程式)与文本或下一个数字的接近程度。

---
output: pdf_document
---

```{r pressure, echo=FALSE}
plot(pressure)
```

```{r pressure2, echo=FALSE}
plot(pressure)
```

两个图之间的空间太小,使用 ggplots 时会变得更加模糊。

现在我使用的是 Latex 解决方案

\vspace{10pt}

但如果我可以对整个文档进行全局设置,那就太好了。

【问题讨论】:

    标签: r knitr r-markdown


    【解决方案1】:

    关于绘图前后的间距,您可以使用简单的 knitr hook:

    ```{r, echo = F}
    library(knitr)
    if(is_latex_output()) {
      plot_default <- knit_hooks$get("plot")
      knit_hooks$set(plot = function(x, options) { 
        x <- c(plot_default(x, options), "\\vspace{25pt}")
      })
    }
    ```
    

    这里我们改变了情节钩子,我们只是在每个情节输出之后添加25pt的间距。

    关于方程式,您可以在文档开头添加这四个长度定义:

    \setlength{\abovedisplayskip}{25pt}
    \setlength{\belowdisplayskip}{25pt}
    \setlength{\abovedisplayshortskip}{25pt}
    \setlength{\belowdisplayshortskip}{25pt}
    

    使用align 环境创建的前两个alter 方程。后两个是使用$$ ... $$ 创建的。

    【讨论】:

    • 最好以knitr::is_latex_output()为条件(即当输出格式不是LaTeX时不要修改plot钩子)。
    • @YihuiXie:你的观点很有道理,但我不知道该怎么做。包括条件给我“'is_latex_output' 不是从 'namespace:knitr' 导出的对象”。
    • 我偶然发现了这一点,并且 knitr 钩子在 rmd 文档中的下一个代码块中完美运行,但是后续代码块产生的数字又太接近了?我尝试将代码复制到以后的卡盘中,但随后失败并出现以下错误“错误:C 堆栈使用 7972320 太接近限制执行停止”
    • @ChuckP 我可以确认您的观察。我也不知道发生了什么,但我通过在每个块中命名不同的plot_default 变量来解决它,比如plot_default2plot_default3 等等......我知道它不漂亮但我不有时间再花几个小时研究到底发生了什么......
    • @ChuckP 我们的问题的解决方案是将上面的代码包装在local({ ... }) 中,如此处所述bookdown.org/yihui/rmarkdown-cookbook/output-hooks.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2019-09-25
    相关资源
    最近更新 更多