Kableextra:使用条件颜色格式

时间:2020-07-16 18:13:55

标签: r pdf latex kableextra

该示例显示了我在说什么。 生成两个pdf文件。在第一种情况下,“%”符号正确显示,但在第二种情况下则不正确。关于如何解决这个问题的任何想法? 这很烦人,我不确定在kableextra或乳胶面操作是否更简单(但我想是前者)。 我可能正在寻找一般的修复方法,而不是仅对此示例表有效的方法。

谢谢!

library(tidyverse)
library(kableExtra)
#> 
#> Attaching package: 'kableExtra'
#> The following object is masked from 'package:dplyr':
#> 
#>     group_rows

## a function to replace some strings -- not important how it works for this example.


search_replace <- function(df, pattern_search, pattern_replace){
    x <- df  %>%
        mutate(across(where(is.character),
                        stringr::str_replace_all, pattern = pattern_search,
                        replacement = pattern_replace))
}



zz <- paste(seq(10), "%", sep="")

df <- tibble(x=letters[1:10], y=c(rep(-1,5), rep(1,5)),
             z=zz)

df_plot1 <- df %>%
    search_replace( "%", "\\\\%" ) ## to render the percentages in latex

    
ll1 <- df_plot1 %>%
    kable("latex", booktabs = T, escape = F)



writeLines(
  c(
      "\\documentclass{article}",
                     "\\usepackage{graphicx}",
         "\\usepackage{makecell}",
          "\\usepackage{booktabs}",
"\\usepackage{colortbl, xcolor}",
"\\begin{document}",
"\\thispagestyle{empty}",
    ll1,
    "\\end{document}"
  ),
  "test1.tex"
)



tools::texi2pdf("test1.tex", clean = TRUE) ## and everything is fine



##now with conditional formatting

ll2 <- df_plot1 %>%
    mutate(z = cell_spec(z, "latex",
                              color = ifelse(y >= 0, "black", "red"))) %>% 

    kable("latex", booktabs = T, escape = F) 




writeLines(
  c(
      "\\documentclass{article}",
                     "\\usepackage{graphicx}",
         "\\usepackage{makecell}",
          "\\usepackage{booktabs}",
"\\usepackage{colortbl, xcolor}",
"\\begin{document}",
"\\thispagestyle{empty}",
    ll2,
    "\\end{document}"
  ),
  "test2.tex"
)


tools::texi2pdf("test2.tex", clean = TRUE) ## and the % is no longer rendered correctly

reprex package(v0.3.0)于2020-07-16创建

0 个答案:

没有答案