为什么 \addplot 将我的 \pgfmathdeclarefunction 函数图形向右移动?

为什么 \addplot 将我的 \pgfmathdeclarefunction 函数图形向右移动?

绘制\pgfmathdeclarefunctioned 函数时,图形会向右偏移,该偏移量与公式中调用该函数的次数成比例。

我已将初始代码归结为以下示例,该示例表现出以下行为:

\documentclass[12pt]{scrbook}
\usepackage{tikz,pgfplots}
\begin{document}
    \pgfmathdeclarefunction{f}{1}{ \pgfmathparse{#1 * #1} }
    \begin{figure}
        \centering
        \begin{tikzpicture}
            \begin{axis}
                \addplot {x + 2 * x * x}; %no shift (clearly centered
                %\addplot {x + 2 * f(x)}; %little shift to the right
                %\addplot {x + f(x) + f(x)}; %shifted nearly off the sheet
            \end{axis}
        \end{tikzpicture}
    \end{figure}
\end{document}

在这个例子中,在命令中编写函数显然很容易\addplot。但我有一个更复杂的函数,它在各处使用,并将我的图移出页面。

我对 LaTex 还很陌生,可能在某个地方犯了错误,但我找不到它。那么这到底是什么问题呢?

答案1

这是因为您的函数定义中存在虚假空格。删除它们即可解决问题:

在此处输入图片描述

\documentclass[12pt]{scrbook}
\usepackage{tikz,pgfplots}
\begin{document}
    \pgfmathdeclarefunction{f}{1}{%
        \pgfmathparse{#1*#1}%
    }
    % or \pgfmathdeclarefunction{f}{1}{\pgfmathparse{#1*#1}}
    \begin{figure}
        \centering
        \begin{tikzpicture}
            \begin{axis}
                \addplot {x + 2 * x * x}; %no shift (clearly centered
                \addplot {x + 3 * f(x)}; %little shift to the right
                \addplot {x + f(x) + f(x) + f(x) + f(x)}; %shifted nearly off the sheet
            \end{axis}
        \end{tikzpicture}
    \end{figure}
\end{document}

相关内容