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}
内でを使用してください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}