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 ex
o em
) siempre se interpreta mediante Ti.kZ relativo al tamaño de fuente vigente en el "nivel" del tikzpicture
propio 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 sep
valor, 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 font
se use como base para cualquiera de las dimensiones ex
o em
en inner sep
, este problema podría solucionarse solo. También consideraría una solución en la que los valores font
y inner sep
se 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:
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 sep
producirá una salida con el texto B
desplazado hacia abajo y a la izquierda de la posición que se muestra arriba, porque 0.2em
in \tiny
es menor que 0.2em
in \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.0
allí hay una node font
clave que establece la fuente para el nodo.yse utiliza como fuente en los cálculos de dimensiones de nodos utilizando em
y ex
. Consulte la sección 17.4.2
("Parámetros de texto: Fuente") del 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}