lualatex 错误混淆了 latexmk 依赖项跟踪

lualatex 错误混淆了 latexmk 依赖项跟踪

所描述的问题已被确认为一个错误,luatex有望在 TeXLive 2018 中得到解决。此外, latexmk它本身已在 4.55d 版本中扩展以处理此问题。

对于大量的讲座幻灯片,我正在根据选项将我的自定义 Makefile 重构为更精简的解决latexmk方案-use-make

虽然这在pdflatexas 引擎中运行良好,但它会导致大量make调用lualatex实际上是 texmf 树一部分的目标。最小示例:

% slides.tex
\RequirePackage{luatex85} 
\documentclass{beamer}

\begin{document}
  \begin{frame}{A Frame}
    Some content
  \end{frame}

\end{document}

如果我编译它

latexmk -lualatex -norc -use-make slides.tex

-norc确保没有传递任何隐藏选项latexmk

编译成功,但是我得到以下信息:

Latexmk: This is Latexmk, John Collins, 19 Jan. 2017, version: 4.52c.
Latexmk: 'lualatex': source file 'beamericonarticle.20.pdf' doesn't exist. I'll try making it...
------------
Running 'make "beamericonarticle.20.pdf"'
------------
make: *** No rule to make target `beamericonarticle.20.pdf'.  Stop.
Latexmk: 'lualatex': source file 'beamericonarticle.pdf' doesn't exist. I'll try making it...
------------
Running 'make "beamericonarticle.pdf"'
------------
make: *** No rule to make target `beamericonarticle.pdf'.  Stop.
<... and so on ..,>
Latexmk: All targets (slides.pdf) are up-to-date

我认为罪魁祸首来自这样一个事实,即它的行为与用于输入依赖性跟踪的选项lualatex略有不同(据我所知)。在该版本中,我们在生成的文件中为每个包含的图像找到了一行额外的行:pdflatex-recorderlatexmklualatexslides.fls

INPUT /opt/local/share/texmf-texlive/tex/latex/beamer/art/beamericonarticle.pdf
INPUT beamericonarticle.pdf      <-- not generated by pdflatex!
INPUT /opt/local/share/texmf-texlive/tex/latex/beamer/art/beamericonarticle.20.pdf
INPUT beamericonarticle.20.pdf   <-- not generated by pdflatex!

因此显然,latexmk不知道如何利用这些“额外”的输入,因此需要make构建它们。

使用版本:

This is LuaTeX, Version 1.0.4 (TeX Live 2017/MacPorts 2017_2)

Latexmk, John Collins, 19 Jan. 2017. Version 4.52c

问题:

  • 这是一个错误还是一个功能lualatex
  • 或者也许图形驱动程序的 lua 特定部分应该受到指责?
  • 可能的解决方法?

答案1

对于那些有足够冒险精神去摆弄(有惊人详尽文档记录的!)latexmk源代码的人,我有一个快速的解决方法:

应为以下几行插入parse_fls函数定义中( sub parse_fls):

4588         elsif (/^\s*INPUT\s+([^\/]*)$/) {
4589           # Ignore entries without any directory part
4590           # Those are additionally inserted in some versions of lualatex
4591           # see: https://tex.stackexchange.com/questions/420274
4592           next;
4593         }

请注意,行号会有所不同,具体取决于 的确切版本latexmk。它们应该插入在下列现有行:

4594         elsif (/^\s*INPUT\s+(.*)$/) {
4595             # Take precautions against aliasing of foo, ./foo and other possibilities for cwd.

相关内容