如何加载带有选项的类,例如 headsepline

如何加载带有选项的类,例如 headsepline

我正在尝试根据我的模板为后续文档编写自己的类文件。

我所做的只是将所有内容从\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 选项还会设置选项和。headingsfootseplineheadingsplaintypeareaheadincludefootinclude

但是您正在加载包scrlayer-scrpage,并且该包有自己的选项headseplinefootsepline。它们还有不同的语法:使用它们,您还可以为线条设置宽度和长度。但如果没有任何值,它们只会激活宽度为 .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和重新定义plainscrheadings和 的别名plain.scrheadings

请注意,没有预定义 DIV 值,fontsize=10.5pt默认纸张尺寸为 a4。因此,您将收到一条警告,表示DIV=1已使用。这意味着DIV将计算出一个好的值。为了避免出现此警告,我DIV=calc明确设置了。

在第一个例子中我使用了

\KOMAoptions{
  headinclude,
  footinclude
}
\recalctypearea

因为类选项headseplinefootsepline设置了typearea选项headincludefootinclude。但如果我使用headseplinefootsepline作为的包选项,我必须明确scrlayer-scrpage设置选项headinclude和。该命令会重新计算页面布局,并考虑这些选项。footincludetypearea\recalctypearea

在第二个例子中

\usepackage{scrlayer-scrpage}
\KOMAoptions{
  headsepline,
  footsepline
}
\recalctypearea

headseplinefootsepline用于包scrlayer-scrpage和 KOMA-Script 类。因此headincludefootinclude是自动设置的。但我必须使用\recalctypearea来重新计算页面布局。

如果您不想设置typearea选项headinclude而仅footinclude使用headseplinefootsepline作为的包选项scrlayer-scrpage

相关内容