根据我的序言逐字逐句地定义了一个新类,但生成的文档没有相同的布局

根据我的序言逐字逐句地定义了一个新类,但生成的文档没有相同的布局

我设计了一个海报布局,很可能会再次使用,所以我决定使用序言中的所有设置定义一个新的文档类。但是,当我使用新定义的类编译文档时,页面布局与原始文档并不相同。我不是 LaTeX 初学者,但这是我第一次制作文档类。我为此困惑了好几个小时。

原文:

\documentclass{article}

%        main packages
\usepackage{fancyhdr}

%        core layout                                                          
\usepackage[paperwidth=48in,paperheight=36in,textwidth=112cm,
top=15cm,head=11cm,foot=2cm,bottom=6cm,hcentering]{geometry}
\pagenumbering{gobble}

%        resize fonts and symbols
\usepackage{mathpazo}
\usepackage{textcomp}
\usepackage[scaled=0.95]{helvet}
\renewcommand{\huge}{\fontsize{100pt}{120pt}\selectfont}
\renewcommand{\Large}{\fontsize{64pt}{72pt}\selectfont}
\renewcommand{\normalsize}{\fontsize{36pt}{44pt}\selectfont}

%        header
\newcommand{\header}[2]{\fancyhead[C]{\begin{center}
\begin{sf}
{\textbf{{\huge {#1}}}}\\[1cm]
{\Large {#2}}\\[0.5cm]
{\Large UWEC}
\end{sf}
\end{center}}}

%        footer
\newcommand{\footer}[2]{
\fancyfoot[L]{\vspace{1pt}\normalsize {#1}}
\fancyfoot[R]{\vspace{1pt}\normalsize {#2}}}
\renewcommand{\footrulewidth}{2pt}   

\begin{document}

\header{title}{author}

\footer{advisor}{special thanks to...}

\pagestyle{fancy}
testing

testing

\end{document}

其结果是:

示例 1

新的文档类别:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{testclass}

\LoadClass{article}

%        main packages
\usepackage{fancyhdr}

%        core layout                                                          
\usepackage[paperwidth=48in,paperheight=36in,textwidth=112cm,
top=15cm,head=11cm,foot=2cm,bottom=6cm,hcentering]{geometry}
\pagenumbering{gobble}

%        resize fonts and symbols
\usepackage{mathpazo}
\usepackage{textcomp}
\usepackage[scaled=0.95]{helvet}
\renewcommand{\huge}{\fontsize{100pt}{120pt}\selectfont}
\renewcommand{\Large}{\fontsize{64pt}{72pt}\selectfont}
\renewcommand{\normalsize}{\fontsize{36pt}{44pt}\selectfont}

%        header
\newcommand{\header}[2]{\fancyhead[C]{\begin{center}
\begin{sf}
{\textbf{{\huge {#1}}}}\\[1cm]
{\Large {#2}}\\[0.5cm]
{\Large UWEC}
\end{sf}
\end{center}}}

%        footer
\newcommand{\footer}[2]{
\fancyfoot[L]{\vspace{1pt}\normalsize {#1}}
\fancyfoot[R]{\vspace{1pt}\normalsize {#2}}}
\renewcommand{\footrulewidth}{2pt}  

\endinput

和新 tex:

\documentclass{testclass}

\begin{document}

\header{title}{author}

\footer{advisor}{special thanks to...}

\pagestyle{fancy}
testing

testing

\end{document}

结果是:

示例 2

示例一中的序言与示例二中的类描述完全相同,那么为什么会有这种间距差异?非常沮丧。提前致谢。

好吧,我发现了一个解决方法,但是我不知道为什么它会产生影响并且违背了定义新类的目的。

如果我添加以下行:

\renewcommand{\normalsize}{\fontsize{36pt}{44pt}\selectfont}

在文档序言中而不是 .cls 中,布局是相同的,正如它应该的那样。

答案1

\begin{document}发出命令,影响诸如和 等\normalsize单元的大小,这些单元的大小取决于标准字体大小。也就是说,如果您说,则如果您的文档使用 class 选项设置,则它会比使用默认的更大。请参阅emex50em12pt10pt这个问题了解详情。我发现egreg 的回答特别有帮助。

我不太清楚细节,但我认为,当您在序言中使用这些命令时,尺寸将设置为文档的原始字体大小,而不是您指定的大小,而当您在类文件中设置它们时,它们将设置为自定义字体大小。因此,类中的间距最终会比序言中的间距大。

避免这种情况的一种方法是将字体大小的更改推迟到文档的开头,以便\normalsize执行第一的,设置的值pt等,然后字体大小才会被覆盖。您可以通过将更改字体大小的命令放入\AtBeginDocument{...}类文件中来实现这一点。

无关

  • sf早已弃用,也从未成为环境。\sf是 LaTeX 2.09 命令,但在 LaTeX-2e 中已弃用。无论如何,它是一种字体转变。而是使用\sffamily切换字体直到组结束或\textsf{}仅以 sans 格式排版其参数。如果您需要前者,但想要限制其效果,您可以用花括号将其括起来,例如{\sffamily sans text and }back to serif

  • 注意这\usepackage是前言命令。你应该\RequirePackage在类或包文件中使用。

相关内容