解决方案 1:卸载 Clink/从 Autorun 注册表项中删除任何内容

解决方案 1:卸载 Clink/从 Autorun 注册表项中删除任何内容

在 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-escapewrite18功能的软件包都失败。我发现问题出在我使用的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 变量。

相关内容