Der Einsatz einer Zwischendatei '.ps' hilft

Der Einsatz einer Zwischendatei '.ps' hilft

Ich verwende Inkscape, um Grafiken zu erstellen, die ich dann in PDFs exportiere, um sie in LaTeX-Dokumente einzubinden (mit \includegraphics und unter Verwendung von pdflatex). Ich habe nicht bemerkt, dass etwas nicht stimmt, bis mir jemand sagte, dass meine Abbildungen unter Mac OS X nicht richtig angezeigt werden. Einfache Grafikteile, z. B. Kästen oder Kreise, deren Opazitätseinstellung unter 100 % liegt, werden überhaupt nicht angezeigt.

Das Problem scheint bei pdflatex zu liegen, da das exportierte PDF aus Inkscape allein auf einem Mac einwandfrei angezeigt wird. Da ich Linux und manchmal Windows verwende, ist mir nie aufgefallen, dass es überhaupt ein Problem gibt!

Nachdem ich versucht hatte, herauszufinden, was das Problem verursachen könnte, stolperte ich über

\includegraphics PDF, Farbproblem Und Inkscape → PDF → Includegraphics → XeLaTeX → Farben geändert

Dies löste mein Problem jedoch nicht.

Eine ähnliche Frage wurde gestellt inFarbverlauf von undurchsichtig zu transparent geht in eingebetteter PDF-Abbildung verlorenaber jetzt wurde wirklich eine Antwort gegeben.

Ich habe herausgefunden, dass die Konvertierung des exportierten PDF in ein PS und dann zurück in ein PDF das Problem löst, aber die Grafikqualität ist danach ziemlich schlecht.

Was habe ich übersehen? Danke für jeden Vorschlag.

Unten sehen Sie ein minimal funktionierendes Beispiel:

\documentclass[a4paper]{article}
\usepackage[pdftex]{color,graphicx}

\begin{document}

\begin{figure}[htb]
 \begin{center}
  \includegraphics[width=\columnwidth]{test_diagram}
  \caption{Block diagram created with Inkscape 0.48}
 \end{center}
\end{figure}

\end{document}

Die beigefügte Grafik kann hier heruntergeladen werden:https://www.dropbox.com/s/mrtj0c3u0ng6a39/test_diagram.pdf

Inkscape: 0.48.3.1 r9886
pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian)

Antwort1

Ich habe dieses Problem auch gesehen, wenn Inkscape-Bilder eingebettet pdflatexund dann in einem PDFKit-basierten Viewer angezeigt werden. (PDFKit ist die integrierte PDF-Rendering-Engine von OS X und wird von Skim, Preview und vielen anderen Programmen verwendet.)

Offenbar verfügt Inkscape über eine „ungewöhnliche“ Methode zum Festlegen von Transparenzen, die die Einbettung durch nicht überstehen pdflatex.

Der einzige Workaround, der bei mir zuverlässig funktioniert hat, ist das „Bereinigen“ des PDFs durch Reduzieren der Transparenzen. Ich verwende hierfür Ghostscript (über das ps2pdfwrSkript) mit dem Schalter:dHaveTransparencies=false

ps2pdfwr -dCompatibilityLevel=1.4 -dHaveTransparency=false test_diagram.pdf sanitized.pdf

Der Nachteil ist, dass das Bild dadurch gerastert wird. Die Standardauflösung hierfür beträgt 720 dpi, was für die meisten Anwendungsfälle ausreichend sein sollte. Wenn Sie jedoch eine bessere (oder niedrigere) Qualität benötigen, können Sie auch die Auflösung angeben:

ps2pdfwr -dCompatibilityLevel=1.4 -r1200 -dHaveTransparency=false test_diagram.pdf sanitized.pdf

Bei 1200 dpi vergrößert sich Ihr ~5 KiB großes Bild in der gerasterten Version auf ~78 KiB. Allerdings sind PDF-Transparenzen eine Quelle vonvieleseltsame Probleme, wenn es um Ausgabegeräte geht – nicht nur, wenn sie von Inkscape erzeugt werden. Siehe zum Beispiel: Durch die Verwendung von Opazität in TikZ wird die gesamte Seite beim Drucken „gröber“. Daher betrachte ich dies als den zu zahlenden Preis.

Antwort2

Hier scheint es zu funktionieren, die Alpha-Deckkraft statt der allgemeinen Deckkraft zu optimieren.

http://www.inkscapeforum.com/viewtopic.php?f=28&t=15739&p=65180#p65180

Ich verwende pdftex und Inkscape 0.91

Antwort3

Ich hatte dasselbe Problem mit Inkscape/Mac OS/LaTeX. Ich konnte es lösen, indem ich nur die problematischen Teile des Bildes rasterte und den Rest vektorisiert ließ. Dazu öffnete ich die SVG-Datei, wählte die betreffenden Objekte in Inkscape aus, wählte „Bearbeiten“ -->„Bitmap-Kopie erstellen“ und speicherte sie anschließend als PDF. Mit Inkscape 0.91 konnte ich bei diesem Problem nicht weiterkommen, aber mit Inkscape 0.48 funktionierte es.

Antwort4

Der Einsatz einer Zwischendatei '.ps' hilft

Wie RalfB habe ich festgestellt, dass die Konvertierung zuerst in ein PS und dann in ein PDF Latex zufriedener macht. Die Verwendung dieses Skripts hat geholfen:

inkscape foo.svg --export-ps=foo.ps
pstopdf foo.ps -o foo.pdf

Dann kompilieren Sie Ihre Latex-Datei einfach wie gewohnt.

Es muss sein, dass die Konvertierung von Inkscape in „.pdf“ im Vergleich zur Konvertierung in „.ps“, wie Daniel erwähnte, etwas durcheinander bringt.

Ergebnisse

Hier sind Vorher-/Nachher-Bilder, die zeigen, dass die gewünschte Transparenz durch das gesamte PS hindurch vorhanden ist:

Vorher (svg -> pdf)

Vor Zwischen-PS

Nach (svg -> ps -> pdf)

Nach Zwischen-PS

verwandte Informationen