在minted 和 LuaLaTeX 的问题问题下方的评论中有讨论,还有一个答案证实了这个问题。由于我也能证实这个问题,并且还有其他信息可以分享,所以继续提问似乎比延长评论或提供非答案更好。
我在两台机器上使用了另一个 MWE,但它与原始问题中的 mbert 的 MWE 相当:
- 台式机 CPU i9 32GB RAM Windows 11 V22H2 TeXStudio 4.4.1 MikTeX 2.9 更新 Python 3.11 Pygments 2.14
- 笔记本电脑 CPU AMD Athlon II 8GB RAM Xubuntu 22.04 TeXStudio 4.0.1 MikTeX 2.9 更新 Python 3.11 Pygments 2.14
两台机器上都使用了 MWE:
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}
\end{document}
我得到了以下结果:
- 使用 PDFLatex 进行编译得到了所需的结果。
minted
环境中的代码设置正确。创建的附加目录minted
包含两个文件:一个具有长字符串名称,另一个名为default.pygstyle
约 7kB。 - 使用 XeXeTeX 进行编译后,输出结果中所有空格和制表符均显示为 ,
^^I
且代码没有颜色。在包^^I
中定义fancyvrb
。 两台机器上都出现了这种情况。 - 在笔记本电脑(Xubuntu)上使用 LuaLaTeX 进行编译成功,但是不是在桌面上(Windows)。该目录是在
minted
Windows 下创建的,但只包含 0kB 的文件default.pygstyle
。因此是一个空目录。 - 使用 PDFLaTeX 进行编译,然后使用 LuaLaTeX 进行编译,仍然会出现!Package minted 错误:您必须
pygmentize
安装才能使用此包错误,但确实给出了正确的输出。第二次编译使用了第一次编译创建的目录。
Xubuntu 版本和 Windows 版本之间的日志文件的区别在于:
runsystem(for ^%i in (pygmentize.exe pygmentize.bat pygmentize.cmd) do set > min
ted_test.aex <nul: /p x=^%~$PATH:i>> minted_test.aex)...failed
runsystem(del minted_test.aex)...executed
在 Windows 下,shell 转义的结果为失败的,而在 Xubuntu 下结果是执行. 两台机器使用相同的shellesc
:
Package: shellesc 2019/11/08 v1.0c unified shell escape interface for LaTeX
Package shellesc Info: Unrestricted shell escape enabled on input line 75.
在我看来,在 Windows 机器上-shell-escape
使用 LuaLaTeX 时似乎存在某种模糊的问题。shellesc
希望有更了解 Windows 命令行内部工作原理的人shellesc
可以阐明这个问题。
笔记:当然,我可以.tex
在笔记本电脑上编译文件并喝一杯或多杯咖啡,但如果桌面上的问题得到解决,那就太好了。
附加信息 按照原始问题评论中的说明,我发现了以下问题小路编译时使用LuaLaTeX在 Windows 下:
\ShellEscape{path > path.txt}
当我使用PDFLaTeX我得到了一个完整的path
声明路径.txt——理所当然。然而当我使用LuaLaTeX 路径.txt只包含一行:PATH=C:\Open Source\MikTeX\miktex\bin\x64\
这显然是错误的。因此 LuaLaTeX 以某种方式清除了正确的 Windows 路径语句并将其替换为 MikTeX 位置。
\documentclass[11pt]{article}
\usepackage{shellesc}
\begin{document}
\ShellEscape{path > path.txt}
\end{document}
这MikTeX LuaLaTeX 文档包含以下几行选项部分:
当 LuaTeX 可执行文件启动时,它会查找 --lua 命令行选项。如果没有 --lua 选项,命令行的解释方式与传统 pdfTeX 类似。但如果存在该选项,LuaTeX 将进入与标准 MiKTeX 程序不同的命令行解析替代模式。--lua 的存在使大多数其他选项变得不可靠,因为 Lua 初始化文件可以禁用路径搜索和/或将函数挂接到各种回调中。
--lua
在我的 TeXStudio 设置中, LuaLaTeX 命令中没有开关。它只是显示:
lualatex.exe -synctex=1 -interaction=nonstopmode --shell-escape %.tex