使用 LaTeX。尝试了解\newcommand
命令的工作方式。是否可以使用内置语法为第一个参数以外的多个参数设置默认值?我找不到设置超过 1 个的示例。
嗯,我发现使用地图的示例,但我真的只是想学习语言。现在还不需要发疯。
答案1
您确实想使用\NewDocumentCommand
而不是,\newcommand
但是,如果您考虑的是默认参数,那么您应该查看包keyval
。很大程度上取决于您到底想做什么。
答案2
由于问题是关于学习如何\newcommand
处理可选参数,答案是\newcommand
构造可以间接地消化多个可选参数,但方式不可扩展。该技术涉及调用第二个辅助宏来吸收第二个可选参数。
还要注意,如果没有定义第一个可选参数,就无法定义第二个可选参数。
这里,\first
是用户宏,带有两个可选参数和一个强制参数。它使用辅助宏\Second
来吸收第二个可选参数(和强制参数)。还请注意,\firstarg
如果需要恢复第一个可选参数的实际标记,则必须将其展开一次。
\documentclass{article}
\newcommand\first[1][optA]{\def\firstarg{#1}\Second}
\newcommand\Second[2][optB]{The arguments are \firstarg, #1, and #2}
\begin{document}
\first{X}
\first[Z]{X}
\first[Z][Y]{X}
\end{document}