在 2021/04/18 更新 miktex 之后,我意识到在 TeX 内部使用 write18-calls 时行为发生了变化。
在我的一个源文件中,我有以下行
\immediate\write18{ skizze.bat 1 mp }
并使用新安装的可执行文件
pdfTeX,版本 3.141592653-2.6-1.40.22(MiKTeX 21.3)(预加载格式=pdflatex 2021.4.20)
我收到错误消息(在控制台上)
认为“skizze.bat”是错误书写或无法创建链接。
在 TeX-logfile 中,可以读取
runsystem(skizze.bat 1 mp)...已执行。
这表明 write18 已启用。
批处理文件“skizze.bat”位于“d:\batch”,此目录是我的(全局)路径的一部分。显然,在新安装中,write18 命令不知道此系统路径。通过一个最小示例,我发现在 write18 调用的 shell 中只有
路径=d:\TeX\MiKTeX2.9\miktex\bin\x64
但是我的旧可执行文件
pdfTeX,版本 3.14159265-2.6-1.40.21(MiKTeX 2.9.7380 64 位)(预加载格式=pdflatex 2020.4.18)
一切顺利。
感谢 Norbert Klingen 的帮助
答案1
我遇到了一个非常类似的问题,MiKTeX 似乎覆盖了我的路径变量。这导致任何需要--shell-escape
或write18
功能的软件包都失败。我发现问题出在我使用的clink v0.4.9它被设置为在 shell 的每个实例中自动运行。
这仅适用于 Windows。(在原始问题和错误报告,原帖作者没有提到他们使用的是什么操作系统。我从他们的 Path 变量推测是 Windows)。
解决方案 1:卸载 Clink/从 Autorun 注册表项中删除任何内容
卸载 Clink
打开命令提示符,输入clink autorun show
。我的输出是
Current AutoRun values
Current user:
native : "C:\Program Files (x86)\clink\0.4.9\clink.bat" inject --autorun --profile ~\clink
wow64 : "C:\Program Files (x86)\clink\0.4.9\clink.bat" inject --autorun --profile ~\clink
All users:
native : <unset>
wow64 : <unset>
现在运行clink autorun uninstall
。你应该看到
Current AutoRun values
Current user:
native : <unset>
wow64 : <unset>
All users:
native : <unset>
wow64 : <unset>
Clink's autorun entry has been removed (for current user).
从注册表中手动删除
打开注册表编辑器(Windows 键 + R,输入 regedit,按回车键),然后在顶部的框中复制并粘贴HKCU\SOFTWARE\Microsoft\Command Processor
。在右侧窗格中,如果有标题为“Autorun”的条目,请双击它,在“值数据”下添加框,然后单击“确定”。对 重复此过程HKLM\Software\Microsoft\Command Processor
。如果没有“Autorun”条目,请跳过它。
解决方案2:安装新版本的clink
Clink v0.4.9 于 2017 年 12 月 20 日发布,因此它已经过时了(在撰写本文时)。该项目有一个分支正在维护中。请参阅https://github.com/chrisant996/clink。通过转到“开始菜单”->“添加或删除程序”卸载旧版本。导航到 Clink v0.4.9 并单击卸载。然后转到维护的 fork 的发布页面下载并安装新版本。
测试以确保一切正常
test.tex
创建一个包含以下内容的文件名。
\documentclass{article}
\begin{document}
\makeatletter
\immediate\write18{echo \@percentchar PATH\@percentchar > tmp.txt}
\makeatother
\end{document}
在命令提示符中运行,在刚刚创建的文件的同一文件夹中打开,然后运行pdflatex --shell-escape test.tex
。打开 tmp.txt,它现在应该具有正确的 PATH 变量。