我观察到一种奇怪的行为,即在绘制由 定义的函数时出现不必要的水平坐标偏移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