為什麼 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}

從某種意義上說,這個檔案是最小的:fontspecis forlualatexbabelis for lipsum; showframe只是給一個提示,問題的出現​​沒有也。

正如您在生成的 PDF 文件中看到的,文字沒有到達 所示框架的下邊界showframe

如果您取消註釋,問題就會消失,\KOMAoptions{firstfoot=false} 這是一種解決方法。

其他變化也具有指導意義:如果消除geometry(在應用程式中沒有選項),則文字高度不會改變,但邊界會適應實際文本的下邊界。

有趣的是,如果您消除該選項10pt或其替代方案,會發生什麼fontsize=10pt:然後文字向下直到下邊界。

另一個提示:這個問題似乎是新問題,例如與工具(lualatex 和其他編譯器)或套件/文檔類別的最近更新有關。

非常感謝幫忙。我常寫一頁紙的信,但現在……很難。

答案1

分別的第一頁scrlttr2scrletter有點特別。例如,頁腳的位置不僅取決於使用 或 設定的佈局typeareageometry還取決於偽長度 firstfootvpos。您可以使用視覺化該位置

\LoadLetterOption{visualize}
\showfields{foot}

正如已經解釋過的施維內巴克的回答到:使用 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

相關內容