我无法理解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
之一,表示框内内容位于左侧、右侧或中间。最好以取决于字体的单位指定,例如。下面我使用了,它为您提供了三位页码的空间。l
r
c
width
em
1.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
,我已在上面将其删除。