pgfplots 'typeset ticklabel' 卡在 siunitx \num 中

pgfplots 'typeset ticklabel' 卡在 siunitx \num 中

我想使用 来格式化我的轴标签\num,但如果我在里面使用 ,typeset ticklabel编译\num就会卡住。请看这个最小示例:

\documentclass[tikz,margin=1cm]{standalone}
\usepackage{pgfplots,siunitx}
\pgfplotsset{compat=1.17}
\def\mynum#1{(#1)}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    typeset ticklabel/.code = { \mynum{#1} },
    % typeset ticklabel/.code = { \num{#1} },
  ]
  \addplot [red] plot [domain=-1:1] {x^2};
\end{axis}
\end{tikzpicture}
\end{document}

使用\mynum进行任意格式化可以正常工作,但使用siunitx\num卡住。这是什么问题?

答案1

typeset ticklabel手册中未记录该密钥pgfplots(2020/02/29 修订版 1.17)。根据懒惰松鼠的评论,它仅供内部使用。因此,如果您不具备某些pgfplots内部知识,您真的不能指望它能带来任何好处。

一种有记录且有效的方法是使用xticklabelyticklabel样式(请参阅刻度坐标和标签文本在手册中)。例如,在下面的例子中,我们要求siunitx在刻度标签中使用逗号作为小数分隔符,并省略小数部分的尾随零:

\documentclass[tikz,margin=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usepackage{siunitx}
\sisetup{output-decimal-marker={,}, zero-decimal-to-integer}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    xticklabel = {$\num{\tick}$},
    yticklabel = {$\num{\tick}$},
  ]
  \addplot [red] plot [domain=-1:1] {x^2};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

当然,siunitx设置可以在本地完成,如下所示:

\begin{tikzpicture}
\sisetup{output-decimal-marker={,}, zero-decimal-to-integer}
\begin{axis}[
    xticklabel = {$\num{\tick}$},
    yticklabel = {$\num{\tick}$},
  ]
  \addplot [red] plot [domain=-1:1] {x^2};
\end{axis}
\end{tikzpicture}

(在这种情况下它不会影响 之外的任何内容tikzpicture),甚至不会影响 的可选参数\num

xticklabel = {%
  $\num[output-decimal-marker={,},
        zero-decimal-to-integer]{\tick}$%
}

相关内容