【问题标题】:Wrapping figures generated in a knitr chunk when knitting to pdf编织到 pdf 时包裹在 knitr 块中生成的图形
【发布时间】:2019-08-03 08:05:23
【问题描述】:

在 .Rmd 文档中,我在 knitr 块中生成多个相关图形(来自列表)。

当编织成 html 时,这些图形被正确包裹并且全部可见。

当编织到 pdf 时,数字都是一个接一个,只有前两个是可见的(第三个的一半)。这是一些重现该问题的代码:

---
title: "Example figure wrapping problem"
output:
    pdf_document:
        keep_tex: true
classoption:
    landscape
---

# SK-N-SH plex panel {.tabset .tabset-fade}

```{r, echo=FALSE, message=FALSE}
knitr::opts_chunk$set(fig.width=6, fig.height=9, fig.show="hold", hightligh=TRUE, warnings=TRUE, error=FALSE, cache=FALSE, echo=FALSE, dpi=100)
```

```{r}
for (ii in 1:6) {
    plot(1:3, 1:3, main=ii)
}
```

我认为问题来自 .tex 文件的生成,其中包含以下行:

\includegraphics{figure/unnamed-chunk-2-1.png}\includegraphics{figure/unnamed-chunk-2-2.png}\includegraphics{figure/unnamed-chunk-2-3.png}\includegraphics{figure/unnamed-chunk-2-4.png}\includegraphics{figure/unnamed-chunk-2-5.png}\includegraphics{figure/unnamed-chunk-2-6.png}

每两个includegraphics添加换行符可以解决问题:

\includegraphics{figure/unnamed-chunk-2-1.png}\includegraphics{figure/unnamed-chunk-2-2.png}
\includegraphics{figure/unnamed-chunk-2-3.png}\includegraphics{figure/unnamed-chunk-2-4.png}
\includegraphics{figure/unnamed-chunk-2-5.png}\includegraphics{figure/unnamed-chunk-2-6.png}

但显然不实用,因为还有很多数字。我也可以在文件上运行sed 's/}\(\\includegraphics\)/}\r\1/g',但感觉就像在编译过程中没有用处一样复杂。

有没有原生的knitrrmarkdown 方法来解决我的问题。

【问题讨论】:

标签: r pdf r-markdown knitr pdflatex


【解决方案1】:

如果您在代码块中指定fig.align="center"fig.show="asis",它似乎可以工作。例如

---
title: "Example figure wrapping problem"
output:
    pdf_document:
        keep_tex: true
classoption:
    landscape
---

# SK-N-SH plex panel {.tabset .tabset-fade}

```{r, echo=FALSE, message=FALSE}
knitr::opts_chunk$set(fig.width=6, fig.height=9, fig.show="hold", hightligh=TRUE, warnings=TRUE, error=FALSE, cache=FALSE, echo=FALSE, dpi=100)
```

```{r fig.align="center",fig.show="asis"}
for (ii in 1:6) {
    plot(1:3, 1:3, main=ii)
}
```

看起来不错。它生成 LaTeX 代码

\begin{center}\includegraphics{Untitled_files/figure-latex/unnamed-chunk-2-1} \end{center}

\begin{center}\includegraphics{Untitled_files/figure-latex/unnamed-chunk-2-2} \end{center}

etc.

这打破了数字。可以改用fig.align="right"fig.align="left",但千万不能用fig.show="hold",不然所有的图都包在一起,又回到原来的问题了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多