Newpage condizionata

  • Creatore
    Topic
  • #122003
    Up
    0
    Down
    ::


    Salve, vi espongo il problema: sto scrivendo un foglio in latex e un teorema mi viene spezzato in questo modo: viene scritto teorema in fondo alla pagina 7 e il testo del teorema in cima alla pagina 8. Vorrei evitare questo problema. So che pagebreak potrebbe risolvere il problema, ma non so se modificherò il testo precedente e se rimuovessi qualche cosina mi lascerebbe la pagina 7 troppo spaziata.
    Siccome il testo che devo scrivere è abbastanza lungo e credo che dovrò applicare questa soluzione diverse volte non vorrei dover ricontrollare tutto il testo OGNI volta che cambio qualcosa all’iinizio. C’è un modo di fare un pagebreak o un newpage condizionata? Del tipo: se questo ambiente (nell’esempio l’ambientetheorem) viene spezzato allora fai un pagebreak, altrimenti lascia stare?

    Grazie a chi mi risponderà, vi copio il testo che vorrei evitare che si spezzi

    `\begin{thm}[immersione di Whitney]
    \begin{itemize}
    \item []
    \item Bla bla bla
    \item bla bla bla
    \end{itemize}
    \end{thm}`

Visualizzazione 0 filoni di risposte
  • Autore
    Risposte
    • #122004
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Le cose condizionate sono, appunto, condizionate, se la conndizione è formulata male succedono cose indesiderate. Tutto ciò è lapalissiano, ma vediamo se riesco a spiegarmi con il tuo esempio.

        Se formuli un teorema con una lista, il corpo del teorema diventa verticalmente più altro e diventa un oggetto ingombrante difficile da posizionare in modo che non si tagli a fine pagina.

        Certo potresti inscatolare l’intero teorema in una scatola; nel misuri l’altezza de prima di sputare fuori la scatola nel testo verifichi se la differenza fra \pagegoal e \pagetotal è minore dell’altezza della scatola. se è minore emetti un \newpage ed emetti la scatora dopo questo comando, oppure emetti la scatola. È evidente che se il teorema “itemizzato” contiene parecchie righe, la pagina prima di \newpage rimane pesantemente mozza.

        Allora io userei un approccio diverso; io spezzerei il teorema durante la “itemizzazione”, Inserirei prima di \begin{thm}{Immersione …} un comando come \goodpagebreak
        `\newcommand\goodpagebreak[1][4]{%
        \unless\ifdim\dimexpr\pagegoal-\pagetotal>#1\naselineskip\newpage\fi}
        `che poui inserire lasciando una riga vuota prima e una riga vuota dopo.

        Spiegazione: l’argomento facoltativo impostato a 4 serve per calcolare l’ammontare dello spazio residuo sulla pagina; il test dimensionale confronta l’espressione dimensionale \dimexpr\pagegoal -\pagetotal con l’altezza di tante righe quante sono quelle indicate dal numero facoltativo. se questa altenza NON supera l’altezza richieste inserisce il comando \newpage. Nel caso specifico del tuo esempio è possibile che \goodpagebrak[3] possa inerire il \newpage dopo sole tre righe, quindi il titolo, lo spaziatore verticale e il primo \item. La pagina resterebbe mozza di sole tre righe, che non è il meglio ma è sempre meglio del solo titolo in basso e l’inizio della lista nella pagina dopo.

        Io uso sempre \goodpagbreak con il valore di defualt preimpostato e i risultati non sono male.

    Visualizzazione 0 filoni di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top