É possível anexar opções às configurações existentes da font
chave TikZ?
Por exemplo, suponha que eu queira que todos os nós estejam no \sffamily
tipo de letra. Isso pode ser feito configurando every node/.append style={font=\sffamily}
. Mais tarde, talvez eu queira ter um nó que herde as every node
font
configurações e, além disso, use a forma itálica \itshape
. Infelizmente, como mostra o seguinte, não funciona simplesmente adicionar font=\itshape
; isso substitui a font
configuração anterior e a família de tipos padrão (em itálico) é usada.
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[every node/.append style={font=\sffamily}]
\node {Sans serif};
\node [font=\itshape] at (3,0) {Sans serif, italic};
\end{tikzpicture}
\end{document}
Procurando no manual, encontrei o <key>/.append
manipulador, que parecia promissor.
Manipulador de chave
<key>/.append={<append value>}
Adiciona o<append value>
no final do valor armazenado em<key>
.
E se eu usasse font/.append=\itshape
? Bem, isso também não funciona:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[every node/.append style={font=\sffamily}]
\node {Sans serif};
\node [font/.append=\itshape] at (3,0) {Sans serif, italic};
\end{tikzpicture}
\end{document}
Assim, tenho duas perguntas:
- Por que
font/.append=\itshape
não funciona aqui? - Como posso anexar opções às configurações existentes
font
?
Responder1
Aqui está uma resposta para a segunda pergunta; Não sei por que font/.append=\itshape
não funciona.
\documentclass{standalone}
\usepackage{tikz}
\makeatletter
\tikzset{font append/.style={font/.expand once=\tikz@textfont #1},
font append/.value required}
\makeatother
\begin{document}
\begin{tikzpicture}[every node/.append style={font=\sffamily}]
\node {Sans serif};
\node [font append=\itshape] at (3,0) {Sans serif, italic};
\end{tikzpicture}
\end{document}
Veja por que isso funciona: a font
chave é (aproximadamente) definida com
\tikzset{font/.code=\def\tikz@textfont{#1}}
Quando necessário, o valor de font
é acessado por meio de
\tikz@textfont
. Portanto, a solução é expandir \tikz@textfont
para obter o valor atual de font
e, em seguida, anexar manualmente as opções de fonte desejadas.
No entanto, não sei por que font
armazena seu valor em \tikz@textfont
vez de ser uma chave de valor diretamente.