这个问题是这个问题(“pgfplots:
\tanh
函数中出现奇怪的凸起”)。斯蒂芬·平诺对 略知一二 的人给出了区分和(以vs作为论据)
pgfplots
的答案。\addplot{tanh(\x)};
\addplot{tanh(x)};
x
\x
Stefan 在评论中表示,“我的想法也是 tanh(\x) 与 tanh(x) 相同,但 Lua 似乎“不喜欢”“命令”,即
\<something>
。但根据我的经验,我从未在 \addplot 调用中使用过 \x。因为这更容易阅读,也更容易输入 [...]“。% use TeX as calculation engine \addplot {tanh(\x)}; % use Lua as calculation engine (when compiled with LuaLaTeX of course) \addplot+ [very thick] {tanh(x)};
当前
pgfplots
手动的(修订版 1.18.1 (2021/05/15)) 在第 4.3.3 章 (使用数学表达式计算坐标) 中指出:“简而言之:在数学表达式中,无论你写 \x 还是只写 x 都是一样的。”。
- 问题:在什么情况下我在论证中使用
x
或有什么关系?\x
addplot
答案1
据我了解,这仅当您想使用时才重要lua backend
。第 6.3.1 节(减少排版时间--路亚系统)pgfplots
手册中解释道:
涉及宏定义的数学表达式在 中不可用
lua backend
。最佳实践:优先使用declare function
宏常量
这不仅适用于您自己定义的变量/函数,也适用于由 定义的变量/函数pgfplots
。\x
是一个“禁用” 的宏,用于使用lua backend
数值\addplot
上较差的 TeX 例程。x
另一方面,是使用(等同于)定义的declare function
,因此lua backend
可以处理它。
如果您不使用LuaTeX(或设置lua backend
为false
),则始终使用TeX后端,\x
并且x
行为相同。
一个 MWE 来说明差异(使用 LuaLaTeX 进行编译):
% !TeX program = lualatex
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
%\pgfplotsset{lua backend=false}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[domain=6:8] {tanh(\x) - 1};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}
\addplot[domain=6:8] {tanh(x) - 1};
\end{axis}
\end{tikzpicture}
\end{document}
TeX 后端的数值误差导致第一个图(使用\x
)中出现意外结果,而第二个图(使用x
)中没有出现该结果,后者由 计算得出lua backend
。使用 pdfLaTeX 而不是 LuaLaTeX 进行编译或禁用lua backend
(通过取消注释相应的行)将导致第二个图与第一个图完全相同。