如何在RMarkdown PDF中为kableExtra()-footnote更改文本颜色?

时间:2019-01-07 10:03:11

标签: r r-markdown kableextra

我正在用kableExtra()中的表创建一个Rmarkdown PDF报告。有没有一种方法可以根据cell_spec()中设置的条件格式来更改脚注的文本颜色?

我尝试使用paste0(),请参见下面的最低要求(来自kableExtra)。我无法更改PDF输出,并且请求是针对客户端的。

我正在运行R版本3.5.1(2018-07-02),平台:x86_64-apple-darwin15.6.0(64位),在以下环境下运行:macOS 10.14.2和kableExtra_0.9.0。

---
title: "Minimal Reprex"
output: pdf_document
---

```{r setup, include=FALSE}

knitr::opts_chunk$set(echo = TRUE)

# packages
library(dplyr)
library(kableExtra)
```


```{r reprex}
mtcars[1:10, 1:2] %>%
   mutate(
    car = row.names(.),
    # You don't need format = "latex" if you have ever defined 
      options(knitr.table.format)
    mpg = cell_spec(mpg, "latex", color = ifelse(mpg > 20, "red", 
     "black")),
    cyl = cell_spec(cyl, "latex", color = "white", align = "c", 
     angle = 45,
    background = factor(cyl, c(4, 6, 8),
    c("#666666", "#999999", "#BBBBBB")))) %>%
    select(car, mpg, cyl) %>%
    kable("latex", escape = F, booktabs = T, linesep = "") %>% 
    footnote(paste0("MPG > 20 is displayed in", "\textcolor{red} 
    {red}"))

  ```

我希望单词“ red”被涂成红色,当我得到“ \ textcolor {red} {red}”时,它会粘贴此文本。我知道粘贴乳胶代码存在问题,但是我无法弄清楚。

1 个答案:

答案 0 :(得分:1)

使用四个反斜杠和选项escape = F

footnote("MPG > 20 is displayed in \\\\textcolor{red}{red}", escape = F)

如果没有escape = F,对LaTeX具有特殊含义的字符(如\ & % { })将被转义,结果是输出文件中包含字符本身。 在这里,我们手动转义了反斜杠(在生成的tex文档中只有一个)。