我正在尝试使用 3 个十进制数字来显示从 0 到 1 的标尺。因此我希望标尺看起来像这样:
0.000 0.001 0.002 0.003 ..... 0.010 0.011
等等。
由于这个太长,无法放在一页中,我计划将其分成几页,并且我将这段代码用于第一页
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1.0cm,y=1.0cm]
\draw[ultra thick,color=black] (0,0) -- (26,0);
\foreach \x[evaluate=\x as \text using \x*0.001] in {0,1,2,3,...,40}{
\draw[shift={(\x*0.65,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[yshift = -20pt,rotate = 270] {
\pgfmathparse{\x*0.001}\pgfmathprintnumberto[precision=1] {\pgfmathresult}{\pgfmathresult} \pgfmathresult };
}
\end{tikzpicture}
运行此代码后我得到以下输出
是否有可能获得非标准形式而是书面示例中显示的数字?
是否可以使循环更简单,而不使用评估,而只执行如下操作:
\draw[shift={(\x*0.65,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[yshift = -20pt,rotate = 270] { \x*0.001 };
}
谢谢
答案1
我不太明白\pgfmathparse
既然您已经使用了 ,为什么还要有这些东西。只需在文本中evaluate
使用。禁用科学计数法。使用而不是来获取。\pgfmathprintnumber[fixed,precision=3]{\text}
node
fixed
\pgfmathprintnumber[fixed,fixed zerofill,precision=3]{\text}
0.000
0.0
您不能\x*0.001
直接在节点文本中使用,因为它不会被解析为数字,它只是文本。您可以说node[...]{\pgfmathparse{\x*0.001}\pgfmathprintnumber[fixed,precision=3]{\pgfmathresult}};
,但我会说evaluate
更干净。
\documentclass[border=4mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line cap=round]
\draw[ultra thick,color=black] (0,0) -- (26,0);
\foreach \x[evaluate=\x as \text using \x*0.001] in {0,...,40}{
\draw (\x*0.65,2pt) -- ++(0,-4pt)
node[below=3pt,anchor=west,align=left,rotate = 270]
{\pgfmathprintnumber[fixed,fixed zerofill,precision=3]{\text}};
}
\end{tikzpicture}
\end{document}