缺少乳胶包时 tinytex 无法写入目录

tinytex can't write to directory when a latex package is missing

我 运行 RStudio(R 版本 3.6.0)在 Ubuntu 18.04.2 LTS 服务器上,并尝试使用 {papaja} 包编译 pdf。我按照建议 (sudo apt-get purge texlive-*) 删除了预捆绑的 Tex 发行版并安装了 {tinytex}.

tinytex::tinytex_root()
# "/home/rstudio/.TinyTeX"

当我尝试编译为 PDF 时,出现错误,开始时搜索 tlmgr search --file --global '/apa6.cls'papaja 所需的文件:

Trying to automatically install missing LaTeX packages...

tlmgr install apa6

You don't have permission to change the installation in any way, specifically, the directory /home/rstudio/.TinyTeX/tlpkg/ is not writable.

Github issue 似乎是相关的,但如果是这样,我不明白解决方案。

对于它的价值,并使其可重现,"just worked" 在 Ubuntu 19.04 上使用 texlive:

edd@rob:/tmp$ Rscript -e 'rmarkdown::draft("test.Rmd", template="apa6", package="papaja", edit=FALSE)'
edd@rob:/tmp$ Rscript -e 'rmarkdown::render("test.Rmd")'
edd@rob:/tmp$ Rscript -e 'rmarkdown::render("test.Rmd")'   # twice for references

不需要额外的非发行版 hack。

根据您的 post 下的评论,您指出您最初安装 TinyTeX 是通过以 sudo R 启动 R(然后在 R 中,tinytex::install_tinytex())。因此,当您 运行 R 作为非 root 用户(在您的情况下为 rstudio )之后,安装目录 /home/rstudio/.TinyTeX 将不可写,这意味着 tinytex 将无法为您自动安装缺少的 LaTeX 包(除非您更改 .TinyTeX 目录的所有权,这会使事情变得更加复杂)。

解决方法是运行tinytex::install_tinytex()在一个不是sudo启动的R进程中(例如,运行宁tinytex::install_tinytex()在R RStudio 中的控制台就可以了。