如何将#
符号放置在\PackageWarning
宏定义内部?我试过:
\PackageWarning{package}{# or \# or \string# or \hash}
但要么##
或unknown
(对于\hash
)或Illegal parameter number in definition of \reserved@a
导致。
答案1
实际上\string#
这是可行的方法,但是您似乎将其用作\PackageWarning
宏定义的一部分,因此您必须将其加倍:\string##
。的宏定义\reserved@a
可能在您正在使用的宏内部发生。例如,来自 LaTeX 核心的一些 if 宏将两个子句都存储在这样的临时宏中。
您还可以为该字符定义一个宏,然后可以在所有\PackageWarning
s 和其他消息中使用,无论它们是否在宏定义中。
\edef\hashchar{\string#}
然后在消息中使用\hashchar
。如果您希望后面有一个空格,则需要\space
明确使用。