LaTeX:如何使用必需的参数作为可选参数的默认参数?
我正在尝试创建一个带有两个参数的 LaTeX 命令,其中一个参数是可选的。 通常我会这样做,因为
\newcommand{\whatever}[2][default]{first #1 second #2}
default
是第一个参数的默认值。 但对于这个命令,我希望将第二个参数的值用作第一个参数的默认值 - 也就是说,我想
\whatever{blah}
\whatever{foo}
\whatever[lol]{rofl}
相当于
\whatever[blah]{blah}
\whatever[foo]{foo}
\whatever[lol]{rofl}
有人知道如何做到这一点吗? 如有必要,我可以降级到纯 TeX。
I'm trying to create a LaTeX command with two arguments, one of them optional. Normally I'd do this as
\newcommand{\whatever}[2][default]{first #1 second #2}
where default
is the default value for the first argument. But for this command I want the value of the second argument to be used as the default value for the first argument - that is, I want
\whatever{blah}
\whatever{foo}
\whatever[lol]{rofl}
to be equivalent to
\whatever[blah]{blah}
\whatever[foo]{foo}
\whatever[lol]{rofl}
Does anyone know how to do this? I can drop down to plain TeX if necessary.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
LaTeX 内核有一个内置的方法可以做到这一点,尽管它没有被广泛使用。 下面是一个示例:
显然,如果您在
.sty
或.cls
文件中执行此操作,则可以删除\makeatletter
命令。The LaTeX kernel has an inbuilt method of doing this, although it's not widely used. Here's an example:
Obviously, the
\makeatletter
commands can be dropped if you're doing this inside a.sty
or.cls
file.一个丑陋的黑客:
大概你想要一些更干净的东西,但这就是我所拥有的。
根据您的语义,
uniquenonesense
可能为空。An ugly hack:
Presumably you wanted something cleaner, but that's what I've got.
Depending on your semantics,
uniquenonesense
might be empty.