我设计了一个海报布局,很可能会再次使用,所以我决定使用序言中的所有设置定义一个新的文档类。但是,当我使用新定义的类编译文档时,页面布局与原始文档并不相同。我不是 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}
其结果是:
新的文档类别:
\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}
结果是:
示例一中的序言与示例二中的类描述完全相同,那么为什么会有这种间距差异?非常沮丧。提前致谢。
好吧,我发现了一个解决方法,但是我不知道为什么它会产生影响并且违背了定义新类的目的。
如果我添加以下行:
\renewcommand{\normalsize}{\fontsize{36pt}{44pt}\selectfont}
在文档序言中而不是 .cls 中,布局是相同的,正如它应该的那样。
答案1
\begin{document}
发出命令,影响诸如和 等\normalsize
单元的大小,这些单元的大小取决于标准字体大小。也就是说,如果您说,则如果您的文档使用 class 选项设置,则它会比使用默认的更大。请参阅em
ex
50em
12pt
10pt
这个问题了解详情。我发现egreg 的回答特别有帮助。
我不太清楚细节,但我认为,当您在序言中使用这些命令时,尺寸将设置为文档的原始字体大小,而不是您指定的大小,而当您在类文件中设置它们时,它们将设置为自定义字体大小。因此,类中的间距最终会比序言中的间距大。
避免这种情况的一种方法是将字体大小的更改推迟到文档的开头,以便\normalsize
执行第一的,设置的值pt
等,然后字体大小才会被覆盖。您可以通过将更改字体大小的命令放入\AtBeginDocument{...}
类文件中来实现这一点。
无关
sf
早已弃用,也从未成为环境。\sf
是 LaTeX 2.09 命令,但在 LaTeX-2e 中已弃用。无论如何,它是一种字体转变。而是使用\sffamily
切换字体直到组结束或\textsf{}
仅以 sans 格式排版其参数。如果您需要前者,但想要限制其效果,您可以用花括号将其括起来,例如{\sffamily sans text and }back to serif
。注意这
\usepackage
是前言命令。你应该\RequirePackage
在类或包文件中使用。