Muitas vezes me pego definindo estilos para várias anotações de desenho. Isso é ótimo para estruturar figuras. Há, no entanto, uma pequena coisa que espero poder melhorar. Isso decorre do fato de que quaisquer dimensões relativas (unidades de ex
ou em
) são sempre interpretadas por TikZ relativo ao tamanho da fonte em vigor no "nível" do tikzpicture
próprio código.
Se eu precisar alterar o tamanho da fonte de uma anotação usando font=\tiny
, por exemplo, também preciso ajustar manualmente o inner sep
valor, porque o padrão (ou o que estiver especificado na definição do estilo) nem sempre fica tão bonito com o tamanho da fonte alterado .
Se eu pudesse configurar definições de estilo para que o valor de font
fosse usado como base para any ex
ou em
dimensões em inner sep
, esse problema poderia resolver-se sozinho. Eu também consideraria uma solução em que os valores font
e inner sep
fossem especificados como argumentos para um estilo, se isso permitir que essa limitação seja superada.
Aqui está um MWE:
\documentclass[tikz]{standalone}
\tikzset{
my inner sep/.style={inner sep=#1}, % how to define this?
every node/.style={anchor=south west},
}
\begin{document}
\begin{tikzpicture}
\node[my inner sep=0.2em] (A) {A};
\node[font=\tiny,my inner sep=0.2em] (B) {B};
\foreach \node in {A,B} {
\draw[blue,line width=0.01pt] % just to show the baselines
(\node.south west) |- (\node.base) -| (\node.north east);
}
\end{tikzpicture}
\end{document}
A saída atual é:
Os traços azuis servem apenas para mostrar a linha de base de cada nó. Conforme mostrado, as linhas de base estão à mesma distância da parte inferior dos nós. Uma definição adequada de my inner sep
produzirá uma saída com o texto B
deslocado para baixo e para a esquerda de sua posição mostrada acima, porque 0.2em
in \tiny
é menor que 0.2em
in \normalsize
.
Esse objetivo é possível com o atual TikArquitetura Z/ordem de operações? Em caso afirmativo, como pode ser feito?
Responder1
A partir PGF 3.0
daí existe uma node font
chave que define a fonte do nóeé usado como fonte nos cálculos de dimensão do nó usando em
e ex
. Consulte a seção 17.4.2
("Parâmetros de texto: fonte") do PGF 3.0
manual.
\documentclass[tikz, border=5]{standalone}
\begin{document}
\begin{tikzpicture}[every node/.style={fill=gray!50, anchor=south west}]
\node [inner sep=1em] at (0,0) (A) {A};
\node [font=\tiny, inner sep=1em] at (0,1) (B) {B};
\node [node font=\tiny, inner sep=1em] at (0,2) (C) {C};
\foreach \n in {A,B,C} {
\draw[red, very thin, <->] (\n.base west) -- (\n.base east);
\draw[red, very thin, <->] (\n.text |- \n.south) -- (\n.text |- \n.north);
}
\end{tikzpicture}
\end{document}