我正在创建一个带有选项的类,并希望能够使用字体大小进行 \DeclareOption ...
例如,如果能在 .tex 文件中写入
documentclass[12pt]{myclass}
并在相应的 mylcass.cls 文件中写入
\DeclareOption{\normalsize}{<some code>}
如何才能做到这一点?
答案1
标准类都使用以下方案。
声明 10pt、11pt 和 12pt 选项
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
确保 10pt 是默认值(并且\@ptsize
定义如此)
\ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final}
处理选项
\ProcessOptions
输入尺寸选项特定代码
\input{size1\@ptsize.clo}
因此如果文档中有[12pt]
文件,size12.clo
则此时输入。
答案2
当扩展文章类之类的东西时,只需在完成所有 \ProcessOptions 和 \LoadClass{article} 之后创建一个切换条件:
\ifcase \@ptsize
{} %if font is 10pt
\or
{} %11pt
\or
{} %12pt
\else
{} %some other pt
\fi
如果不是扩展一个类而是从头开始创建,那么 David 的回答就有很好的见解。
请注意,对于类 article,@ptsize 仅仅是给定字体大小的个位数,因此如果您的大小是 10pt,那么您要处理的是 @ptsize{0}。因此上面的 switch 有效:case 0 匹配 10,案例 1 匹配 11,并且案例 2 与案例 1 匹配2。还请注意,如果您正在扩展 extarticle,@ptsize 不再使用该定义,而是使用整个数字,因此 11pt 将是 @ptsize{11},所以您的 switch 语句需要不同