使用gtsummary包输出PDF表格时遇Undefined control sequence错误求助
解决gtsummary显示截距项时PDF编译LaTeX报错的问题
问题原因
报错并非intercept = TRUE与as_gt()的参数冲突,而是显示截距项时,默认的(Intercept)标签里的括号在LaTeX编译中被误解析为未定义的控制序列——尤其是通过as_gt()转成gt对象后,gt包生成的LaTeX代码未自动转义这些特殊符号。
两种可行解决方案
方案1:修改截距项标签(适配需用as_gt()的场景)
手动将(Intercept)替换为LaTeX可识别的格式,同时确保文档加载amsmath包:
# 构建示例模型 mod <- lm(mpg ~ wt + cyl, data = mtcars) # 生成表格并修改截距标签 tbl_regression(mod, intercept = TRUE) %>% modify_table_body( mutate, label = case_when( variable == "(Intercept)" ~ "\\text{Intercept}", # 用LaTeX的text命令包裹标签 TRUE ~ label ) ) %>% as_gt()
同时在Rmarkdown的YAML头部添加依赖包声明:
header-includes: - \usepackage{amsmath}
方案2:直接使用gtsummary原生输出(推荐)
gtsummary本身支持直接输出PDF格式表格,无需转成gt对象,它会自动处理LaTeX的符号转义:
mod <- lm(mpg ~ wt + cyl, data = mtcars) tbl_regression(mod, intercept = TRUE) # 直接输出,无需调用as_gt()
说明
方案2更简洁,因为gtsummary针对PDF输出做了原生适配,会自动将(Intercept)转成LaTeX可识别的格式;方案1适合你必须使用gt对象进行额外定制的场景。
内容的提问来源于stack exchange,提问作者Tengku Hanis
相关产品推荐
相关产品推荐

