Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

Windows 上 TinyTeX 安装路径即将发生变化

Posted on 2023-11-18

标志.png

从大约一个月前开始,我一直收到 TinyTeX 用户的错误报告,说“ TinyTeX\bin\windows\runscript.tlu:864: no appropriate script or program found: fmtutil ”或“ I can't find the format file `pdflatex.fmt'! ”,我不明白。

在过去的几天里,我挠头,撞墙,做了一些研究,在邮件列表中询问了 R 和 LaTeX 专家,再次提醒“ [[替代 HTML 版本已删除]] ”(当然,并道歉) ,翻出一台旧的 Windows 笔记本电脑,自豪地用我人生中第一次真实的中文名字(而不是使用拼音)创建一个新的用户帐户,经历了反复试验,还了解了 Windows 批处理脚本的各种奇怪之处作为 Stack Overflow 的良药,召集母校所有中国学生测试自己的 Windows 机器和系里的 Windows 服务器,冥想三秒钟生命的意义。最后,我很高兴地宣布我已经找到了一个修复程序并将其应用于tinytex (R 包)的开发版本。

太长了;修复

如果您在将 R Markdown 或 Quarto 或 LaTeX 文档渲染为 PDF 时遇到上述错误,您可以安装tinytex的开发版本:

 install.packages('tinytex', repos='https://rstudio.r-universe.dev')

请记住安装后重新启动R。然后确保packageVersion('tinytex') >= '0.48.4') 。

问题

如果您的 Windows 用户名不包含空格或非 ASCII 字符,则此问题不会影响您。

 Sys.getenv('APPDATA') xfun::is_ascii(.Last.value) && !grepl(' ', .Last.value)

虽然我已经使用 LaTeX 近二十年了,但我第一次(从 Akira Kakuto 那里)了解到,当 TeX Live 的安装路径包含非 ASCII 字符时,TeX Live 无法在 Windows 上运行。默认情况下,TinyTeX 安装到环境变量APPDATA定义的路径,其格式为C:\Users\username\AppData\Roaming 。问题来自于该路径中的username ,该用户名可能包含多字节字符,并导致 TeX Live 失败并出现大量错误消息,如下所示:

 ! warning: kpathsea: configuration file texmf.cnf not found in these directories: .... ! ...s\username\AppData\Roaming\TinyTeX\bin\windows\runscript.tlu:941: ...s\username\AppData\Roaming\TinyTeX\bin\windows\runscript.tlu:864: no appropriate script or program found: fmtutil ! Running the command C:\Users\username\AppData\Roaming\TinyTeX\bin\windows\fmtutil-user.exe ! kpathsea: Running mktexfmt pdflatex.fmt ! The command name is C:\Users\username\AppData\Roaming\TinyTeX\bin\windows\mktexfmt

理论上, username包含空格应该没问题,因为空格是 ASCII 字符。然而,我收到的报告称空间也可能带来麻烦。我确实知道为什么(最近在 R 基础上修复的错误是否相关?)。

改变

在当前开发版本的tinytex中,当您的APPDATA路径包含空格或非 ASCII 字符时:

  • 如果您第一次在计算机上运行tinytex::install_tinytex()来安装TinyTeX,它将把TinyTeX安装到环境变量ProgramData定义的路径,通常是C:\ProgramData 。该路径没有空格或非 ASCII 字符,但请注意,它默认是隐藏的(这是无害的)。另外,该文件夹是系统中所有用户共享的。如果您有多个用户,这可能是一个问题。例如,其他用户可以更改或覆盖您的安装。如果这是一个问题,您可以通过install_tinytex()的dir参数指定不同的路径。请记住,此路径也不应包含特殊字符。

  • 如果 TinyTeX 已经安装到APPDATA ,您将收到一条警告消息,告诉您如何将其移动到ProgramData (如果您愿意,您也可以将其移动到其他位置 – 只需为下面的to参数指定不同的路径)。移动 TinyTeX 后,您可能需要重新启动 R 甚至系统。

 tinytex::copy_tinytex(to = Sys.getenv('ProgramData'), move = TRUE)

安装脚本install-bin-windows.bat也进行了相应更新。

一个潜在的缺陷

上述修复基于ProgramData可写的假设,根据我向一些学生要求的各种测试,这似乎是正确的。如果不是这样,您必须在tinytex::install_tinytex()中指定您自己的安装路径,或者如果您使用 Windows 批处理文件,则可以设置环境变量TINYTEX_DIR (默认为APPDATA或ProgramData )。

四开本用户

我还没有检查Quarto 是否直接受到这个问题的影响,但我有理由相信,如果是的话,移动 TinyTeX 应该可以修复它。唯一的问题是,对于非 R 用户,没有像调用 R 函数这样的自动解决方案,您必须手动移动它(如果您使用 XeLaTeX,则运行tlmgr path add以及tlmgr postaction install script xetex )。

我计划在不久的将来发布 CRAN 版本,因为这个问题已经影响了多个用户。如果Windows 用户能够帮助我测试tinytex当前的开发版本,我将不胜感激。如果您遇到任何问题,请告诉我。谢谢!

原文: https://yihui.org/en/2023/11/tinytex-path/

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme