Kleines Shell Skript zum Umwandeln von SVGs in PDF Bilder

Samstag, 20.06.2009 um 14:10 Uhr

Moin liebe Lesergemeinde,

da ich ja, wie in anderen Einträgen schon erwähnt des Öfteren in LaTeX Dokumente verfasse, ist es auch manchmal nötig Grafiken einzubinden. Da ich normalerweise Grafiken mit Inkscape im Vektorformat SVG erstelle, ist es nötig diese Dateien zu konvertieren. LaTeX kann leider SVGs nicht direkt einbinden. Bei meinen Recherchen im Internet habe ich auch nicht wirklich Bestrebungen gefunden, dieses Leck zu stopfen – also wer von euch in LaTeX voll den Durchblick hat, kann ja mal die Unterstützung dafür Programmieren ;-)

Damit die Eigenschaften eines Vektorformats – also die gute Skalierbarkeit der Grafiken – erhalten bleiben, wandle ich die Dateien immer in eps oder pdf um. Allerdings wird es sehr anstrengend, wenn man eine Kleinigkeit im Bild geändert oder sehr viele Bilder hat, diese immer wieder von Hand umzuwandeln. Deshalb habe ich mir ein kleines Shell Skript geschrieben, dass immer im Ordner meiner SVG Bilder liegt und dort aufgerufen werden kann.

Benutzung:

Man gehe in einer Konsole in den Ordner mit den Bildern und dem Skript. Das Skript muss die Rechte zum Ausführen haben. Ist dies noch nicht der Fall, dann den folgenden Befehl ausführen:

jazz@jazz:~$ chmod +x SVG2PDF

Jetzt hat man die Möglichkeit das Skript ohne Parameter aufzurufen. Dann werden alle im Ordner befindlichen SVGs in eine PDF konvertiert. Dabei richtet sich die Größe der PDF nach der Seiteneinstellung der SVG.

jazz@jazz:~$ ./SVG2PDF

Die zweite Variante ist der Aufruf mit Parametern. Als Parameter kann man eine beliebig lange Liste von SVG Dateien angeben. Dies ist sinnvoll, wenn man nicht alle SVGs in PDF umwandeln will, wenn man zum Beispiel nur ein oder zwei der im Ordner befindlichen SVGs verändert/hinzugefügt hat.

jazz@jazz:~$ ./SVG2PDF eine.svg eineandere.svg

So jetzt hier das Skript zum Runterladen (Rechtsklick → Ziel Speichern unter):

Skript SVG2PDF

Und hier nochmal ausgeschrieben:

#!/bin/bash
if [ $# -lt 1 ]
then
    for f in *.svg; do 
        e=$(basename $f svg)eps;
        echo "Converting $f to a pdf image!"
        inkscape --export-embed-fonts  --export-text-to-path -f $f -E $e; 
        epstopdf $e
        rm $e
    done
else
    for f in $*; do
        if [ -f $f -a ${f#*.} = "svg" ]
        then
            e=$(basename $f svg)eps;
            echo "Converting $f to a pdf image!"
            inkscape --export-embed-fonts  --export-text-to-path -f $f -E $e; 
            epstopdf $e
            rm $e
        else
            echo "File $f is not a SVG!"
        fi
    done
fi

EDIT: Für das Skript muss epstopdf (unter Ubuntu in texlive-extra-utils) installiert sein. Ist es nicht vorhanden, führt dies ebenfalls zu “command not found”-Fehlern.

TeX Live 2008 auf Ubuntu 8.10/9.04 installieren

Mittwoch, 25.02.2009 um 22:46 Uhr

Moin liebe Lesergemeinde,

da Ubuntu selbst in Jaunty noch kein TeX Live 2008 integriert und diese Version sehr viele sehr gute Überarbeitungen der Bibliotheken enthält, will ich nicht länger auf TeX Live 2008 verzichten. Zudem bringt diese Distribution einen eigenständigen Paketmanager mit, mit dessen Hilfe man TeX-Pakete unabhängig der Linux-Distribution aktualisieren und installieren kann.

Eine Kurzanleitung für die Installation habe ich auf der Seite von tug gefunden, nach der sich meine Anleitung anlehnt. Das Installationsprogramm kann man von hier herunterladen.

Hat man die Installation heruntergeladen, muss man das tar.gz Archiv entpacken. Nun hat man zwei Möglichkeiten. Entweder man nutzt die Konsolenbasierte Installation oder man installiert TeX Live über eine GUI.

Installation ohne GUI

In der Konsole gibt man folgenden Befehl ein. Das sudo ist notwendig, um TeX Live nach /usr/local/ zu installieren. Will man TeX Live in sein Home-Verzeichnis installieren, kann man ohne sudo installieren, muss aber die Installationspfade anpassen.

jazz@jazz:~/Desktop/install-tl$ sudo ./install-tl

Per default sind in der Installation alle Pakete angewählt. Für mich war es nicht sehr sinnvoll alle Sprachen mit zu installieren. Die Spracheinstellungen erhält man durch tippen von “l” in die Konsole. Nun kann man die entsprechenden Sprachen auswählen, die Steuerung ist intuitiv und steht immer mit dabei. Nun kehrt man zum Hauptmenü der Installation zurück und startet mit “i” die Installation. Nun kann man ne geraume Zeit warten, denn die Installation lädt nun ca. 1,4 GB aus dem Netz.

Ist dies geschehen, werden die Pakete installiert.

Installation mit GUI

Für die Installation mit grafischer Bedienoberfläche muss noc, sofern nicht schon geschehen, das Perl/TK-Paket installiert werden.

jazz@jazz:~$ sudo apt-get install perl-tk

Nun kann in einer Konsole die Installation mit grafischer Oberfläche gestartet werden.

jazz@jazz:~/Desktop/install-tl$ sudo ./install-tl -gui

Folgende Oberfläche sollte man nun erhalten. Auch hier kann man alle Einstellungen wie in der Installation ohne GUI durchführen.

texlive install gui

Eine wichtige Option ist bei der Installation von TeX Live zu beachten. Da sich die Pakete in /usr/local installieren, liegen dort ebenfalls alle Binaries. Man muss dem System noch beibringen, auch das TeX Live 2008 zu nutzen. Nun hat man mehrere Möglichkeiten.

1. Variante

Man passt nach der Installation die $PATH Variable des Systems an, so dass das System weiß, wo es nach den Programmen für TeX Live zu schauen hat. Das ist aber problematisch sofern manzum Beispiel Kile als Tex-Editor nutzt. Es gibt keine Möglichkeit Kile zu sagen, wo er die besagten Programme her nehmen soll. Es nutzt auch nicht die Pfadangaben in einer bestimmten Reihenfolge zu beschreiben. Da Kile an Tex Live aus den Paketquellen von Ubuntu gebunden ist, hat man zwangsläufig eine TeX Live 2007 Variante installiert.

Will man jedoch nur über die Konsole LaTeX Dokumente übersetzen, ist diese Variante durchaus praktikabel, da man bis auf die Pfadangabe nicht ins System eingreift und Fremdprogramme drauf hat.

2. Variante

Man setzt vor der Installation die Option “Symbolische Links in Systemverzeichnissen” (siehe Screenshot) auf Ja. Dann werden alle Binaries in /usr/bin/ Verzeichnis verlinkt. Dies ist sicherlich die einfachste und sinnvollste Variante. So überschreibt man direkt alle Links von der alten TeX Live 2007 Version.

3. Variante

Diese Variante nutze ich, da ich Tex Live 2008 auf mehreren PCs installiert habe. Da ich nicht die Lust hatte mehrmals eine Installation von über einem GB aus dem Netz laden zu lassen, habe ich TeX Live ohne die Links in die Systemverzeichnisse installiert. Mit dem Befehl

sudo ln -s /usr/local/texlive/2008/bin/i386-linux/* /usr/bin/ -f

erzeugt man in /usr/bin/ Verzeichnis zu allen Dateien der LaTeX Distribution symbolische Links. Allerdings geht dies nur auf die brachiale Art und Weise mit der Option “-f”, da bereits Programme im Ordner von TeX Live 2007 existieren und diese überschrieben werden müssen. Das ist sicher nicht die schönste Variante, geht aber schnell, wenn mehrere PCs TeX Live 2007 bekommen sollen und diese auch von Kile und anderen Editoren genutzt werden sollen. Es ist sichermit Vorsicht zu genießen und sollte nicht unbedingt von Laien ausgeführt werden, da bei einer falschen Eingabe große Schäden am System etstehen können! Darauf sei ausdrücklich hingewiesen!

Nun gilt es zu überprüfen, ob auch alles glatt gelaufen ist. Dazu tippt man in der Konsole

jazz@jazz:~$ latex -v

Herauskommen sollte dabei

pdfTeX 3.1415926-1.40.9-2.2 (Web2C 7.5.7)
kpathsea version 3.5.7
Copyright 2008 Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).
Kpathsea is copyright 2008 Karl Berry and Olaf Weber.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
...

In Kile überprüft man das ganze mit einem kleinen Latex-Programm in dem man die Version des Koma-Skripts überprüft.

Skript:

\documentclass{scrartcl}
\begin{document}
TeX Live 2008
\end{document}

Nun schaut man sich nach dem Kompilieren in Kile die .log-Datei an. Findet man dort die folgende Zeile ist die Installation geglückt, denn TeX Live 2007 nutzt Koma-Skript 2.95b und TeX Live 2008 nutzt die Version 3.02b. Herzlichen Glückwunsch ihr habt ein neues und aktuelles TeX Live!

Document Class: scrartcl 2009/01/24 v3.02b
KOMA-Script document class (article)