Animate animiert nicht mit LuaLaTeX

Animate animiert nicht mit LuaLaTeX

Ich habe folgenden Code:

\documentclass{article}
\usepackage{animate}
\listfiles
\begin{document}
\animategraphics[palindrome,autoplay,width=\textwidth,controls]{5}{Testsaves}{0}{1}
\end{document}

Es werden zwei Bilder (Testsaves0 und Testsaves1) im selben Ordner benötigt. Wenn ich es mit pdflatex kompiliere, funktioniert alles und es wird beim Öffnen in Adobe Acrobat animiert. Die Schaltflächen funktionieren auch.

Wenn ich denselben Code mit LuaLaTeX kompiliere, wird nur das erste Bild in das PDF eingefügt und es passiert nichts.

Aus den Protokolldateien:

pdflatex:

File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
)) <./Testsaves0.png> <./Testsaves1.png>
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 6.

LuaLaTeX:

File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
))<./Testsaves0.png>
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 6.

Das System ist ein Windows 7-PC mit TeXLive 2014, das vollständig auf den aktuellen Stand gebracht wurde. Ich glaube, es hat vorher funktioniert, aber ich bin mir nicht 100 % sicher. Ich habe versucht, das Animate-Paket auf meine früheste gesicherte Revision (35387) zurückzusetzen, aber das hat nichts geändert.

Dateiliste:

 article.cls    2014/09/29 v1.4h Standard LaTeX document class
  size10.clo    2014/09/29 v1.4h Standard LaTeX file (size option)
 animate.sty    2014/12/04 PDF animations from files and inline graphics
  keyval.sty    2014/10/28 v1.15 key=value parser (DPC)
  ifthen.sty    2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
   ifpdf.sty    2011/01/30 v2.3 Provides the ifpdf switch (HO)
atbegshi.sty    2011/10/05 v1.16 At begin shipout hook (HO)
infwarerr.sty    2010/04/08 v1.3 Providing info/warning/error messages (HO)
 ltxcmds.sty    2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
ifluatex.sty    2010/03/01 v1.3 Provides the ifluatex switch (HO)
 ifdraft.sty    2008/08/11 v1.3 Detect class options draft and final (HO)
    calc.sty    2014/10/28 v4.3 Infix arithmetic (KKT,FJ)
atenddvi.sty    2007/04/17 v1.1 At end DVI hook (HO)
zref-abspage.sty    2012/04/04 v2.24 Module abspage for zref (HO)
zref-base.sty    2012/04/04 v2.24 Module base for zref (HO)
kvsetkeys.sty    2012/04/25 v1.16 Key value parser (HO)
etexcmds.sty    2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
kvdefinekeys.sty    2011/04/07 v1.3 Define keys (HO)
pdftexcmds.sty    2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO)
luatex-loader.sty    2010/03/09 v0.4 Lua module loader (HO)
 auxhook.sty    2011/03/04 v1.3 Hooks for auxiliary files (HO)
zref-lastpage.sty    2012/04/04 v2.24 Module lastpage for zref (HO)
atveryend.sty    2011/06/30 v1.8 Hooks at the very end of document (HO)
  animfp.sty    2009/07/23 fixed point addition for animate.sty
graphics.sty    2014/10/28 v1.0p Standard LaTeX Graphics (DPC,SPQR)
    trig.sty    1999/03/16 v1.09 sin cos tan (DPC)
graphics.cfg    2010/04/23 v1.9 graphics configuration of TeX Live
  pdftex.def    2011/05/27 v0.06d Graphics/color for pdfTeX
supp-pdf.mkii
epstopdf-base.sty    2010/02/09 v2.5 Base part for package epstopdf
  grfext.sty    2010/08/19 v1.1 Manage graphics extensions (HO)
kvoptions.sty    2011/06/30 v3.11 Key value format for package options (HO)
epstopdf-sys.cfg    2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
 ***********

Antwort1

animate prüft die Grafiken auf Identität, um zu vermeiden, dass dieselbe Datei zweimal eingebunden wird. Dieser Test schlägt für lualatex fehl: Die luatex-Implementierung in pdftexcmdsscheint \pdf@filemdfivesumfehlerhaft zu sein. Ich erhalte mit lualatex für die beiden Grafiken die gleichen Werte, aber unterschiedliche Werte, wenn ich mit pdflatex kompiliere.

Sie können das Problem umgehen, indem Sie Animate zwingen, nur die Dateinamen zu prüfen. Ich schlage jedoch vor, Heiko Oberdiek einen Fehlerbericht zu senden.

\documentclass{article}
\usepackage{animate}
\makeatletter\def\@anim@pdfmdfivesum#1{#1}\makeatother

\begin{document}
\makeatletter 
\pdf@filemdfivesum{gans1.png}  

\pdf@filemdfivesum{gans2.png}
\makeatother

\animategraphics[palindrome,autoplay,width=\textwidth,controls]{5}{gans}{1}{2}
\end{document}

Antwort2

animateverwendet \pdf@filemdfivesumaus dem pdftexcmdsPaket, um das mehrfache Einbinden derselben Datei zu vermeiden. Es berechnet die MD5-Prüfsumme der einzubindenden Dateien.

Der gemeldete Fehler tritt nur unter Windows auf.

Der Grund dafür ist, dass Windows zwischen dem Öffnen von Dateien im Text- und im Binärmodus unterscheidet. Das C fopen()ist auf Lua abgebildet io.open()und verwendet dieselbe Argumentenliste. Das Flag b(Binärmodus) sollte dem io.open()Aufruf hinzugefügt werden, um das korrekte Lesen von Dateien auf allen Plattformen sicherzustellen.

Dieser Patch behebt das Problem:

--- texmf-dist/scripts/oberdiek/pdftexcmds.lua.orig
+++ texmf-dist/scripts/oberdiek/pdftexcmds.lua
@@ -250,7 +250,7 @@
       if not offset then
         offset = 0
       end
-      local filehandle = io.open(foundfile, "r")
+      local filehandle = io.open(foundfile, "rb")
       if filehandle then
         if offset > 0 then
           filehandle:seek("set", offset)
@@ -270,7 +270,7 @@
 function filemdfivesum(filename)
   local foundfile = kpse.find_file(filename, "tex", true)
   if foundfile then
-    local filehandle = io.open(foundfile, "r")
+    local filehandle = io.open(foundfile, "rb")
     if filehandle then
       local contents = filehandle:read("*a")
       escapehex(md5.sum(contents))

verwandte Informationen