用于将正文定位在章节第一页的垂直偏移:
\documentclass[chapterprefix = true]{scrbook}
\usepackage{blindtext}
\begin{document}
\chapter{Test Chapter}
\blindtext[5]
\end{document}
给出
显然不是\topmargin
:使用该layout
包为我提供了页面布局的描述,该描述适用于以下页面,而不是打开页面。
我在 KOMA-Script 手册中找不到相关记录。如能提供任何帮助,我将不胜感激。
编辑:我想使用这个值在前一页放置一个文本块(具体来说是一个题词),以便它很好地排列,如下所示:
我只需要获取垂直偏移;此时无需更改它。
答案1
没有一个单一的长度可以描述这个距离,但是有几种长度,有些还取决于字体大小:
- 顶部边距。这是
\topmargin
+ 1 英寸,因为原点不是在左上边缘,而是在纸张左上边缘 1 英寸处。如果您使用类似的东西,crop
也\voffset
可以参与其中。但在这种情况下,您还必须考虑长度是否应该从物理纸张边缘或逻辑边缘测量。所以在下文中我将省略 的潜在影响\voffset
。 - 页面头部的高度。这是
\headheight
。 - 页面头部和文本区域之间的距离。这是
\headsep
。 - 文本区域边缘与第一条基线之间的距离。这是
\topsep
。 - 章节标题上方的距离。您可以通过
beforeskip
命令选项设置此内容\RedeclareSectionCommand
。只要您不更改样式,\chapter
此值就会存储在内部宏中\scr@chapter@beforeskip
。此宏的粘合值也可以为负数。如果 KOMA-Script <= 3.25,则必须始终使用绝对值而不是负值。自 KOMA-Script 3.25 以来,这变得更加复杂,但我在下文中省略了这一点。 - 前缀行的大小。这是
\baselineskip
,但在使用 的值之前必须设置字体\baselineskip
。 - 前缀行和主标题行之间的距离。您可以通过
midkip
命令选项设置它\RedeclareSectionCommand
。只要您不更改样式,\chapter
它就会存储在内部宏中\scr@chapter@innerskip
。这也可以作为粘合剂。 - 章节主标题的大小。这是
\baselineskip
,但在使用值之前必须设置字体\baselineskip
。只要标题不需要换行符,这是正确的。 - 章节标题下方的距离。您可以通过
afterskip
命令选项设置该距离\RedeclareSectionCommand
。只要您不更改样式,\chapter
该距离就会存储在内部宏中\scr@chapter@belowskip
。但是,此命令的粘合值也可以为负数。如果 KOMA-Script <= 3.25,则必须始终使用绝对值而不是负值。自 KOMA-Script 3.25 以来,这变得更加复杂,但我在下文中省略了这一点。
有了这些知识我们就可以进行计算,但我们应该将其推迟到\begin{document}
。
\documentclass[chapterprefix = true]{scrbook}
\usepackage{blindtext}
\usepackage{eso-pic,picture,xcolor}
\newlength{\topedgetotextbelowchapter}
\makeatletter
\AtBeginDocument{%
\setlength{\topedgetotextbelowchapter}{%
\dimexpr \topmargin+1in% the top margin
+\headheight% the head height
+\headsep% distance from head to text area
+\topsep% distance to the first base-line
+\glueexpr\scr@chapter@innerskip\relax% distance between the prefix and the title
\relax
\addtolength{\topedgetotextbelowchapter}{%
% distance before the heading
\ifdim \glueexpr\scr@chapter@beforeskip\relax<\z@
-\glueexpr\scr@chapter@beforeskip\relax
\else
\glueexpr\scr@chapter@beforeskip\relax
\fi
}
\addtolength{\topedgetotextbelowchapter}{%
% distance after the heading
\ifdim \glueexpr\scr@chapter@afterskip\relax<\z@
-\glueexpr\scr@chapter@afterskip\relax
\else
\glueexpr\scr@chapter@afterskip\relax
\fi
}
}%
{\usekomafont{disposition}\usekomafont{chapter}{%
\global\advance\topedgetotextbelowchapter
\baselineskip
\usekomafont{chapterprefix}{%
\global\advance\topedgetotextbelowchapter
\baselineskip
}}}%
}
\makeatother
\usepackage{showframe}
\begin{document}
\AddToShipoutPictureBG*{%
\AtPageUpperLeft{%
\thicklines\color{red}%
\put(.5\paperwidth,0){\vector(0,-1){\topedgetotextbelowchapter}}%
}%
}
\chapter{Test Chapter}
\blindtext[3]
\end{document}
您应该注意,这是一个黑客解决方案,因为它使用了未记录的供包作者或用户使用的内部宏。