Ich schreibe an einem Buch. Der Verlag möchte eine PDF-Datei haben. Ich habe alte Skizzen mit Gnuplot erzeugt. Die kann ich nicht mehr ändern, da Gnuplot auf dem neuen Rechner nicht mehr läuft. Diese Skizzen werden bei Übersetzung mit LaTeX perfekt abgebildet, bei Übersetzung mit PDF-LaTeX nicht. Da andere Skizzen direkt als PDF-Skizzen perfekt eingebunden werden, brauche ich einen Hinweis oder eine Idee, wie ich die alten Skizzen verarbeiten kann.

Typische Zeile in den ignorierten Skizzen:

Öffne in Overleaf
\put(176,68){\special{em:moveto}}
\put(1436,68){\special{em:lineto}}

Antwort bei PDF-LaTeX: Non-PDF special ignored

gefragt 02 Jan, 06:56

Norbert's gravatar image

Norbert
111
Akzeptiert: 0%

bearbeitet 02 Jan, 07:56

Ijon%20Tichy's gravatar image

Ijon Tichy
8.6k21022

Ein Thema "skizzen in pdf-tex" kann es nicht geben, weil hier jedes Wort als einzelnes Thema interpretiert wird. Es würde also in die drei Themen "skizzen", "pdf-latex" und "in" zerfallen. Ich habe daher die Themenliste geändert und dabei auch das bereits vorhandene Thema "pdflatex" statt eines neuen Themas "pdf-latex" verwendet. Darüber hinaus habe ich die Formatierung mit Markdown korrigiert, so dass die Backslashs und Zeilenumbrüche nicht mehr verschluckt werden.

(02 Jan, 07:55) Ijon Tichy

em:moveto ist eine \special-Erweiterung von emTeX, die eigentlich nur noch historische Bedeutung haben sollte. Die Verwendung war nie ganz unproblematisch und ist schon seit Jahrzehnten nicht mehr empfohlen.

pdfLaTeX und LuaLaTeX können definitiv keine emTeX-\special-Anweisungen umsetzen. Dein Wunsch, das Dokument komplett unverändert mit pdfLaTeX zu verarbeiten ist also schlicht nicht möglich.

Historie

Eberhard Mattes hat in den 1990ern eine TeX-Distribution für OS/2 und Windows 3.11 entwickelt. Damals waren Speicher und Rechenleistung noch sehr beschränkt und Vektorgrafiksysteme wie PostScript unter Windows noch sehr exotisch. PDF lag noch in weiter ferne. Eine der Erweiterungen, die Eberhard Mattes in sein emTeX bzw. in die DVI-Treiber seiner TeX-Distribution einbaute, waren \special-Anweisungen für einfache Grafikbefehle. Kennzeichen dieser \special-Anweisungen war, dass sie mit em: begannen. Nachteil der Erweiterung war, dass Dokumente, die darauf basierten, lange Zeit nicht portabel waren und beispielsweise auf einem Atari oder Mac nicht weiterverarbeitet werden konnten.

Diese Erweiterung hatte aber weitreichende Auswirkungen. So wurde auch die dvips-Version für Windows um Interpretation dieser emTeX-specials erweitert. Ebenso wurde gnuplot für Windows um ein Terminal ergänzt, das mit diesen emTeX-specials arbeitet und so einen effizienteren LaTeX-Code produziert. Diese Erweiterungen gelangten schließlich auch in die entsprechenden Programmversionen anderer Betriebssysteme.

Ab Mitte der 1990ern verbreitete sich dann jedoch nicht nur Windows 95/98 und Me mit großer Geschwindigkeit und wurde schließlich durch Windows-NT-basierte Versionen wie Windows 2000, XP, Vista und schließlich Windows 7, 8 und 10 ersetzt. Mit dem Aufkommen von Windows 95 wurde von Christian Schenk auch eine neue TeX-Distribution entwickelt. Dieses MiKTeX löste emTeX innerhalb weniger Jahre fast vollständig ab. Gleichzeitig wurden PostScript-Interpreter wie ghostscript bei LaTeX-Anwendern auch unter Windows zunehmend beliebter, da damit (insbesondere auch mit Hilfe von PSTricks) anspruchsvolle Vektorgrafiken möglich wurden. Die emTeX-specials verloren zunehmend an Bedeutung. Bei der Entwicklung von pdfTeX spielten sie daher (ebenso wie viele andere \special-basierten Grafikerweiterungen) keine Rolle mehr. Schon seit Jahrzehnten werden diese sehr alten Fahigkeiten daher nicht mehr gepflegt und nur noch von wenigen DVI-Treibern unterstützt, nicht jedoch von der direkten PDF-Ausgabe mit pdfLaTeX oder LuaLaTeX.

Lösungsmöglichkeiten

Da die Frage kein vollständiges Minimalbeispiel enthält, kann ich natürlich keine konkrete Lösungen zeigen und gehe stattdessen davon aus, dass generelle Lösungswege gefragt sind. Einige Möglichkeiten will ich daher kurz skizzieren:

  • Du könntest die Skizzen als eigene LaTeX-Dateien erstellen und dann mit Hilfe von latex zunächst DVI-Dateien dafür erzeugen und dann mit dvips daraus PS-Dateien, die du mit pstopdf oder ähnlichen Programmen in PDF umwandelst und dann ggf. mit pdfcrop noch zuschneidest. Die resultierenden PDFs kannst du dann ganz normal mit \includegraphics einbinden.
  • Du kannst weiterhin mit latex für das Dokument generell DVI-Dateien erzeugen und diese für den Verlag mit dvips zunächst in PS-Dateien und dann mit pstopdf oder einem ähnlichen Programm in PDF umwandeln. Gegenüber der vorherigen Lösung bist du dann aber auch in Zukunft auf ein dvips angewiesen, das emTeX-specials verarbeiten kann. Wie das in Zukunft aussehen wird, ist ungewiss.
  • Du kannst gnuplot installieren und in den Original-gnuplot-Dateien die terminal-Einstellung ändern. Hier empfiehlt sich die Verwendung des Terminals epslatex. Dabei wird eine EPS-Datei und eine LaTeX-Datei erzeugt. Die EPS-Datei kann man mit dem Programm epstopdf in PDF-Dateien umwandeln. Meines Wissens enthalte die erzeugten LaTeX-Dateien neben dem LaTeX-Quellcode für Text- und Formelzeichen \includegraphics-Anweisungen ohne Dateiendung. Diese LaTeX-Dateien kann man entweder direkt in das Dokument einfügen oder einfach per \input an der Stelle laden, an der der Plot ausgegeben werden soll. Es werden dann von pdflatex automatisch die mit epstopdf erzeugten PDF-Dateien geladen. Notfalls entfernt man die Dateiendungen bei den \includegraphics-Anweisungen einfach selbst oder ersetzt sie durch .pdf. Dazu kann man diese LaTeX-Dateien mit jedem beliebigen (LaTeX-)Editor öffnen.
  • Alternativ zum epslatex-Terminal der vorherigen Lösung wäre auch die Verwendung des svg-Terminals von gnuplot denkbar. Hier wird aber ggf. zusätzlich ein SVG-Interpreter wie Inkscape benötigt.
  • Die aufwändigste aber oftmals empfehlenswerte Lösung bestünde darin, die Skizzen mit pgf/TikZ und den darauf aufbauenden Paketen wie pgfplots neu zu erstellen. Der Aufwand wird in der Regel mit einem sehr ansprechenden Ergebnis und guter Wartbarkeit für die Zukunft belohnt. pgfplots kann ggf. auch mit gnuplot zusammenarbeiten, um beispielsweise Wertetabellen damit berechnen zu lassen.
  • Alternativ zu pgf wäre natürlich auch PSTtricks denkbar. Dabei ist allerdings wieder ein Umweg über DVI und PS notwendig, auch wenn sich dieser einfacher verstecken lässt als die der ersten skizzierten Lösung.

Neuere TeX-Distributionen können übrigens die Umwandung von EPS nach PDF bei \includegraphics auch on-the-fly. TeXLive kann das schon sehr lange, MiKTeX aber auch schon seit einiger Zeit. Damit kann man sich den expliziten Aufruf von epstopdf zur Umwandlung der EPS-Dateien bei der dritten Lösung ggf. auch sparen. Erwähnt habe ich sie jedoch, weil man im Zweifelsfall mit der expliziten Umwandlung auf der sicheren Seite ist.

Permanenter link

beantwortet 02 Jan, 07:40

Ijon%20Tichy's gravatar image

Ijon Tichy
8.6k21022

bearbeitet 03 Jan, 15:21

Hi, vielen Dank für die ausführliche Antwort. Sie hat ein wenig gegholfen. Ich habe jetzt Gnuplot neu installiert und kann meine alten Files auf dem Bildschirm (set terminal wxt) ansehen. Geht prima. Wie kann ich jetzt einen pdf-File erzeugen? set terminal epslatex klappt nicht, mein WinEDT kann die eps-Files nicht verarbeiten. Hast Du noch einen Tipp für mich? Danke

(03 Jan, 12:24) Norbert

@Norbert: Das wäre eigentlich eine neue Frage, aber:

  • WinEdt ist nur ein Editor. Der muss keine EPS-Dateien verarbeiten.
  • Bei Verwendung des gnuplot-terminals epslatex wird eine LaTeX- und eine EPS-Datei ausgegeben. Ich habe in meiner Antwort ziemlich genau angegeben, was damit zu tun ist: Die EPS-Datei kann man mit dem Programm epstopdf in eine PDF-Datei umwandeln. Die LaTeX-Datei bindet man dagegen in das Dokument mit \input ein. Die kann man auch problemlos mit dem Editor öffnen.

Weitere Folgefragen bitte mit Minimalbeispiel, Fehlermeldung etc. als neue Frage!

(03 Jan, 13:48) Ijon Tichy
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×18
×1
×1
×1

Frage gestellt: 02 Jan, 06:56

Frage wurde angeschaut: 297 Mal

Zuletzt aktualisiert: 03 Jan, 16:31