我正在尝试根据我的模板为后续文档编写自己的类文件。
我所做的只是将所有内容从\documentclass
复制到 (但不包括)\begin{document}
并将其粘贴到名为 的新文件中myclass.cls
。然后我继续将所有\usepackage
内容替换为\RequirePackage
和。该文档实际上已编译,但我的页眉和页脚中缺少几行。\documentclass
\LoadClass
这是我的 MWE,它不显示任何行:
我的类名.cls
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}[2016/02/21 My Class]
\LoadClass[
a4paper,
headsepline,
footsepline,
numbers=noenddot,
captions=tableheading,
listof=totoc,
bibliography=totoc,
fontsize=10.5pt,
toc=flat
]{scrartcl}
\RequirePackage{scrlayer-scrpage}
文档目录
\documentclass{myclass}
\begin{document}
\clearscrheadfoot
\pagestyle{scrheadings}
\ihead{header}
Text
\end{document}
如果没有分离的类和所有内容都在一个文件中,它就可以工作:
\documentclass[
a4paper,
headsepline,
footsepline,
numbers=noenddot,
captions=tableheading,
listof=totoc,
bibliography=totoc,
fontsize=10.5pt,
toc=flat
]{scrartcl}
\usepackage{scrlayer-scrpage}
\begin{document}
\clearscrheadfoot
\pagestyle{scrheadings}
\ihead{header}
Text
\end{document}
我错过了什么?我觉得headsepline
选项里没有加载\LoadClass
答案1
使用 class 选项时,使用headsepline
页面样式时,页眉下方会有一行。使用 class 选项时,页脚上方的行会同时使用页面样式和页面样式打印。请注意,这些 class 选项还会设置选项和。headings
footsepline
headings
plain
typearea
headinclude
footinclude
但是您正在加载包scrlayer-scrpage
,并且该包有自己的选项headsepline
和footsepline
。它们还有不同的语法:使用它们,您还可以为线条设置宽度和长度。但如果没有任何值,它们只会激活宽度为 .4pt 且长度与页眉/页脚相同的线条。
虽然\documentclass
将选项传递给包,但\LoadClass
包看不到用 设置的选项。因此scrlayer-scrpage
不知道页眉下面和页脚上面应该有行。因此您必须明确设置 的选项scrlayer-scrpage
。
\begin{filecontents*}{myclass.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}[2016/02/21 My Class]
\RequirePackage{fix-cm}
\LoadClass[
numbers=noenddot,
captions=tableheading,
listof=totoc,
bibliography=totoc,
fontsize=10.5pt,
toc=flat,
DIV=calc
]{scrartcl}
\KOMAoptions{
headinclude,
footinclude
}
\recalctypearea
\RequirePackage[headsepline,footsepline]{scrlayer-scrpage}
\end{filecontents*}
\documentclass{myclass}
\usepackage{blindtext}% dummy text
\clearpairofpagestyles
\ihead{Header Text}
\begin{document}
\tableofcontents
\blinddocument
\end{document}
或者
\begin{filecontents*}{myclass.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}[2016/02/21 My Class]
\RequirePackage{fix-cm}
\LoadClass[
numbers=noenddot,
captions=tableheading,
listof=totoc,
bibliography=totoc,
fontsize=10.5pt,
toc=flat,
DIV=calc
]{scrartcl}
\RequirePackage{scrlayer-scrpage}
\KOMAoptions{
headsepline,
footsepline
}
\recalctypearea
\end{filecontents*}
\documentclass{myclass}
\usepackage{blindtext}% dummy text
\clearpairofpagestyles
\ihead{Header Text}
\begin{document}
\tableofcontents
\blinddocument
\end{document}
一些评论:
我已将旧命令替换\clearscrheadfoot
为\clearpairofpagestyles
。加载scrlayer-scrpage
已激活 pagestyle scrheadings
。请注意,此包还将headings
和重新定义plain
为scrheadings
和 的别名plain.scrheadings
。
请注意,没有预定义 DIV 值,fontsize=10.5pt
默认纸张尺寸为 a4。因此,您将收到一条警告,表示DIV=1
已使用。这意味着DIV
将计算出一个好的值。为了避免出现此警告,我DIV=calc
明确设置了。
在第一个例子中我使用了
\KOMAoptions{
headinclude,
footinclude
}
\recalctypearea
因为类选项headsepline
和footsepline
设置了typearea
选项headinclude
和footinclude
。但如果我使用headsepline
和footsepline
作为的包选项,我必须明确scrlayer-scrpage
设置选项headinclude
和。该命令会重新计算页面布局,并考虑这些选项。footinclude
typearea
\recalctypearea
在第二个例子中
\usepackage{scrlayer-scrpage}
\KOMAoptions{
headsepline,
footsepline
}
\recalctypearea
headsepline
和footsepline
用于包scrlayer-scrpage
和 KOMA-Script 类。因此headinclude
和footinclude
是自动设置的。但我必须使用\recalctypearea
来重新计算页面布局。
如果您不想设置typearea
选项headinclude
而仅footinclude
使用headsepline
和footsepline
作为的包选项scrlayer-scrpage
。