将参数传递给类变量

将参数传递给类变量

我正在尝试为我的文档类创建自己的颜色主题。目前我的解决方案是使用类参数:

\DeclareOption{colour-theme-formal}{
  \definecolor{soft}{gray}{0.75}
  \definecolor{glow}{RGB}{001,176,236}
  \definecolor{canvas}{RGB}{200,100,100}
  \definecolor{prime}{RGB}{255,100,100}
}
\DeclareOption{colour-theme-vibrant}{
  \definecolor{soft}{gray}{0.75}
  \definecolor{glow}{RGB}{001,176,236}
  \definecolor{canvas}{RGB}{255,100,100}
  \definecolor{prime}{RGB}{255,100,100}
}

因此,在设置我的文档时我会执行以下操作:

\documentclass[a4paper,11pt,margin,line,colour-theme-vibrant]{jackstyle}

这工作得很好,但我需要的是一些可以动态改变的东西,而不是作为文档参数。

例如,最好使用命令在任何时候在我喜欢的样式之间进行切换,例如:

\usetheme{colour-theme-vibrant}

任何帮助都将不胜感激。

答案1

在类中,在声明选项之前,添加

\newcommand{\jackclass@definetheme}[2]{\@namedef{jack@theme@#1}{#2}}
\newcommand{\usetheme}[1]{\@nameuse{jack@theme@#1}}

\jackclass@definetheme{colour-theme-formal}{%
  \definecolor{soft}{gray}{0.75}%
  \definecolor{glow}{RGB}{001,176,236}%
  \definecolor{canvas}{RGB}{200,100,100}%
  \definecolor{prime}{RGB}{255,100,100}%
}
\jackclass@definetheme{colour-theme-vibrant}{%
  \definecolor{soft}{gray}{0.75}%
  \definecolor{glow}{RGB}{001,176,236}%
  \definecolor{canvas}{RGB}{255,100,100}%
  \definecolor{prime}{RGB}{255,100,100}%
}

\DeclareOption{colour-theme-formal}{\usetheme{colour-theme-formal}}
\DeclareOption{colour-theme-vibrant}{\usetheme{colour-theme-vibrant}}

然后,您可以使用\usetheme{...}任何您喜欢的位置,或者使用类选项(或两者)。

相关内容