Почему 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есть для lualatex и babelесть для lipsum; showframeон просто дает подсказку, проблема возникает и без этого.

Как вы можете видеть в полученном PDF-файле, текст не доходит до нижней границы рамки, показанной showframe.

Проблема исчезает, если раскомментировать ее, \KOMAoptions{firstfoot=false} что является своего рода обходным решением.

Другие варианты также поучительны: если вы уберете geometry(что в приложении не предусмотрено), то высота текста не изменится, но граница подстроится под нижнюю границу фактического текста.

Интересно также, что произойдет, если исключить вариант 10ptили его альтернативу fontsize=10pt: тогда текст опустится до нижней границы.

Еще один совет: эта проблема, похоже, новая, например, связана с недавними обновлениями инструментов (lualatex и других компиляторов) или пакетов/классов документов.

Помощь очень ценится. Я часто пишу письма на 1 страницу, но сейчас... сложно.

решение1

Первая страница соответственно как-то особенная scrlttr2. scrletterНапример, положение нижнего колонтитула зависит не только от макета, установленного с помощью typeareaили geometry, но и отпсевдодлина firstfootvpos. Вы можете визуализировать это положение, используя

\LoadLetterOption{visualize}
\showfields{foot}

Как уже объяснялось вОтвет Швайнебакек:Как избежать пустого места в конце страницы при использовании scrlttr2?Наибольшую текстовую область на первой странице можно получить с помощью опции firstfoot=false,enlargefirstpage.

Параметр firstfoot=falseболее или менее перемещает нижний колонтитул под страницу.

Option 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 по умолчанию

Связанный контент