我可以只定义一个 \newcommand 或 \def 来接收不同的输出吗?

我可以只定义一个 \newcommand 或 \def 来接收不同的输出吗?

我想知道我是否可以得到各种输出,只有一个\newcommand\def定义。假设我有这样的命令:

\newcommand{\command1}[x]{blablabla}

我不知道上面给出的例子的语法是否正确(显然我想知道它的语法)但我只是希望在我使用时得到这样的输出\command1[x]{}

  • 如果(x)== 1:输出:ABC
  • 如果(x)==2:输出:CBA
  • 如果(x)== 3:输出:NNN

可以这样做吗?提前谢谢您。

答案1

像这样?

\documentclass[11pt,a4paper]{report}

\newcommand{\foo}[1]{%
  \ifnum #1=1 %
    ABC%
  \fi%
  \ifnum #1=2 %
    CBA%
  \fi%
  \ifnum #1=3 %
    NNN%
  \fi%
}
\begin{document}
test \foo{1}

test \foo{2}

test \foo{3}
\end{document}

在此处输入图片描述

当然,例如,如果您传递,这种方法将不返回任何内容\foo{4}

答案2

如果选择是连续的数字范围,我会使用一个\ifcase构造:

\newcommand\foo[1]
  {%
    \ifcase#1
      Stuff for 0.%
    \or
      Stuff for 1.%
    \or
      Stuff for 2.%
    \else
      Stuff for other cases.%
    \fi
  }

答案3

这里有一个 expl3 变体,它也可以用于数字以外的其他东西:

\documentclass{article}
\ExplSyntaxOn
\newcommand\mycommand[1]
 { 
   \str_case:nn {#1}
   { 
     {1}{ABC}
     {2}{CBA}
     {3}{NNN}
     {x}{XXX}
   }  
 }
\ExplSyntaxOff

\begin{document}
\mycommand{1}

\mycommand{2}

\mycommand{3}

\mycommand{x}
\end{document}

在此处输入图片描述

答案4

\def这里的其他答案中没有提及原始内容。

\def\command#1{\ifcase#1\or ABC\or CBA\or NNN\fi}

\command1 % outputs ABC
\command2 % outputs CBA
\command3 % outputs NNN

\bye

相关内容