Por que o scrlttr2 não esgota o final da página?

Por que o scrlttr2 não esgota o final da página?

Eu tenho o seguinte arquivo 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}

De certa forma, este arquivo é mínimo: fontspecis for lualatex e babelis for lipsum; showframeé só para dar uma dica, o problema ocorre sem também.

Como você pode ver no arquivo PDF resultante, o texto não atinge o limite inferior do quadro mostrado por showframe.

O problema desaparece se você descomentar, \KOMAoptions{firstfoot=false} o que é uma espécie de solução alternativa.

Outras variações também são instrutivas: Se você eliminar geometry(o que não existe opção no aplicativo), a altura do texto não muda, mas o limite se adapta ao limite inferior do texto real.

Interessante também é o que acontece se você eliminar a opção 10ptou sua alternativa fontsize=10pt: então o texto desce até o limite inferior.

Outra dica: Este problema parece novo, por exemplo, relacionado a atualizações recentes de ferramentas (lualatex e outros compiladores) ou pacotes/classes de documentos.

Ajuda muito apreciada. Freqüentemente escrevo cartas de 1 página, mas agora... difícil.

Responder1

A primeira página do scrlttr2resp. scrletteré de alguma forma especial. Por exemplo, a posição do rodapé não depende apenas do layout definido com typeareaou geometry, mas também dopseudo comprimento firstfootvpos. Você pode visualizar essa posição usando

\LoadLetterOption{visualize}
\showfields{foot}

Como já explicado emA resposta de Schweinebackepara:Como evitar espaços vazios no final de uma página ao usar o scrlttr2?a maior área de texto na primeira página pode ser obtida usando a opção firstfoot=false,enlargefirstpage.

A opção firstfoot=falsemove mais ou menos o rodapé abaixo da página.

A opção enlargefirstpageainda amplia a área de texto, abaixo da posição do layout do rodapé (definida geometryno seu caso). Portanto, a margem inferior é reduzida para \footskipa primeira página.

Mas IMHO ambos não são necessários e nem desejados no seu caso. firstfoot=falseé mais ou menos acidentalmente uma solução alternativa.

O principal problema com o seu código é que o carregamento geometryaltera os parâmetros do layout, mas não ajusta automaticamente os parâmetros dependentes.pseudo comprimentos. Eles já estão configurados carregando o arquivo default DIN.lco, onde você pode encontrar:

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

Portanto, firstfootvposdepende não apenas de um, mas de vários comprimentos de layout, que geometrysão definidos dependendo do tamanho da fonte. Portanto, não é inesperado que alterar o tamanho da fonte e carregar geometrysem recarregar a opção de letra DIN.lcoresulte em configurações estranhas.

Portanto, o primeiro passo para obter um resultado válido seria adicionar

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

após o carregamento 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}

usando 10pt ou fontsize=10pt

E agora, o resultado sem opção 10ptou fontsize=10pte portanto o padrão 12pt, é muito parecido:

não usando 10pt, mas o padrão 12pt

informação relacionada