定义节点绝对位置后间距不一样吗?

定义节点绝对位置后间距不一样吗?

我定义了节点的绝对位置,他们的纵坐标相差固定的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}

A

答案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}

相关内容