Erweiterte Funktionen von TikZ | Aspose.TeX .NET

Dieses Kapitel behandelt erweiterte TikZ-Funktionen, mit denen Sie komplexe Diagramme, Grafiken und Visualisierungen erstellen können. Mit diesen Werkzeugen verbessern Sie die Qualität und Komplexität Ihrer Grafiken deutlich.

Arbeiten mit Knoten und Positionierung

Knoten in TikZ sind äußerst flexible und leistungsstarke Elemente, ideal für die Erstellung kommentierter Diagramme und Tabellen:

1\node[draw, circle] (A) at (0,0) {A};
2\node[draw, circle] (B) at (2,1) {B};
3\draw[->] (A) -- (B);

Sie können Knoten anhand ihrer Namen ((A) und (B)) referenzieren, was eine einfache Bearbeitung und Verknüpfung ermöglicht.

Komplexe Pfade und Kreuzungen

TikZ unterstützt komplexe Pfade und die automatische Kreuzungserkennung:

1\draw[name path=line1] (0,0) -- (3,3);
2\draw[name path=line2] (3,0) -- (0,3);
3\fill[name intersections={of=line1 and line2, by={I}}] (I) circle (3pt);

Dabei wird der Schnittpunkt „I“ automatisch berechnet und markiert.

Pfeile und Flussdiagramme

TikZ bietet anspruchsvolle Pfeilstile, ideal für Diagramme und Flussdiagramme:

1\tikzset{>={Stealth[round, length=4pt, width=6pt]}}
2\draw[->] (0,0) -- (2,0);
3\draw[<->] (0,1) -- (2,1);

Das Anpassen von Pfeilspitzenstilen und -richtungen ist ganz einfach.

Matrizen und Ausrichtung

Matrizen helfen Ihnen, Knoten in Rastern oder Tabellen übersichtlich anzuordnen:

1\matrix[matrix of nodes, nodes={draw}, column sep=0.5cm, row sep=0.5cm] (m) {
2  A & B \\
3  C & D \\
4};
5\draw[->] (m-1-1) -- (m-2-2);

Sie können Matrixelemente einfach referenzieren, um präzise Zusammenhänge zu erhalten.

Mathematische Funktionen darstellen

TikZ lässt sich nahtlos in die Darstellung mathematischer Funktionen integrieren:

1\draw[domain=0:4*pi, smooth, samples=100] plot (\x,{sin(\x r)});

Dadurch entstehen glatte und präzise Diagramme direkt aus mathematischen Ausdrücken.

Erweiterte Grafikbibliotheken

TikZ enthält spezielle Grafikbibliotheken („graphs“ und „graphdrawing“) für die Verarbeitung strukturierter Diagramme und automatisiertes Layout:

 1\usetikzlibrary{graphs,graphdrawing}
 2\usegdlibrary{force}
 3
 4\begin{tikzpicture}
 5  \graph[spring layout, nodes={draw,circle}] {
 6    A -- {B, C, D},
 7    B -- {C, D},
 8    C -- D
 9  };
10\end{tikzpicture}

Dadurch werden automatisch optisch ansprechende Layouts komplexer Diagramme erstellt.

Schleifen (\foreach)

Erzeugen Sie wiederkehrende Strukturen oder Raster programmgesteuert:

1\foreach \x in {1,2,3}
2  \draw (\x,0) circle (0.4);

Koordinatenberechnungen (calc-Bibliothek)

Hier ein Beispiel für die Berechnung von Mittelpunkten oder Projektionen.

1\usetikzlibrary{calc}
2\draw (0,0) coordinate (A) -- (4,2) coordinate (B);
3\draw [red] (A) -- ($(A)!0.5!(B)!1cm!90:(B)$);

% Berechnung von senkrechten Abständen

Externe Bibliotheken und Anpassung

Erweitern Sie die TikZ-Funktionalität mit externen Bibliotheken, um spezielle Anforderungen zu erfüllen:

Um eine externe Bibliothek zu verwenden, binden Sie sie einfach ein:

1\usepackage{pgfplots}
2\pgfplotsset{compat=1.18}

Performance und Ressourcenmanagement

Im Gegensatz zu Rastergrafiken, die direkt in den Arbeitsspeicher geladen werden, werden TikZ-Zeichnungen zur Laufzeit dynamisch vom TeX-Makro-Interpreter berechnet. Jeder Pfad, jeder Schnittpunkt und jede geometrische Transformation wird durch Makro-Expansion nacheinander ausgewertet, bevor die finale Vektor-Darstellung erfolgt.

Bei der Verarbeitung von Dokumenten mit hochkomplexen Vektordiagrammen in serverseitigen .NET-Anwendungen sollten die folgenden Performance-Richtlinien beachtet werden, um die CPU-Auslastung zu optimieren und ein „Thread-Starvation“ (Erschöpfung der verfügbaren Threads) zu vermeiden:

HerausforderungBest Practice
Makro-Expansion und CPU-LastTikZ stützt sich stark auf die interpretative Makro-Expansions-Engine von TeX. Tief verschachtelte Schleifen oder komplexe geometrische Gleichungen (z. B. algorithmische Plot-Erstellung) können den CPU-Bedarf pro Vorgang erheblich steigern.Halten Sie die prozedurale Generierung innerhalb von TikZ so schlank wie möglich. Wenn Tausende wiederkehrender Elemente erzeugt werden müssen, prüfen Sie, ob datengestützte Vorlagen oder eine Vorab-Berechnung der Koordinaten außerhalb des TeX-Quellcodes die Tiefe der Makro-Auswertung reduzieren können.
Speicherbedarf und Garbage CollectionUmfangreiche, mehrseitige Dokumente mit komplexen TikZ-Vektorpfaden erzeugen während des Satzvorgangs große interne Objektstrukturen im verwalteten .NET-Heap.Kapseln Sie Satzvorgänge in kurzlebige Gültigkeitsbereiche (Scopes) oder verwenden Sie dedizierte Worker-Instanzen, damit der Garbage Collector den Arbeitsspeicher effizient freigeben kann, sobald der Ausgabe-Stream (PDF, XPS oder Bild) vollständig geschrieben wurde.
Caching statischer Diagramme in WebanwendungenDas wiederholte Kompilieren komplexer TikZ-Diagramme bei jeder HTTP-Anfrage in einem Webdienst mit hohem Aufkommen führt schnell zur Überlastung der CPU-Kerne.Wenn die zugrunde liegende Grafik statisch oder semi-statisch ist (z. B. Diagramme in einem Dashboard oder standardisierte architektonische Schemata), kompilieren Sie das .tex-Fragment nur einmal, speichern Sie das resultierende PDF oder den Vektor-Stream im Arbeitsspeicher (z. B. mittels IMemoryCache) und liefern Sie das zwischengespeicherte Asset direkt aus.
Verwaltung asynchroner Verarbeitung und TimeoutsNicht optimierte oder fehlerhaft strukturierte rekursive Makros innerhalb komplexer Diagramme können gelegentlich Endlosschleifen oder lang andauernde Ausführungsblockaden verursachen.Wenn Sie TeXJob-Läufe in Hintergrunddiensten ausführen (wie Hangfire, Azure Functions oder ASP.NET Core-Hintergrundaufgaben), starten Sie sie in einem separaten Worker-Prozess, der bei einer Zeitüberschreitung beendet werden kann, denn TeXJob.Run() läuft synchron und kann nicht abgebrochen werden

Entdecken Sie außerdem unsere kostenlose Web-App basierend auf der Aspose.TeX für .NET API für schnelle und einfache TeX-Konvertierungen.