
我正在嘗試使用 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};
但不能在節點中使用它。