標準形式を使用せずにTikZで3つの小数点を出力する

標準形式を使用せずにTikZで3つの小数点を出力する

3 つの 10 進数を使用して 0 から 1 までの定規表示を作成しようとしています。そのため、定規は次のようになります。

0.000 0.001 0.002 0.003 ..... 0.010 0.011

などなど。

これは1ページに収まらないほど長いので、いくつかのページに分割して、最初のページにこのコードを使用する予定です。

\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}

このコードを実行すると、次の出力が得られます。

ここに画像の説明を入力してください

標準形式ではなく、書面の例に示されている番号を取得することは可能ですか?

ループをもっとシンプルにして、evaluate を使用せずに次のようにすることは可能ですか?

\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}内でを使用してくださいnodefixedは科学的記数法を無効にします。の代わりにを使用する\pgfmathprintnumber[fixed,fixed zerofill,precision=3]{\text}と、 が得られます。0.0000.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}

関連情報