我们可以根据范围内的字体键值用相对单位定义节点的内部 sep 值吗?

我们可以根据范围内的字体键值用相对单位定义节点的内部 sep 值吗?

我经常发现自己在为各种绘图注释定义样式。这对于构造图形非常有用。然而,我希望我能改进一个小问题。这是因为任何相对尺寸(单位为exem)总是由 Ti 解释Z 相对于代码本身“级别”上有效的字体大小tikzpicture

font=\tiny例如,如果我需要使用 更改一个注释的字体大小,我还需要手动调整该inner sep值,因为默认值(或样式定义中指定的任何值)在改变字体大小后并不总是看起来那么好看。

如果我可以设置样式定义,以便 的值用作 中任何或维度font的基础,那么这个问题就可以自行解决。如果可以克服这一限制,我还会考虑一种解决方案,其中将和值指定为样式的参数。exeminner sepfontinner sep

以下是 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}

当前输出为:

在此处输入图片描述

蓝色细线仅用于显示每个节点的基线。如图所示,基线与节点底部的距离相同。适当的定义my inner sep将产生输出,其中文本B向下移动到其上面显示的位置的左侧,因为0.2em中的\tiny小于0.2em中的\normalsize

在目前的 Ti 条件下,这样的目标有可能实现吗?Z 架构/操作顺序?如果是,该怎么做?

答案1

PGF 3.0那里有一个node font键,用于设置节点的字体em用作使用和进行节点尺寸计算的字体。请参阅手册中的 (“文本参数:字体”)ex部分。17.4.2PGF 3.0

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

在此处输入图片描述

相关内容