Since about a month ago, I have been receiving error
reports from TinyTeX users
saying
“TinyTeX\bin\windows\runscript.tlu:864: no appropriate script or program found: fmtutil”
or “I can't find the format file `pdflatex.fmt'!”, which I do not
understand.
For the last few days, I scratched my head, banged against the wall, did some research, asked R and LaTeX experts in mailing lists, got reminded of “[[alternative HTML version deleted]]” again (and apologized, of course), dug out an old Windows laptop, proudly created a new user account with my authentic Chinese name for the first time of my life (instead of using Pinyin), went through trial and error, learned a variety of bizarreness of Windows batch scripts as well as the Stack Overflow cures, summoned all Chinese students in my alma mater to test their own Windows machines and the Windows servers in their department, and meditated on the meaning of life for three seconds. Finally I’m happy to announce that I have found a fix and applied it to tinytex (the R package) v0.49.
TLDR; The fix
If you have run into the above errors when rendering R Markdown or Quarto or LaTeX documents to PDF, you can install the latest version of tinytex from CRAN:
install.packages('tinytex')
Please remember to restart R after installation. Then make sure
packageVersion('tinytex') >= '0.49').
The problem
If your Windows username does not contain spaces or non-ASCII characters, this problem should not affect you.
Sys.getenv('APPDATA')
xfun::is_ascii(.Last.value) && !grepl(' ', .Last.value)
Although I have used LaTeX for nearly two decades, I have learned for the first
time (from Akira
Kakuto) that TeX
Live does not work on Windows when its installation path contains non-ASCII
characters. By default, TinyTeX is installed to the path defined by the
environment variable APPDATA, which is of the form
C:\Users\username\AppData\Roaming. The problem comes from the username in
this path, which can contain multibyte characters, and cause TeX Live to fail
with a lot of error messages like below:
! 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
In theory, username containing spaces should be fine, because a space is an
ASCII character. However, I have received reports that spaces can be
trouble, too. I do know why (is
this recent bug fix in base R
relevant?).
The change
With tinytex v0.49, when your APPDATA path contains spaces or non-ASCII
characters:
-
If you run
tinytex::install_tinytex()to install TinyTeX for the first time on a computer, it will install TinyTeX to the path defined by the environment variableProgramData, which is typicallyC:\ProgramData. This path has no spaces or non-ASCII characters, but note that it is hidden by default (which is harmless). In addition, this folder is shared by all users in the system. If you have multiple users, this could be a problem. For example, other users can change or override your installation. If this is a concern, you can specify a different path via thedirargument ofinstall_tinytex(). Remember this path should not contain special characters, either. -
If TinyTeX has already been installed to
APPDATA, you will get a warning message telling you how to move it toProgramData(you can also move it to another place if you want—just specify a different path to thetoargument below). You may have to restart R or even the system after moving TinyTeX.
tinytex::copy_tinytex(to = Sys.getenv('ProgramData'), move = TRUE)
The installation script
install-bin-windows.bat
has also been updated accordingly.
A potential flaw
The above fix is based on the assumption that ProgramData is writable, which
appears to be true according to various tests that I asked for from some
students. If it is not true, you will have to specify your own installation path
in tinytex::install_tinytex(), or if you use the Windows batch file, you can
set the environment variable TINYTEX_DIR (which defaults to APPDATA or
ProgramData).
Quarto users
The command quarto install tinytex is also
impacted by this problem
on Windows, and I have submitted a similar fix to Quarto. Before it is applied,
moving TinyTeX by yourself can also fix the problem. The only issue is that for
non-R users, there is not an automatic solution like calling an R function, and
you will have to move it manually (then run tlmgr path add and also
tlmgr postaction install script xetex if you use XeLaTeX).
If any Windows users run into any issues when installing or moving TinyTeX to
the ProgramData folder, please feel free to let me know. Thanks!
Donate
As a freelancer (currently working as a contractor) and a dad of three kids, I truly appreciate your donation to support my writing and open-source software development! Your contribution helps me cope with financial uncertainty better, so I can spend more time on producing high-quality content and software. You can make a donation through methods below.
-
Venmo:
@yihui_xie, or Zelle:xie@yihui.name -
Paypal
-
If you have a Paypal account, you can follow the link https://paypal.me/YihuiXie or find me on Paypal via my email
xie@yihui.name. Please choose the payment type as “Family and Friends” (instead of “Goods and Services”) to avoid extra fees. -
If you don’t have Paypal, you may donate through this link via your debit or credit card. Paypal will charge a fee on my side.
-
-
Other ways:
WeChat Pay (微信支付:谢益辉) Alipay (支付宝:谢益辉) 

When sending money, please be sure to add a note “gift” or “donation” if possible, so it won’t be treated as my taxable income but a genuine gift. Needless to say, donation is completely voluntary and I appreciate any amount you can give.
Please feel free to email me if you prefer a different way to give. Thank you very much!
I’ll give back a significant portion of the donations to the open-source community and charities. For the record, I received about $30,000 in total (before tax) in 2024-25, and gave back about $15,000 (after tax).