问题

问题

问题

我正在尝试使用 为我的文档创建精美的标题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应该使用。

在此处输入图片描述

个人评论:我很少看到这么丑陋的东西。

相关内容