部署到RConnect的Shiny App中.Rmd引入非仓库LaTeX包digsig的问题
解决RConnect部署Shiny应用时digsig.sty无法加载的问题
方法1:本地TeXMF目录加载(最可靠)
- 在应用根目录创建
texmf/tex/latex/digsig层级目录,将digsig.sty放入该目录(这是LaTeX默认的本地包搜索路径结构) - 在app.R启动阶段添加以下代码,让TinyTeX识别这个本地目录:
local_texmf <- file.path(getwd(), "texmf") tinytex::tlmgr(c("option", "sys TEXMFLOCAL", local_texmf)) tinytex::tlmgr("mktexlsr") - 编译Rmd时LaTeX会自动扫描该目录,无需修改Rmd内的包引用
方法2:Rmd中直接指定sty路径
- 将
digsig.sty放在应用内的latex/digsig/目录下 - 在Rmd文件的YAML头部之后、正文之前,添加LaTeX命令手动导入:
注意路径需对应sty文件相对于Rmd的位置,若Rmd在子目录,需调整路径层级\usepackage{../latex/digsig/digsig}
方法3:修正tlmgr本地安装命令
- 改用绝对路径指定sty文件,避免相对路径在部署环境中失效:
sty_file <- file.path(getwd(), "latex/digsig/digsig.sty") tinytex::tlmgr(c("install", "--file", sty_file, "digsig")) tinytex::tlmgr("mktexlsr") - 安装完成后必须执行
mktexlsr更新TeX数据库,否则LaTeX无法识别新安装的包
排查路径问题
- 部署前可在app.R中添加临时代码,确认sty文件是否上传到位:
部署后查看RConnect日志,确认cat("Current working dir:", getwd(), "\n") cat("Files in app:\n", list.files(recursive = TRUE), "\n")digsig.sty存在于预期路径下
内容的提问来源于stack exchange,提问作者apshinyn
相关产品推荐
相关产品推荐

