问题
我正在尝试使用 为我的文档创建精美的标题fancyhdr
。我希望标题规则带点,这可以使用
\renewcommand{\headrule}{\vbox to 0pt{\hbox to\headwidth{\dotfill}\vss}}
如第 12 页的文档中所述。fancyhdr
现在我还想将规则移近页眉的内容。对于页脚,有\footruleskip
,但不幸的是没有。如果我只是通过使用提升头部规则的框,\footruleskip
\raisebox
我会得到
Package Fancyhdr Warning: \headheight is too small (38.32509pt):
Make it at least 39.58127pt.
我该如何自动调整\headheight
或者如何摆脱因抬高主规则框而产生的过满框。
奖金:目前我指定\setlength{\headheight}{3.5em}
因为\Huge\thechapter
。我如何自动设置\headheight
?
平均能量损失
\documentclass{scrbook}
% Display box around header
\usepackage{eso-pic}
\AddToShipoutPictureFG{
\AtTextUpperLeft{%
\put(0,\LenToUnit{\headsep}){%
\framebox(\LenToUnit{\textwidth},\LenToUnit{\headheight}){}%
}%
}%
}
\usepackage{fancyhdr}
\pagestyle{fancy}
\setlength{\headheight}{3.5em}
% From fancyhdr documentation
\fancyhf{}
\fancyhead[LE,RO]{\sffamily\chaptername\ \Huge\thechapter}
\fancyhead[RE,LO]{\sffamily\leftmark}
\begin{document}
\chapter{Test Chapter}
\eject
\renewcommand{\headrule}{\vbox to 0pt{\hbox to\headwidth{\dotfill}\vss}}
\hbox{}
\eject
\renewcommand{\headrule}{\raisebox{0.25\headheight}{\vbox to 0pt{\hbox to\headwidth{\dotfill}\vss}}}
\hbox{}
\end{document}
输出
\renewcommand{\headrule}{\vbox to 0pt{\hbox to\headwidth{\dotfill}\vss}}
\renewcommand{\headrule}{\raisebox{0.25\headheight}{\vbox to 0pt{\hbox to\headwidth{\dotfill}\vss}}}
答案1
使用中心场,无需重新定义\headrule
:
\documentclass{scrbook}
\usepackage{fancyhdr}
\usepackage{picture} % directly specify lengths with their unit in picture commands
\usepackage{lipsum}
% Display box around header
\usepackage{eso-pic}
\AddToShipoutPictureFG{
\AtTextUpperLeft{%
\put(0,\headsep){%
\framebox(\textwidth,\headheight){}%
}%
}%
}
\pagestyle{fancy}
\setlength{\headheight}{24.4pt}
\newcommand{\dotrule}{%
\makebox[0pt][l]{%
\hspace{-.5\textwidth}%
\raisebox{-8pt}{%
\makebox[\textwidth][l]{%
\kern-.00625\textwidth
\xleaders\hbox to 0.0125\textwidth{\hss.\hss}\hfill
\kern-.00625\textwidth
}%
}%
}%
}
% From fancyhdr documentation
\fancyhf{}
\fancyhead[LE,RO]{\sffamily\chaptername\ {\Huge\thechapter}}
\fancyhead[RE,LO]{\sffamily\leftmark}
\fancyhead[C]{\dotrule}
\renewcommand\headrulewidth{0pt}
\begin{document}
\chapter{Test Chapter}
\lipsum
\end{document}
我“手动”定义了点填充,因为\xleaders
应该使用。
个人评论:我很少看到这么丑陋的东西。