[…]
C’è un’altra soluzione che funziona se il capoverso precedente la citazione è di almeno quattro righe (se il capoverso precedente è di tre righe o meno il problema non si pone: tutto di là).
`\newenvironment{specialpar}[1]{\par#1}{\par}
…
\begin{specialpar}{\widowpenalties 3 10000 -10000 0\relax}
Testo del capoverso precedente la citazione, lungo almeno quattro righe
\end{specialpar}
\begin{quote}
Citazione che si porterà dietro esattamente due righe del capoverso precedente.
\end{quote}`
Carino, vero?[…]
Non mi convince appieno, per almeno due motivi:
1) occorre intervenire anche sul capoverso precedente la citazione, per incapsularlo nell’ambiente specialpar;
2) ma soprattutto, non è che una variante della prima soluzione (forzare un cambio di pagina due righe prima della citazione), e ne condivide il difetto di richiedere di sapere già che la pagina sta per finire.
Infine, sono un vecchio barbogio tradizionalista, e finché posso rimanere fedele al TeX di Knuth son più contento.
Insisto col dire che la soluzione del problema sia cambiare il valore di \@beginparpenalty, o definendo un ambiente ad hoc come il sopraccitato quote*, o direttamente per le vie brevi:
`
\begingroup
\makeatletter \@beginparpenalty = \@M \makeatother
\begin{quote}
Mettete qui la vostra citazione.\qquad
(\textsl{B.~Stroustrup})
\end{quote}
\endgroup
`
(come avevo scritto — e poi scientemente cancellato! — prima di tentare maldestramente di fare troppo il furbo).
Si può anche considerare una variante più blanda, con \@beginparpenalty impostato a \@highpenalty anziché a 10000.
Ciao.
—
Gustavo