Tikz:在循环中的节点之间画一条线

Tikz:在循环中的节点之间画一条线

代码:

\documentclass[tikz]{standalone}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}

\def\names{{"1", "2"}}
\foreach \i in {0,1} {%
  \ifnum\i=0\relax
      \node (\i) [draw] {\pgfmathparse{\names[\i]}\pgfmathresult};
  \else
      \pgfmathparse{int(\i-1)}
      \node (\i) [draw,right= 1cm of \pgfmathresult]
            {\pgfmathparse{\names[\i]}\pgfmathresult};

      %this doesn't work:
      %\draw[dotted] ($\pgfmathresult.south east !.5! (\i.south east)$)
      %      -- ($\pgfmathresult.south east !.5! (\i.south east) + (0,1cm)$);
  \fi
}
\end{tikzpicture}
\end{document}

创建这个:

在此处输入图片描述

如何在 1cm 长的块之间创建虚线?我尝试使用注释代码来做到这一点,但它不起作用,并出现错误:

失控的争论?

\pgfmathresult .东南 !.5! (\i .东南)$) -- ($\pgfmathresult \ETC.

答案1

本质上,您唯一的错误是没有()在坐标表达式(包括)周围放置括号\pgfmathresult.south east。但是,只需计算起点并通过相对坐标表达式指定终点,就可以简化虚线的代码-- +(0,1cm)。下面,我对线的起始位置的选择略有不同,它位于前一个节点的右边缘和当前节点的左边缘之间的中间;我不确定您的实际应用是什么。

示例输出

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning,calc}

\begin{document}

\begin{tikzpicture}
  \def\names{{"1", "2"}}
  \foreach \i in {0,1} {%
    \ifnum\i=0\relax
      \node (\i) [draw] {\pgfmathparse{\names[\i]}\pgfmathresult};
    \else
      \pgfmathparse{int(\i-1)}
      \node (\i) [draw,right= 1cm of \pgfmathresult]
            {\pgfmathparse{\names[\i]}\pgfmathresult};
      \draw[dotted] ($(\pgfmathresult.south east) !.5! (\i.south west)$)
            -- +(0,1cm);
  \fi
}
\end{tikzpicture}
\end{document}

相关内容