代码:
\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}