将 fancyhdr 中的垂直线与文本块对齐

将 fancyhdr 中的垂直线与文本块对齐

我在使用 定义垂直线作为页眉的一部分时遇到了问题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}

相关内容