Die scale-Option führt laut Dokumentation nur zu einer Koordinatentransformation, d.h. sie wirkt nur, wenn Koordinaten betroffen sind. Die Linienstärke, die Größe der Pfeilspitzen oder Optionen wie shorten > sowie die Noden werden davon nicht beeinflusst. Bei manchen Dingen muss man auch austesten, ob die Skalierung wirkt oder nicht. Zum Beispiel wird die node distance nicht automatisch mit angepasst. Dadurch sieht man im Ausgangsbeispiel keinerlei Wirkung der scale-Option.
Deshalb ist hier noch ein Beispiel bei dem man die Wirkung der scale-Option auf Koordinaten an Hand einer eingezeichneten Strecke und eines roten Kreises sehen kann:
Abhängig davon, was in der Grafik zusätzlich zu den Koordinatenangaben noch alles skaliert werden soll, gibt es unterschiedliche Anpassungsmöglichkeiten:
Abstände, die über node distance eingestellt werden:
Sollen die Noden unverändert bleiben, aber die über node distance eingestellten Abstände trotzdem skaliert werden, dann muss diese Option von Hand angepasst werden.
Werden Teile einer TikZ-Abbildung unterschiedlich skaliert, dann kann man sich für die Zeichnung einen eigenen Skalierungsstil definieren, damit node distance jeweils mitskaliert wird:
Auf dem gleichen Weg lassen sich natürlich auch die Linienbreite etc. beeinflussen.
Noden:@Stefan hat schon erklärt, wie durch die zusätzliche Angabe der scale-Option für einzelne oder alle Noden, diese und deren Inhalt ebenfalls skaliert werden können.
Noden und Abstände:
Gibt man bei den betreffenden Noden oder einer scope oder für das gesamte tikzpicture die Option transform shape an, wird neben den Noden auch automatisch die node distance angepasst.
Code, hier editierbar zum Übersetzen:
1
2
3
4
5
6
7
8
9
\begin{tikzpicture}[node distance=5em]
\grafik % unskaliert
\begin{scope}[xshift=5cm, scale=2, every node/.style={scale=2}] % Noden mitskalieren
\grafik
\end{scope}
\begin{scope}[xshift=12cm, scale=2, transform shape] % Noden und Abstände mitskalieren
Komplette Grafik:
Soll die gesamte Zeichnung einschließlich der Schrift, der Linienstärke und der Größe der Pfeilspitzen sowie der shorten Optionen skaliert werden, dann kann man \scalebox verwenden. Das dafür benötigte graphicx-Paket wird von tikz bereits mitgeladen.
Mit beiden Befehlen können neben Zeichnungen auch Tabellen, Texte oder anderes Material skaliert werden. Weitere Informationen zu \scalebox, \resizebox sowie \resizebox* sind in der Anleitung der graphics-Sammlung zu finden.
Die node distance wird mit dem TikZ-Koordinatensystem (Optionen x und y) verrechnet wenn es einheitenlose Werte enthält. Es ist also möglich mit node distance=5, x=2em, y=2em ebenfalls eine Skalierung um den Faktor 2 zu erreichen. (Sollte diese TikZ-Koordinatensystem-Skalierung nur für nodes passieren, bietet es sich natürlich an every node/.append style={x=2em, y=2em} zu setzen, sofern man nur per positioning positioniert.)
@Qrrbrbirlbel: Vielen Dank für den Hinweis. Am einfachsten ist es dann wohl gleich node distance=2*5em oder node distance=10em zu schreiben. Zumindest ist es wesentlich besser, als die Koordinaten explizit oder über shift-Optionen anzugeben. Ich hab das entsprechend geändert.
Skalieren und andere Transformationen wirken nicht auf nodes. Das ist so voreingestellt, weil man oft nicht den Text skalieren oder rotieren möchte, auch wenn man die eigentliche Grafik transformiert. Vom Handbuch zitiert: "Scaling text is evil". Man sollte besser die passende Schriftgröße wählen als eine auf andere Größe designte Schrift zu skalieren.
Doch es geht natürlich. Man kann auch für nodes eine Skalierung angeben, wie mit
Es gibt jedoch noch die Option transform shape, die man ebenfalls für nodes oder die ganze Grafik setzen kann und dann wird die Transformation ebenfalls für node bzw. shape angewendet. Oft reicht damit die einfache Kombination: