我正在嘗試使用 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}