在编织为pdf时包裹编织块中生成的数字

问题描述 投票:0回答:1

在.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个回答
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",或者所有数字都被包在一起,然后你就会回到原来的问题。

© www.soinside.com 2019 - 2024. All rights reserved.