如何使用 scrlayer-scrpage pagestyle 更改 koma-script 中的 footskip?

如何使用 scrlayer-scrpage pagestyle 更改 koma-script 中的 footskip?

我觉得这是一个大多数人都会放弃的常见问题。我想要的是减少文本区域和页脚之间的空间。这样文本区域和蓝线之间的空白就少了。 在此处输入图片描述

顺便问一下,为什么页脚周围没有框?


我不想做的事:

  • 不使用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}也开始发挥作用,我们有一个完整的解决方案。

因为一切都是“运作”的,我不禁觉得,我在这里做了一件蹩脚的工作,可能有一个更干净的方法来做到这一点,如果没有,这至少可以帮助互联网上的其他人,因为我搜索了几个小时。

尚待解决的问题:

  1. 有没有更好的解决办法?
  2. 为什么页脚周围没有显示框\usepackage{showframe}
  3. 为什么不会\setlength{\footskip}{0\baselineskip}导致这样的结果:“[...]如果我可以设置\footskip0文本区域和页脚之间就不应该有空格。”我觉得跟问题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}

在此处输入图片描述

相关内容