R Markdown 数字分组以防止分页
R Markdown Grouping of Figures to Prevent Pagebreak
我在 RMarkdown for-loop code-chunk.
中分配 LaTeX 环境时遇到问题
简而言之,我编写了一个 R Markdown 文档和一系列 R-scripts 来在漫长的数据分析管道结束时自动生成 PDF 报告。报告的主要部分可以有 变量 个部分,我使用 for-loop 生成这些部分,每个部分包含一个 \subsection
标题,一个数据table 和由 ggplot 生成的图。其中一些部分会很长(跨越几页),有些会很短(约 1/4 页)。
目前我只是在每个 for-loop 迭代的末尾插入一个 \pagebreak
,但是这会在较短的部分中留下很多浪费的 space,所以我我正在尝试“分组”每个部分(即标题、table 和图表),以便每页 可以 多个,但如果整个部分放不下。
我试过使用 figure
或 minipage
环境,但由于某些原因,当包含绘图时,这些命令被打印为文字文本;这些标题和数据按预期工作 table,但在图像存在的情况下无法正确返回。
我还尝试在整个小节周围创建一个 LaTeX samepage
环境(尽管不确定这对 multi-page 节是否会正确运行?)然后似乎生成了 Markdown该图在该环境中的某个地方(Pandoc?)没有被正确解释,并且由于原始 Markdown ![]...
图像标记而在编译 TeX 时抛出错误。
最后,我还尝试在该小节的各个点实施 \pagebreak[x]
和 \nopagebreak[y]
提示,但似乎无法使这些提示产生所需的分页行为。
我生成了一个重现我的问题的 MWE。
我真的很感激任何关于如何解决这个问题的建议,或者更好的方法来处理以这种动态方式生成的元素的“分组”?
---
title: "Untitled"
author: "I don't know what I'm doing"
date: "26/07/2020"
output:
pdf_document:
latex_engine: xelatex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, dev = "cairo_pdf")
```
```{r cars, results='asis'}
for (i in 1:5){
cat("\begin{figure}")
cat(paste0("\subsection{This is subsection ",i,"}"))
cat("\Huge Here's some bulk text that would represent a data table... kasvfkwsvg fiauwe grfiwgiu iudaldbau iausbd ouasbou asdbva asdbaisd i iuahihai hiuh iaiuhqijdblab ihlibljkb liuglugu h uhi uhi uhqw iuh qoijhoijoijoi qwegru wqe grouw egq\newline")
plot(mtcars$wt,mtcars[,i])
cat("\end{figure}")
}
```
编辑添加:有趣的是,这些 figure
和 minipage
环境似乎在使用 knitr
在 .Rnw 中执行相同示例时按预期工作...所以缩小归结为 Pandoc 的问题?再次感谢您的帮助!
发生的事情是原始 TeX 命令在通过 Markdown 时不被视为 TeX。您可以通过将相关片段明确标记为 LaTeX 来解决此问题:
for (i in 1:5){
cat("`\begin{figure}`{=latex}")
cat(paste0("\subsection{This is subsection ",i,"}"))
cat("\Huge Here's some bulk text that would represent a data table... kasvfkwsvg fiauwe grfiwgiu iudaldbau iausbd ouasbou asdbva asdbaisd i iuahihai hiuh iaiuhqijdblab ihlibljkb liuglugu h uhi uhi uhqw iuh qoijhoijoijoi qwegru wqe grouw egq\newline")
plot(mtcars$wt,mtcars[,i])
cat("`\end{figure}`{=latex}")
}
有关详细信息,请参阅 pandoc 手册中的 generic raw attribute 部分。
我在 RMarkdown for-loop code-chunk.
中分配 LaTeX 环境时遇到问题简而言之,我编写了一个 R Markdown 文档和一系列 R-scripts 来在漫长的数据分析管道结束时自动生成 PDF 报告。报告的主要部分可以有 变量 个部分,我使用 for-loop 生成这些部分,每个部分包含一个 \subsection
标题,一个数据table 和由 ggplot 生成的图。其中一些部分会很长(跨越几页),有些会很短(约 1/4 页)。
目前我只是在每个 for-loop 迭代的末尾插入一个 \pagebreak
,但是这会在较短的部分中留下很多浪费的 space,所以我我正在尝试“分组”每个部分(即标题、table 和图表),以便每页 可以 多个,但如果整个部分放不下。
我试过使用 figure
或 minipage
环境,但由于某些原因,当包含绘图时,这些命令被打印为文字文本;这些标题和数据按预期工作 table,但在图像存在的情况下无法正确返回。
我还尝试在整个小节周围创建一个 LaTeX samepage
环境(尽管不确定这对 multi-page 节是否会正确运行?)然后似乎生成了 Markdown该图在该环境中的某个地方(Pandoc?)没有被正确解释,并且由于原始 Markdown ![]...
图像标记而在编译 TeX 时抛出错误。
最后,我还尝试在该小节的各个点实施 \pagebreak[x]
和 \nopagebreak[y]
提示,但似乎无法使这些提示产生所需的分页行为。
我生成了一个重现我的问题的 MWE。
我真的很感激任何关于如何解决这个问题的建议,或者更好的方法来处理以这种动态方式生成的元素的“分组”?
---
title: "Untitled"
author: "I don't know what I'm doing"
date: "26/07/2020"
output:
pdf_document:
latex_engine: xelatex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, dev = "cairo_pdf")
```
```{r cars, results='asis'}
for (i in 1:5){
cat("\begin{figure}")
cat(paste0("\subsection{This is subsection ",i,"}"))
cat("\Huge Here's some bulk text that would represent a data table... kasvfkwsvg fiauwe grfiwgiu iudaldbau iausbd ouasbou asdbva asdbaisd i iuahihai hiuh iaiuhqijdblab ihlibljkb liuglugu h uhi uhi uhqw iuh qoijhoijoijoi qwegru wqe grouw egq\newline")
plot(mtcars$wt,mtcars[,i])
cat("\end{figure}")
}
```
编辑添加:有趣的是,这些 figure
和 minipage
环境似乎在使用 knitr
在 .Rnw 中执行相同示例时按预期工作...所以缩小归结为 Pandoc 的问题?再次感谢您的帮助!
发生的事情是原始 TeX 命令在通过 Markdown 时不被视为 TeX。您可以通过将相关片段明确标记为 LaTeX 来解决此问题:
for (i in 1:5){
cat("`\begin{figure}`{=latex}")
cat(paste0("\subsection{This is subsection ",i,"}"))
cat("\Huge Here's some bulk text that would represent a data table... kasvfkwsvg fiauwe grfiwgiu iudaldbau iausbd ouasbou asdbva asdbaisd i iuahihai hiuh iaiuhqijdblab ihlibljkb liuglugu h uhi uhi uhqw iuh qoijhoijoijoi qwegru wqe grouw egq\newline")
plot(mtcars$wt,mtcars[,i])
cat("`\end{figure}`{=latex}")
}
有关详细信息,请参阅 pandoc 手册中的 generic raw attribute 部分。