该soul
包定义了大量短宏,其中一些我经常用于自己的写作。我只需要\hl
和\sethlcolor
。有没有办法加载包并只获取这两个命令?
答案1
一些软件包允许使用选项选择定义的宏的数量,但我不认为该soul
软件包提供这样的功能。
对于非常简单的包,可以将其装入一组中,并且只对需要的命令进行全局定义。但是,这变得很复杂,因为这些命令一旦使用内部宏,当然也必须保持定义。包soul
非常复杂,这将成为一项繁琐的任务。
\begingroup
\usepackage{<package>}
\global\let\wantedmacro\wantedmacro
\global\expandafter\let\csname special name\expandafter\endcsname\csname special name\endcsname
% ...
\endgroup
还必须处理为每个加载的包定义的一些内部 LaTeX 宏等等。
更好的方法是,要么在加载包后(重新)定义宏,正如 Alan Munn 已经指出的那样,要么保存并恢复有问题的宏\usepackage
。如果宏由另一个必须事先加载的包定义,则这是必要的。
\let\origsomemacro\somemacro % save the macro
\let\somemacro\relax % reset it, so it can be defined using `\newcommand` can be used without error
\usepackage{somepackage} % load package
\let\altsomemacro\somemacro % save that macro definition under a different name if required
\let\somemacro\origsomemacro % restore original definition
但是,如果包依赖于这些宏的自身定义,则可能会导致问题。
答案2
您可以加载该soul
包,然后用来\renewcommand
定义您自己的宏。