我正在尝试创建一个自定义标题,其中包含具有特定高度的图像。在最近的一个项目中,我使用了 ,fancyhdr
效果很好。但是,由于不鼓励与 KOMA 类一起使用,因此fancyhdr
我想切换到scrlayer-scrpage
。
基本上,它可以工作,但图像下方会添加额外的垂直空间。这看起来很奇怪,并会产生 vbox 过满警告。以下 MWE 演示了此行为:
\documentclass[twoside]{scrartcl}
%
\newlength{\theLogoHeight}
\setlength{\theLogoHeight}{10mm}
%
\usepackage[showframe]{geometry}
\newgeometry{top=3\theLogoHeight,
headheight=\theLogoHeight,
headsep=\theLogoHeight,
footskip=\theLogoHeight,
bottom=2\theLogoHeight,
inner=2\theLogoHeight,
outer=2\theLogoHeight
}
%
\RequirePackage{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearpairofpagestyles
\newpairofpagestyles{firstpage}{%
\chead{%
\rule{0.1cm}{\theLogoHeight}%
}%
}
%
\begin{document}
\thispagestyle{firstpage}
Test Text Test Text Test Text Test Text Test Text Test Text
\end{document}
造成这个额外垂直空间的原因是什么?我该如何消除它?
答案1
headheight
是页眉的总高度,即高度加上页眉的深度。您的徽标放在高度为的基线上\theLogoHeight
。因此,页眉的高度必须至少为\theLogoHeight
,但页眉的深度也取决于字体大小。
可视化标题深度大小的示例:
\chead{%
\rule[-\dp\strutbox]{0.1cm}{\dp\strutbox}% to visualize the depth of the header
Example%
\rule[-\dp\strutbox]{0.1cm}{\dp\strutbox}% to visualize the depth of the header
\rule{0.1cm}{\theLogoHeight}%
}
您可以通过以下方式放大headheight
或缩小headsep
或升高徽标\dp\strutbox
:
\documentclass[twoside]{scrartcl}
%
\newlength{\LogoHeight}
\setlength{\LogoHeight}{10mm}
%
\usepackage[showframe]{geometry}
\newgeometry{top=3\LogoHeight,
headheight=\LogoHeight,
headsep=\LogoHeight,
footskip=\LogoHeight,
bottom=2\LogoHeight,
inner=2\LogoHeight,
outer=2\LogoHeight
}
\usepackage{scrlayer-scrpage}% sets page style scrheadings automatically
\clearpairofpagestyles
\newpairofpagestyles{firstpage}{%
\chead{\raisebox{-\dp\strutbox}{\rule{0.1cm}{\LogoHeight}}}% <- raise down the logo
}
\begin{document}
\thispagestyle{firstpage}
Test Text Test Text Test Text Test Text Test Text Test Text
\end{document}
徽标和文本主体之间的剩余空间由几何选项中的值定义headsep
。您可以减小此值或删除该选项以在页眉和文本主体之间获得较小的间距。