Ich habe ein Dokument, das nur ein einzelnes Objekt enthält. Im konkreten Fall ist das ein QR-Code aus der Antwort zur QR-Code Frage:

Open in Online-Editor
\documentclass{article}
\usepackage{qrcode}
\begin{document}
\qrcode[level=H]{http://www.unix-ag.uni-kl.de}
\end{document}

Es könnte aber genauso gut eine beliebige Abbildung oder ein kurzer Text sein. Um ein Dokument zu erhalten, dessen Seitengröße auf dieses Objekt beschränkt ist, könnte ich natürlich mit typearea oder geometry ein entsprechendes Seitenformat definieren. Aber geht das auch automatisch? Ich hätte also gerne so eine Art automatisches Clipping der Seite auf die Größe des Objekts.

Gibt es eventuell sogar die Möglichkeit, direkt ein Bildformat wie PNG zu erzeugen, um das Bild einfacher in eine Web-Seite einbinden zu können?

gefragt 05 Dez '15, 20:17

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%


Die Klasse standalone bietet genau diese Beschneidung auf den Inhalt der Seite:

Open in Online-Editor
\documentclass{standalone}
\usepackage{qrcode}
\begin{document}
\qrcode[level=H]{http://www.unix-ag.uni-kl.de}
\end{document}

Dabei wird das Ergebnis dann wirklich auf den Inhalt beschnitten, ohne jeden Rand:

ohne Rand

Oft will man aber doch ein wenig weißen Rand um das Objekt haben. Dafür bietet die Klasse die Option border:

mit Rand

Das Paket bietet über Option convert auch die anschließende Konvertierung in PNG oder über zusätzliche Angaben und Optionen auch in ein anderes Grafikformat. So erzeugt:

Open in Online-Editor
\documentclass[border=5mm,convert]{standalone}
\usepackage{qrcode}
\begin{document}
\qrcode[level=H]{http://www.unix-ag.uni-kl.de}
\end{document}

zusätzlich zur PDF-Datei eine PNG-Datei mit dem Namen der Hauptdatei und Endung .png:

direkt erzeugtes PNG

Dafür wird allerdings das Programm convert von ImageMagick benötigt. Außerdem muss pdflatex mit Option -shell-escape aufgerufen werden, damit es das externe Programm ausführen kann. Den Konverter – also in der Voreinstellung bei Linux/Unix/OSX convert und bei Windows imgconvert.exe – kann man über Optionen aber auch ändern oder zusätzliche Einstellungen dafür vornehmen. Beispielsweise könnte man so den im Beispiel transparenten Hintergrund auch mit einer Farbe versehen.

Man kann als Konverter statt convert auch per Option ghostscript verwenden:

Open in Online-Editor
\documentclass[border=1mm,convert=ghostscript]{standalone}
\usepackage{qrcode}
\begin{document}
\qrcode[level=H]{http://www.unix-ag.uni-kl.de}
\end{document}

In dem Fall ist der Hintergrund dann nicht transparent, sondern weiß:

mit ghostscript gewandelt

Sollte -shell-escape nicht aktiviert sein oder das aufgerufene Programm nicht gefunden werden, so gibt die Klasse einen Fehler aus:

Open in Online-Editor
Class standalone Warning: Conversion failed! Please ensure that shell escape
(standalone)              is enabled (e.g. use '-shell-escape').

unmittelbar davor erfährt man in der log-Datei auch den Aufruf, den standalone vornehmen wollte:

Open in Online-Editor
runsystem(gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r300 -sOutputFile=test.
png test.pdf)

Man könnte nun also auch einfach selbst von der Eingabeaufforderung im entsprechenden Verzeichnis den Aufruf: gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r300 -sOutputFile=test.png test.pdf vornehmen. Bei Windows-Anwendern wird übrigens statt gs in der Voreinstellung das Programm gswin32c.exe verwendet. Auch das kann man per Option ändern.

Darüber hinaus gibt es zu der Klasse auch noch ein gleichnamiges Paket und viele weitere Möglichkeiten. Beispielsweise können Anwender von tikz jede tikzpicture-Umgebung direkt als eigene Grafikseite erzeugen oder man kann Einstellungen, die man häufig verwendet, in einer eigenen Konfigurationsdatei ablegen. Es lohnt sich also, die Anleitung genauer zu studieren.

Permanenter link

beantwortet 05 Dez '15, 20:30

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 05 Dez '15, 21:15

1

Bei Windows Nutzern setzt standalone voraus, dass sie das Progamm convert manuell in imgconvert umbenannt haben. Da ich das nicht gemacht habe, muss ich convert={convertexe=convert} angeben. Man kann das aber auch in einer Konfigurationsdatei entsprechend voreinstellen, siehe Abschnitt »4.5 Class configuration file« in der Dokumentation zu standalone.

(05 Dez '15, 20:44) esdd
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×117
×7
×4
×1

gestellte Frage: 05 Dez '15, 20:17

Frage wurde gesehen: 8,900 Mal

zuletzt geändert: 05 Dez '15, 21:15