Ampliando o espaço vertical e reduzindo a maldade na parte inferior de uma página

Ampliando o espaço vertical e reduzindo a maldade na parte inferior de uma página

Problema

Existe uma maneira no TeX/LaTeX de reduzir de alguma forma a maldade que vem da distância de uma linha da altura alvo de uma página?

Contexto

Estou criando uma classe de documentos para meus alunos usarem LaTeX, em vez de MS Word, para automatizar a criação de documentos portáteis. Espera-se que os alunos não tenham nenhuma familiaridade com LaTeX, então eu gostaria de lidar automaticamente com o maior número possível de casos extremos em minha aula de LaTeX.

Ao mesmo tempo, a minha instituição tem requisitos para os tipos de documentos que estou tentando cobrir, no que diz respeito a fontes, espaços, justificações, etc. No entanto, é permitido que as margens inferiores da página sejam um tanto inconsistentes em um documento.

Em particular, é necessário que as teses utilizem fontes específicas de tamanho 14pt com intervalo entre linhas de 1,5. Portanto, xelatexé usado para compilação e, mais importante, a maldade condicionada à distância vertical de uma linha da parte inferior de uma página cresce muito mais rápido do que em documentos TeX/LaTeX comuns.

O seguinte MWE reproduz o problema (com pdflatextambém):

\documentclass{book}

\renewcommand{\section}[1]{\ifhmode\par\fi\addvspace{0.5em}\textbf{#1}\par
   \penalty201\addvspace{0.5em}}
\renewcommand{\subsection}[1]{\ifhmode\par\fi\addvspace{0.5em}\textbf{\textit{#1}}\par\penalty301}

\begin{document}

\parskip=1em\raggedbottom
\tracingonline=1\tracingpages=1

1\par2\par3\par4\par5\par6\par7\par8\par9\par10\par11\par12\par13\par14\par
15\par16\par17\par18\par19\par20\par21\par22

\section{Section 1}\section{Section 2}\subsection{Subsection}
\par23

\end{document}

que produz o resultado (aqui para facilitar a leitura cortei artificialmente a imagem e reduzi as margens da página): resultado recortado da compilação

Rendimentos de rastreamento de página (a parte entre as páginas):

% t=472.0 g=550.0 b=10000 p=0 c=100000#
% t=499.0 g=550.0 b=10000 p=201 c=100000#
% t=526.0 g=550.0 b=10000 p=201 c=100000#
% t=553.0 g=550.0 b=* p=301 c=*
[1]
%% goal height=550.0, max depth=5.0
% t=10.0 g=550.0 b=10000 p=301 c=100000#
% t=32.0 g=550.0 b=10000 p=0 c=100000#

Neste exemplo gostaria que a seção 2 estivesse na mesma página da subseção, e quero que a subseção estivesse na mesma página do parágrafo “23” respeitando as penalidades envolventes.

Eu sei que poderia atribuir infinitamente ruim \penalty 10000após o título de uma seção, mas isso introduziria outro problema. Parece-me comum que as pessoas primeiro definam uma estrutura de conteúdo colocando capítulos/seções/subseções vazias etc., e depois preencham o conteúdo propriamente dito. Com penalidade infinita, todas essas seções estariam na mesma página e colocadas além da borda da página. E é isso que \@startsectionacontece.

Ou seja, gostaria de ter a possibilidade de quebra de página entre a Seção 1 e a Seção 2 do MWE ainda que com penalidade.

A única maneira de atingir esses objetivos que consegui encontrar é brincando com \parskipestiramento (5em no exemplo real) e encolhimento, embora não pareça ser uma solução confiável, introduziria a possibilidade de violar os requisitos do instituição, e ouvi dizer que geralmente é indesejável na tipografia. Portanto, prefiro tornar a margem inferior extensível, mas sem tornar o mal infinito para respeitar as penalidades, e minha dúvida é sobre a possibilidade de fazer isso em uma classe LaTeX.

Eu também tentei usar \raggedbottome \def\@textbottom{...}para isso, mas eles não afetam de forma alguma os danos/custos das quebras de página. Comparei os PDFs resultantes usando a diff-pdfferramenta, mas colocar essas macros não faz nenhuma diferença.

informação relacionada