无法在通过闪亮生成的rmarkdown文档中的knitr :: kable()中使用`format =“latex”

时间:2017-12-28 20:55:31

标签: r shiny knitr

我希望在Shiny应用程序的PDF报告制作中使用kableExtra包功能(记录为here)。不幸的是,虽然我能够在Shiny环境之外复制上面链接的文档中的示例,但是当我在Shiny中尝试它时会出现以下错误:

  

“C:/ Program Files / RStudio / bin / pandoc / pandoc”+ RTS -K512m -RTS report.utf8.md --to latex --from markdown + autolink_bare_uris + ascii_identifiers + tex_math_single_backslash --output pandoc2f0831607c9a.pdf - -template“C:\ Users \ PStraforelli \ Documents \ R \ win-library \ 3.4 \ rmarkdown \ rmd \ latex \ default-1.17.0.2.tex” - 高亮式探戈--latex-engine pdflatex - 变量图形= yes - 变量“geometry:margin = 1in”   !未定义的控制序列。   l.160 \ toprule

     

pandoc.exe:生成PDF时出错   警告:运行命令'“C:/ Program Files / RStudio / bin / pandoc / pandoc”+ RTS -K512m -RTS report.utf8.md --to latex --from markdown + autolink_bare_uris + ascii_identifiers + tex_math_single_backslash --output pandoc2f0831607c9a。 pdf --template“C:\ Users \ phil \ Documents \ R \ win-library \ 3.4 \ rmarkdown \ rmd \ latex \ default-1.17.0.2.tex”--highlight-style tango --latex-engine pdflatex - 变量graphics = yes - 变量“geometry:margin = 1in”'状态为43   警告:错误:pandoc文档转换失败,错误43   堆栈跟踪(最里面的第一个):       53:pandoc_convert       52:转换       51:rmarkdown :: render       50:下载$ func [C:\ Users \ phil \ Desktop \ app / app.R#16]        1:shiny :: runApp   错误:pandoc文档转换失败,错误43

这是一个可重复的例子:

app.R文件:

#From here: http://shiny.rstudio-staging.com/articles/generating-reports.html
shinyApp(
  ui = fluidPage(
    sliderInput("slider", "Slider", 1, 32, 10),
    downloadButton("report", "Generate report")
  ),
  server = function(input, output) {
    output$report <- downloadHandler(

      filename = "report.pdf",
      content = function(file) {
                tempReport <- file.path(tempdir(), "report.Rmd")
        file.copy("report.Rmd", tempReport, overwrite = TRUE)

        params <- list(n = input$slider)

        rmarkdown::render(tempReport, output_file = file,
                          params = params,
                          envir = new.env(parent = globalenv())
        )
      }
    )
  }
)

report.Rmd文件:

---
title: "Dynamic report"
output: pdf_document
params:
  n: NA
---

```{r}
#From here: http://haozhu233.github.io/kableExtra/awesome_table_in_pdf.pdf
library(magrittr)
library(knitr)
library(kableExtra)
dt <- mtcars[1:params$n, 1:6]

kable(dt, format = "latex", booktabs = T) %>% 
  kable_styling(latex_options = "striped")
```

当我将app.R文件启动到Internet浏览器上,然后单击“生成报告”时,我收到上面引用的错误。如果我删除format = "latex"文件(和knitr::kable()函数)中report.Rmd内的kable_styling()参数,那么一切正常。

1 个答案:

答案 0 :(得分:6)

您需要将library(kableExtra)放入您的rmarkdown中。它会自动为您加载必要的LaTeX软件包。

更新:rmarkdown render在清理元数据方面存在一些问题。为了确保加载这些包,您可以按照此包中使用的&#34; LaTeX包中的指示进行操作。小插图的一部分,并将header-includes放在你的yaml标题中。

有关详细信息,请参阅Why does rendering a pdf from rmarkdown require closing rstudio between renders?