我正在尝试使用 tikz foreach 进行一个简单的计算,但它做了一些非常令人惊讶的事情:
\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\setlength\PreviewBorder{2pt}
\begin{document}
\begin{preview}
\def\radius{10}
\def\step{6}
\begin{tikzpicture}
\def\stepsize{\number\numexpr180/\step\relax}
\foreach \Angle in {0.5\stepsize,1.5\stepsize,...,180} {\node [right] at (\Angle:10) {\Angle};}
\end{tikzpicture}
\end{preview}
\end{document}
这是一个非常非常小的步长。如果我写 0.5*\stepsize,它会告诉我这是一个非法单位。当然我可以通过定义一半和 1.5 步长来解决这个问题。你知道为什么会发生这种情况吗?
答案1
问题来自于.5
和的连接,\stepsize
使得。.530
1.530
\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\setlength\PreviewBorder{2pt}
\begin{document}
\begin{preview}
\def\radius{10}
\def\step{6}
\def\stepsize{\number\numexpr180/\step\relax}
\pgfmathtruncatemacro{\first}{0.5*\stepsize}
\pgfmathtruncatemacro{\step}{1.5*\stepsize}
\stepsize
\begin{tikzpicture}
\foreach \Angle in {\first,\step,...,180} {\node [right] at (\Angle:10) {\Angle};}
\end{tikzpicture}
\end{preview}
\end{document}
和evaluate
\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\setlength\PreviewBorder{2pt}
\begin{document}
\begin{preview}
\def\radius{10}
\def\step{30}
\def\First{15}
\pgfmathtruncatemacro{\NbStep}{(180-\First)/\step}
\begin{tikzpicture}
\foreach \i [evaluate=\i as \Angle using int(\First+\step*\i)]
in {0,1,...,\NbStep} {%
\node [right] at (\Angle:\radius) {\Angle} ;
}
\end{tikzpicture}
\end{preview}
\end{document}