我已经看到过几个相关问题,但似乎没有一个专门解决这个问题。
我想定义一个接受可变数量参数的命令。例如
\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]