我正在尝试使用 pgfplots 中的 atan 绘制某些内容,但它总是导致数百个错误。
我正在使用在这里找到的一个例子:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\pgfplotsset{compat=1.9}
\begin{tikzpicture}
\begin{axis}[
width=160pt,compat=1.5.1,grid style={ultra thin},every axis plot post/.append style={thick},
x tick label style={font=\tiny},y tick label style={font=\tiny},
scale only axis,grid=major,axis lines=middle,
xlabel={$x$},
ylabel={$y$},
xmin=-200,
xmax=200,
domain=-200:210,
ymin=-5.5,
ymax=5.5,
xtick={-150,-100,...,150},
ytick={-5, -4,...,5},
restrict y to domain=-20:20,
legend style={at={(0.5,-0.05)},anchor=north,nodes={right}},
]
\addplot[mark=none,color=blue, samples=500]{rad(atan(x))};
\addlegendentry{$y = \tan^{-1}x $};
\end{axis}
\end{tikzpicture}
\end{document}
错误如下:
! Undefined control sequence.
<recently read> \pgfmath@multiply@thousand
l.23 ...ne,color=blue, samples=500]{rad(atan(x))};
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Undefined control sequence.
\pgfmath@basic@atan@ ... pt \pgfmath@table@lookup
{\pgfmath@x }{pgfmath@atan...
l.23 ...ne,color=blue, samples=500]{rad(atan(x))};
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! Missing number, treated as zero.
<to be read again>
}
l.23 ...ne,color=blue, samples=500]{rad(atan(x))};
这种情况一直持续下去。出现上百个错误后,编译停止,没有任何结果。我在这里做错了什么?
答案1
根据您的日志文件,您有pgfplots
1.11 和pgf
2.10 。 我可以在此组合中重现该问题。
它适用于最新的两个软件包(即pgfplots
1.11 和pgf
3.00)。
它适用于pgfplots
1.10 和pgf
2.10。
您的解决方案替代方案包括:
升级 PGF 至 3.00 或
将 pgfplots 降级到 1.10 或
\addplot ... gnuplot {atan(x)};
暂时使用。
编辑事实证明,这个问题实际上比预期的还要严重:未定义控制序列:\pgfmath@multiply@thousand和Miktex 2.9 pgfplots,circuitikz 库碰撞问题似乎有着相同的根本原因。
根本原因是pgfplots
尝试修补旧的 PGF 版本;但该补丁无法应用(即它是 中的一个错误pgfplots
)。
要解决这个问题,您可以按照选项 (1) 或 (2) 进行操作。或者您可以添加以下行
% HACK: deactivate feature 'trig format' but restore compatibility
% between pgfplots 1.11 and tikz 2.10:
\csname pgfutil@ifundefined\endcsname{pgfmathiftrigonometricusesdeg}{%
\def\pgfmathiftrigonometricusesdeg#1#2{#1}%
}{}%
前正在加载pgfplots
。在这种情况下,它将假定所有内容都是最新的,并且不会尝试应用损坏的补丁。应用此补丁的风险: 1.11trig format plots
中引入的功能pgfplots
将不起作用。但它最终会起作用(可能是在 PGF 3.0.0 之后的版本中)。