Grandi spazi bianchi

  • Creatore
    Topic
  • #100302
    Up
    0
    Down
    ::


    Buongiorno a tutti,
    continuo con la stesura della mia tesi 8) in formato B5 e ho notato una cosa che (sempre se possibile) mi piacerebbe modificare.

    Ho notato che compilando il documento, a volte ottengo degli spazi bianchi tra un paragrafo e il successivo decisamente esagerati (e a mio avviso poco estetici). Ottengo questo risultato quando per esempio inizio un nuovo paragrafo o sezione e LaTeX decide di iniziarlo in una nuova pagina.
    Siccome sono poco chiaro e lo so 😛 allego due immagini dove rappresento ogni paragrafo di testo con dei rettangoli. Nell Pag.1 gli spazi tra i vari paragrafi sono perfetti. nella Pag.2 si presenta il problema di cui parlavo dove tra due elementi di uno stesso elenco puntato si crea uno spazio “esagerato”. In una ipotetica Pag.3 inizierebbe una nuova Sezione del documento.

    [attachment=1263]Pag1.jpg[/attachment]

    [attachment=1264]Pag2.jpg[/attachment]

    Qualche saggio consiglio?

    Mille grazie e buona giornata a tutti!
    Davide

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #100303
      Up
      0
      Down
      ::

      pisi86″ post=99992Buongiorno a tutti,
      continuo con la stesura della mia tesi 8) in formato B5 e ho notato una cosa che (sempre se possibile) mi piacerebbe modificare.

      Ho notato che compilando il documento, a volte ottengo degli spazi bianchi tra un paragrafo e il successivo decisamente esagerati (e a mio avviso poco estetici). Ottengo questo risultato quando per esempio inizio un nuovo paragrafo o sezione e LaTeX decide di iniziarlo in una nuova pagina.
      Siccome sono poco chiaro e lo so 😛 allego due immagini dove rappresento ogni paragrafo di testo con dei rettangoli. Nell Pag.1 gli spazi tra i vari paragrafi sono perfetti. nella Pag.2 si presenta il problema di cui parlavo dove tra due elementi di uno stesso elenco puntato si crea uno spazio “esagerato”. In una ipotetica Pag.3 inizierebbe una nuova Sezione del documento.

      [attachment=1263]Pag1.jpg[/attachment]

      [attachment=1264]Pag2.jpg[/attachment]

      Qualche saggio consiglio?

      Mille grazie e buona giornata a tutti!
      Davide

      Chiarissimo, anche perché si tratta di una questione ben nota. Per risolvere devi usare saggiamente i comandi
      \enlargethispage e \looseness, che trovi spiegati nell’Arte di scrivere con LaTeX, scaricabile dalla sezione Documentazione di questo sito. Inoltre valuta anche la possibilità di modificare alcuni capoversi intervenendo direttamente nel testo, magari togliendo il superfluo.
      Ti ricordo inoltre che tutte quelle situazioni patologiche vengono segnalate nel file .log con un messaggio di
      Underfull \vbox.

      Ciao
      Ivan

    • #100304
      Up
      0
      Down
      ::


      Ottimo, grazie mille!!!
      Come questo è spiegato nella sezione “la revisione finale” non ci ero ancora arrivato 😛

      Ancora grazie mille!

    • #100305
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Come ti ha detto Ivan, il problema è ben noto; si presenta solo se componi flush bottom, quindi con le pagine affacciate che terminano allo stessa lunghezza.

        Inoltre le penalità per evitare le righe vedovo e le righe orfane;Le vedove sono costituite da righe isolate a inizio pagina con il resto del capoverso alle loro spalle, nel passato. Orfane sono le righe isolate alla fine della pagina, con il resto del capoverso, il futuro, che si trova nella pagina successiva. I tipografi farebbero carte false per evitare righe vedove e righe orfane, ma talvolta non se ne può fare a meno.

        Poi ci sono i titoli si paragrafi, sotoparagrafi eccetera. Questi titoli, a differenza di che cosa fanno i word processor, non devono assolutamente venire separati dal contenuto del rispettivo paragrafo, sottoparagrafo, eccetera. Tieni presente che se metti insieme la regola dlele orfane, lo sazio fra titolino e primo capoverso e il titolo stesso, occorono almeno 4 righe di spazio per inserire l’inizio di un sezionamento sotto a quello del capitoloUna per il titolo, una per lo spazio di separazione e due per cominciare il testo senza lasciare una riga orfana.

        Sapendo queste cose ti rindi conto che LaTeX fa del suo meglio; ma se il testo è quello che è, e gli spazi sono quelli che sono, e la parte elastica degli spazi è quella che è, c’è poco da fare e se LaTeX non ce la fa, è perché non si può fare di meglio con i vincoli imposti. Ricorda che la divisione del testo in pagine è una operazione di ottimizzazione discreta che un Matematico come Knuth non ha avuto problemi a concepire e a realizzare; e se l’ottimo è quello, vuol dire che non si può fare di meglio.

        Ma non si può fare di meglio se si lasciano il testo e i vincoli quelli che sono. Cambiando i vincoli cambia anche l’ottimo ottenibile; cambiando il testo cambia anche l’ottimo ottenibile.

        Allora, \enlargethispage, specialmente se con l’asterisco; è preziosa, ma non è l’unica soluzione perché \enlargethispage* non trova abbastanza spazio elastico da scorciare; oppure perché per togliere quello spazio eccessivo bisogna allungare la pagina di tre o quattro righe, e allora la brutteza degli spazi eccessivi, diventa la bruttezza della pagina intera.

        Ci sono sotanzialmente sono sostanzialmente due soluzioni, una delle quali automatizzabile con qualche probabilità di successo.

        1) Come ti ha detto Ivan la più efficace è quella di rimaneggiare il testo; per allungarlo si può usare \looseness, ma funziona solo con capoversi lunghetti, diciamo ameno 10 righe e talvolta non bastano; modificare il fraseggio è molto più efficace sia per allungare sia per scorciare il testo.
        Questa operazione va fatta essenzialmente nel testo della pagina che senza maquillage del testo avrebbe spazi verticali bianchi eccessivi; talvolta anche nella pagina precedente.

        2) Inserire un \newpage prima del comando di sezionamento; in questo modo la sezione comincia all’inizio della terza pagina, ma la seconda, quella con gli spazi eccessivi, accumula lo spazio necessario a fondo pagina; la pagina si dice “mozza”, perché è stata tagliata, “mozzata”, quindi non allineata con la pagina a fronte. Questa operazione si può automatizzare con una certa probabilità di successo definendo un comando, diciamo \goodpagebreak, che misuri quanto spazio disponibile c’è in fondo alla pagina, per cui si può impostare se inserire la pagina se manca lo spazio corrispondente a 4 righe, o 5 righe; in questo odo si riesce ad ottenere un comportamento buono, mozzando le pagine senza lasciarle troppo mozze; ti avviso che questo comando talvolta non produce nessun effetto a casa del modo asincrono con il quale il programma di composizione produce el pagine da appendere al file di uscita, ma di solito funziona. Credo di averne descritto una passibile realizzazione nella Guida GuIT, scaricabile dalla sezione Documentazione di questo sito.

        Prima di comentarti con l’utomatizzazione del metodo 2) cimentati con il metodo 1) 🙂

      • #100306
        Up
        0
        Down
        ::


        Non si smette mai di imparare 😀

        Grazie mille!

      • #100307
        samiel
        Partecipante
          Up
          0
          Down
          ::


          Puoi usare anche \raggedbottom
          che è il contrario dell’opzione `heightrounded` del pacchetto geometry,
          anche se poi le pagine vengono di lunghezza diversa

          m

        • #100308
          Up
          0
          Down
          ::


          Secondo me, \raggedbottom rischia di diventare una toppa peggiore del buco, proprio perché di solito lo si dà a livello globale per tutto il documento, nel qual caso (come pure ti avverte samiel) il LaTeX rinuncia ad allineare i margini inferiori di tutte le pagine, e non solo di quella che produce il problema. Piuttosto, è meglio usare un \newpage in quell’unica pagina, come ti suggerisce OldClaudio, il quale però ti indica anche quella che, sempre per me, è la via maestra: rimaneggiare il testo, periodando diversamente. Vedi anche la citazione in fondo a pag. 107 del TeXbook, che però si riferisce alla divisione in righe.:smile:


          @samiel
          : a me sembra che l’opzione heighrounded non c’entri…


          @OldClaudio
          :

          […] modo asincrono con il quale il programma di composizione produce el pagine da appendere al file di uscita […]

          Quindi, è definito il concetto di «comando che si trova a inizio pagina»? 😉

          Ciao.


          Gustavo

        • #100309
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::

            @OldClaudio:

            […] modo asincrono con il quale il programma di composizione produce el pagine da appendere al file di uscita […]

            Quindi, è definito il concetto di «comando che si trova a inizio pagina»?

            Non non è definito.

            L’attivazione della divisione in righe viene eseguita ad ogni fine capoverso, diviso il capoverso in righe queste scatole orizzontali vengono inviate nella scatola 255 che funziona da galley proof; bozza non impaginata e senza inserzioni. Ad ogni capoverso che viene stivato nella scatola 255, viane attivata la routine di output che controlla se c’è abbastanza materiale per spedire una pagina completa al file di uscita; pagina completa di note, oggetti flottanti e compagnia.

            Per vedere se c’è abbastanza materiale da spedire fuori (routine di ship out) bisogna vedere quanto spazio rimane in fondo all’eventuale pagina per metterci qualcosa; ecco che quando un tratto di codice rimasto nella lista verticale si trova in questa fase, vene eseguito e in particolare viene controllato se il \pagegoal (che inizialmente vale \textheight, ma va diminuendo via via che si mettono inserimenti in calce, è maggiore di \pagetotal, il totale della potenziale pagina accumulato fino a quel momento compresi gli oggetti flottanti e altri inserimenti verticali.
            Ecco che se questa differenza è positiva ci sta ancora qualcosa, ma le penalità verticali possono impedire di metterci qualcosa e allora viene allargato lo spazio elestico verticale. ecco che se ainizio pagina nuova si controlla che siamo con \pagetoal=0pt, siamo a inizio pagina per davvero. Se a fine pagina , prima del salto abbiamo \pagetotal =\pagegoal siamo a fine pagina; se in qualunque momento in modo verticale controlliamo che \pagegoal-\pagetotal <5\balineskip, vuol dire che c’è ancora posto per circa 4 righe di testo.

            MA il concetto di inzio pagina non è mai espresso in modo preciso nel file che l’utente crea, ma l’utente può inserire comandi che verranno eseguiti solo al momento di spedire fuori una pagina. Il più noto di tutti è \write, il cui argomento viene sviluppato ed eseguito solo al momento dello ship out. Ma ce ne sono molti altri che sono spazi verticali, penalità in modo verticale, e simili cose.

            Purtroppo la routine di output, così com’è ora è la sovrapposizione di 30 anni di modifiche e di correzioni e di aggiunte, su un file che inizialmente, nel 1984 circa, non era stato adeguatamente commentato e in cui le varie modifiche sono state commentate e giustificate in na maniera comprensibile solo a chi le ha fatte. Ora esiste un dtx che raccoglie il codice odierno e i commenti passati, quindi è decisamente oscuro.

            Ne avrete notizia da uno degli autori, forse il principale dopo Lamport stesso, Frank Mittelbach, in un articolo che ci ha permesso di tradurre e che apparirà nel prossimo numero di ArsTeXnica.

          • #100310
            Up
            0
            Down
            ::

            OldClaudio” post=100013[…]
            Ne avrete notizia da uno degli autori, forse il principale dopo Lamport stesso, Frank Mittelbach, in un articolo che ci ha permesso di tradurre e che apparirà nel prossimo numero di ArsTeXnica.

            Immagino, dunque, che ci sarà un articolo in lingua originale, presumo in inglese. Potresti darne i riferimenti? Così comincio subito a rimettermi a studiare… 🙂

            Ciao.


            Gustavo

          • #100311
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Frank Mittelback: “How to influence the position of float environments like figure and table in LaTeX?”, TUGboat volume 35, numero 3, 2014.

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

          Go to top