如何声明字体大小类别选项

如何声明字体大小类别选项

我正在创建一个带有选项的类,并希望能够使用字体大小进行 \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 语句需要不同

相关内容