pgfplots:x vs \x

pgfplots:x vs \x
  • 这个问题是这个问题“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或有什么关系?\xaddplot

答案1

据我了解,这仅当您想使用时才重要lua backend。第 6.3.1 节(减少排版时间--路亚系统)pgfplots手册中解释道:

涉及宏定义的数学表达式在 中不可用lua backend。最佳实践:优先使用declare function宏常量

这不仅适用于您自己定义的变量/函数,也适用于由 定义的变量/函数pgfplots\x是一个“禁用” 的宏,用于使用lua backend数值\addplot上较差的 TeX 例程。x另一方面,是使用(等同于)定义的declare function,因此lua backend可以处理它。

如果您不使用LuaTeX(或设置lua backendfalse),则始终使用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}

MWE 输出

TeX 后端的数值误差导致第一个图(使用\x)中出现意外结果,而第二个图(使用x)中没有出现该结果,后者由 计算得出lua backend。使用 pdfLaTeX 而不是 LuaLaTeX 进行编译或禁用lua backend(通过取消注释相应的行)将导致第二个图与第一个图完全相同。

相关内容