1
1

Das Problem an sich

Gibt es eine Möglichkeit die graphdrawing-library von TikZ auch ohne lualatex zu verwenden?

Die Beschreibung ist im TikZ-Handbuch im Teil IV zu finden, ein Beispiel unter http://www.texample.net/tikz/examples/drawing-graphs/

Zur Not würde in meinem Fall auch eine Art Wrapper funktionieren, der nur die entsprechenden tikzpicture-Umgebungen mithilfe von write18 durch lualatex jagt und nur das entsprechende Kompilat als Bild einbindet.

Der Hintergrund

Ich muss einen Build-Server verwenden, dieser hat zwar lualatex installiert, das Build-Script sieht allerdings XeLaTeX vor, hieran werde ich wohl so einfach nichts ändern können, es hat mich ursprünglich schon viel Mühe gekostet diesen von pdfLaTeX auf XeLaTeX umzustellen... Wenn ich jetzt schon wieder mit einer Umstellung komme, dann bringt mich der Admin um :)

gefragt 23 Sep '14, 14:00

NobbZ's gravatar image

NobbZ
33731017
Akzeptiert-Rate: 40%

bearbeitet 23 Sep '14, 14:02

@NobbZ: Ich fürchte ja fast, dass Dir die Antwort nicht unbedingt gefallen wird, aber die Frage ist so ungefähr in dem Stil: Ich möchte gerne einen Erdbeerkuchen backen, habe aber nur Melonen. Kann ich irgendwie Melonen für einen Erdbeerkuchen verwenden? Immerhin kann man bei LaTeX Erdbeeren in Melonen verstecken. Das geht aber nur unter bestimmten Voraussetzungen (siehe meine Antwort).

(23 Sep '14, 17:42) gast3

Kannst Du die Graphen nicht einfach in separaten Dateien erstellen, z.B. mit der standalone-Klasse, und im Hauptdokument die Graphiken dann einfach einbinden?

(24 Sep '14, 17:00) cgnieder

Die graphdrawing-library benötigt zwingend lualatex. Es gibt also keine Möglichkeit, sie ohne lualatex zu verwenden. Allerdings kann man aus xelatex oder pdflatex heraus per \write18 lualatex starten. Wenn also lualatex verfügbar ist, das Build-Script dessen Verwendung nur nicht unmittelbar vorsieht, kann man es eventuell mittelbar verwenden, beispielsweise in der Form:

Open in writeLaTeX
\documentclass{article}
\usepackage{filecontents}
\usepackage{graphicx}
\begin{document}
\begin{filecontents}{mygraph.tex}
% Drawing a graph using the PG 3.0 graphdrawing library
% Author: Mark Wibrow
% Original from: http://www.texample.net/tikz/examples/drawing-graphs/
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{graphdrawing}
\usetikzlibrary{graphs}
\usegdlibrary{trees}
\begin{document}
\begin{tikzpicture}[>=stealth, every node/.style={circle, draw, minimum size=0.75cm}]
\graph [tree layout, grow=down, fresh nodes, level distance=0.5in, sibling distance=0.5in]
    {
        4 -> { 
          3 -> { 1 -> { 5, " " }, 2,2 },
          3 -> { 1, 2, 2 },
          3 -> { 1, 2, 2 }
        } 
    };
\end{tikzpicture}
\end{document}
\end{filecontents}
\immediate\write18{lualatex --interaction=batchmode mygraph.tex}
\includegraphics{mygraph}
\end{document}

Allerdings funktioniert das nur, wenn das Build-Script erlaubt, xelatex oder pdflatex mit Option -shell-escape aufzurufen, bzw. in texmf.cnf (ggf. auch einem lokalen texmf.cnf) shell_escape auf t (für true) zu setzen, statt auf die Standardeinstellung p (für protected). Zugegeben halte ich das bei einem Build-Server für nicht sehr wahrscheinlich …

Weitere Alternativen wären übrigens für sehr einfache Graphen das Paket lt3graph oder auch für sehr komplexe Graphen graphviz. Letzteres benötigt aber ebenfalls -shell-escape und zusätzliche, externe Software (siehe Anleitung). Und natürlich kann man Graphen auch direkt mit TikZ zeichnen. Das ist alles nicht unbedingt, was Du gerne hättest, aber ohne lualatex sehe ich keine Möglichkeit, die gewünschte TikZ-Lib zu verwenden.

Permanenter link

beantwortet 23 Sep '14, 16:31

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 23 Sep '14, 17:50

Shell-escape ist bereits im Buildscript vorgesehen, weil uns minted für Codeausschnitte vorgegeben wird. Deswegen sagte ich ja bereits, eine Wrapperumgebung die per write18 ein minidokument erzeugt und dessen Ausgabe dann als Bild einfügt, so wie es früher mal für Patricks gemacht wurde, wäre eine passable Lösung. Aber danke für den Tipp mit lt3graph, ich werde mal experimentieren und den Buildserver damit füttern und schauen ob etwas brauchbares dabei herauskommt.

(23 Sep '14, 21:37) NobbZ

Der Nachteil des Umwegs über \write18 ist leider, dass das sehr, sehr langsam wird. Bei lualatex dauert gerade der Start mit dem Einlesen der Fontdatenbank recht lange. Genau das muss dann für jeden Graphen gemacht werden. Ggf. kann man es beschleunigen, wenn man alle Graphen noch in der Präambel in eine einzige Datei schreibt und so lualatex nur einmal aufrufen muss. Allerdings muss man dann wissen, welche Seite dieser Datei man wo im Dokument laden muss. Das macht es im Vergleich zur angedeuteten Lösung, bei der man einzelne Dateien direkt bei Bedarf erstellt, wieder unkomfortabel.

(24 Sep '14, 07:50) gast3

Wenn man \write18 nutzen darf, muss man sich ja nicht darauf beschränken nur die Bilder damit zu machen. Dann kann man doch auch ein wrapper schreiben, der einfach die gesamte Hauptdatei in einem Rutsch mit lualatex übersetzt. Oder der wrapper ruft ein (lua-)Skript auf, das die Kompilation(en) ausführt. Was die Frage angeht, wo in einem Dokument Bilder zum Einfügen sind: Das geht einfach mit label und dem xr-Paket (und evtl. refcount).

(24 Sep '14, 09:21) Ulrike Fischer

@Ulrike: Die Idee hatte ich zunächst auch. Wenn das Build-Script aber auch Dinge wie die Anzahl der benötigten LaTeX-Läufe behandelt, dann verliert man das ggf. und muss dafür eventuell wieder selbst sorgen. Da wäre es besser, dem Build-Server auch noch lualatex beizubringen. Das kann ja nicht soooo schwer sein.

(24 Sep '14, 09:39) gast3

Ich habe jetzt mal die Antwort angenommen, mich aber dazu entschlossen, die paar Graphen die ich habe per Hand mit tkz-graph zu setzen, weil ich unterschiedliche Node- und Vertextypen habe, wofür ich weder in lt3graph noch in graphdrawing eine Möglichkeit gefunden habe. Damit kann ich jetzt auch entspannt bei xelatex bleiben ;)

(25 Sep '14, 14:16) NobbZ
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:

×730
×14
×1

gestellte Frage: 23 Sep '14, 14:00

Frage wurde gesehen: 12,299 Mal

zuletzt geändert: 25 Sep '14, 14:16