\pgfmathprintnumber 无法解析我的数字

\pgfmathprintnumber 无法解析我的数字

我试图找到一种在 tikz 中以特定方式写入数字的方法(我想去掉“.0”。请参阅下面的代码)。我挣扎了一段时间,直到我发现percusse 的回答(我不知道 int() 函数存在)。现在我有一个可以满足我需求的解决方案。

然而,在我寻找完美的数字格式时,我偶然发现这个文件。在第 92 节 - 数字打印(第 945 页)中,描述了 \pgfmathprintnumber 和 \pgfkeys 命令/宏以及 \pgfkeys 的格式/精度选项。这似乎是个好主意,但由于某种原因,它不起作用。我仍然不明白为什么它不起作用。以下是示例代码:

\documentclass[10pt]{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \pgfkeys{/pgf/number format/.cd,fixed,precision=0} % "precision = 0" does not print the trailling zeroes

    \draw[domain=0:10,smooth,variable=\x,blue,samples=100] plot ({\x},{sin(\x * pi r)}); % Sine
    \draw (0, 0) node[left] {AC voltage};
    \draw[dashed] (0, 0) -- (10, 0);
    \foreach \x in {0, 2, ..., 10} { \draw[dashed] (\x, -1.25) -- (\x, 2); } % Vertical lines
    \foreach \x in {0, 2, ..., 8}
    {
        % Problematic line:
        \draw[<->] (\x, -1.2) -- node[below] {\pgfmathprintnumber{\x/2+1}} (\x + 2, -1.2); % This line doesn't work
%       \draw[<->] (\x, -1.2) -- node[below] {\pgfmathparse{int(\x/2+1)}\pgfmathresult} (\x + 2, -1.2); % This line works perfectly
    }

\end{tikzpicture}
\end{document}

我得到的错误是

! Package PGF Math Error: Could not parse input '0/2+1' as a floating point number, sorry. The unreadable part was near '/2+1'..

我尝试使用 \pgfmathprintnumberto 和 format/fixed zerofill=boolean,如手册,但似乎没有什么效果。

提前致谢!

答案1

您需要使用\pgfmathparse进行计算,然后\pgfmathprintnumber打印结果。

这是您修改后的 MWE:

\documentclass[10pt]{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \pgfkeys{/pgf/number format/.cd,fixed,precision=0} % "precision = 0" does not print the trailling zeroes

    \draw[domain=0:10,smooth,variable=\x,blue,samples=100] plot ({\x},{sin(\x * pi r)}); % Sine
    \draw (0, 0) node[left] {AC voltage};
    \draw[dashed] (0, 0) -- (10, 0);
    \foreach \x in {0, 2, ..., 10} { \draw[dashed] (\x, -1.25) -- (\x, 2); } % Vertical lines
    \foreach \x in {0, 2, ..., 8}
    {
        % Problematic line:
        \draw[<->] (\x, -1.2) -- node[below] {\pgfmathparse{\x/2+1}\pgfmathprintnumber\pgfmathresult} (\x + 2, -1.2); % This line doesn't work
    }

\end{tikzpicture}
\end{document}

相关内容