在 pgfplots 中使用 int() 函数的失控参数

在 pgfplots 中使用 int() 函数的失控参数

下面的 MWE 得出

Runaway argument?
3\pgfflt@EOI \ifpgfmathfloatparsenumberpendingperiod \pgfmathfloat@a@Mtok \ETC.
./TeX-SE.tex:29: Paragraph ended before \pgfflt@readlowlevelfloat was complete.
<to be read again> 
                   \par 

当我尝试使用手册int()中所述的功能时pgf

在此处输入图片描述

笔记:

  • 添加图表floor只是为了显示语法正确。因此,交换第二个\addplot会产生输出。

代码:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis lines=middle
]
%% This works
\addplot [
    jump mark mid,
    domain=-3:3,
    samples=100,
    very thick, red
] {floor(x)};
%%% This now no work.
\addplot [
    jump mark mid,
    domain=-3:3,
    samples=100,
    very thick, red
] {int(x)};
\end{axis}
\end{tikzpicture}
\end{document}

答案1

如果其他人遇到此错误,我会发布我的解决方法,直到错误得到修复。我定义了

MyInt(\x)=x-mod(\x,1)

得出的结果是:

在此处输入图片描述

笔记

代码:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\tikzset{
    declare function={Floor(\x)=round(\x-0.5);},% floor() is broken.
    declare function={MyInt(\x)=x-mod(\x,1);},
}


\begin{document}
\begin{tikzpicture}
\begin{axis}[
    xmin=-3.2, xmax=3.2,
    ymin=-2.2, ymax=2.2,
    axis lines=middle
]

\addplot [
    jump mark mid,
    domain=-3:3,
    samples=100,
    very thick, red
] {MyInt(x)};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容