我想知道是否有办法使用命令(包括使用创建的自定义命令\newcommand
)作为参数/选项值。我想做这样的事情
\usepackage[someoption=\somecommand]{somepackage}
\usepackage[supporters={First line\\ Second Line}]{someotherpackage}
答案1
如果您在 之前加载xkvltxp
(或kvoptions-patch
或catoptions
) 包\documentclass
,则不会有问题:您可以将命令作为选项的值传递。要在 之前加载包\documentclass
,您当然应该使用\RequirePackage
而不是\usepackage
。
答案2
两种选择
\ifdef
您可以检查包中是否定义了 csname ,这样就可以检查\csname
在调用之前是否将其定义为宏\usepackage
。这不完全是您所要求的,但我猜它应该能满足您的要求;- 您可以将命令名称作为不带反斜杠的字符串传递(例如,到
\input
),然后使用绑定该命令\edef\inputcs{\def\passname#1{\csname#1\endcsname}\expandafter\passname\input}
。