
Ich schreibe ein Dokument, das viele Diagramme mit ziemlich vielen Datenpunkten enthält. Diese Diagramme sind als .pdf
Vektorbilder gespeichert und ihre Darstellung nimmt viel Zeit in Anspruch. Jedes Mal, wenn ich auf eine Seite mit einem dieser Diagramme stoße, friert mein Editor für eine ganze Minute ein.
Ich weiß, dass GraphicsX eine Entwurfsoption hat, aber diese verbirgt die Bilder, was keine sehr gute Lösung ist, da ich die Bilder dann nicht nur anhand des Dateinamens unterscheiden kann. Dies sind Ergebnisse experimenteller Durchläufe mit ziemlich generischen Namen.
Gibt es vielleicht eine Möglichkeit, die Bilder .png
im Entwurfsmodus zu rastern (z. B. in ) und das Original im endgültigen Modus zu verwenden ? Ich weiß, dass ich ImageMagick oder andere externe Tools zur Konvertierung verwenden könnte, aber das scheint eine Menge zusätzlicher Arbeit zu sein, da ich jedes Bild zu einer Makefile hinzufügen und für den Entwurf und die endgültige Version .pdf
duplizieren müsste .\includegraphics
Es gibt einige Parameter von graphicsx wie type
oder command
, die in der Dokumentation nicht erklärt werden. Könnte dies vielleicht mit einem dieser Parameter erreicht werden? Könnte ich vielleicht hooken \includegraphics
und einen externen Befehl aufrufen? Ich würde es schaffen, den Befehl zu schreiben, aber ich habe keine Ahnung, wie Hooks in LaTeX funktionieren.
Ansonsten bin ich mir durchaus darüber im Klaren, dass Rastergrafiken qualitativ schlechter sind als Vektorgrafiken. Ich werde in der Endversion Vektorgrafiken verwenden. Diese dienen lediglich der schnellen Entwurfsvorschau.
Antwort1
Der Suchpfad für die Bilder kann geändert werden:
\graphicspath
mit einem Verzeichnis für PDF-Bilder oder deren Gegenstücke, die PNG-Bilder.\DeclareGraphicsExtensions
kann verwendet werden, um die Reihenfolge zu ändern, welche Erweiterung zuerst verwendet wird, wenn die Bilddatei ohne Erweiterung angegeben wurde. Das Paketgrfext
bietet eine Schnittstelle zum Ändern der Einstellung.
Das Paket epstopdf
kann verwendet werden, um die Konvertierung von PDF nach PNG automatisch aufzurufen, wenn pdfTeX oder luaTeX verwendet wird und die Shell-Escape-Funktion aktiviert ist.
Beispiel:
Wenn \mydraft
als Y
( \let\mydraft=Y
) definiert ist, wird die Regel für die Erweiterung überschrieben, um eine Konvertierung über ImageMagicks .pdf
vorzunehmen . Andernfalls wird die Erweiterung bevorzugt..png
convert
.pdf
\documentclass{article}
\usepackage{graphicx}
\usepackage{grfext}
\ifx\mydraft Y
\usepackage{epstopdf-base}
\epstopdfDeclareGraphicsRule{.pdf}{png}{.png}{%
convert #1 \OutputFile
}
\epstopdfDeclareGraphicsRule{.PDF}{png}{.png}{%
convert #1 \OutputFile
}
\else
\PrependGraphicsExtension*{.pdf}
\fi
\begin{document}
\includegraphics{image}
\end{document}
Der spezielle Entwurfsmodus wird durch aktiviert \let\mydraft=Y
, das auch auf der Kommandozeile angegeben werden kann, zB:
pdflatex --shell-escape "\let\mydraft=Y\input{mydocument}"
Dann image.pdf
wird konvertiert und als eingefügt image-pdf-converted-to.png
.
Ansonsten image.pdf
ist alles dabei, auch wenns image.png
rumliegt.
Schlüssel für\includegraphics
Die Konvertierungsfunktion kann auch \includegraphics
durch die Verwendung eines Schlüssels auf beschränkt werden pdfpng
. Der Schlüsselcode ändert die Grafikregel für .pdf
Dateien, um sie in PNG zu konvertieren. Wenn \mydraft
nicht Y
, dann ist der Schlüssel ein No-Op.
\documentclass{article}
\usepackage{graphicx}
\usepackage{grfext}
\ifx\mydraft Y
\usepackage{epstopdf-base}
\csname define@key\endcsname{Gin}{pdfpng}[]{%
\epstopdfDeclareGraphicsRule{.pdf}{png}{.png}{%
convert ##1 \OutputFile
}%
}
\else
\PrependGraphicsExtensions*{.pdf}
\csname define@key\endcsname{Gin}{pdfpng}[]{}
\fi
\begin{document}
\includegraphics{image1}
\includegraphics[pdfpng]{image2-converted-to-png-when-mydraft}
\includegraphics{image3}
\end{document}
( \define@key
kann anstelle von verwendet werden \csname define@key\endcsname
, wenn \makeatletter
aktiv ist.)