带有可变数量参数的新命令

带有可变数量参数的新命令

我已经看到过几个相关问题,但似乎没有一个专门解决这个问题。

我想定义一个接受可变数量参数的命令。例如

\newcommand{\func}(1){\if{#1}{f(#1)}{f}}

因此,如果有一个参数,则输出将是f(#1),如果没有参数,则输出将是f,并且永远不会f()

这可能吗?

答案1

这个xparse包允许使用一些非常酷的语法。

\documentclass{article}
\usepackage{xparse}

\NewDocumentCommand\funcF{d()}{%
  \IfValueTF{#1}{f(#1)}{f}}

% This is a version that follows more popular LaTeX syntax conventions.
\NewDocumentCommand\NormalFuncF{o}{%
  \IfValueTF{#1}{f(#1)}{f}}

\begin{document}
\[ \funcF(2) = 4       \]
\[ \funcF              \]
\[ \NormalFuncF[2] = 4 \]
\[ \NormalFuncF        \]
\end{document}

输出

答案2

可选参数应该[]使用

\newcommand{\func}[1][]{f\ifx\relax#1\relax\else(#1)\fi}

用作

\func 或者\func[x]

相关内容