更新 \@ptsize 命令

更新 \@ptsize 命令

为什么下面的命令不会改变字体的大小?我从 book.cls 复制了它

\documentclass{book}

\makeatletter
\renewcommand*\@ptsize{2}
\makeatother

\newlength{\hallo}
\settowidth{\hallo}{m}

\begin{document}

Hallo World

\the\hallo

\end{document}

这种方式会不会有问题?例如,如果我将命令放在\@newglobalfontsize{}前导码中的一些包后面?

\documentclass{book}

\makeatletter
\DeclareRobustCommand*{\@newglobalfontsize}[1]
{
    \let\small\relax
    \let\footnotesize\relax
    \let\scriptsize\relax
    \let\tiny\relax
    \let\large\relax
    \let\Large\relax
    \let\LARGE\relax
    \let\huge\relax
    \let\Huge\relax
    \makeatletter
    \input{bk#1.clo}
    \makeatother
}
\makeatother

\makeatletter
\@newglobalfontsize{10}
\makeatother

\newlength{\hallo}
\settowidth{\hallo}{m}

\begin{document}

Hallo World

\the\hallo

\end{document}

更新

为了避免所有问题,这对我来说是最好的方法:

\documentclass{scrreprt}

\makeatletter

\DeclareRobustCommand*{\@newglobalfontsize}[1]{\changefontsizes[\dimexpr#1*1.2\relax]{#1}}

\@newglobalfontsize{8pt}

\makeatother


\begin{document}

test

\end{document}

答案1

当你修改\@ptsize文档类时,字体大小已经设置好了,所以更改不会实现。使用

\documentclass[12pt]{book}

是首选方法。更具体地说,设置文档类选项(使用一些默认值),然后进行处理,然后bk1\@ptsize.clo在文档类内设置适当的字体(例如阅读)(book.cls等等)。

来自book.cls(添加了评论):

128: ...
129: \ExecuteOptions{letterpaper,10pt,twoside,onecolumn,final,openright}% Defaults
130: \ProcessOptions% Process options passed by user + defaults
131: \input{bk1\@ptsize.clo}% Read/setup font-specific information
132: ...

相关内容