在我的论文中,我发现了 79 个需要在附录中详细描述的不同概念。我使用 R 进行分析,并希望使用 knitr 创建该附录。
每个描述都遵循相同的基本“模板”,其中填充了某个概念的值。该模板并不太复杂,但仍需要几个嵌入值的 LaTeX 命令。
如果只有一个概念描述,我会编写简单的 LaTeX 并使用 插入值\Sexpr{}
。现在我需要循环遍历数据框,我知道的唯一方法是使用一个块并使用 从中输出 LaTeX 命令cat
。这基本上会使代码变得无法维护。
有没有更好的方法来解决该问题?
这是一个 MWE,它只在小页面上输出概念的名称。实际上,数据框将有 7-8 列,并且所有列都必须以某种方式在该小页面上排版,包括每个概念一个图表(直方图)。
\documentclass[a4paper]{article}
\begin{document}
<<createExampleData, echo=FALSE>>==
all.concepts.in.detail <- data.frame(name=c("red","green","blue", "purple", "yellow", "orange"))
@
<<AllConceptsInDetail, echo=FALSE, results = 'asis'>>=
for(rownumber in 1:nrow(all.concepts.in.detail)) {
cat("\\begin{minipage}{\\textwidth}\n")
cat("\\section{")
cat(as.character(all.concepts.in.detail[rownumber, "name"]))
cat("}\n")
cat("\\end{minipage}\n\n")
}
@
\end{document}
答案1
为了使您的cat()
输出正常工作,我认为您需要指定results='asis'
。例如:
<<echo=F, results='asis' >>=
我相信这很管用。但我不是专家。我用它以多种方式直接将乳胶输出到我的文档中。最方便的是带有图像的循环,它可以一次输出大量图像或表格。
答案2
参数化 RMarkdown 报告中代码块的示例,它将循环遍历链接向量(Link),并将多页、多个 PDF 包含到报告中。
```{r attachments, results = 'asis'}
for (j in seq(1,length(params$Link))) {
cat (paste0("\\includepdf[pages={-}]{", params$Link[j], "}"))
}
```