
Ich versuche, den Befehl so zu ändern, \includegraphics{}
dass der Name der eingeschlossenen Datei, einschließlich Pfad und Erweiterung, in eine Textdatei geschrieben wird. Bisher habe ich Folgendes erhalten:
\makeatletter
\newwrite\myfile
\immediate\openout\myfile=myfigures.txt
\let\TempCmd\Ginclude@graphics
\renewcommand{\Ginclude@graphics}[1]{\TempCmd{#1}\immediate\write\myfile{#1}}
\makeatother
Das einzige Problem dabei ist, dass die Dateierweiterung nicht geschrieben wird, wenn sie nicht angegeben ist. Wenn ich beispielsweise mypic.eps
in einem Unterordner namens habe figures
und schreibe \includegraphics{figures/mypic}
, myfigures.txt
wird nur dann figures/mypic
hineingeschrieben, wenn das figures/mypic.eps
geschrieben werden soll, was ich will.
Ich habe versucht, in graphicx.sty und snapshot.sty herumzustöbern, um herauszufinden, wie sie mit Dateinamenerweiterungen umgehen, und selbst etwas zusammenzuhacken, aber ich habe es noch nicht herausgefunden. Wenn ich \filename@parse{#1}
dort eingebe, bekomme ich nichts dafür \filename@ext
.
Hier ist mein minimales funktionierendes Beispiel (stellen Sie einfach ein Bild Ihrer Wahl bereit):
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newwrite\myfile
\immediate\openout\myfile=myfigures.txt
\let\TempCmd\Ginclude@graphics
\renewcommand{\Ginclude@graphics}[1]{\TempCmd{#1}\immediate\write\myfile{#1}}
\makeatother
\begin{document}
\includegraphics{mypic}
\end{document}
Antwort1
graphics
probiert bereits verschiedene Erweiterungen aus und ermittelt, je nach ausgewähltem Back-End, welche Datei Sie verwenden. Sie möchten sich also dort einklinken, kurz bevor es das Back-End aufruft, um die Datei tatsächlich einzubinden, und nicht beim Befehl der obersten Ebene.
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newwrite\myfile
\immediate\openout\myfile=myfigures.txt
\let\TempCmd\Gin@setfile
\def\Gin@setfile#1#2#3{\TempCmd{#1}{#2}{#3}\immediate\write\myfile{#3}}
\makeatother
\begin{document}
\includegraphics{mypic}
\end{document}
Produziert
mypic.png