I recently found out about Paul Murrell's excellent xdvir package that renders LaTeX in a graphics device. I thought this would be useful and put a wrapper around the latexGrob() function into rgl.

Testing it on Github workflows worked fine on Ubuntu and MacOS runners, but failed on Windows. Here's a typical error message:

This is XeTeX, Version 3.141592653-2.6-0.999997 (TeX Live 2025) (preloaded 
format=xelatex)
   restricted \write18 enabled.
  entering extended mode
  Error: LaTeX failed to compile 
C:\Users\RUNNER~1\AppData\Local\Temp\Rtmp6TD7wY/working_dir\RtmpmitpVG\file130053037941.tex.
 See https://yihui.org/tinytex/r/#debugging for debugging tips.
  Execution halted

(taken from https://github.com/dmurdoch/rgl/actions/runs/16861206133/job/47761646553).

After a long series of experiments, I think I found the cause: xdvir creates a file in tempdir(), and passes it to lualatex or xelatex (along with various command line options). If that file contains the "RUNNER~1" directory, which is the 8.3 form of "runneradmin", the compile fails.

I have a workaround for this: I setwd(tempdir()) and use the basename of the temp file.

Another workaround that I tried doesn't work: normalizePath(tempfile()) generally does nothing, because normalizePath() won't modify a path that doesn't exist. If I write to the tempfile() and then normalize the name, that does work.

I think there are one or more bugs here that should be fixed. I'm just not sure what they are.

Is it a bug in TeXLive 2025, that those programs won't accept short names? Or has Windows deprecated them, and R shouldn't be producing them? Is it a bug that tempfile() doesn't produce a normalized path?

Duncan Murdoch

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to