Problema da niubbo

  • Creatore
    Topic
  • #53954
    Up
    0
    Down
    ::


    Sto tentando di allestire un’edizione critica parallela e i primi risultati sono incoraggianti, tuttavia ho una serie di problemi, tra cui il più evidente è un esorbitante numero di Overfull \hbox nel testo greco, mentre non ne ho nessuno (per ora) in quello italiano.
    Volendo evitare per quanto possibile di spezzare le parole, quali sono i “trucchi” che posso usare per evitare, o almeno minimizzare il problema?

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

      Sto tentando di allestire un’edizione critica parallela e i primi risultati sono incoraggianti, tuttavia ho una serie di problemi, tra cui il più evidente è un esorbitante numero di Overfull \hbox nel testo greco, mentre non ne ho nessuno (per ora) in quello italiano.
      Volendo evitare per quanto possibile di spezzare le parole, quali sono i “trucchi” che posso usare per evitare, o almeno minimizzare il problema?

      L’unico modo per evitare la sillabazione e ottenere un’impaginazione decente è ricorrere al testo sbandierato (\raggedright).

      Ciao
      Enrico

    • #53956
      Up
      0
      Down
      ::


      Suvvia, se Word riesce a giustificare più o meno decentemente, vuoi che LaTeX non abbia un sistema per farlo? Ad esempio, non si può rilassare un minimo la spaziatura per guadagnare un margine di almeno 4 o 5 punti? Già così risolverei una buona fetta del problema, e il resto lo sillabo e buonanotte…

    • #53957
      Up
      0
      Down
      ::

      Suvvia, se Word riesce a giustificare più o meno decentemente, vuoi che LaTeX non abbia un sistema per farlo? Ad esempio, non si può rilassare un minimo la spaziatura per guadagnare un margine di almeno 4 o 5 punti? Già così risolverei una buona fetta del problema, e il resto lo sillabo e buonanotte…

      Parti da un assunto sbagliato: che la giustificazione possa essere “più o meno decente”. Anni di documenti con impaginazione orribile rischiano di danneggiare il senso estetico; ma ti assicuro che la “giustificazione più o meno decente di Word” mi fa correre i brividi lungo la spina dorsale.

      Senza un vero esempio è impossibile giudicare.

      Ciao
      Enrico

    • #53958
      Up
      0
      Down
      ::


      Può essere vero, ma non voglio diventare un feticista della tipografia ideale. Dopo un’oretta di peregrinazioni nautiche ho apparentemente risolto inserendo solo nel testo greco la stringa
      \setlength{\emergencystretch}{3em}

      Tuttavia ho visto che sembrano esistere altri comandi per risolvere il problema, nella fattispecie \pretolerance e \tolerance.
      In quali casi si possono usare e cosa comporta il loro uso?
      Grazie per la pazienza!

    • #53959
      Up
      0
      Down
      ::

      Può essere vero, ma non voglio diventare un feticista della tipografia ideale. Dopo un’oretta di peregrinazioni nautiche ho apparentemente risolto inserendo solo nel testo greco la stringa
      \setlength{\emergencystretch}{3em}

      Tuttavia ho visto che sembrano esistere altri comandi per risolvere il problema, nella fattispecie \pretolerance e \tolerance.
      In quali casi si possono usare e cosa comporta il loro uso?
      Grazie per la pazienza!

      Il metodo con \emergencystretch è certamente meno peggio che giochicchiare con \tolerance. I registri \pretolerance e \tolerance contengono limiti alla “bruttezza” delle righe, una misura di quanto la riga sia stiracchiata.

      L’algoritmo per suddividere in righe un capoverso è piuttosto complesso. Dapprima TeX ci prova senza ricorrere alla sillabazione; se trova un modo di dividere in righe che rispetta per ciascuna il limite imposto con \pretolerance, lo adotta e produce il capoverso. Altrimenti riprova tenendo in considerazione la sillabazione e produce il capoverso se trova un modo per stare sotto la \tolerance. Altrimenti, ma solo se il parametro dimensionale \emergencystretch è non nullo, ripete la prova fingendo che gli spazi tra parole in ciascuna riga siano ridotti in modo che la riga stia dentro alla giustezza meno \emergencystretch; se trova un modo per stare dentro alla \tolerance produce il capoverso.

      Se nulla di tutto questo funziona, produce ugualmente il capoverso con righe Overfull o Underfull e avvisa.

      Giocare con i valori di \pretolerance e \tolerance è pericoloso, perché non c’è solo questa misura da tener presente, in quanto il capoverso viene anche valutato “globalmente” in modo da tenere al minimo i cosiddetti “demeriti”. Può allora succedere che i demeriti siano minimizzati con una riga bruttissima e le altre quasi decenti e il risultato (che però darà un messaggio di Underfull \hbox) sarà terribile. Il terzo passaggio con \emergencystretch è stato introdotto in TeX versione 3 proprio per ovviare all’inconveniente. Ma va gestito con molta cura.

      Perché rifiutare a priori il testo sbandierato?

      Ciao
      Enrico

    • #53960
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        3 em per \emergencystretch è una schioppettata, per non dire una cannonata in senso distruttivo. Se accetti una composizione con quel valore, allora vuol dire che accetti qualunque cosa. Per comporre male ti basterebbe per il testo greco scrivere semplicemente la dichiarazione \sloppy; come dice la parola, si tratta di una composizione fatta in modo “approssimativo”,; eppure nemmeno \sloppy imposta 3 em di allargamento di emergenza dello spazio interparola..

        Se metti \tolerance-9999 metti la massima sloppyness minore di infinito specificabile al motore di composizione; la dichiarazione \sloppy la pone pari a 10000 che per TeX vuol dire “infinito”. Non dico che 9999 sia un buon valore, ma certamente non così brutto come 10000. Poi puoi mettere valori inferiori, ovviamente.

        La composizione di un capoverso TeX la fa eventualmente in tre tempi:
        1) compone senza sillabare e verifica se la bruttezza complessiva sia inferiore al valore di tolleranza fissato da \pretolerance;
        2) se la bruttezza è superiore a \pretolerance ci riporva sillabando e vede se la bruttezza è inferiore a ‘tolerance;
        3) se non fosse così compone come può lasciando sforare una o più righe fuori dalla giustezza.

      • #53961
        Up
        0
        Down
        ::


        Grazie ragazzi per il fin troppo esaustivo commento. È di certo utile sapere in che modo funzionano questi comandi per poterli usare. Allora, diciamo che da niubbo per il momento mi accontento della “schioppettata”, ma mi appaiono comunque una marea di messaggi di Underfull \hbox nelal console. Come si può fare per farli fuori?
        Abbiate pietà di me!

      • #53962
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Underfull vbox o undefull hbox?

          Puoi curare o l’una o l’altra scrivendo nel preambolo

          `
          \hbadness=10000
          \vbadness=10000
          `

          e non avrai più messaggio di bruttezza e di scatole troppo vuote.

          Ma se è così che devi comportarti, allora vuol dire che la composizione è prorpio brutta, ma proprio brutta brutta 😕

        • #53963
          Up
          0
          Down
          ::


          Grazie mille, ho inserito nel preambolo le due righe e i messaggi infestanti sono spariti.
          Trovo particolarmente utile tutto quello che mi avete detto e sicuramente in un momento successivo cercherò di migliorare anche l’aspetto estetico sotto il profilo tipografico.
          Per il momento mi accontento di farlo funzionare alla meno peggio. Ho ancora un po’ di domande, e se stasera la mia esperta di LaTex non riesce a farmi progredire vi delizierò nuovamente con altre “niubbate”
          Grassssssiiiiieeeeee 😀 😀 😀

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

      Go to top