当章节标题很长时,如何将页码与右上角对齐?

当章节标题很长时,如何将页码与右上角对齐?

我正在使用 sty 写一篇论文,它将章节标题放在每页的顶部,页码放在角落(使用 fancyhdr)。问题是,如果章节标题太长,必须分成两行,页码就会与章节标题的第二行对齐,而不是第一行。请参阅下面的 MWE。我该如何修复它,以便页码始终与右上角齐平?谢谢。

\setlength{\headheight}{27.16pt}附加问题:为了抑制 fancyhdr 警告(当章节标题太长时),这样做正确吗?非常感谢!

\documentclass[11pt]{article}

\usepackage{fancyhdr}
\setlength{\headheight}{27.16pt} % sometimes section title takes 2 lines
\pagestyle{fancyplain}
\lhead[\fancyplain{\thepage}{\thepage}]{\fancyplain{}{\scshape\rightmark}}
\rhead[\fancyplain{}{\scshape\leftmark}]{\fancyplain{\thepage}{\thepage}}
\chead{}
\cfoot{}
\lfoot{}
\rfoot{}

\def\chaptermark#1{%
    \markboth{\@chapapp\ \thechapter.~~  #1}{}}
\def\sectionmark#1{%
    \markright{Section \thesection.~~  #1}}

\begin{document}

\section{An unnecessarily long and wordy title for some stuff}

Words here

\end{document}

答案1

一种解决方案是为该部分使用较短的标题。如果这不可能,则可以将较短的(替代)标题与常规的长标题结合使用:

\section[Short title for section]{An unnecessarily long and wordy title for some stuff}

这样,您就不必担心章节标题会超过 2 行(或更多),只需提供一个足够描述性的单行替代标题即可。额外的好处是您不必摆弄\headheight

答案2

我同意 Werner 的解决方案。但是,如果出于某种原因,你需要要在标题中使用长标题,那么您可以\parbox在定义中使用\sectionmark(您可以减少.97\linewidth以防止页码和章节标题产生歧义):

\documentclass[11pt]{article}

\usepackage{fancyhdr}
\setlength{\headheight}{27.16pt} % sometimes section title takes 2 lines
\pagestyle{fancyplain}
\lhead[\fancyplain{\thepage}{\thepage}]{\fancyplain{}{\scshape\rightmark}}
\rhead[\fancyplain{}{\scshape\leftmark}]{\fancyplain{\thepage}{\thepage}}
\chead{}
\cfoot{}
\lfoot{}
\rfoot{}

\def\chaptermark#1{%
    \markboth{\@chapapp\ \thechapter.~~  #1}{}}
\def\sectionmark#1{%
    \markright{\protect\parbox[t]{.97\linewidth}{\protect\raggedright Section \thesection.~~  #1\vskip0.2em}}}

\begin{document}

\section{An unnecessarily long and wordy title for some stuff}

Words here

\end{document}

相关内容