
Na descrição da /tikz/shape
opção de nó na pág. 216 do manual TikZ & PGF para versão 3.0.1a afirma:
sem padrão, inicialmente
rectangle
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 rectangle
o /tikz/shape
fosse rectangle
por 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 \nodepart
o 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 .default
e .initial
chavesdependendo da implementação específica.
Por exemplo parashape:
no default
significa 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
circle
como padrão, isso significa que você poderia ter usado o comando mencionado acima para ter um nó em forma de círculo;initial
significa que se você disser\node[color=red] {...}
semmencionando que
shape
você terá um arquivorectangle
.
Outro exemplo poderia ser (direto do manual):
/pgf/tips=value
(padrãotrue
, inicialmenteon 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
never
oufalse
(mesmo efeito)[...]
(embora eu não entenda o que significa o comentário no último item --- apenas isso never
e false
sã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}}
( \tikzoption
mais 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 /.initial
e /.default
problema. É a classificação do manual que faz com que pareça uma questão fundamental.
No manual, se você vir no default
isso, significa que você precisa fornecer um valor. Se você perceber no value
entã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.