為什麼 \pgfmathtruncatemacro 不能是標籤?

為什麼 \pgfmathtruncatemacro 不能是標籤?

我正在嘗試使用 pgfmath 來計算模值。但是,當我嘗試將此值作為節點的標籤時,它無法編譯。

以下程式碼失敗:

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}

    \pgfmathsetmacro{\N}{5}

    \foreach \x in {0,...,\N}
    {
        \pgfmathtruncatemacro{\next}{Mod(\x+1,\N)}
        \node at (\next,0) {\next};
%        \node at (\next,0) {\x};
    }

\end{tikzpicture}

\end{document}

它給出錯誤:「缺少 } 插入。} l.16 }」。第 16 行是帶有“}”的行。

我將帶有“\node”的行替換為註解掉的行的程式碼,它確實可以編譯(作為範例)。有人可以解釋一下出了什麼問題以及我該如何解決它嗎?

我嘗試做中所做的事情這個答案,但數學模式似乎對我沒有幫助。

謝謝!

答案1

不要使用\next,因為它很特殊。它在整個核心中使用,並且可以重新定義,從而導致您遇到的問題。相反,使用更具描述性的內容,例如\nextnode.

答案2

當鈦kZ 處理你的節點,它使用

\let\next=

{吸收代碼中的開始組字符

\node at (\next,0) {\next};

因此\next直到Mod(\x+1,\N)TikZ進入節點。

\next這就是為什麼你可以在座標中使用的原因

\node at (\next,0) {\x};

但不能在節點中使用它。

相關內容