我在使用 定义垂直线作为页眉的一部分时遇到了问题fancyhdr
。
在左页上,行与文本块不对齐。
正如它应该的那样,并且它在右侧运行良好。
我的代码有什么问题?(请参阅下面的 MWE。)此外,我想将右侧的文本更改为章节标题而不是节标题。
\documentclass[a4paper,12pt]{book}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{lipsum}
\usepackage[framemethod=TikZ]{mdframed}
\renewcommand{\chaptermark}[1]{\markboth{\chaptername\space\thechapter}{}}
\renewcommand{\sectionmark}[1]{\markright{##1}{}}
\fancyhf{}
\fancyhead[LE]{\begin{picture}(0,0)\put(0,0){\thepage\space\vheadline\space\leftmark}\end{picture}}
\fancyhead[RO]{\rightmark\space\begin{picture}(0,0)\put(0,0){\vheadline\space\thepage}\end{picture}}
\voffset-10mm
\renewcommand\headrulewidth{0pt}
\def\vheadline{%
\begingroup\color{gray}\rule[-1pt]{1pt}{1000pt}\endgroup}
\begin{document}
\title{Simple Book Example}
\mainmatter
\chapter{The First Chapter}
\lipsum[1-10]
\end{document}
答案1
我将用\makebox[0pt]
它来隐藏页码和规则的宽度以及\smash
隐藏规则的高度和深度。
\fancyhead[LE]{%
\makebox[0pt][r]{\thepage\space\smash{\vheadline}}%
\space\leftmark
}
\fancyhead[RO]{%
\rightmark\space
\makebox[0pt][l]{\smash{\vheadline}\space\thepage}%
}
如果章节标题的文本应该在奇数页上,而不是部分标题的文本,则将\chaptermark
和的重新定义更改\sectionmark
为
\renewcommand*{\chaptermark}[1]{\markboth{\chaptername\space\thechapter}{#1}}
\renewcommand*{\sectionmark}[1]{}
代码:
\documentclass[a4paper,12pt]{book}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand*{\chaptermark}[1]{\markboth{\chaptername\space\thechapter}{#1}}
\renewcommand*{\sectionmark}[1]{}
\fancyhf{}
\fancyhead[LE]{%
\makebox[0pt][r]{\thepage\space\smash{\vheadline}}%
\space\leftmark
}
\fancyhead[RO]{%
\rightmark\space
\makebox[0pt][l]{\smash{\vheadline}\space\thepage}%
}
\voffset-10mm
\renewcommand*\headrulewidth{0pt}
\newcommand*\vheadline{\textcolor{gray}{\rule[-1pt]{1pt}{1000pt}}}
\usepackage{lipsum}
\begin{document}
\title{Simple Book Example}
\mainmatter
\chapter{The First Chapter}
\section{A section}
\lipsum[1-10]
\end{document}