为什么 TikZ/pgf 的 \foreach[remember] 不适用于显式列表?

为什么 TikZ/pgf 的 \foreach[remember] 不适用于显式列表?

简短版本:当使用时\foreach \x in [remember=\x as \lastx],迭代in {1,...,3}有效,但迭代in {1,2,3}无效。

我已阅读了手册段落,/pgf/foreach/remember但没有看到任何内容表明为什么会出现这种情况。

这在迭代多个数值变量时尤其麻烦,因为x0/y0,...,xn/yn不管怎样,这似乎都不起作用。当然,当你的列表只是没有遵循算术序列。

梅威瑟:

\documentclass{standalone}  % same outcome with article

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \draw (0, 0) node[above] {
    \foreach \x [
      remember=\x as \lastx (initially 0)
    ] in {1,2,3}
    {\x, \lastx;\quad}
  };
  \draw (0, -1) node[above] {
    \foreach \x [
      remember=\x as \lastx (initially 0)
    ] in {1,...,3}
    {\x, \lastx;\quad}
  };
  \draw (0, -2) node[above] {
    \foreach \x / \y [
      remember=\x as \lastx (initially 0),
      remember=\y as \lasty (initially 0),
    ] in {1/11,2/22,3/13}
    {$(\x,\y), (\lastx,\lasty)$;\quad}
  };
\end{tikzpicture}

\end{document}

MWE 输出:顶行显示“1, 0; 2, 0; 3, 0”(错误);第二行显示“1, 0; 2, 1; 3, 2”(正确);底行显示“(1, 11), (0, 0); (2, 22), (0, 0); (3, 33), (0, 0)”(错误,并且无法通过转换为 <code>...</code> 符号来修复))

如果这不是一个如此普遍的用例,我会倾向于认为这是一个错误……

相关内容