Anzeige:
Ergebnis 1 bis 7 von 7

Thema: on-the-fly Einbettung von .jpg, mit latex kompiliert

  1. #1
    the-hype
    Gast

    on-the-fly Einbettung von .jpg, mit latex kompiliert

    Hallo liebe Forenmitglieder,

    ich bin schon mehrere Jahre mit Latex und auch mit pdflatex unterwegs und bin heute auf ein Problem gestoßen, bei dem selbst langes Suchen und Recherche keine für mich brauchbare Lösung zutagegefördert hat.

    Ich schreibe an einem Dokument und kompiliere mit latex -> dvi.
    Ich möchte aber auch .jpg Bilder einbinden, ohne andauern diese erst konvertieren zu müssen da diese sich mit der Zeit ändern und ich keine Lust habe, alle Dateien wieder neu zu konvertieren.
    Soweit das Problem.
    Beim stöbern bin ich auf die vermeintliche Lösung mit
    \DeclareGraphicsRule{.jpg}{eps}{}{`convert #1 'eps:-'}
    gestoßen.
    Das scheint aber leider nicht zu funktionieren, da er immer nach einem Bild mit dem Namen `convert... sucht..
    Ich habe auch gelesen, dass man dazu mit der Option --shell-escape kompilieren soll, was aber ebenfalls nicht funktioniert hat.

    Kann mir jemand bei diesem Problem weiterhelfen?
    Ich danke!
    Grüße the-hype

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Ohne vollständiges Minimalbeispiel und ohne Angabe, mit welcher TeX-Distribution unter welchen System Du arbeitest, wäre jeder Hilfeversuch ein Ratespiel. Das Programm convert (von ImageMagick) hast Du aber hoffentlich bereits installiert? JPEG konvertiert man übrigens besser mit jpeg2ps (gibt es für Windows, Unix/Linux und AFAIK auch MacOSX) in EPS, weil dabei nur ein Wrapper um die JPEG-Daten gebaut wird und so die Dateien klein bleiben. Alternativ kann man imgtops verwenden. Das benötigt lediglich Python und die Python Image Library.

  3. #3
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von the-hype Beitrag anzeigen
    Ich schreibe an einem Dokument und kompiliere mit latex -> dvi.
    Ich möchte aber auch .jpg Bilder einbinden, ohne andauern diese erst konvertieren zu müssen da diese sich mit der Zeit ändern und ich keine Lust habe, alle Dateien wieder neu zu konvertieren.
    Soweit das Problem.
    Beim stöbern bin ich auf die vermeintliche Lösung mit
    \DeclareGraphicsRule{.jpg}{eps}{}{`convert #1 'eps:-'}
    gestoßen.
    Das scheint aber leider nicht zu funktionieren, da er immer nach einem Bild mit dem Namen `convert... sucht..
    Ich habe auch gelesen, dass man dazu mit der Option --shell-escape kompilieren soll, was aber ebenfalls nicht funktioniert hat.
    Code:
    \DeclareGraphicsRule{.jpg}{eps}{}{`convert #1 'eps:-'}
    Da fehlt ein backtick hinten. Zufall?

    HErbert

  4. #4
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Zitat Zitat von voss Beitrag anzeigen
    Code:
    \DeclareGraphicsRule{.jpg}{eps}{}{`convert #1 'eps:-'}
    Da fehlt ein backtick hinten.
    Eigentlich nicht. Das ganze wird ja zu einem dvips-special der Art:
    Code:
    \special{psfile="`convert foo.jpg 'eps:-'"}
    und dabei ist lauf Abschnitt 5.1.5 der dvips-Anleitung nur ein left quote vorn aber kein left quote hinten anzugeben.

  5. #5
    the-hype
    Gast
    Entschuldigung, dass ich kein MB eingefügt habe, ich war mir sicher, dass die Frage auch ohne zu beantworten ist.

    Distribution Tex Live 2009/Debian,
    klar hab ich ImageMagick installiert. Ich konvertiere damit von Hand.

    \documentclass{scrartcl}
    \usepackage{graphicx}
    \DeclareGraphicsRule{.jpg}{eps}{}{`convert #1 'eps:-'}
    \begin{document}
    \inculdegraphics{NameDesJPGBildes}
    \end{document}

  6. #6
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Das enthält zwei Fehler: \includegraphics ist falsch geschrieben und es kein BoundingBox angegeben. Ich nehme an, dass Du nicht verstanden hast, dass erst dvips die Konvertierung vornimmt. Deshalb ist die Angabe einer BoundingBox zwingend! Beispielweise würde funktionieren:
    Code:
    % This is foo.tex
    \documentclass{scrartcl}
    \usepackage{graphicx}
    \DeclareGraphicsRule{.jpg}{eps}{}{`convert #1 'eps:-'}
    \begin{document}
    \includegraphics[bb=0 0 123 456]{gurke.jpg}
    \end{document}
    Danach dann »latex foo.tex; dvips -R0 -o foo.ps foo.dvi«. Die so erzeugte foo.ps enthält dann das Bild.

    Einfacher ist aber sicher, einmal »for f in *.jpg; do jpeg2ps -o ${f%.jpg}.eps $f;done«. Dann sind alle jpg-Dateien in eps-Dateien umgewandelt und können einfach per \includegraphics geladen werden, ohne dass man eine BoundingBox angeben muss.

  7. #7
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    LaTeX braucht Informationen über die Größe des Bildes. Also musst du entweder (z.B. mit ebb.exe) eine externe .bb-Datei erstellen, oder die Boundingbox-Informationen bei \includegraphics angeben.

    (Im Prinzip kann mit dem Paket bmpsize die Bildgröße automatisch ermittelt werden. In der Praxis beißt sich das mit dvips und dem convert-Befehl. bmpsize braucht eine \DeclareGraphicsRule vom Typ bmp, dvips eine vom Typ eps. http://groups.google.com/group/comp....3fe52b865bd482)

    Wenn du die Bilder ohne Endung angeben willst, solltest du auch die Extensionliste noch anpassen.

    Außerdem muss dvips mit der Option -R0 aufgerufen werden.

    Code:
    \documentclass{scrartcl}
     \usepackage{graphicx}
     \DeclareGraphicsExtensions{.jpg,.eps,.ps,.eps.gz,.ps.gz,.eps.Z}
     \DeclareGraphicsRule{.jpg}{eps}{.bb}{`bmeps -t jpg #1}
     \begin{document}
     \includegraphics[bb=0 0 10 10]{testconvjpg}%geht ohne .bb-Datei
    
     \includegraphics[scale=0.3]{testconvjpg}%.bb muss existieren.
     \end{document}

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •