向文档类中的页面样式添加主规则

向文档类中的页面样式添加主规则

我正在使用我所在大学提供的文档类撰写论文thesis.cls。该大学自己的指导方针规定,论文中可以使用页眉“只要整个页面上有一条线将页眉与文本分开”。但使用\pagestyle{headings}(大学论文类中定义的页面样式)不会形成水平线。

以下是定义页面样式的相关代码片段headings

\if@twoside 
 \def\ps@headings{
    \def\@oddfoot{}\def\@evenfoot{}                      % No feet.
    \def\@evenhead{\rmfamily \thepage\hfil \slshape \leftmark}            % Heading on left for even pages.        .
    \def\@oddhead{{\slshape \rightmark}\hfil \rmfamily\thepage}           % Heading on right for odd pages. 
    \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
      \@chapapp\ \thechapter. \ \fi ##1}}{}}%
    \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
    \thesection. \ \fi ##1}}}
   }
\else
   \def\ps@headings{
    \def\@oddfoot{}\def\@evenfoot{}                      % No feet.
    \def\@oddhead{{\slshape \rightmark} \hfil \rmfamily\thepage}          % Heading.
    \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
    \@chapapp\ \thechapter. \ \fi ##1}}}
   }
\fi

如何在标题下添加水平线?

答案1

您可以更新\@evenhead\@oddhead 设置好后\pagestyle{headings},即在序言中的某处,您应该有以下内容:

\makeatletter
\newcommand{\insertheaderrule}{\rlap{\rule[-.3\normalbaselineskip]{\textwidth}{.4pt}}}
\let\old@evenhead\@evenhead \let\old@oddhead\@oddhead
\def\@evenhead{\insertheaderrule\old@evenhead}% Prepend \insertheaderrule
\def\@oddhead{\insertheaderrule\old@oddhead}% Prepend \insertheaderrule
\makeatother

上面我们创建了\insertheaderrule并将其添加到\@evenhead和前面。它设置了长度、宽度和\@oddhead的规则,比正常基线跳过低 30%。我们使用 确保它不会占用水平空间。\textwidth.4pt\rlap

答案2

由于规范显然没有thesis.cls禁止使用其他包的限制,因此最简单的方法就是fancyhdr,例如,它提供fancy页面样式并默认在标题下方有一个规则。

\documentclass{article}


\usepackage{fancyhdr}
\pagestyle{fancy}

\usepackage{blindtext}

\begin{document}

\section{First}
\blindtext[20]

\end{document}

在此处输入图片描述

相关内容