revisioni finali: quali strumenti usare?

  • Creatore
    Topic
  • #66802
    Up
    0
    Down
    ::


    Ciao a tutti

    In sede di revisione finale ci si trova spesso a controllare il file .log per eliminare gli overfull e gli underfull box.

    Qual è la strategia migliore da seguire secondo la vostra esperienza.

    1) In alcuni casi, gli overfull box potrebero andarci bene. Per esempio una tabella che sborda ma che rimane entro lo spazio delle note a margine.
    In questo caso esiste un modo per far sì che nel .log, un particolare overfull box non venga segnalato?

    2) Qual è il valore consigliato per i tre parametri (ho indicato quelli che uso io attualmente)
    `\hfuzz=1.5pt
    \hbadness=2000
    \vbadness=2000`
    ?
    Nel secondo caso, è sottointeso, usando microtype.

    3) C’è un modo per dire a LaTeX di non andare a capo con una sola sillaba?
    Per esempio:

    nel mezzo del cammin di nostra vi-
    ta.

    E se sì ha senso o sono maggiori gli svantaggi?

    4) Se si va a capo in un titolo di sezione con \\, nel .log appare questo Warning:
    `Package hyperref Warning: Token not allowed in a PDF string (Unicode):
    (hyperref) removing `\\' on input line 5.
    `
    Il comando di hyperref:
    `\textorpdfstring{codicepertesto}{codiceperpdf}`
    non funziona, nemmeno se preceduto da \protect. Funziona però all’interno di
    \addcontentsline.

    5) Per sistemare problemi di riempimento verticale e/o orizzontale si usano spesso gli automatismi:
    `\enlargethispage{}`
    e
    `
    \looseness=

    `

    Non potrebbe essere resa automatica questa scelta? Stavo pensando a un pacchetto (inesistente?) che in base ai valori di \vbadness
    automaticamente allarghi la pagina precedente a quella che ha l’underfull vbox. Naturalmente in tal caso l’allargamento dovrebbe essere segnalato.
    Visto che LaTeX fa molte scelte al posto nostro, perché non permettergli di scegliere, entro certi limiti, quali pagine allargare o restringere di una riga per migliorare il riempimento?

    Ciao
    Ivan

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #66803
      Up
      0
      Down
      ::

      ivan” post=65745Ciao a tutti

      In sede di revisione finale ci si trova spesso a controllare il file .log per eliminare gli overfull e gli underfull box.

      Qual è la strategia migliore da seguire secondo la vostra esperienza.

      1) In alcuni casi, gli overfull box potrebero andarci bene. Per esempio una tabella che sborda ma che rimane entro lo spazio delle note a margine.
      In questo caso esiste un modo per far sì che nel .log, un particolare overfull box non venga segnalato?

      `\makebox[\textwidth][l]{%
      \begin{tabular}{…}

      \end{tabular}}`

      ivan2) Qual è il valore consigliato per i tre parametri (ho indicato quelli che uso io attualmente)
      `\hfuzz=1.5pt
      \hbadness=2000
      \vbadness=2000`
      ?
      Nel secondo caso, è sottointeso, usando microtype.

      `\hfuzz=0.1pt
      \hbadness=1000
      \vbadness=1000`
      Cioè i valori di default. 🙂

      ivan3) C’è un modo per dire a LaTeX di non andare a capo con una sola sillaba?
      Per esempio:

      nel mezzo del cammin di nostra vi-
      ta.

      E se sì ha senso o sono maggiori gli svantaggi?

      `\addto\extrasitalian{\italianhyphenmins{3}{4}}`
      Non vedo il grande vantaggio.

      ivan4) Se si va a capo in un titolo di sezione con \\, nel .log appare questo Warning:
      `Package hyperref Warning: Token not allowed in a PDF string (Unicode):
      (hyperref) removing `\\' on input line 5.
      `
      Il comando di hyperref:
      `\textorpdfstring{codicepertesto}{codiceperpdf}`
      non funziona, nemmeno se preceduto da \protect. Funziona però all’interno di
      \addcontentsline.

      Sicuro? Il comando è \texorpdfstring e \section{Un titolo di sezione\texorpdfstring{\\}{ }molto lungo} funziona certamente.

      ivan5) Per sistemare problemi di riempimento verticale e/o orizzontale si usano spesso gli automatismi:
      `\enlargethispage{}`
      e
      `
      \looseness=

      `

      Non potrebbe essere resa automatica questa scelta? Stavo pensando a un pacchetto (inesistente?) che in base ai valori di \vbadness
      automaticamente allarghi la pagina precedente a quella che ha l’underfull vbox. Naturalmente in tal caso l’allargamento dovrebbe essere segnalato.
      Visto che LaTeX fa molte scelte al posto nostro, perché non permettergli di scegliere, entro certi limiti, quali pagine allargare o restringere di una riga per migliorare il riempimento?

      Automatismi?

      No, non si può. Quando una pagina è uscita non ci si può più fare niente. E la scelta di quali pagine (o capoversi) allungare o accorciare non può essere automatica.

      Ciao
      Enrico

    • #66804
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Se usi babel con l’opzione italian viene messa un valore di demerito altissimo ad una penultima riga di un capoverso che sia tagliato nell’ultima parola; ma i demeriti sono dei “pesi fortissimi” in un processo di minimizzazione, non solo il valore infinito.

        Come dice Enrico si potrebbero impostare a 3 e 4 i numeri minimi dlele lettere del primo e dell’ultimo moncone di una parola da sillabare; ma non basterebbe per evitare la divisone di mae-stra. Io vedo meglio la questione dei demeriti, che potrebbero essere anche aumentati. Attualmente la definizione è
        `
        \finalhyphendemerits=50000000
        `
        e se conti gli zeri quel numero vuol dire 50 milioni, puoi sempre aggiungere qualche zero, almeno fino a quando non va in overflow.

        Devo dire che con microtype (ma anche senza) in quasi trent’anni avrò visto due sole volte sceglire una divisione in righe di un capoverso che portasse alla cesura dll’ultima parola. In quel cso io per quel capoverso userei una \loosenes pari a 1, incoragginado il motore di composizione a non essere troppo fiscale con la ristrettezza degli spazi interparola; ma questa soluzione vale solo se il capoverso contiene molte righe.

        Rarissimamente si potrebbe usare una cosa del genere:
        `
        {\tolerance=9999
        Capoverso abbastanza lungo
        \par}
        `
        (Attenzione a racchiudere bene dentro le graffe). Non si può certo considerare una soluzione elegante ma talvolta, se non si può riformulare il capoverso, bisogna fare di necessità virtù.

      • #66805
        Up
        0
        Down
        ::


        Grazie ad entrambi per le risposte.
        Uso microtype, sì. Però mi sono dimenticato di dire che lo uso con XeLaTeX.
        Si tratta della versione beta di microtype, che però permette la protrusione, che è quello che soprattutto mi serve.
        Spero che entro fine febbraio diventi definitiva, ma ne dubito.


        @Enrico

        Grazie per il \makebox “anti avvertimento”: eliminati un’altra decina di Warning! Il mio obiettivo è di avere il .log pulito, per essere sicuro che niente mi sfugga 🙂
        Avevo sbagliato a inserire il comando. Naturalmente è \texorpdfstring, come ho usato in altre parti :mrgreen: (mi bacchetto da solo) Questo mi elimina l’ultimo Warning relativo
        Vorrà dire che non userò più \hfuzz \hbadness e \vbadness 🙁


        @Claudio
        e vero, i casi in cui (xe)latex va a capo con l’ultima sillaba non sono molti. Io però sto impaginando un testo con giustezza di 10 cm
        e ciò aumenta tale eventualità. Guadagnare una riga qua e là penso che eviterebbe alcuni overfull vbox. Ma non sono sicuro. Farò dei tentativi.

        Ciao
        Ivan

      • #66806
        Up
        0
        Down
        ::

        ivan” post=65758Vorrà dire che non userò più \hfuzz \hbadness e \vbadness 🙁

        Puoi mettere \hbadness=10000 e \vbadness=10000, se non vuoi messaggi oltre quelli di Overfull, ma stai semplicemente nascondendo le scoasse sotto il tappeto (scoasse = spazzatura, ndr). Una “badness” di 2000 è certamente eccessiva in una \hbox, visto che corrisponde a uno “stretch factor” di 2.71; con Computer Modern a corpo 10 questo significa che lo spazio tra le parole diventa, in punti,

        3.33 + 1.67*2.71 = 7.86

        (3.33pt è il normale spazio tra parole, 1.67pt è la quantità disponibile per l’allargamento, che viene moltiplicata per lo “stretch factor”).

        Con badness=1000, lo spazio tra parole è circa 6.9pt, più accettabile perché è solo poco più del doppio dello spazio “ottimale”.

        Nota TeXnica. Lo “stretch factor” si ottiene dividendo la “badness” per 100 ed estraendo la radice cubica. Se la badness è minore di 100, il valore può anche corrispondere allo shrink factor; TeX non strizza mai uno spazio oltre il massimo disponibile, quindi lo shrink factor non può mai essere maggiore di 1.

        Ciao
        Enrico

      • #66807
        Up
        0
        Down
        ::


        Riprendo questo topic per risolvere una situazione particolare.
        In un testo in formato 14X21 ho sistemato tutti gli underfull vbox con i sistemi noti.
        Ora, però, alcune pagine risultano ancora mal riempite. L’allargamento è visibile, anche se minimo.

        A questo punto mi sto chiedendo se non sia il caso di usare \raggedbottom.
        Questo però spinge in alto tutto il testo, comprese le note, che in basso non appaiono più in alcuni casi allineate.
        Il testo compare però molto più compatto.

        Sarebbe meglio se venisse allargato lo spazio tra testo e note, spazio che ho impostato con geometry:
        `\geometry{
        papersize={14cm,21cm},
        textwidth=10cm,
        lines=35,
        headheight=14pt,
        headsep=\MARheadsep,
        top=\MARtopmargin,
        hmarginratio=1:1,
        %nomarginpar,
        marginparsep=6pt,
        marginparwidth=1.5cm,
        footnotesep=\dimexpr(1.2cm-\baselineskip) plus 2pt minus 2pt,
        heightrounded,
        }`
        Al di là del codice sporco (alcune lunghezze mi servono anche in altre parti), con qualcosa come
        `\dimexpr(1.2cm-\baselineskip) plus 2ex minus 2pt`
        miglioro alcune pagine ma rinascono dal nulla nuovi bad box e non mi spiego il perché.

        Mi sto forse preoccupando per niente?

        Ciao
        Ivan

      • #66808
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Forse dovresti usare \glueexpr invece di \dimexor?

          \dimexpr lavora su lunghezze rigide; se vi metti dentro una lunghezza elastica, ne viene usata solo la sua lunghezza naturale perdendo le componenti di allungamento e accorciamento; certo se prima di \dimexpr metti un termine avente le caratterisitiche di una lunghezza elastica, quei plus e minus non intervengono nell’espressione ma intervengono nell’assegnazione come componenti di allungament e accorciamento assegnate ex novo alla lunghezza elastica a primo membro.

          TeX distingue fra i registri di tipo \dimen e di tipo \skip; Plain assegna nomi ai registri con comandi del tipo \newdim e \newsckip; LaTeX, invece ha solo \newlength che è equivalente a \newskip; in sostanza le lunghezze definite con i comandi laTeX sono tutte elastiche.

          Detto questo hai già usato \looseness per allungare i capoversi; funziona se i capoversi sono lunghetti; lo puoi usare anche a rovescio con un valore negativo, in modo da accorciare; talvolta accorciare un capoverso che avrebbe, magari, solo una parola nell’ultimo righino, può produrre una pagina piò piena, magari recuperando dalla pagina successiva una riga e un righino.

          Certo fare il fine tuning è difficile; negli impaginatori professionali la posizione delle righe è fissa e assolutamante ripetibile da una pagina all’altra, ma sono penasti per pagine di solo testo; se ci sono degli inserti, questi vengono collocati dentro a “scatole” le cui dimensioni e la cui posizione è conforme alla griglia delle righe. LaTeX e gli altri motori di composizione non fanno cosi, perché la matematica in display non lo consente e sfrutta l’elasticità di \parskip (\tra l’altro ai provato a ridefinire [tt]\parskip=0pt plus 0pt minus 0pt[/tt]?) e ad altre gomme come \lineskip. Io non ci farei molto conto, maridefinedo queste cose si ottengono alcuni risultati, non sempre gradevoli, ma le piccole variazioni si vedono.

          Se hai molte note, potrebbe valre la pena si definire \footskip con un allungamento sensibile.

        • #66809
          Up
          0
          Down
          ::

          OldClaudio” post=69773Forse dovresti usare \glueexpr invece di \dimexor?

          \dimexpr lavora su lunghezze rigide; se vi metti dentro una lunghezza elastica, ne viene usata solo la sua lunghezza naturale perdendo le componenti di allungamento e accorciamento; certo se prima di \dimexpr metti un termine avente le caratterisitiche di una lunghezza elastica, quei plus e minus non intervengono nell’espressione ma intervengono nell’assegnazione come componenti di allungament e accorciamento assegnate ex novo alla lunghezza elastica a primo membro.

          TeX distingue fra i registri di tipo \dimen e di tipo \skip; Plain assegna nomi ai registri con comandi del tipo \newdim e \newsckip; LaTeX, invece ha solo \newlength che è equivalente a \newskip; in sostanza le lunghezze definite con i comandi laTeX sono tutte elastiche.

          Detto questo hai già usato \looseness per allungare i capoversi; funziona se i capoversi sono lunghetti; lo puoi usare anche a rovescio con un valore negativo, in modo da accorciare; talvolta accorciare un capoverso che avrebbe, magari, solo una parola nell’ultimo righino, può produrre una pagina piò piena, magari recuperando dalla pagina successiva una riga e un righino.

          Certo fare il fine tuning è difficile; negli impaginatori professionali la posizione delle righe è fissa e assolutamante ripetibile da una pagina all’altra, ma sono penasti per pagine di solo testo; se ci sono degli inserti, questi vengono collocati dentro a “scatole” le cui dimensioni e la cui posizione è conforme alla griglia delle righe. LaTeX e gli altri motori di composizione non fanno cosi, perché la matematica in display non lo consente e sfrutta l’elasticità di \parskip (\tra l’altro ai provato a ridefinire [tt]\parskip=0pt plus 0pt minus 0pt[/tt]?) e ad altre gomme come \lineskip. Io non ci farei molto conto, maridefinedo queste cose si ottengono alcuni risultati, non sempre gradevoli, ma le piccole variazioni si vedono.

          Se hai molte note, potrebbe valre la pena si definire \footskip con un allungamento sensibile.

          Ho già fatto tutti gli aggiustamenti con \looseness e \enlargethispage. Alcune pagine mi sembravano mal riempite e infatti lo erano, ma per colpa mia.
          Avevo lasciato in fondo al file di classe \vbadness=2000. Ho impostato tutto come di default e aggiustato di conseguenza.
          Per curiosità ho provato a compilare con \vbadness=100, per vedere quanti bad box ci sono, e sono parecchi ma in numero non preoccupante.
          Certo è impossible risolverli tutti.

          Alla fine usando \enlargethispage relativamente alla pagina, succede la stessa cosa che succede con \raggedbottom.
          Considera che le pagine sono tutte sistemate, quindi quest’ultimo comando “spinge” pochissimo.

          Un’altra cosa. Spesso per eliminare l’underfull vbox è sufficiente dare \enlargethispage{-.5\baselneskip}.
          Ha senso o è meglio allargare di una riga?

          Proverò con calma anche i comandi che mi hai consigliato. Grazie!

          Ciao
          Ivan

        • #66810
          Up
          0
          Down
          ::

          ivan” post=69777Ho già fatto tutti gli aggiustamenti con \looseness e \enlargethispage. Alcune pagine mi sembravano mal riempite e infatti lo erano, ma per colpa mia.
          Avevo lasciato in fondo al file di classe \vbadness=2000. Ho impostato tutto come di default e aggiustato di conseguenza.
          Per curiosità ho provato a compilare con \vbadness=100, per vedere quanti bad box ci sono, e sono parecchi ma in numero non preoccupante.
          Certo è impossible risolverli tutti.

          [tt]\vbadness=100[/tt] è certamente un valore troppo piccolo.

          Alla fine usando \enlargethispage relativamente alla pagina, succede la stessa cosa che succede con \raggedbottom.
          Considera che le pagine sono tutte sistemate, quindi quest’ultimo comando “spinge” pochissimo.

          ivan” post=69777Un’altra cosa. Spesso per eliminare l’underfull vbox è sufficiente dare \enlargethispage{-.5\baselneskip}.
          Ha senso o è meglio allargare di una riga?

          Questo significa che l’altezza della gabbia non è ben impostata o che non hai sufficiente flessibilità nelle spaziature dei titoli. Naturalmente, se il tuo scopo è il “grid typesetting”, cioè vuoi che le righe sulle pagine opposte siano tutte alla stessa altezza, non deve esserci flessibilità nelle spaziature e che lo spazio complessivo aggiunto per i titoli deve essere un multiplo intero dell’avanzamento di riga.

          Un’ultima cosa: [tt]\dimexpr(1.2cm – \baselineskip) plus 2pt minus 2pt[/tt] è una specificazione perfettamente legale per una lunghezza elastica. Andrebbe bene anche
          `\glueexpr(1.2cm plus 2pt minus 2pt – \baselineskip)`
          perché normalmente \baselineskip non ha flessibilità.

          Ci vediamo venerdì.

          Ciao
          Enrico

        • #66811
          Up
          0
          Down
          ::

          egreg9″ post=69781

          Ho già fatto tutti gli aggiustamenti con \looseness e \enlargethispage. Alcune pagine mi sembravano mal riempite e infatti lo erano, ma per colpa mia.
          Avevo lasciato in fondo al file di classe \vbadness=2000. Ho impostato tutto come di default e aggiustato di conseguenza.
          Per curiosità ho provato a compilare con \vbadness=100, per vedere quanti bad box ci sono, e sono parecchi ma in numero non preoccupante.
          Certo è impossible risolverli tutti.

          [tt]\vbadness=100[/tt] è certamente un valore troppo piccolo.

          Alla fine usando \enlargethispage relativamente alla pagina, succede la stessa cosa che succede con \raggedbottom.
          Considera che le pagine sono tutte sistemate, quindi quest’ultimo comando “spinge” pochissimo.

          ivan” post=69777Un’altra cosa. Spesso per eliminare l’underfull vbox è sufficiente dare \enlargethispage{-.5\baselneskip}.
          Ha senso o è meglio allargare di una riga?

          Questo significa che l’altezza della gabbia non è ben impostata o che non hai sufficiente flessibilità nelle spaziature dei titoli. Naturalmente, se il tuo scopo è il “grid typesetting”, cioè vuoi che le righe sulle pagine opposte siano tutte alla stessa altezza, non deve esserci flessibilità nelle spaziature e che lo spazio complessivo aggiunto per i titoli deve essere un multiplo intero dell’avanzamento di riga.

          La flessibilità per i titolo (di sezione) non è in effetti ampia:
          `\setlength{\secpresep}{\dimexpr(1.1cm-\baselineskip) minus 2pt}
          \setlength{\secpostsep}{\dimexpr(.7cm-\baselineskip) minus 2pt}`
          perché sono già molto spaziati. Quindi ho pensato di dare solo una flessibilità negativa.
          Inoltre questo è stato un aggiustamento successivo, quando mi sono trovato costretto a recuperare pagine,
          per rientrare nelle 224 (multiplo di 16; le pagine per segnatura).
          Per l’altezza ho impostato il numero di righe (35). Quando però nella pagina ci sono note,
          titoli, citazioni fuori corpo o elenchi ci sono alcuni problemi di riempimento. (Una decina di pagine circa su 224.)
          Il motivo risale alla notte dei tempi, quando dovevo dimostrare che si può “clonare” un testo di una collana
          di una casa editrice qualsiasi. Poi ho scoperto che anche i volumi di una collana hanno dei margini di movimento.
          Quindi ora non avrebbe più senso impostare il numero di righe, così come non avrebbe senso quel calcolo per
          footnotesep. Basterebbe una misura elastica semplice, senza calcoli. Ma ormai è tardi 🙂

          egreg9″ post=69781Ci vediamo venerdì.

          Ottimo!

          Ciao
          Ivan

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

      Go to top