在 PGFPlot 中制作带符号的标签是可选的——TeX 错误:缺少 \endcsname 插入

在 PGFPlot 中制作带符号的标签是可选的——TeX 错误:缺少 \endcsname 插入

我正在尝试创建一个自定义绘图命令,该命令可以选择创建一个标签。为此,我使用了包——尽管可能有更好的方法,但它对我来说很有效。当我想创建一个带有附加符号(例如或但不带有星号 )ifthenelse的标签时,就会出现问题。\prime\star\ast*

这是一个 MVE:

\documentclass{scrbook}
\usepackage[english]{babel} 

\usepackage{pgfplots}
\usepackage{ifthen}

% define new plotting command
\newcommand{\plotMyGraph}[1]{
    % make input variable
    \ifthenelse{#1>0}{
        \def\xTickLbl{ xlabel={test$^\ast$} }
        }{
        \def\xTickLbl{ xlabel={test$^*$} }
        }
    % create picture
    \begin{tikzpicture}
        \begin{axis}[
                    xmin=0,     xmax=1,
                    ymin=-1,    ymax=1,
                    \xTickLbl,
                    ylabel={Test}
                    ]

        \end{axis}
    \end{tikzpicture} 
}

% main document
\begin{document}
    This is a test document.

    \plotMyGraph{0} % works smoothly
    \plotMyGraph{1} % this causes an error
\end{document}

它引发错误,Missing \endcsname inserted. \plotMyGraph{1} 这似乎是一个 TeX 错误,但我的知识太有限,无法猜测,为什么命令\ast不起作用但快捷方式*起作用。

答案1

这些是扩展问题。这里有一个简单方法可以解决它。

\documentclass{scrbook}
\usepackage[english]{babel} 

\usepackage{pgfplots}

% define new plotting command
\newcommand{\plotMyGraph}[1]{
    % make input variable
    % create picture
    \begin{tikzpicture}
        \begin{axis}[
                    xmin=0,     xmax=1,
                    ymin=-1,    ymax=1,
                    xlabel={\ifnum#1>0 test$^{\ast}$ \else test$^*$ \fi},
                    ylabel={Test}
                    ]

        \end{axis}
    \end{tikzpicture} 
}

% main document
\begin{document}
This is a test document.

\plotMyGraph{0} % works smoothly

\plotMyGraph{1} % works smoothly
\end{document}

在此处输入图片描述

这是另一种方法。

\documentclass{scrbook}
\usepackage[english]{babel} 

\usepackage{pgfplots}

% define new plotting command
\newcommand{\plotMyGraph}[1]{
    % make input variable
    % create picture
    \begin{tikzpicture}
        \ifnum#1>0%added second \ast just to make the results distiguishable
        \pgfplotsset{my x label/.style={xlabel=test$^{\ast\ast}$}} 
        \else
        \pgfplotsset{my x label/.style={xlabel=test$^*$}}
        \fi
        \begin{axis}[
                    xmin=0,     xmax=1,
                    ymin=-1,    ymax=1,
                    my x label,
                    ylabel={Test}
                    ]

        \end{axis}
    \end{tikzpicture} 
}

% main document
\begin{document}
This is a test document.

\plotMyGraph{0} % works smoothly

\plotMyGraph{1} % works smoothly
\end{document}

什么是“最佳”取决于你真正要用它做什么。

相关内容