Vektor-zu-Raster-Grafiken für den Entwurfsmodus

Vektor-zu-Raster-Grafiken für den Entwurfsmodus

Ich schreibe ein Dokument, das viele Diagramme mit ziemlich vielen Datenpunkten enthält. Diese Diagramme sind als .pdfVektorbilder 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 .pngim 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 .pdfduplizieren müsste .\includegraphics

Es gibt einige Parameter von graphicsx wie typeoder command, die in der Dokumentation nicht erklärt werden. Könnte dies vielleicht mit einem dieser Parameter erreicht werden? Könnte ich vielleicht hooken \includegraphicsund 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:

  • \graphicspathmit einem Verzeichnis für PDF-Bilder oder deren Gegenstücke, die PNG-Bilder.
  • \DeclareGraphicsExtensionskann verwendet werden, um die Reihenfolge zu ändern, welche Erweiterung zuerst verwendet wird, wenn die Bilddatei ohne Erweiterung angegeben wurde. Das Paket grfextbietet eine Schnittstelle zum Ändern der Einstellung.

Das Paket epstopdfkann 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 \mydraftals Y( \let\mydraft=Y) definiert ist, wird die Regel für die Erweiterung überschrieben, um eine Konvertierung über ImageMagicks .pdfvorzunehmen . Andernfalls wird die Erweiterung bevorzugt..pngconvert.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.pdfwird konvertiert und als eingefügt image-pdf-converted-to.png.

Ansonsten image.pdfist alles dabei, auch wenns image.pngrumliegt.

Schlüssel für\includegraphics

Die Konvertierungsfunktion kann auch \includegraphicsdurch die Verwendung eines Schlüssels auf beschränkt werden pdfpng. Der Schlüsselcode ändert die Grafikregel für .pdfDateien, um sie in PNG zu konvertieren. Wenn \mydraftnicht 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@keykann anstelle von verwendet werden \csname define@key\endcsname, wenn \makeatletteraktiv ist.)

verwandte Informationen