使用 fancyhdr 进行右/左对齐

使用 fancyhdr 进行右/左对齐

我无法理解fancyhdr这份两页的文件。我现在有以下内容:

\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{ \markboth{#1}{} }
\renewcommand{\sectionmark}[1]{ \markright{\nameOfBook{}} }

\fancyhf{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[RE]{\textbf{ \nouppercase{Kapitel \thechapter: \leftmark}} }
\fancyhead[LO]{\textbf{ \nouppercase{\rightmark}} }

\fancypagestyle{plain}{ %
  \fancyhf{} % remove everything
  \renewcommand{\headrulewidth}{0pt} % remove lines as well
  \renewcommand{\footrulewidth}{0pt}
}

这是我得到的:

在此处输入图片描述

我希望左页的页眉文本左对齐(相对于页码,留出一点空间),右页也类似。我不知道这是否是一个好的解决方案(从视觉上来说),或者我是否应该将页码放在底部,同时将文本保持在顶部。为了能够做出决定,我需要首先对齐文本,但我做不到这一点。

问题:如何左/右对齐页眉文本,同时尊重为页码保留的一小块区域?

答案1

您可以根据需要将所有材料放在左或右页眉中,使用宏将页码放在固定宽度的框中,\makebox并在其后或之前紧接着其他文本,分别对应偶数页或奇数页。语法\makebox

\makebox[width][pos]{Text}

使用或pos之一,表示框内内容位于左侧、右侧或中间。最好以取决于字体的单位指定,例如。下面我使用了,它为您提供了三位页码的空间。lrcwidthem1.5em

左页:

左页样例

右页:

右页示例

\documentclass{book}

\usepackage{fancyhdr}

\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{The Book Title}}

\fancyhf{}
\fancyhead[LE]{\makebox[1.5em][l]{\thepage}\textbf{\nouppercase{Kapitel \thechapter: \leftmark}}}
\fancyhead[RO]{\textbf{\nouppercase{\rightmark}}\makebox[1.5em][r]{\thepage}}

\fancypagestyle{plain}{ %
  \fancyhf{} % remove everything
  \renewcommand{\headrulewidth}{0pt} % remove lines as well
  \renewcommand{\footrulewidth}{0pt}
  }

\usepackage{lipsum}

\begin{document}
\setcounter{page}{21}
\chapter{Some chapter title}
\section{A section of some sort}

\lipsum[1-10]
\end{document}

注意宏中添加的空格 - 例如,您的原始代码在之前添加了一个空格Kapitel,我已在上面将其删除。

相关内容