直接提问:
\newcommand{\optaxis}[1][]{
\ifemptyarg{#1}
{\begin{axis} [xtick={0}, xmin=-1, xmax =1, xticklabels={#2}, box plot width=5mm]}
{\begin{axis} [xtick={0,1}, xmin=-1, xmax =2, xticklabels={{#1},{#2}}, box plot width=5mm]}%
}
我怎样才能让这里的部分正常工作 - {{#1},{#2}}
- 我遇到了各种错误,似乎无法解决。如果我将其更改为,{test,test2}
它就可以正常工作并编译良好。
具体的错误信息为:
您的意思是输入 ## 而不是 #,对吗?
编辑:
我正在尝试使用这里:
\makeatletter
\def\ifemptyarg#1{%
\if\relax\detokenize{#1}\relax % H. Oberdiek
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
\makeatother
\newcommand{\optaxis}[1][]{
\ifemptyarg{#2}
{\begin{axis} [xtick={0}, xmin=-1, xmax =1, xticklabels={#1}, box plot width=5mm]}
{\begin{axis} [xtick={0,1}, xmin=-1, xmax =2, xticklabels={{#1},{#2}}, box plot width=5mm]}
}
我希望能够像这样调用它:
\optaxis{test1}
\optaxis{test1, test2}
并分别进行调用。
答案1
您已定义一个带有一个参数的命令
\newcommand{\optaxis}[1][]{
所以你不能使用#2
我怀疑你只是想要
\newcommand{\optaxis}[1][]{%%%
\begin{axis} [xtick={0}, xmin=-1, xmax =1, xticklabels={#1}, box plot width=5mm]}
以便
\optaxis
是xticklabels={}
\optaxis[test1]
是xticklabels={test1}
\optaxis[test1,test2]
是xticklabels={test1,test2}
或者可能根本没有可选参数,因此
\newcommand{\optaxis}[1]{%%%
\begin{axis} [xtick={0}, xmin=-1, xmax =1, xticklabels={#1}, box plot width=5mm]}
以便
\optaxis{test1}
是xticklabels={test1}
\optaxis{test1,test2}
是xticklabels={test1,test2}