在自定义文档类中,保留章节标题,但将页码移至底部

在自定义文档类中,保留章节标题,但将页码移至底部

我在写论文时使用了学校提供的自定义 documentclass,这是 documentclass 书的修改版。他们还提供了一个模板,其中包括以下行

\pagestyle{headings}

激活此功能后,每页(不开始章节的页面)顶部都有章节标题,右上角有页码。如果章节标题很长,它会直接延伸到页码,甚至会重叠。停用此功能后,我会丢失整个标题,包括章节标题和页码。

我知道覆盖 documentclass 文件的方法,比如通过指定不同的页面样式(如普通或花式),但这些方法也会覆盖我的标题。

我想将章​​节标题保留在页面顶部,但将页码移至底部。我需要编辑 documentclass 文件吗?或者有没有办法重新定义“标题”的作用?

我对编写 documentclass 文件一无所知,但我的猜测是我可以通过改变其中的一部分来获得所需的效果,如下所示:

 \def\ps@headings{%
      \let\@oddfoot\@empty\let\@evenfoot\@empty
      \def\@evenhead{\thepage\hfil\slshape\leftmark}%
      \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
      \let\@mkboth\markboth
    \def\chaptermark##1{%
      \markboth {\MakeUppercase{%
        \ifnum \c@secnumdepth >\m@ne
          \if@mainmatter
            \@chapapp\ \thechapter. \ %
          \fi
        \fi
        ##1}}{}}%
    \def\sectionmark##1{%
      \markright {\MakeUppercase{%
        \ifnum \c@secnumdepth >\z@
          \thesection. \ %
        \fi

答案1

有不同的方法。您可以修补原始代码以将页码放在底部。或者修补它以包装更长的章节标题(底部的示例)。其他方法可能是删除字符串章节或者完全删除所有大写字母。

所有这些都会改变模板的输出。无论哪种方式,使用包都比修补低级命令更好:

\documentclass[11pt,a5paper]{book}
\usepackage{geometry}
\usepackage{blindtext}
\usepackage{scrlayer-scrpage}
\ohead{}
\cfoot{\pagemark}
\begin{document}
\chapter{Wombats are cute and cuddly, just like ducks}
\blindtext[3]
\end{document}

标题包装:

\documentclass[11pt,a5paper]{book}
\usepackage{geometry}
\usepackage{blindtext}
\usepackage{etoolbox}
\tracingpatches
\makeatletter
\patchcmd{\@evenhead}{\leftmark}{\parbox[t]{.9\linewidth}{\leftmark}}{}{}
\makeatother
\begin{document}
\chapter{Wombats are cute and cuddly, just like ducks}
\blindtext[3]
\end{document}

j0eq1nnHeaderFooter

相关内容