我定义了节点的绝对位置,他们的纵坐标相差固定的y,但是在图片显示上他们之间的距离不一样,如何解决?
\documentclass[border=3pt,tikz]{standalone}
\usepackage{tikz}
\tikzstyle{mynode}=[thick,rectangle,minimum size=5mm]
\begin{document}
\begin{tikzpicture}%[x=2.2cm,y=1.8cm]
\def\x {5mm};
\def\y {2mm};
\node[mynode] (20) at (0,5\y) {a};
\node[mynode] (21) at (0,4\y) {b};
\node[mynode] (22) at (0,3\y) {c};
\node[mynode] (23) at (0,2\y) {d};
\node[mynode] (24) at (0,\y) {e};
\node[mynode] (25) at (0,0) {f};
\end{tikzpicture}
\end{document}
答案1
您希望第二个坐标由 计算(我假设)pgfmath
。在这种情况下,您需要使用*
或其他方式触发计算。
\documentclass[border=3pt,tikz]{standalone}
\tikzstyle{mynode}=[thick,rectangle,minimum size=5mm]
\begin{document}
\begin{tikzpicture}%[x=2.2cm,y=1.8cm]
\def\x {5mm}
\def\y {2mm}
\node[mynode] (20) at (0,5*\y) {a};
\node[mynode] (21) at (0,4*\y) {b};
\node[mynode] (22) at (0,3*\y) {c};
\node[mynode] (23) at (0,2*\y) {d};
\node[mynode] (24) at (0,\y) {e};
\node[mynode] (25) at (0,0) {f};
\end{tikzpicture}
\end{document}
请注意,以下节点的位置正确。由于空间不足,它们重叠很多,但由于字母的形状,它们刚好适合。
在原始代码中,将它们放置在 52mm、42mm、32mm、22mm、2mm 和 0 处。
答案2
只是为了好玩:
实际上,我认为 tikz 已经定义了,\x
因此\x1
、\x2
和\x3
是合法表达式(1 等是参数)。
\documentclass[border=3pt,tikz]{standalone}
\usepackage{tikz}
\tikzstyle{mynode}=[thick,rectangle,minimum size=5mm]
\newlength{\myx}
\newlength{\myy}
\begin{document}
\begin{tikzpicture}%[x=2.2cm,y=1.8cm]
\myx=5mm
\myy=2mm
\node[mynode] (20) at (0,5\myy) {a};
\node[mynode] (21) at (0,4\myy) {b};
\node[mynode] (22) at (0,3\myy) {c};
\node[mynode] (23) at (0,2\myy) {d};
\node[mynode] (24) at (0,\myy) {e};
\node[mynode] (25) at (0,0) {f};
\end{tikzpicture}
\end{document}
无关:
\documentclass{article}
\makeatletter
\def\x#1{\@ifundefined{x#1}{\errmessage{Undefined control sequence:}}
{\csname x#1\endcsname}}
\makeatother
\expandafter\dimendef\csname x1\endcsname=0
\begin{document}
\x1=1pt
\the\x1
\x2
\end{document}