如何使用命令或多行值作为包选项/参数?

如何使用命令或多行值作为包选项/参数?

我想知道是否有办法使用命令(包括使用创建的自定义命令\newcommand)作为参数/选项值。我想做这样的事情

\usepackage[someoption=\somecommand]{somepackage}
\usepackage[supporters={First line\\ Second Line}]{someotherpackage}

答案1

如果您在 之前加载xkvltxp(或kvoptions-patchcatoptions) 包\documentclass,则不会有问题:您可以将命令作为选项的值传递。要在 之前加载包\documentclass,您当然应该使用\RequirePackage而不是\usepackage

答案2

两种选择

  1. \ifdef您可以检查包中是否定义了 csname ,这样就可以检查\csname在调用之前是否将其定义为宏\usepackage。这不完全是您所要求的,但我猜它应该能满足您的要求;
  2. 您可以将命令名称作为不带反斜杠的字符串传递(例如,到\input),然后使用绑定该命令\edef\inputcs{\def\passname#1{\csname#1\endcsname}\expandafter\passname\input}

相关内容