通过包全局更改字体大小

通过包全局更改字体大小

我想编写一个执行以下任务的包(它本质上是重新格式化文档以使其适合在打印机上并排打印两页): - 调整边距以使其更小 - 调整文档的全局字体大小

我知道如何做第一件事(调整边距),但不知道如何调整第二件事。我希望得到与指定相同的效果

\documentclass[12pt]{article}

在文档的开头。但我想通过调用包来实现此效果。

我看过这个问题如何在文档中途更改字体大小?,但无法让它工作,通过尝试

\input{size12.clo} 

无论是在文件的序言中还是在正文中)。

我希望完成所有这些,而不将我的文档包装在任何额外的环境中,等等。

我也尝试过使用 \fontsize 命令,但没有效果(您可以在下面的基本包中看到我的尝试)。

以下是 MWE。首先,主要文档

\documentclass{article}

\usepackage{lipsum} % For filler text

\usepackage{double-duplex} % This is the package I'd like to use to alter the size---the target of my question here.

\begin{document}

\lipsum[1-3]
\end{document}

然后是包,我将其命名为 double-duplex.sty

\ProvidesPackage{double-duplex}

\fontsize{12pt}{12pt}\selectfont

答案1

这里有一个解决方案:如果您使用 10 pt (默认)的默认文章类,您可以将的相关部分复制size12.clo到您的double-duplex.sty并将所有内容更改为\renewcommand

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{double-duplex.sty}
\ProvidesPackage{double-duplex}
% REnewed from size12.clo
\renewcommand\normalsize{%
   \@setfontsize\normalsize\@xiipt{14.5}%
   \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
   \belowdisplayskip \abovedisplayskip
   \let\@listi\@listI}
\normalsize
\renewcommand\small{%
  \@setfontsize\small\@xipt{13.6}%
  \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
  \abovedisplayshortskip \z@ \@plus3\p@ 
  \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ 
  \def\@listi{\leftmargin\leftmargini 
              \topsep 9\p@ \@plus3\p@ \@minus5\p@
              \parsep 4.5\p@ \@plus2\p@ \@minus\p@ 
              \itemsep \parsep}%
  \belowdisplayskip \abovedisplayskip }

\renewcommand\footnotesize{%
  \@setfontsize\footnotesize\@xpt\@xiipt 
  \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ 
  \abovedisplayshortskip \z@ \@plus3\p@
  \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
  \def\@listi{\leftmargin\leftmargini 
              \topsep 6\p@ \@plus2\p@ \@minus2\p@
              \parsep 3\p@ \@plus2\p@ \@minus\p@ 
              \itemsep \parsep}%
  \belowdisplayskip \abovedisplayskip }
\renewcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\renewcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
\renewcommand\large{\@setfontsize\large\@xivpt{18}}
\renewcommand\Large{\@setfontsize\Large\@xviipt{22}}
\renewcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
\renewcommand\huge{\@setfontsize\huge\@xxvpt{30}}
\end{filecontents*}
\usepackage[T1]{fontenc}
\usepackage{lipsum} % For filler text

%\usepackage{double-duplex} 

\begin{document}

\section{A Section}
\lipsum*[1-3]%
\footnote{\lipsum[4]}

\end{document}

取消注释\usepackage{double-duplex}‘切换’为 12 pt。

但是,以下是我的选择:

\newif\ifxiipt
% \xiipttrue
\ifxiipt
  \documentclass[12pt]{article}
\else
  \documentclass{article}
\fi

\usepackage[T1]{fontenc}
\usepackage{geometry}
\ifxiipt
  \geometry{<smaller margin settings>}
\else
  \geometry{<normal margin settings>}
\fi
\usepackage{lipsum} % For filler text

\begin{document}

\section{A Section}
\lipsum*[1-3]%
\footnote{\lipsum[4]}
\end{document}

要进行相同的更改,只需取消注释即可\xiipttrue。(我更喜欢此解决方案的原因是,除了更改边距或字体大小之外,它可能还会使对更大字体较小边距版本或正常版本执行不同操作变得更容易。)

相关内容