向包中添加新选项

向包中添加新选项

我制作了一个名为 byzantinemusic 的包(参见https://www.ctan.org/pkg/byzantinemusic) 可以使用此包使用前言中的命令以现代拜占庭符号编写音乐 \usepackage{byzantinemusic}。我已经设计了一个新的 .sty,其名称byzantinemusicextended.sty将包扩展到古老的拜占庭音乐符号。我想为我的包提供“古老”选项,以便:如果使用, \usepackage[archaic]{byzantinemusic} 则将使用 byzantinemusicextended.sty,否则(即没有选项)将使用旧的byzantinemusic.sty。如何做到这一点?

答案1

以下是一个例子

\ProvidesPackage{mytest}
\newif\ifmyoption
% false by default
\DeclareOption{test}{\myoptiontrue}
\ProcessOptions\relax
\ifmyoption
  \RequirePackage{amsmath}
  \expandafter\endinput
\fi
\newcommand\test{test}

因此\test仅在没有选项的情况下定义test。使用它的 MWE

\documentclass[a4paper]{article}
\usepackage{mytest}
%\usepackage[test]{mytest}
\begin{document}
dsf

\test
\end{document}

因此,如果test给定,amsmath则加载并且\test未定义。如果没有,test amsmath则不加载并且\test已定义。

我记得的想法empheq.sty使用了类似的技巧

相关内容