Diferença entre o padrão de uma opção e seu valor inicial

Diferença entre o padrão de uma opção e seu valor inicial

Na descrição da /tikz/shapeopção de nó na pág. 216 do manual TikZ & PGF para versão 3.0.1a afirma:

sem padrão, inicialmenterectangle

Ele continua explicando que esta opção seleciona

a forma do nó atual ou, quando esta opção não é fornecida dentro de um nó, mas em algum lugar fora, a forma de todos os nós no escopo atual.

Qual é a diferença entre uma opção que possui um valor padrão e outra que inicialmente possui um determinado valor? Se em vez de ser inicialmente rectangleo /tikz/shapefosse rectanglepor padrão, o que mudaria no seu comportamento e na forma como pode ser utilizado?

Alguém pode explicar e demonstrar as diferenças com um exemplo mínimo?


A presente questão é semelhante aEste. No entanto, essa questão trata do PGF (com o qual não estou familiarizado), enquanto a questão atual trata do TikZ.

PGF e TikZ são dois níveis separados. Considere a seguinte citação do manual (p. 221):

Tanto o PGF quanto o TikZ suportam esses nós multipartes. No nível inferior, o PGF fornece um sistema para especificar que uma forma consiste em diversas partes. No nível TikZ, você especifica as diferentes partes do nó usando o seguinte comando:

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

O objetivo desta citação é mostrar que o mesmo recurso pode ter manifestações diferentes em PGF vs. em TikZ e é razoável perguntar como um determinado recurso se manifesta em um nível e como se manifesta em outro nível, e isso constituiria dois diferentes perguntas, assim como uma pergunta sobre \nodeparto comando do TikZ pode coexistir com uma pergunta sobre o sistema da PGF para especificar que uma forma consiste em várias partes sem que nenhuma dessas perguntas seja uma duplicata da outra.

Minha pergunta é: é possível explicar a diferença e dar um exemplo mínimo usando apenas conceitos e sintaxe do TikZ sem recorrer ao PGF de baixo nível? A diferença é perceptível da perspectiva de um usuário de alto nível que conhece apenas o TikZ? (Eu sou um usuário.)

Responder1

Esta resposta é para explicar o que o manual TikZ/PGF significa para valores padrão/iniciais de uma palavra-chave. Pode ou não ter qualquer relação como uso de .defaulte .initialchavesdependendo da implementação específica.

Por exemplo parashape:

  • no defaultsignifica que você não pode dizer

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

    porque não há padrão (neste caso a chave é definida de forma que deve ter um argumento, então ocorrerá um erro se você tiver; obrigado, @percusse). Se, por exemplo, fortive circlecomo padrão, isso significa que você poderia ter usado o comando mencionado acima para ter um nó em forma de círculo;

  • initialsignifica que se você disser

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

    semmencionando que shapevocê terá um arquivo rectangle.

Outro exemplo poderia ser (direto do manual):

/pgf/tips=value (padrão true, inicialmente on draw) alias/tikz/tips

Esta chave determina em que situações as pontas das setas são adicionadas a um caminho. Os seguintes valores são permitidos:

  • true(o valor usado quando nenhum valor é especificado)
  • proper
  • on draw(o valor inicial, se a chave ainda não tiver sido usada)
  • on proper draw
  • neverou false(mesmo efeito)

[...]

(embora eu não entenda o que significa o comentário no último item --- apenas isso nevere falsesão iguais?)

Responder2

Este é o caso em que parece que o problema está relacionado às chaves, mas shapeé uma palavra-chave bastante legada e a forma como é definida é bastante direta.

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

( \tikzoptionmais tarde tornou-se \tikzset. Portanto, não use)

Então, na inicialização do pacote TikZ, vemos

\def\tikz@shape{rectangle}%

Observe que este é o escopo global, portanto, se você não mexer nele, todas as imagens do TikZ herdarão esse valor padrão. Isso énãorelacionado /.initiale /.defaultproblema. É a classificação do manual que faz com que pareça uma questão fundamental.


No manual, se você vir no defaultisso, significa que você precisa fornecer um valor. Se você perceber no valueentão... bem... você não precisa fornecer um valor. Se você insistir em fornecer um valor, às vezes você receberá um erro, às vezes não.

Exemplo,

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

não irá erro. Porque todo manipulador de estilo/código aceita argumentos intrinsecamente. Se não for definido explicitamente pelo /.value forbidden manipulador, nada acontecerá.

Initially <...>significase você não fornecer mais nada eu vou usar <...>.

Como de costume, exceções se aplicam...

Uma nota final sobre a diferença TikZ/PGF. Todo o TikZ é convertido em código PGF, portanto não há funcionalidades separadas. É uma questão de sintaxe.

informação relacionada