TikZ 绘图函数:绘制自定义函数时坐标发生奇怪的偏移

TikZ 绘图函数:绘制自定义函数时坐标发生奇怪的偏移

我观察到一种奇怪的行为,即在绘制由 定义的函数时出现不必要的水平坐标偏移pgfmathdeclarefunction

显然,我在函数定义中做错了什么,但是是什么呢?

梅威瑟:

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{math}

\begin{document}
    
    \pgfmathdeclarefunction{line}{1}{
        \pgfmathparse{#1}
    }

    \makeatletter
    \pgfmathdeclarefunction{Line}{1}{
        \begingroup
            \pgf@x=#1pt\relax
            \pgfmathreturn\pgf@x
        \endgroup
    }
    \makeatother
    
    \begin{tikzpicture}
        \draw[very thin,color=gray](-0.1,-1.1) grid (18.1,3.1);
    
        \draw (0,0) circle [radius=10pt];
        \draw[thick,domain=0:1] plot (\x,\x);
        \draw[red,thick,domain=0:1] plot (\x,{line(\x)});
        \draw (0,0) circle [radius=10pt];
        \draw[blue,thick,domain=0:1] plot (\x,{Line(\x)});
        \draw (0,0) circle [radius=10pt];
    \end{tikzpicture}
    
\end{document}

第一个定义(line)仅仅是一个包装器,在第二个定义(Line)中我完全遵循了 pgf 教程的语法。

这些圆圈只是为了证明坐标系确实发生了改变。

有人能解释一下这里发生了什么吗?

在此处输入图片描述

答案1

\pgfmathdeclarefunction{line}{1}{%%%%%%%%
    \pgfmathparse{#1}%%%%%%%
}
    
\makeatletter
\pgfmathdeclarefunction{Line}{1}{%%%%%
    \begingroup
    \pgf@x=#1pt\relax
    \pgfmathreturn\pgf@x
    \endgroup
}
\makeatother

不知道为什么 TikZ 不忽略空格。不过,只有pdflatex/有问题lualatex。但xelatex

相关内容