tikz foreach循环对齐失败

tikz foreach循环对齐失败
 \documentclass[tikz]{standalone}

 \usepackage{pgf,tikz}
 \usetikzlibrary{positioning}
 \begin{document}
 \begin{figure}[t]
 \begin{tikzpicture}[node distance=0.2em]

 \node (T0) at (0,0) {$T_{0}$};
  \node (T1) [below= of T0] {$T_{1}$};
  \foreach \x in {2,3,...,8} {
     \pgfmathsetmacro\result{\x-1}
     \node (T\x) [below=of T\result] {$T_{\x}$};
   }
 \end{tikzpicture}
 \end{figure}
  \end{document}

嗨!在上面的代码中,我创建了 9 个节点。前两个不在循环中的节点完全对齐。其余的节点则不是。有人能提出一个解决方案,让所有节点都对齐吗?(除了明显的复制和粘贴解决方案)。

我认为问题在于定位库,因为如果我使用,\node (T\x.0) [below of = T\result] {$T_{\x}$};那么它会正确显示,但我必须手动调整所有节点的距离。该图包含更多节点,为了简单起见,我没有将其包括在内。下面您可以看到代码的结果。

在此处输入图片描述

答案1

我不确定我是否正确理解了你的问题,但可以通过以下方式将节点排列在垂直线上,并与节点中心对齐:

\documentclass[tikz]{standalone}
    \usetikzlibrary{positioning}
    \begin{document}
\begin{tikzpicture}[node distance=0.2em]
    \node (T0) at (0,0) {$T_{0}$};
\foreach[count=\xi from 0]  \x in {1,2,...,8} 
     \node[below=of T\xi] (T\x)  {$T_{\x}$};
\end{tikzpicture}
    \end{document}

答案2

您可以使用\pgfmathtruncatemacro而不是\pgfmathsetmacro。问题是\pgfmathsetmacro将宏设置为浮点数;\pgfmathtruncatemacro将其截断为整数。

顺便说一下,如果您加载,tikz则不需要明确加载pgf,而且,对于独立类,该[tikz]选项意味着您不必加载 TikZ。

\documentclass[tikz]{standalone}

 \usetikzlibrary{positioning}
 \begin{document}
 \begin{tikzpicture}[node distance=0.2em]

 \node (T0) at (0,0) {$T_{0}$};
  \node (T1) [below= of T0] {$T_{1}$};
  \foreach \x in {2,3,...,8} {
     \pgfmathtruncatemacro\result{\x-1}
     \node (T\x) [below=of T\result] {$T_{\x}$};
   }
 \end{tikzpicture}
\end{document}

相关内容