在自己的文档类中使用稍后定义的命令

在自己的文档类中使用稍后定义的命令

我正在编写一个提供一般布局和设计功能的 LaTeX 类。颜色方案等元素应在主文档中由用户定义。但是,该类已加载它们在主文档中的定义。

如何将颜色定义等乳胶命令传递给文档类?

MWE 类文件:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{K}[2018/05/03 Example]
\LoadClass{book}
\RequirePackage{xcolor}
\definecolor{somecolor}{rgb}{1,0.3,0.1}
% How to define this color in the main document?
\colorlet{examplecolor}{somecolor} % this is necessary
\renewcommand\thechapter{\textcolor{examplecolor}{\arabic{chapter}}}

MWE 主要文档:

\documentclass{K}
% Ideally user-specific color definitions should go here!
% But they are already required by class K before,
% so \definecolor{somecolor}{rgb}{1,0.3,0.1} here does not work
\begin{document}
\chapter{Example chapter}
Example text
\newpage 
Example text
\end{document}

键值方法可能不起作用,因为命令既不是简单值,也不能\definecolor在包含包之前在 latex 文档的第一行中使用xcolor。有没有后期定义的替代方案?(使用稍后定义的宏值

答案1

在类之外定义颜色和其他命令的一个解决方案是将一个可以包含在类中的前导文件:

类文件:

...
\RequirePackage{xcolor}
\input{preamble}
\colorlet{examplecolor}{somecolor}
...

序言文件:

\definecolor{somecolor}{rgb}{0,0,1}

相关内容