Diferencia entre el valor predeterminado de una opción y su valor inicial

Diferencia entre el valor predeterminado de una opción y su valor inicial

En la descripción de la /tikz/shapeopción de nodo en la p. 216 del manual de TikZ & PGF para la versión 3.0.1a dice:

sin valor predeterminado, inicialmenterectangle

Continúa explicando que esta opción selecciona

la forma del nodo actual o, cuando esta opción no se proporciona dentro de un nodo sino en algún lugar fuera, la forma de todos los nodos en el alcance actual.

¿Cuál es la diferencia entre una opción que tiene un valor predeterminado y una que inicialmente tiene un valor determinado? Si en lugar de ser inicialmente rectangleel /tikz/shapeque fuera rectanglepor defecto, ¿qué cambiaría en su comportamiento y forma de uso?

¿Alguien puede explicar y demostrar las diferencias con un ejemplo mínimo?


La presente pregunta es similar aÉste. Sin embargo, esa pregunta trata sobre PGF (con el que no estoy familiarizado), mientras que la pregunta actual trata sobre TikZ.

PGF y TikZ son dos niveles separados. Considere la siguiente cita del manual (p. 221):

Tanto PGF como TikZ admiten este tipo de nodos multiparte. En el nivel inferior, PGF proporciona un sistema para especificar que una forma consta de varias partes. En el nivel de TikZ, especifica las diferentes partes del nodo usando el siguiente comando:

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

El objetivo de esta cita es mostrar que una misma característica puede tener diferentes manifestaciones en PGF vs. en TikZ y es razonable preguntar cómo una determinada característica se manifiesta en un nivel y cómo se manifiesta en otro nivel, y esto constituiría dos diferentes preguntas, del mismo modo que una pregunta sobre el comando de TikZ \nodepartpuede coexistir con una pregunta sobre el sistema de PGF para especificar que una forma consta de varias partes sin que ninguna de estas preguntas sea un duplicado de la otra.

Mi pregunta es: ¿Es posible explicar la diferencia y dar un ejemplo mínimo utilizando sólo los conceptos y la sintaxis de TikZ sin recurrir a PGF de bajo nivel? ¿Es perceptible la diferencia desde la perspectiva de un usuario de alto nivel que sólo conoce TikZ? (Soy uno de esos usuarios).

Respuesta1

Esta respuesta es para explicar qué significa el manual de TikZ/PGF para los valores predeterminados/iniciales de una palabra clave. Puede o no tener alguna relación conel uso de .defaulty .initialclavesdependiendo de la implementación específica.

Por ejemplo parashape:

  • no defaultsignifica que no puedes decir

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

    porque no hay un valor predeterminado (en este caso, la clave está definida de modo que debe tener un argumento, por lo que generará un error si lo tiene; gracias, @percusse). Si, por ejemplo,tenía circlepor defecto, eso significa que podrías haber usado el comando antes mencionado para tener un nodo en forma de círculo;

  • initialsignifica que si dices

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

    sinmencionando shapeque tendrás un rectangle.

Otro ejemplo podría ser (directamente del manual):

/pgf/tips=value (predeterminado true, inicialmente on draw) alias/tikz/tips

Esta clave rige en qué situaciones se agregan puntas de flecha a una ruta. Se permiten los siguientes valores:

  • true(el valor utilizado cuando no se especifica ningún valor)
  • proper
  • on draw(el valor inicial, si la clave aún no se ha utilizado)
  • on proper draw
  • nevero false(mismo efecto)

[...]

(aunque no entiendo qué significa el comentario sobre el último elemento, ¿solo eso nevery falseson lo mismo?)

Respuesta2

Este es el caso en el que parece que el problema está relacionado con las claves, pero shapees una palabra clave bastante heredada y la forma en que se define es bastante sencilla.

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

( \tikzoptionluego se convirtió en \tikzset. Así que no lo uses)

Luego, en la inicialización del paquete TikZ vemos

\def\tikz@shape{rectangle}%

Tenga en cuenta que este es el alcance global, por lo que si no lo modifica, cada imagen de TikZ heredará este valor predeterminado. Esto esnorelacionado con /.initialun /.defaultproblema. Es la clasificación del manual lo que hace que parezca una cuestión clave.


En el manual, si ve no defaultesto, significa que debe proporcionar un valor. Si ves no valueentonces... bueno... no necesitas proporcionar un valor. Si insiste en proporcionar un valor, a veces obtendrá un error y otras no.

Ejemplo,

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

No habrá error. Porque cada controlador de estilo/código acepta intrínsecamente argumentos. Si el controlador no lo establece explícitamente, /.value forbidden no sucede nada.

Initially <...>mediosi no proporcionas nada más voy a usar <...>.

Como siempre, se aplican excepciones...

Una nota final sobre la diferencia TikZ/PGF. Todo TikZ se convierte a código PGF, por lo que no hay funcionalidades separadas. Es una cuestión de sintaxis.

información relacionada