r - 如何在 R-Markdown 的 R block 中使用 LaTeX 代码?

标签 r pdf knitr r-markdown

我目前正在使用 rmarkdown 编写报告,因此我想在 r 代码块中创建部分。我发现这在 cat() 和 results="asis"的帮助下是可能的。我对这个解决方案的问题是,我的 R 代码结果和代码没有像往常一样正确显示。

例如

---
title: "test"
output: pdf_document
---

```{r, results='asis'}
for (i in 1:10) {
  cat("\\section{Part:", i, "}")
  summary(X)
  $\alpha = `r X[1,i]`$  
}
```

几乎可以解决问题,但这里仍然存在两个问题:
  • summary() 的 R 输出显示得很奇怪,因为我猜它被解释为 LaTeX 代码
  • 我不能在这个环境中使用 LaTeX 公式,所以如果我希望每个部分都以一个方程结尾,这也可能使用 R 变量,这是不可能的

  • 是否有人知道其中一些问题的解决方案,或者是否有一种解决方法可以在循环中创建部分并在本部分中包含 R 代码、R 输出和 LaTeX 公式?或者至少是其中之一?

    我非常感谢各种建议

    最佳答案

    您可以在不依赖代码块的情况下进行内联之后的操作。

    作为一个最小的例子。

    ---
    title: "test"
    output: pdf_document
    ---
    
    ```{r sect1_prep, include=FALSE}
    i <- 1
    ```
    
    \section{`r paste0("Part: ", i)`}
    
    ```{r sect1_body}
    summary(mtcars[, i])
    ```
    
    $\alpha = `r mtcars[1, i]`$
    
    ```{r sect2_prep, include=FALSE}
    i <- i + 1
    ```
    
    \section{`r paste0("Part: ", i)`}
    
    ```{r sect2_body}
    summary(mtcars[, i])
    ```
    
    $\alpha = `r mtcars[1, i]`$
    

    生产...

    enter image description here

    如果你真的想拥有一个型材厂,你可以考虑pander .
    ---
    title: "test"
    output: pdf_document
    ---
    
    ```{r setup, include=FALSE}
    library(pander)
    panderOptions('knitr.auto.asis', FALSE)
    ```
    
    ```{r, results='asis', echo=FALSE}
    
    empty <- lapply(1:10, function(x) {
    
      pandoc.header(paste0("Part: ", x), level = 2)
      pander(summary(mtcars[, x]))
      pander(paste0("$\\alpha = ", mtcars[1, x], "$\n"))
    
    })
    
    ```
    

    产生...

    enter image description here

    删除汇总表格式示例
    ---
    title: "test"
    output: pdf_document
    ---
    
    ```{r setup, include=FALSE}
    library(pander)
    panderOptions('knitr.auto.asis', FALSE)
    ```
    
    ```{r, results='asis', echo=FALSE}
    
    content <- lapply(1:10, function(x) {
    
      head <- pandoc.header.return(paste0("Part: ", x), level = 2)
      body1 <- pandoc.verbatim.return(attr(summary(mtcars[, x]), "names"))
      body2 <- pandoc.verbatim.return(summary(mtcars[, x]))
      eqn <- pander_return(paste0("$\\alpha = ", mtcars[1, x], "$"))
    
      return(list(head = head, body1 = body1, body2 = body2, eqn = eqn))
    
    })
    
    writeLines(unlist(content), sep = "\n\n")
    ```
    

    enter image description here

    关于r - 如何在 R-Markdown 的 R block 中使用 LaTeX 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47463861/

    相关文章:

    r - 自动调整大图以适应 rmarkdown 的页面 pdf 输出

    r - 返回列的乘法

    r - 使用哈希来确定 2 个数据帧是否相同(第 01 部分)

    vba - 通过 VBA 代码将单个 Excel 工作表保存为单独的 PDF 文件

    android - 我想在 android 中将文本转换为 pdf

    html - Coldfusion cfdocument 到 pdf 丢失了 css 样式

    css - R Markdown : how to change style with internal css?

    regex - 如何提取R中字符之间的数字

    r - 从线性模型绘制交互效果的最佳方法

    r - Knitr 中的标题