如何为R包modelsummary生成的表格添加PDF交叉引用?
解决bookdown PDF表格交叉引用显示??的问题
问题根源
你用modelsummary生成表格时,没正确传递交叉引用所需的标签,导致bookdown无法识别表格的引用标记;之前错误地在title里添加\label,反而干扰了正确的标签生成逻辑。
修复步骤
- 在
modelsummary函数中添加label = "tab:table1"参数,这个参数会让modelsummary自动生成符合bookdown要求的LaTeX标签,和你引用的\@ref(tab:table1)完全对应。 - 保持代码块的chunk名称为
table1(和引用的tab:后缀一致)。 - 确保编译PDF时至少运行三次(bookdown需要多次编译才能完成交叉引用的解析)。
修改后的完整代码
--- title: 'A title' author: "Me" output: bookdown::pdf_document2: latex_engine: pdflatex dev: cairo_pdf toc: false keep_tex: true header-includes: - \usepackage{mathptmx} - \usepackage[T1]{fontenc} - \usepackage{xcolor} lang: ES-es linkcolor: red --- Results are shown in Table \@ref(tab:table1) ```{r table1, echo=FALSE} modelsummary(model_list, escape = TRUE, shape = term ~ model + statistic, estimate = "estimate", statistic = c("std.error", "p.value"), gof_map = c("aic"), coef_rename = c("anchura" = "Anchura", "peso" = "Peso", "color_f3" = "Color medio", "color_f4" = "Color medio oscuro", "color_f5" = "Color oscuro", "estado_espina_f2" = "Estado regular", "estado_espina_f3" = "Estado malo"), title = "Results", label = "tab:table1") # 新增标签参数
### 额外说明 - `modelsummary`的`label`参数是专门为bookdown、rmarkdown交叉引用设计的,不需要手动在标题里写LaTeX的`\label`命令。 - 如果还是无效,可检查生成的`.tex`文件,确认表格部分是否包含`\label{tab:table1}`,若存在,重新编译三次即可。 内容的提问来源于stack exchange,提问作者CarloRock
相关产品推荐
相关产品推荐

