我有这个例子
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \i in {0,2,...,10}
{\node[circle,draw] (\i) at (0,\i) {\i}; }
\foreach \i in {1,3,...,11}
{\node[circle,draw] (\i) at (2,\i) {\i}; }
\foreach \i in {0,2,...,8}
{\pgfmathparse{\i+1}\draw (\i)--(\pgfmathresult);}
\draw (10)--(11);
\end{tikzpicture}
\end{document}
使用此输出
为什么右侧节点的线路通向东侧?
答案1
结果为小数,例如1.0
,这是边界上的一个点。您需要一个整数1
:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \i in {0,2,...,10}
{\node[circle,draw] (\i) at (0,\i) {\i}; }
\foreach \i in {1,3,...,11}
{\node[circle,draw] (\i) at (2,\i) {\i}; }
\foreach \i in {0,2,...,8}
{\pgfmathparse{int(\i+1)}\draw (\i)--(\pgfmathresult);}
\draw (10)--(11);
\end{tikzpicture}
\end{document}
答案2
Ulrike 告诉了你为什么会出错。但你也可以稍微简化一下。以下是两个奇偶比较的例子,它们的结果相同。对于简单的表达式,通常使用 就足够了\numexpr\x-1\relax
(如果需要额外的扩展,那么你可以在前面加上\number
)
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach\x[evaluate={\xx=isodd(\x)*2},count=\xi from -1]in{0,...,11}{
\node[circle,draw] (n-\x) at (\xx,\x) {\x};
\ifodd\x\relax\draw (n-\x) -- (n-\xi);\fi
}
\end{tikzpicture}
\end{document}