【问题标题】:In RStudio, `knit` always works, but `rmarkdown::render` fails on second run (but not first!)在 RStudio 中,`knit` 始终有效,但 `rmarkdown::render` 在第二次运行时失败(但不是第一次!)
【发布时间】:2019-10-29 13:42:13
【问题描述】:

我正在尝试做一些非常简单的事情:生成 PDF 格式的报告。终于找到了一种重现我的问题的方法。我需要使用rmarkdown::render 根据GlobalEnv 中的数据创建报告。我正在使用tinytex 包。这里是test.Rmd

---
title: "Untitled"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(kableExtra)
library(tidyverse)
```

## R Markdown

```{r cars}
mtcars %>%
  kable(booktabs = TRUE) %>%
  kable_styling(latex_options = "striped")
```

作品:

RStudio 中的“Knit”似乎总是在这个文件上工作,正如预期的那样,产生mtcars 数据帧,用kable() 很好地格式化

不起作用(但应该?):

运行rmarkdown::render("test.Rmd") 在第一次运行时有效,但在第二次运行时无效。它抛出错误:

! LaTeX Error: Unknown float option `H'.

此后,RStudio 中的“Knit”会生成 PDF,但 R/knitr 会打印来自 rmarkdown::render("test.Rmd") 命令的任何警告/错误消息。

附加信息

如果上面的代码块改成运行rmarkdown::render("test.Rmd")不会产生错误

```{r cars}
mtcars %>%
  kable()
```

【问题讨论】:

    标签: r r-markdown knitr kable kableextra


    【解决方案1】:

    我选择回答我自己的问题,因为我找到了一种解决方法,如果有人找到错误的原因,希望它是不必要的。

    PDF 渲染引擎似乎除了tinytex 的最基本的 LaTeX 安装之外什么都不识别。我尝试tinytex::tlmgr_install 手动安装必要的 LaTeX 包,但它们都返回“包已存在”消息。

    解决方案

    我在 Rmd 中的 YAML 中添加了以下内容:

    header-includes:
       - \usepackage{booktabs}
       - \usepackage{float}
       - \usepackage{colortbl}
       - \usepackage[table]{xcolor}
    

    我基本上添加了每个 \usepackage 行,直到我没有收到我正在寻找的格式错误。

    工作 Rmd 代码

    rmarkdown::render()knit (Rstudio) 都可以工作(也可以在我的 OWN 代码上工作!):

    ---
    title: "Untitled"
    output: pdf_document
    header-includes:
       - \usepackage{booktabs}
       - \usepackage{float}
       - \usepackage{colortbl}
       - \usepackage[table]{xcolor}
    ---
    
    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(echo = FALSE)
    library(kableExtra)
    library(tidyverse)
    ```
    
    ## R Markdown
    
    ```{r cars}
    mtcars %>%
      kable(booktabs = TRUE) %>%
      kable_styling(latex_options = "striped")
    ```
    

    【讨论】:

      【解决方案2】:

      这对我不起作用。我在 xcolor 选项中遇到了冲突。第 3 页中指出的解决方案:https://haozhu233.github.io/kableExtra/awesome_table_in_pdf.pdf

      是添加:

      options(kableExtra.latex.load_packages = FALSE)
      

      在 YAML 中:

      header-includes:
      - \usepackage{booktabs}
      - \usepackage{longtable}
      - \usepackage{array}
      - \usepackage{multirow}
      - \usepackage{xcolor}
      - \usepackage{wrapfig}
      - \usepackage{float}
      - \usepackage{colortbl}
      - \usepackage{pdflscape}
      - \usepackage{tabu}
      - \usepackage{threeparttable}
      - \usepackage{threeparttablex}
      - \usepackage[normalem]{ulem}
      - \usepackage{makecell}
      

      请注意,您可以删除任何不需要的软件包。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-01
        • 2021-01-20
        • 2019-06-07
        • 2022-01-21
        • 2017-09-09
        • 1970-01-01
        • 2018-01-06
        • 2018-07-12
        相关资源
        最近更新 更多