Podemos definir o valor de setembro interno de um nó com unidades relativas em termos do valor da chave da fonte no escopo?

Podemos definir o valor de setembro interno de um nó com unidades relativas em termos do valor da chave da fonte no escopo?

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 exou em) são sempre interpretadas por TikZ relativo ao tamanho da fonte em vigor no "nível" do tikzpicturepró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 sepvalor, 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 fontfosse usado como base para any exou emdimensões em inner sep, esse problema poderia resolver-se sozinho. Eu também consideraria uma solução em que os valores fonte inner sepfossem 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 é:

insira a descrição da imagem aqui

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 sepproduzirá uma saída com o texto Bdeslocado para baixo e para a esquerda de sua posição mostrada acima, porque 0.2emin \tinyé menor que 0.2emin \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.0daí existe uma node fontchave que define a fonte do nóeé usado como fonte nos cálculos de dimensão do nó usando eme ex. Consulte a seção 17.4.2("Parâmetros de texto: fonte") do PGF 3.0manual.

\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}

insira a descrição da imagem aqui

informação relacionada