Gibt es ein einfaches Paket, in das ich ein abstraktes Diagramm eingeben kann und das eine Zeichnung zurückgibt?
Aähnliche Fragewurde 2010 gestellt, es gab keine Antworten, die für meine Frage relevant waren. Ich möchte keinen komplizierten Code, sondern nur die Kantenliste des Graphen angeben und eine beliebige Zeichnung erhalten. (Natürlich sind ein paar optionale Parameter willkommen.) Dies ist bereits in vielen Programmiersprachen implementiert, daher gehe ich davon aus, dass es auch in LaTeX verfügbar sein sollte.
Antwort1
Es gibt mindestens zwei Möglichkeiten:
Die flexibelste Methode (und die, die ich empfehle) ist die VerwendungPGF3/TikZDie automatischen Layoutfunktionen von sind verfügbar, wenn Sie eine aktuelle Version des Pakets (Version 3.0.0 und höher) haben und
luatex
/lualatex
zum Kompilieren verwenden. Siehe das PGF-Handbuch, dort gibt es ein eigenes Kapitel dazu. Der Vorteil ist, dass Sie die volle Leistungsfähigkeit von TikZ nutzen können, um Ihre Knoten/Kanten zu gestalten, und es sich nahtlos in den Rest des Dokuments einfügt. Sie können (fast) beliebigen TeX-Code für Beschriftungen/Knoteninhalte und TikZ-Stile verwenden. Der Nachteil könnte die Leistung sein, aber Sie könnten dies durch die Verwendung derexternal
Bibliothek verringern (siehe Handbuch).Ein Beispiel aus dem Handbuch:
\tikz [>=spaced stealth’] \graph [layered layout, components go right top aligned, nodes=draw, edges=rounded corners] { first root -> {1 -> {2, 3, 7} -> {4, 5}, 6 }, 4 -- 5; second root -> x -> {a -> {u,v}, b, c -> d -> {w,z} }; third root -> child -> grandchild -> youngster -> third root; };
Verwenden Sie Graphviz, um das Layout zu generieren, und verwenden Sie dann
dot2tex
. Der Vorteil besteht darin, dass Sie immer noch dieselben Schriftarten wie in Ihrem Hauptdokument haben, Mathematik verwenden können und das Diagramm einmal kompilieren können, sodass Sie das Layout nicht bei jeder Kompilierung des Dokuments neu erstellen müssen.Es gibt Möglichkeiten, Letzteres mit dem LaTeX-Paket zu automatisieren
dot2texi
. Denken Sie daran,pdflatex
mit der-shell-escape
Option zu arbeiten, damit dies funktioniert:dot2texi
Sie müssen das externedot2tex
Tool aufrufen, das zusammen mit installiert werden muss (hängt von Python ab)graphviz
. Mit den neuesten Versionen haben Sie die Möglichkeit, TikZ-Code zu generieren und benutzerdefinierte TikZ-Stile für Knoten/Kanten anzugeben. Ein Zitat aus den Dokumenten:Die Ausgabe von Graphviz und dot2tex ist nicht perfekt. Manchmal sind manuelle Anpassungen erforderlich, um die richtigen Ergebnisse für die Verwendung in einer Veröffentlichung zu erhalten. Für endgültige und kosmetische Anpassungen ist es oft einfacher, den generierten Code zu bearbeiten, als die Dot-Quelle zu hacken. Dies gilt insbesondere bei Verwendung des Tikz-Ausgabeformats.