Imprima 3 decimais no TikZ sem usar o formulário padrão

Imprima 3 decimais no TikZ sem usar o formulário padrão

Estou tentando exibir uma régua de 0 a 1 usando 3 números decimais. Então, eu gostaria que a régua fosse parecida com isto:

0,000 0,001 0,002 0,003 ..... 0,010 0,011

E assim por diante.

Como isso demoraria muito para caber em uma página, pretendo dividi-lo em várias páginas e uso esse trecho de código para a primeira página

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

Depois de executar este código, recebo a seguinte saída

insira a descrição da imagem aqui

É possível obter o número não na forma padrão, mas mostrado no exemplo escrito?

É possível tornar o loop mais simples e não usar avaliar e apenas fazer algo como:

\draw[shift={(\x*0.65,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[yshift = -20pt,rotate = 270] { \x*0.001 };
}

Obrigado

Responder1

Não entendo muito bem por que você tem essas \pgfmathparsecoisas quando já está usando o evaluate. Basta usar \pgfmathprintnumber[fixed,precision=3]{\text}no nodetexto. fixeddesativa a notação científica. Use \pgfmathprintnumber[fixed,fixed zerofill,precision=3]{\text}para obter 0.000em vez de 0.0.

Você não pode usar \x*0.001texto diretamente no nó, pois ele não é analisado como um número, é apenas texto. Você poderia dizer node[...]{\pgfmathparse{\x*0.001}\pgfmathprintnumber[fixed,precision=3]{\pgfmathresult}};, mas eu diria que evaluateé mais limpo.

insira a descrição da imagem aqui

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

informação relacionada