我经常发现自己在为各种绘图注释定义样式。这对于构造图形非常有用。然而,我希望我能改进一个小问题。这是因为任何相对尺寸(单位为ex
或em
)总是由 Ti 解释钾Z 相对于代码本身“级别”上有效的字体大小tikzpicture
。
font=\tiny
例如,如果我需要使用 更改一个注释的字体大小,我还需要手动调整该inner sep
值,因为默认值(或样式定义中指定的任何值)在改变字体大小后并不总是看起来那么好看。
如果我可以设置样式定义,以便 的值用作 中任何或维度font
的基础,那么这个问题就可以自行解决。如果可以克服这一限制,我还会考虑一种解决方案,其中将和值指定为样式的参数。ex
em
inner sep
font
inner 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.2
PGF 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}