Я пытаюсь сделать отображение линейки от 0 до 1 с использованием 3 десятичных чисел. Поэтому я хотел бы, чтобы линейка выглядела примерно так:
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}
После запуска этого кода я получаю следующий вывод
Можно ли получить число не в стандартном виде, а как показано в письменном примере?
Можно ли сделать цикл более простым и не использовать estimate, а просто сделать что-то вроде:
\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}