文档可以使用 pdfLaTeX、LuaLaTeX 和 XeLaTeX 进行编译,但不能使用 Latexmk 进行编译

文档可以使用 pdfLaTeX、LuaLaTeX 和 XeLaTeX 进行编译,但不能使用 Latexmk 进行编译

背景

我的电脑操作系统最近必须重新安装,因此我的 LaTeX 安装被清除了。在此之前,我的文档使用 Latexmk 编译成功。我有一个正在尝试编译的复杂文档(词汇表、目录、参考资料、代码列表等),但在我新设置的环境中编译它时遇到了麻烦。

故障排除步骤

我创建了一个新的、最小的文档,以便我可以一次添加一个包来查看导致中断的原因,但是,Latexmk 甚至无法编译这个:

\documentclass{article}
\begin{document}
    test
\end{document}

pdfLaTeX、LuaLaTeX 和 XeLaTeX 三个都可以毫无问题地编译文档,但是 Latexmk 给出了此错误:

Latexmk: Log file says output to 'out/test.pdf'
Latexmk: ===For rule 'latex', the extensions differ between the
   actual output file 'out/test.pdf',
   and the expected output 'out/test.dvi'.
   I could not accommodate the changed output extension
   (either because the configuration does not allow it
   or because there is a conflict with requested filetypes).
Failure to make 'out/test.dvi'
Collected error summary (may duplicate other messages):
  latex: failed to create output file
----------------------
This message may duplicate earlier message.
Latexmk: Failure in processing file 'test.tex':
   Could not handle change of output extension
----------------------
Latexmk: Examining 'out/test.log'
=== TeX engine is 'pdfTeX'
Latexmk: Errors, in force_mode: so I tried finishing targets

Process finished with exit code 12

采取进一步措施

  • 我此时假设这可能是文件所有权问题,但我已经确认我的用户帐户拥有该out目录的所有权,因此应该可由 Latexmk 写入;并且如果目录不存在,它确实会创建并填充目录
  • 我尝试使用以下命令从命令行而不是从 IDE 运行 Latexmk:
    latexmk -f --shell-escape --MSWinBackSlash --interaction=nonstopmode --output-directory=out
    
    这适用于前面提到的最小文件。
  • 我确认在 TeXiFy IDEA 运行配置中将“PDF”设置为输出格式选项

我的平台

我利用以下内容编写 LaTeX 文档:

  • 微软 Windows 10
  • JetBrains IntelliJ IDEA(LaTeX 文档与 Java 源代码共存)
  • TeXiFy IDEA(用于处理 LaTeX 源文件的 IntelliJ IDEA 插件)
  • MikTeX

答案1

问题可能出在 TeXiFy IDEA 插件上

在测试了“默认”、“PDF”和“DVI”这几个“输出格式”选项,并测试了带有和不带有-pdf自定义编译器参数的选项后,我确定 TeXiFy IDEA 插件-output-format=pdf在设置 PDF 选项时插入命令行选项,-output-format=dvi在设置 DVI 选项时插入命令行选项,并-output-format在设置默认选项时完全删除自定义编译器参数。但是,手动添加-pdf无论输出格式字段的设置如何,手动添加自定义编译器参数都可以解决问题。

阅读 Latexmk 的文档后,我发现没有-output-format该程序没有选项;相反,这是 pdfLaTeX 的一个选项。因此,问题要么出在 TeXiFy IDEA 插件的当前版本,要么出在 Latexmk 的当前版本。我怀疑是前者,因为 Latexmk 应该将参数传递给底层编译器。我已经在 TeXiFy IDEA 插件的 Github 存储库中创建了一个错误报告,希望这个问题能在未来版本中得到解决。在此之前,解决方法是手动添加-pdf到自定义编译器参数字段。

相关内容