该示例显示了我在说什么。 生成两个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创建