我想将线段分割成 5 个等长线段,并在新的分割点处放置刻度标记。我希望刻度标记显示为黑色。接下来,我想将每个新线段分割成 5 个等长线段,并希望仅将新刻度标记涂成蓝色。
为了完成这个任务,我使用了 TikZ,以下是代码。
\documentclass[11pt]{amsart}
\usepackage{pgf,tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,10)-- (15,10);
\foreach \x in {0,...,5}
\draw (3*\x,10)--(3*\x,9.8);
\foreach \x in {1,...,4,6,...,9,11,...,14,16,...,19,21,...,24}
\draw[draw=blue] (3*\x/5,10)--(3*\x/5,9.8);
\end{tikzpicture}
\end{document}
但结果却不是我们所期望的结果。
所以我阅读了手册,它建议我至少应该包含两个起始数字。我相应地编辑了代码,并获得了所需的结果。新代码如下所示。
\documentclass[11pt]{amsart}
\usepackage{pgf,tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,10)-- (15,10);
\foreach \x in {0,...,5}
\draw (3*\x,10)--(3*\x,9.8);
\foreach \x in {1,...,4, 6,7,...,9, 11,12,...,14,16,17,...,19, 21,22,...,24}
\draw[draw=blue] (3*\x/5,10)--(3*\x/5,9.8);
\end{tikzpicture}
\end{document}
这是我的难题。如果您将起始数字和结束数字提供给知道增量为 1(默认情况下)的计数器,那么您不必提供两个起始数字。
情况似乎确实如此,因为以下内容有效。
\foreach \x in {0,...,5}
\draw (3*\x,10)--(3*\x,9.8);
但是,计数器第二次似乎失去了这种能力,因为我必须给出两个数字来提醒计数器增量是 1。(这是我的假设。)
这背后的原因是什么?
答案1
通过反复试验,似乎每当 TikZ 的步长增量大小不明确时,它都会简单地假设前一个整数当前索引减一作为步长。换句话说,当您输入 时{1,...4,6,...20}
,它会给出{1,2,3,4,6,11,16}
步长6-1=5
,同样,如果您输入 ,{1,...4,8.7,...25}
您将获得{1,2,3,4,8.7, 16.4, 24.09999}
步长8.7-1=7.7
。您可以使用以下方法自行测试
\begin{tikzpicture}
\foreach \x in {1,...,4,8,...,25}
{\node at (\x / 2,0) {$\x$};}
\end{tikzpicture}
它也适用于这样的字母
\begin{tikzpicture}
\foreach \x [count = \xi] in {a,...,c,f,...,z}
{\node at (\xi,0) {$\x$};}
\end{tikzpicture}
结果a,b,c,f,k,p,u,z
答案2
这不是对您的问题的回答,但它是一种在两种\foreach
帮助下绘制黑色和蓝色勾号的方法。
\documentclass[11pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,10)-- (15,10);
\foreach \x in {0,...,4}{
\draw (3*\x,10)--++(0,-0.2);
\foreach \j in {1,...,4}
\draw[draw=blue] ({3*(\x+\j/5)},10)--++(0,-0.2);
}
\draw (3*5,10)--++(0,-0.2);
\end{tikzpicture}
\end{document}