我觉得这是一个大多数人都会放弃的常见问题。我想要的是减少文本区域和页脚之间的空间。这样文本区域和蓝线之间的空白就少了。
顺便问一下,为什么页脚周围没有框?
我不想做的事:
不使用
koma-script
。看这里。使用
geometry
包,因为据我所知,它与 不兼容。那么使用 koma 有什么意义呢?我知道在较新的版本中koma-script
有这个选项。usegeometry
就像这个问题一样。使用
enlargefirstpage
,因为这仅对第一页有效。看这里。
翻翻$texdoc koma-script
:
我找到了这张漂亮的页面几何图片,从那里看起来这里要改变的值是\footskip
。
此外,
scrlayer-scrpage
解释\footskip
为从文本区域的最后一条基线到页脚第一条正常基线的距离。
很高兴知道,如果我可以设置,\footskip
文本0
区域和页脚之间应该没有空格。但是这个空间会添加到文本区域吗?还是页脚会向上移动?
脚步跳跃 此复合选项设置 hoffset、voffset、width、height 和 align,以便图层跨越文本区域和页脚之间的垂直距离,并跨越文本区域的宽度。但请注意,虽然此区域的高度取决于
\footskip
,但并不相同。此选项不期望或允许值。
这是在某些图层选项表中scrlayer-scrpage
。我不太确定这会有什么帮助,因为正如它所说:此选项不期望或允许值。
我到目前为止尝试过的:
- 我玩了
\setlength{\textheight}{1.1\textheight}
(之后\typearea[current]{last}
) 和KOMAoptions
footheight
。这根本没有改变\footskip
,但可以用来选择添加空格的位置。
我的解决方案\setlength{\footskip}{0\baselineskip}
由于某些未知原因,页脚最终与文本区域的末尾重叠。因此\footskip
应该是这样\TheFootSkipDescribedInTheKomaDocs + \footheigh + \BottomRuleWith
的(在我的示例中为 2 毫米)。
这样就可以上下移动页脚,但文本区域不会扩展。现在\setlength{\textheight}{1.1\textheight}
也开始发挥作用,我们有一个完整的解决方案。
因为一切都是“运作”的,我不禁觉得,我在这里做了一件蹩脚的工作,可能有一个更干净的方法来做到这一点,如果没有,这至少可以帮助互联网上的其他人,因为我搜索了几个小时。
尚待解决的问题:
- 有没有更好的解决办法?
- 为什么页脚周围没有显示框
\usepackage{showframe}
? - 为什么不会
\setlength{\footskip}{0\baselineskip}
导致这样的结果:“[...]如果我可以设置\footskip
,0
文本区域和页脚之间就不应该有空格。”我觉得跟问题2的原因是一样的,因为latex想页脚为空或类似的东西,并使用从文本区域到底部没有高度的“框”的长度作为\footskip
。但是为什么呢?
\documentclass[fontsize=12pt, paper=a4, ngerman, listof=numbered, headinclude, headsepline, parskip=half, DIV=19]{scrreport}
\usepackage{scrhack}
\RequirePackage[ngerman]{babel}
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{setspace}
\onehalfspacing
\let\raggedsection\centering
\RedeclareSectionCommands[
beforeskip=0mm,
runin=false,
afterskip=-0.5\parskip
]{section,paragraph,subparagraph}
\usepackage{scrlayer-scrpage}
\usepackage[table,xcdraw]{xcolor}
\definecolor{red}{HTML}{D01010}
\definecolor{blue}{HTML}{1010D0}
\setkomafont{headsepline}{\color{red}}
\setkomafont{footsepline}{\color{blue}}
\KOMAoptions{
onpsinit={\linespread{1}\selectfont},
headheight=20mm,
footinclude,
footheight=25mm,
footwidth=foot
}
\newpagestyle{mystyle}
{ % header
% optional - top rule
{} % two-side - left page
{} % two-side - right page
{ % one-side
Header
}
% optional - bottom rule
(\textwidth,2mm)
}
{ % footer
% optional - top rule
(\textwidth,2mm)
{} % two-side - left page
{} % two-side - right page
{ % one-side
{
Footer
}
}
% optional - bottom rule
}
% recalc typearea
\typearea[current]{last}
\pagestyle{mystyle}
\usepackage{showframe}
\usepackage{lipsum}
\begin{document}
\section*{Test 1}
\lipsum[1-2]
\section*{Test 2}
\lipsum[3-4]
\section*{Test}
\lipsum[5-6]
\end{document}
答案1
\enlargefirstpage
和伪长度firstfootvpos
(如问题中的图片所示)由类scrlttr2
和包提供scrletter
。它们与无关scrreprt
。正如您所提到的,\footskip
是从文本区域的最后一条基线到页脚的第一个正常基线. 页脚第一条正常基线的位置由包显示showframe
。- 包
showframe
不显示页脚周围的框,因为例如标准类不提供选项footheight
和长度\footheight
。包typearea
设置\footskip
为\footheight+2.25\baselineskip
。因此,示例中文本区域和页脚之间的空间约为 2.25\baselineskip。 - 您可以在序言中(在页面样式定义之后
mystyle
)使用以下代码来直观地了解页脚的位置:
% visualize the footer layer:
\DeclareNewLayer[
clone=mystyle.foot.oneside,
contents=\textcolor{red!50}{\layercontentsmeasure}
]{measuremyfooter}
\AddLayersToPageStyle{mystyle}{measuremyfooter}
- 来自KOMA-Script文档:
如果您对边距有具体的要求,则 typearea 不适合。在这种情况下,您应该使用 geometry 包。
geometry
因此,如果您对页面布局有特殊要求,KOMA-Script 文档本身建议使用包。此外,您应该使用类选项usegeometry
。(不建议手动更改\textheight
和\footskip
。)
例子:
\documentclass[
fontsize=12pt, paper=a4,
ngerman,
listof=numbered,
headinclude,headsepline,headheight=20mm,
footinclude,footheight=25mm,
parskip=half,
DIV=19,
usegeometry%<- added
]{scrreport}
\usepackage{scrhack}
\usepackage{babel}
%\usepackage[utf8]{inputenc}% needed with outdated TeX distributions
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{setspace}
\onehalfspacing
\usepackage{geometry}
\geometry{
footskip=\dimexpr\footheight+2mm\relax,
bottom=\baselineskip,
heightrounded
}
\usepackage[table,xcdraw]{xcolor}
\definecolor{red}{HTML}{D01010}
\definecolor{blue}{HTML}{1010D0}
\usepackage[singlespacing=true]{scrlayer-scrpage}
\setkomafont{headsepline}{\color{red}}
\setkomafont{footsepline}{\color{blue}}
\newpagestyle{mystyle}
{ % header
% optional - top rule
{} % two-side - left page
{} % two-side - right page
{ % one-side
Header
}
% optional - bottom rule
(\textwidth,2mm)
}
{ % footer
% optional - top rule
(\textwidth,2mm)
{} % two-side - left page
{} % two-side - right page
{ % one-side
{
Footer
}
}
% optional - bottom rule
}
\pagestyle{mystyle}
\renewcommand*{\raggedsection}\centering
\RedeclareSectionCommands[
beforeskip=0mm,
runin=false,
afterskip=-0.5\parskip
]{section,paragraph,subparagraph}
\usepackage{showframe}% to show the page layout
% visualize the footer layer:
\DeclareNewLayer[
clone=mystyle.foot.oneside,
contents=\textcolor{red!50}{\layercontentsmeasure}
]{measuremyfooter}
\AddLayersToPageStyle{mystyle}{measuremyfooter}
\usepackage{lipsum}% dummy text
\begin{document}
\addsec*{Test 1}
\lipsum[1-2]
\addsec*{Test 2}
\lipsum[3-4]
\addsec*{Test}
\lipsum[5-8]
\end{document}