
Ich habe entschieden, dass mir das Verhalten der Beschriftungsfunktion von TikZ nicht gefällt. Ich möchte Beschriftungen erhalten, die mit dem Anker gegenüber dem angegebenen Beschriftungswinkel positioniert sind. Wenn die Beschriftung beispielsweise in der Knotenoptionsliste als angegeben wäre, [..., label = {210: my label}, ...]
sollte die Beschriftung mit ihrem (der Beschriftungs-) 30
Anker im Winkel 210 positioniert werden (210 +/- 180 ist 30 Modulo 360). (Die Beschriftungspositionierungslogik von TikZ tut dies nicht. Stattdessen wählt sie (gemäß dem 3.00-Handbuch) einen der 8 Anker north
, north east
, east
, ..., north west
für die Beschriftung, abhängig vom Winkel.)
Da die beschrifteten Knoten in einem Makro erstellt werden und nicht durch direktes Eintippen von TikZ-Code, schien es einfach genug, den beschrifteten Knoten selbst zu erstellen, ohne die „Beschriftungs“-Funktionalität zu verwenden. Allerdings muss man es trotzdem richtig machen label distance
. Und ich möchte, dass der Beschriftungsabstand auf Änderungen am TikZ-Schlüssel reagiert label distance
, genau wie echte TikZ-Beschriftungen.
Es scheint jedoch keinen /tikz/- oder /pgf/-Schlüssel zu geben, der die speichert label distance
. Es gibt /tikz/label distance
, aber dieser wird anscheinend eher zum Festlegen des Beschriftungsabstands als zum Speichern verwendet; wenn Sie versuchen, mit daraus zu lesen \pgfkeysgetvalue
, erhalten Sie \relax
. Beim Durchsehen des Codes für TikZ scheint der aktuelle Beschriftungsabstand in einem Makro namens gespeichert zu sein \tikz@label@distance
. Also habe ich Code ausprobiert, der den Wert dieses Makros kopiert und ihn zum Positionieren der Ersatzbeschriftung verwendet, und es scheint korrekt zu funktionieren.
Meine Frage ist, ist dies die Art und Weise, wie ich den Beschriftungsabstand bestimmen „sollte“? Damit meine ich, dass ich hier „unter die Haube“ von Tikz/PGF schaue und an seinen internen Komponenten herumbastele. Wenn eine spätere Version von TikZ/PGF das \tikz@label@distance
Makro umbenennt oder beispielsweise einen PGFkeys-Schlüssel zum Speichern verwendet, wird mein Code beschädigt. Gibt es einen besseren Weg?