为什么 scrlttr2 没有耗尽页面底部?

为什么 scrlttr2 没有耗尽页面底部?

我有以下文件test.tex

\documentclass[a4paper,10pt,version=last]{scrlttr2}%,fontsize=10pt

\usepackage{fontspec}% for lualatex 
\usepackage{geometry}
\usepackage[latin]{babel} % for lipsum
\usepackage{lipsum}
\usepackage{showframe}

\setkomavar{subject}[]{Geometrie}


%\KOMAoptions{firstfoot=false}

\begin{document}

\begin{letter}{%
  CapMini GmbH \\
  Egon Walther\\
  Walthershofener Straße 20\\
  88444 Walthershofen\\
} 
  \opening{Salve Egon,}
  \lipsum{1}
  
  \closing{Regards\\[2\baselineskip]}

\end{letter}
\end{document}

从某种意义上说,此文件是最小的:fontspec是用于lualatexbabel是用于lipsumshowframe只是给出一个提示,问题在没有也的​​情况下也会发生。

正如您在生成的 PDF 文件中看到的,文本没有延伸到所示框架的下边界showframe

如果取消注释,问题就会消失,\KOMAoptions{firstfoot=false} 这是一种解决方法。

其他变化也有启发性:如果消除geometry(在应用程序中没有选项),则文本高度不会改变,但边界会适应实际文本的下边界。

有趣的是,如果您消除该选项10pt或其替代方案fontsize=10pt,则文本会下降直到下边界。

另一个提示:这个问题似乎是新的,例如与工具(lualatex 和其他编译器)或包/文档类的最新更新有关。

非常感谢您的帮助。我经常写一页纸的信,但现在……很难。

答案1

scrlttr2resp.的第一页scrletter有些特殊。例如,页脚的位置不仅取决于使用typearea或设置的布局geometry,还取决于伪长度 firstfootvpos. 您可以使用以下方式可视化该位置

\LoadLetterOption{visualize}
\showfields{foot}

正如已经解释的那样Schweinebacke 的回答到:使用 scrlttr2 时如何避免页面末尾出现空白?使用选项可以实现第一页上最大的文本区域firstfoot=false,enlargefirstpage

选项firstfoot=false或多或少会将页脚移动到页面下方。

选项enlargefirstpage甚至会放大文本区域,使其低于页脚的布局位置(在您的例子中设置为)。因此底部边距在第一页上geometry缩小到。\footskip

但恕我直言,在您的情况下,这两者都不是必需的,也不是想要的。firstfoot=false或多或少是一种意外的解决方法。

您的代码的主要问题是,加载geometry会改变布局参数,但不会自动调整依赖项伪长度。这些已经通过加载默认设置DIN.lco,您可以在其中找到:

    \setplength{firstfootvpos}{1in}%
    \addtoplength{firstfootvpos}{\topmargin}%
    \addtoplength{firstfootvpos}{\headheight}%
    \addtoplength{firstfootvpos}{\headsep}%
    \addtoplength{firstfootvpos}{\textheight}%
    \addtoplength{firstfootvpos}{\footskip}%

因此,firstfootvpos不仅取决于一个布局长度,还取决于多个布局长度,geometry布局长度取决于字体大小。因此,更改字体大小并加载geometry而不重新加载字母选项DIN.lco会导致奇怪的设置,这并不令人意外。

因此,获得有效结果的第一步是添加

\LoadLetterOption{DIN}% or whatever letter option you are using

加载后geometry

\documentclass[a4paper,10pt,version=last]{scrlttr2}%,fontsize=10pt

\usepackage{fontspec}% for lualatex 
\usepackage{geometry}
\usepackage[latin]{babel} % for lipsum
\usepackage{lipsum}
\usepackage{showframe}

\setkomavar{subject}[]{\the\dimexpr\useplength{firstfootvpos}\relax}
\LoadLetterOption{DIN}% Load it again after changing the layout by loading geometry
\LoadLetterOption{visualize}
\showfields{foot}

%\KOMAoptions{enlargefirstpage}
%\KOMAoptions{firstfoot=false}

\begin{document}

\begin{letter}{%
  CapMini GmbH \\
  Egon Walther\\
  Walthershofener Straße 20\\
  88444 Walthershofen\\
} 
  \opening{Salve Egon,}
  \lipsum{1}
  
  \closing{Regards}% IMHO \\[2\baselineskip] is nonsense here, so I've removed it

\end{letter}
\end{document}

使用 10pt 或 fontsize=10pt

10pt现在,没有选项或 的结果fontsize=10pt以及默认值12pt非常相似:

不使用 10pt,而是使用默认的 12pt

相关内容