我已成功定义了一个“块”,可以将其实例化为各种大小,并在其侧面添加注释。但是,我想将设置minimum width
为sqrt(#2)
,同时将标签保留为#2
。不知何故,\pgfmathresult
始终为 0.4,结果宽度太小(块变成垂直线):
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[
block/.code args={#1/#2}{
\pgfmathparse{#2}
\pgfkeysalso{/tikz/.cd,
draw,
inner sep=0pt, % make failing minimum width more obvious
minimum height=#1,minimum width=\pgfmathresult, % minimum width=#2 works, but is too wide
label={[rotate=90,anchor=south]west:#1},
label={90:#2}}}
]
\node[block=36/1024] {};
\end{tikzpicture}
\end{document}
我怎样才能计算minimum width
(sqrt(#2)
以 pt 为单位)?
显然,最小宽度计算与我的问题非常相似,但我还不明白如何将马克的方法应用到我的风格定义中。
答案1
根据经验,您应该\pgfmathresult
在设置后立即使用:其他 PGF 例程可能会使用相同的功能。事实上,在 的末尾tikzpicture
, 的值\pgfmathresult
是 0.4,无论您做了什么设置。使用特定的宏:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[
block/.code args={#1/#2}{
\pgfmathsetmacro\SQRTTWO{sqrt(#2)}
\pgfkeysalso{/tikz/.cd,
draw,
inner sep=0pt, % make failing minimum width more obvious
minimum height=#1,
minimum width=\SQRTTWO, % minimum width=#2 works, but is too wide
label={[rotate=90,anchor=south]west:#1},
label={90:#2},
},
}
]
\node[block=36/1024] {};
\end{tikzpicture}
\end{document}