Rmarkdown中kable输出LaTeX表格含%标签变色时多余反斜杠问题
R Markdown渲染LaTeX表格百分比转义多余反斜杠解决方案
问题本质
你遇到的问题来自两个错误逻辑:
- 手动对%做LaTeX转义后,
cell_spec默认的转义规则会对内容做二次转义,最终输出就会出现多余的反斜杠 - 把数值转成带%的字符串后再和数值做大小比较,判断逻辑会直接失效
修正后可直接运行的代码
require(kableExtra) require(scales) library(knitr) require(tidyverse) knitr::opts_chunk$set(echo = TRUE) # 保留原始数值做阈值判断,不提前转成百分比字符串 MDF = data.frame(a_raw = 0.07, b_raw = 0.05) MDF = MDF %>% mutate( # 先做阈值判断,再生成带格式的百分比内容 a = cell_spec(label_percent()(a_raw), color = ifelse(a_raw > 0.06, "red", "black"), escape = FALSE), b = label_percent()(b_raw) ) %>% # 筛选需要输出到表格的列 select(a, b) # kable关闭转义,直接输出cell_spec生成的合法LaTeX代码 kable(MDF, "latex", escape = F, booktabs = T)
修改说明
- 用原始数值做阈值判断,不需要从带%的字符串里提取数值,逻辑更简单不易出错,6%对应原始数值0.06,可根据你的需求自行调整
- 不需要手动对%做转义,
cell_spec和kable会自动处理LaTeX特殊字符的转义规则,避免双重转义产生多余反斜杠
内容的提问来源于stack exchange,提问作者Iain mortimer
相关产品推荐
相关产品推荐

