在 \documentclass 之后更改字体大小?

在 \documentclass 之后更改字体大小?

我使用同一个 tex 文件创建了几个内容基本相同的不同布局。我有几个开关和\ifthenelse构造来控制布局。通常,我只需设置一个或两个布尔变量即可激活特定布局。

有些布局需要字体大小 10pt,有些需要 11pt。是否可以在之后更改大小\documentclass{article}?例如,在如下结构中:

\ifthenelse{\boolean{layoutA}}
  {\setlength{\typefacesize}{10pt}}
  {\setlength{\typefacesize}{11pt}}

显然,没有\typefacesize。我想避免总是更改字体大小\documentclass

答案1

这是有可能的,但我不知道具体会有什么后果。使用时请自负风险:

\documentclass[10pt]{article}

\makeatletter
\newcommand\resetfontsize[1]{%
  \let\small\@undefined
  \let\footnotesize\@undefined
  \let\scriptsize\@undefined
  \let\tiny\@undefined
  \let\large\@undefined
  \let\Large\@undefined
  \let\LARGE\@undefined
  \let\huge\@undefined
  \let\Huge\@undefined
  \makeatletter
  \input{size#1.clo}
  \makeatother
}
\makeatother

\usepackage{lipsum}
\begin{document}
\lipsum[1]
\section{abc}
\lipsum[2]

\resetfontsize{12}
\lipsum[1]
\section{abc}
\lipsum[2]

\end{document}

答案2

KOMA-Script类允许在文档中途更改字体大小。命令语法是,\KOMAoption{fontsize}{(new "normalsize" fontsize)}或者,如果您需要非标准 baselineskip,则为 \changefontsizes[(new "normalsize" baselineskip)]{(new "normalsize" fontsize)}。新 baselineskip 的默认值为 1.2 * fontsize。有关详细信息,请参阅这个答案作者:Johannes_B。

\documentclass[10pt]{scrartcl}

\usepackage{blindtext}

\begin{document}

\section{foo}

\blindtext

\KOMAoption{fontsize}{12pt}

\section{bar}

\blindtext

\changefontsizes[18pt]{12pt}

\section{gnu}

\blindtext

\end{document}

相关内容