Unterschied zwischen dem Standardwert einer Option und ihrem Anfangswert

Unterschied zwischen dem Standardwert einer Option und ihrem Anfangswert

In der Beschreibung der /tikz/shapeKnotenoption auf S. 216 des TikZ- und PGF-Handbuchs für Version 3.0.1a heißt es:

kein Standard, zunächstrectangle

Es wird weiter erklärt, dass diese Option auswählt

die Form entweder des aktuellen Knotens oder, wenn diese Option nicht innerhalb eines Knotens, sondern irgendwo außerhalb angegeben ist, die Form aller Knoten im aktuellen Bereich.

Was ist der Unterschied zwischen einer Option, die einen Standardwert hat, und einer, die anfangs einen bestimmten Wert hat? Wenn die Option nicht anfangs standardmäßig wäre rectangle, /tikz/shapewas rectanglewürde sich an ihrem Verhalten und ihrer Verwendung ändern?

Kann jemand bitte die Unterschiede anhand eines Minimalbeispiels erklären und demonstrieren?


Die vorliegende Frage ähneltDieses hier. Allerdings bezieht sich diese Frage auf PGF (mit dem ich nicht vertraut bin), während es bei der aktuellen Frage um TikZ geht.

PGF und TikZ sind zwei verschiedene Ebenen. Beachten Sie das folgende Zitat aus dem Handbuch (S. 221):

Sowohl PGF als auch TikZ unterstützen solche mehrteiligen Knoten. Auf der unteren Ebene bietet PGF ein System zum Angeben, dass eine Form aus mehreren Teilen besteht. Auf der TikZ-Ebene geben Sie die verschiedenen Knotenteile mit dem folgenden Befehl an:

\nodepart[<options>]{<part name>}

Der Sinn dieses Zitats besteht darin, zu zeigen, dass dasselbe Feature in PGF und in TikZ unterschiedliche Erscheinungsformen haben kann und dass es sinnvoll ist zu fragen, wie sich ein bestimmtes Feature auf einer Ebene manifestiert und wie es sich auf einer anderen Ebene manifestiert. Dies würde zwei unterschiedliche Fragen darstellen, genauso wie eine Frage zum \nodepartBefehl von TikZ neben einer Frage zum System von PGF zur Festlegung, dass eine Form aus mehreren Teilen besteht, bestehen kann, ohne dass eine dieser Fragen ein Duplikat der anderen ist.

Meine Frage ist: Ist es möglich, den Unterschied zu erklären und ein Minimalbeispiel zu geben, das nur TikZ-Konzepte und -Syntax verwendet, ohne auf PGF auf niedriger Ebene zurückzugreifen? Ist der Unterschied aus der Sicht eines fortgeschrittenen Benutzers wahrnehmbar, der nur TikZ kennt? (Ich bin ein solcher Benutzer.)

Antwort1

Diese Antwort soll erklären, was das TikZ/PGF-Handbuch für Standard-/Anfangswerte eines Schlüsselworts bedeutet. Es kann eine Beziehung haben oder auch nicht mitdie Verwendung von .defaultund .initialSchlüsselnabhängig von der spezifischen Implementierung.

Zum Beispiel fürshape:

  • no defaultbedeutet, dass man nicht sagen kann

     \node[shape, red]{...}
    

    weil es keinen Standard gibt (in diesem Fall ist der Schlüssel so definiert, dass er ein Argument haben muss, also wird es einen Fehler geben, wenn Sie das tun; danke, @percusse). Wenn es zum Beispielhatte circleals Standard bedeutet dies, dass Sie den oben genannten Befehl hätten verwenden können, um einen kreisförmigen Knoten zu erhalten;

  • initialbedeutet, dass wenn Sie sagen

    \node[color=red] {...}
    

    ohneErwähnen Sie, dass shapeSie ein haben werden rectangle.

Ein anderes Beispiel könnte sein (direkt aus dem Handbuch):

/pgf/tips=value (Standard true, anfänglich on draw) Alias/tikz/tips

Dieser Schlüssel bestimmt, in welchen Situationen Pfeilspitzen zu einem Pfad hinzugefügt werden. Folgende Werte sind zulässig:

  • true(der Wert, der verwendet wird, wenn kein Wert angegeben ist)
  • proper
  • on draw(der Anfangswert, wenn der Schlüssel noch gar nicht verwendet wurde)
  • on proper draw
  • neveroder false(gleiche Wirkung)

[...]

(obwohl ich nicht verstehe, was der Kommentar zum letzten Punkt bedeutet – genau das neverund falsesind dasselbe?)

Antwort2

Dies ist der Fall, in dem es so klingt, als ob das Problem mit Schlüsseln zusammenhängt, es sich jedoch shapeum ein ziemlich veraltetes Schlüsselwort handelt und die Art und Weise, wie es definiert ist, ziemlich unkompliziert ist.

\tikzoption{shape}{\edef\tikz@shape{#1}} 

( \tikzoptionwurde später zu \tikzset. Verwenden Sie es also nicht)

Dann sehen wir bei der Initialisierung des TikZ-Pakets

\def\tikz@shape{rectangle}%

Beachten Sie, dass dies der globale Bereich ist. Wenn Sie also nicht daran herumfummeln, erbt jedes TikZ-Bild diesen Standardwert. Dies istnichtbezogen auf /.initialund /.defaultProblem. Es ist die Klassifizierung des Handbuchs, die es wie ein Hauptproblem erscheinen lässt.


Wenn Sie im Handbuch no defaultdies sehen, bedeutet dies, dass Sie einen Wert angeben müssen. Wenn Sie no valuedies sehen, müssen Sie keinen Wert angeben. Wenn Sie darauf bestehen, einen Wert anzugeben, erhalten Sie manchmal eine Fehlermeldung, manchmal nicht.

Beispiel,

\node[matrix of math nodes={4}{5}] {\tan \\ \sin};

wird keinen Fehler verursachen. Weil jeder Style/Code-Handler grundsätzlich Argumente akzeptiert. Wenn dies nicht explizit vom /.value forbidden Handler festgelegt wird, passiert nichts.

Initially <...>bedeutetWenn Sie nichts anderes angeben, verwende ich <...>.

Wie immer gelten Ausnahmen …

Eine letzte Anmerkung zum Unterschied zwischen TikZ und PGF. Alle TikZ-Codes werden in PGF-Code umgewandelt, es gibt also keine separaten Funktionen. Es ist eine Frage der Syntax.

verwandte Informationen