¿Podemos definir el valor de separación interno de un nodo con unidades relativas en términos del valor clave de fuente dentro del alcance?

¿Podemos definir el valor de separación interno de un nodo con unidades relativas en términos del valor clave de fuente dentro del alcance?

Muy a menudo me encuentro definiendo estilos para varias anotaciones de dibujo. Esto es genial para estructurar figuras. Sin embargo, hay una pequeña cosa que espero poder mejorar. Esto se debe al hecho de que cualquier dimensión relativa (unidades de exo em) siempre se interpreta mediante Ti.kZ relativo al tamaño de fuente vigente en el "nivel" del tikzpicturepropio código.

Si necesito cambiar el tamaño de fuente de una anotación usando font=\tiny, por ejemplo, también necesito modificar manualmente el inner sepvalor, porque el valor predeterminado (o lo que se especifica en la definición de estilo) no siempre se ve tan bien con el tamaño de fuente cambiado. .

Si pudiera configurar definiciones de estilo para que el valor de fontse use como base para cualquiera de las dimensiones exo emen inner sep, este problema podría solucionarse solo. También consideraría una solución en la que los valores fonty inner sepse especifiquen como argumentos de un estilo si permite superar esta limitación.

Aquí hay un 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}

La salida actual es:

ingrese la descripción de la imagen aquí

Las líneas azules son sólo para mostrar la línea de base de cada nodo. Como se muestra, las líneas de base están a la misma distancia desde la parte inferior de los nodos. Una definición adecuada de my inner sepproducirá una salida con el texto Bdesplazado hacia abajo y a la izquierda de la posición que se muestra arriba, porque 0.2emin \tinyes menor que 0.2emin \normalsize.

¿Es posible lograr ese objetivo con el Ti actual?k¿Arquitectura Z/orden de operaciones? Si es así, ¿cómo se puede hacer esto?

Respuesta1

Desde PGF 3.0allí hay una node fontclave que establece la fuente para el nodo.yse utiliza como fuente en los cálculos de dimensiones de nodos utilizando emy ex. Consulte la sección 17.4.2("Parámetros de texto: Fuente") del 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}

ingrese la descripción de la imagen aquí

información relacionada