Rmarkdown文件成功编织为PDF,但从R

时间:2018-06-12 18:19:40

标签: r latex r-markdown knitr kable

我编写了一个Rmarkdown文件,可以加载一些数据并生成一个很酷的kableExtra表,其中包含一些符号和自定义颜色和线条,并将其打印为pdf。

当我打开Rmarkdown文件并编织时它很有效,并产生我想要的确切输出。

我现在想使用一个R脚本循环遍历数据的一些不同子集,为每个子集生成一个新表(和单独的输出pdf)。所以,我需要从.R文件中调用我的.Rmd文件。

但是,当我这样做时(使用rmarkdown::render函数),我会收到直接从.Rmd文件中编织时不会出现的错误。

下面是一个功能齐全的.Rmd文件,类似于我在实际数据中使用的文件。我是用第二个R脚本调用它,行rmarkdown::render("table_creator.Rmd", pdf_document(latex_engine = "xelatex"))

我遇到的第一个错误是Error: Functions that produce HTML output found in document targeting latex output.。我将always_allow_html: yes添加到.Rmd文件的标头中,然后重试。直接编织.Rmd文件再次正常工作。从.R脚本调用它现在会产生错误:  ! Undefined control sequence. l.94 ...oup\fontsize{16}{18}\selectfont \textcolor [HTML]{ffde71}{$\bullet$}\...

此时我认为渲染是使用某些类型的不同设置进行的,而不是直接编织.Rmd文件时使用的设置。它几乎就像是没有解析.Rmd文件中的完整标题,但我不确定。我对此如何处理感到茫然,并希望得到任何帮助。

---
title: ""
output:
  pdf_document:
    latex_engine: xelatex
header-includes:
- \usepackage[T1]{fontenc}
- \setmainfont{Helvetica}
- \DeclareTextCommand{\nobreakspace}{TU}{\leavevmode\nobreak\ }
---

```{r, echo=FALSE, message = FALSE, warning = FALSE}
# Packages
suppressMessages(library(kableExtra))
suppressMessages(library(dplyr))

table_info <- data.frame(Symbol = c("$\\bullet$", "$\\blacksquare$",
                                    "$\\blacklozenge$", "x", "+", "$\\bullet$"),
                         Name = letters[1:6],
                         Results = sample(c("good", "bad"), 6, replace = TRUE),
                         FontSize = c(16, 10, 11, 16, 16, 18),
                         Color = c("#ffde71", "#0c0000", "#0c0000", "#0c0000",
                                   "#0c0000", "#cb6f86"))

 ktable <- table_info %>%
     mutate(Symbol = cell_spec(Symbol, color = Color, 
                              font_size = FontSize,
                              escape = FALSE,
                              format = "latex")) %>%
    select(-Color, -FontSize) %>%
    kable(escape = FALSE, align = c("l", "l", "l"),
          booktabs = TRUE) %>%
    row_spec(1:5, hline_after = TRUE) %>%
    row_spec(1:6, color = "gray") %>%
    column_spec(1, "1.5em")

```

```{r, echo=FALSE}
ktable
```

编辑:其他背景信息 sessionInfo()的输出:

  

sessionInfo()   R版本3.4.3(2017-11-30)   平台:x86_64-apple-darwin17.3.0(64位)   运行于:macOS High Sierra 10.13.1

     

Matrix产品:默认   BLAS:/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib   LAPACK:/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib

     

区域设置:   [1] en_US.UTF-8 / en_US.UTF-8 / en_US.UTF-8 / C / en_US.UTF-8 / en_US.UTF-8

     

附加基础包:   [1] stats graphics grDevices utils数据集方法库

     

其他附件包:   [1] bindrcpp_0.2 dplyr_0.7.4 kableExtra_0.9.0 rmarkdown_1.9

     

通过命名空间加载(而不是附加):    [1] Rcpp_0.12.15 rstudioapi_0.7 bindr_0.1 knitr_1.20 xml2_1.2.0
   [6] magrittr_1.5 hms_0.4.2 rvest_0.3.2 munsell_0.4.3 viridisLite_0.3.0   [11] colorspace_1.3-2 R6_2.2.2 rlang_0.1.6 plyr_1.8.4 stringr_1.2.0
  [16] httr_1.3.1 tools_3.4.3 htmltools_0.3.6 yaml_2.1.18 assertthat_0.2.0   [21] rprojroot_1.3-2 digest_0.6.15 tibble_1.4.2 readr_1.1.1 glue_1.2.0
  [26] evaluate_0.10.1 stringi_1.1.6 compiler_3.4.3 pillar_1.1.0 scales_0.5.0
  [31] backports_1.1.2 pkgconfig_2.0.1

0 个答案:

没有答案