[Risolto] Diversi Overfull \hbox in bibliografia

  • Questo topic ha 15 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 14 anni fa da ivan.
  • Creatore
    Topic
  • #78153
    Up
    0
    Down
    ::


    Ciao a tutti!

    Rifinendo la tesi, ho tolto tutti gli sforamenti dal margine in tutti i capitoli; tuttavia, me ne restano una buona ventina nella bibliografia. Vi allego un pdf con alcuni dei miei record bibliografici per far capire il problema; questo è in parte dovuto al fatto che uso Classic Thesis, e i suoi margini ristretti non aiutano in questo caso

    Come vedrete ci sono sforamenti minimi ed altri mostruosi; il problema sostanzialmente si riconduce al fatto che non vengono spezzate le annate della rivista o il DOI, oppure le parole col trattino. Il problema peggiore è nelle pagine sinistre, perchè lì a volte lo sbordamento mi arriva a ridosso della rilegatura.
    Di primo acchito ho provato a incapsulare la bibliografia in un ambiente adjustwidth (del pacchetto changepage) allargando la gabbia del testo, ma il risultato è orribile e comunque risolve solo in parte. Altrimenti mi verrebbe da inserire brutalmente delle cesure con \- direttamente nel file .bib dove serve, ma immagino che la cosa sia altamente questionabile…
    Oltretutto con la bibliografia non si possono riformulare voci o altro, come si farebbe nel testo, perchè il record quello è.

    C’è un modo migliore per risolvere questo problema?

    [attachment=422]pdflatex.pdf[/attachment]

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 14 filoni di risposte
  • Autore
    Risposte
    • #78154
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Puoi provare a specificare [tt]openbib[/tt] fra le opzioni della classe; non so se funzioni anche con il tipo di bibliografia e con gli strumenti che hai usato per comporla (tipo biblatex) ma potrebbe funzionare; in sostanza compone la bibliografia ragged right (in bandiera allineata a sinistra) e andando a capo per ogni nuova informazione. Se funziona, la bibliografia impegnerà più pagine, ma gli sforamenti potrebbero sparire.

      • #78155
        Up
        0
        Down
        ::


        Grazie Claudio per il suggerimento, funziona egregiamente! Fa un po’ strano vedere la bibliografia così composta, ma credo che migliori le leggibilità delle informazioni (lo stile BibLaTeX che uso, biblatex-nejm, compone tutte le voci in tondo). Inoltre allunga il brodo, che non guasta mai 🙂

        Mi restano solo due problemini:

        1) gli sforamenti relativi alle annate si sono risolti, mi restano solo quelli relativi alla mancata cesura di parole legate parole col trattino: si può sistemare anche questo, o stavolta servono davvero le cesure imposte con \-?
        2) a volte capita che la voce non sia tenuta tutta insieme: a fondo pagina mi trovo gli autori, ed in cima alla successiva il resto della voce. Si può sistemare questa finezza estetica?

      • #78156
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Per la seconda domanda credo che sia necessario rappezzare la macro \newblock, ma onostamante non sono sicuro che anche rabberciato in qualche modo questo comando il risultato sia migliore.

          Per la prima ti suggerisco, se e solo se scrivi in italiano e usi babel (oppure polyglossia chiamando italiano ma con l’opzione babelshortcuts), di usare la funzionalità del doppio apice attivo; scrivi il doppio apice prima del trattino nel sorgente bib (per esempio: [tt]2011;12:1151″– 61[/tt]).

          Oppure, sempre nel sorgente sostituisci i due punti (o i punto e virgola} con [tt]\discretionary{:}{}{:}[/tt] per il quale puoi creare una macro; al limite puoi dichiarare, subito prima di stampare la bibliografia, i caratteri : e ; attivi e associare loro una definizione che contenga \discretionary.

          Usare \- è sbagliato perché il trattino non c’è se il programma non va a capo; si tratta di un discretionary hyphen definito in modo diverso (al limite puoi ridefinirlo subito prima di stampare la bibliografia).

          i tre argomenti di \discretionary indicano nell’ordine; cosa mettere prima di andare a capo, cosa mettere dopo di essere andati a capo, cosa mettere se non si va a capo.

          Documentazione? negli appunti di Enrico è nominato, ma non ne è descritto l’uso. Io l’ho trovato solo nel TeXbook; puoi provare TeX for the impatient: http://mirror.ctan.org/info/impatient/book.pdf Oppure TeX by topic http://eijkhout.net/texbytopic/texbytopic.html
          Una volta mi era parso di vedere che uno di questi testi fosse scaricabile dal nostro sito, a ora non ritrovo più il link.

          Se usi questi caratteri attivi puoi lasciare la bibliografia così com’è, con quelle definizioni dei caratteri attivi prima di stampare la bibliografia e, ovviamente dichiarandoli attivi in modo globale o limitato da graffe di gruppo, così che quando il file bbl viene letto vengono trattati come attivi e svolgono le loro funzioni che prescritto.

        • #78157
          Up
          0
          Down
          ::


          Purtroppo il trucco dei doppi apici non funzionava, per cui alla fine ho tagliato il nodo di Gordio togliendo tutti i trattini che davano problemi 😳

          Se inserivo due apostrofi (segno sotto il punto di domanda) mi uscivano in bibliografia due apostrofi (cioè proprio parola”-parola), se inserivo le virgolette (segno sopra il due) non si vedevano le virgolette, ma non cambiava niente 😕
          Sono su una MacTeX, e in babel ho definito come opzioni [english, italian], visto che ho parecchie parole inglesi nel testo (senza contare appunto la bibliografia, che è tutta in inglese): può dipendere da questo il mancato funzionamento?

        • #78158
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Si, infatti avevo scritto “se e solo se componi in italiano”; il carattere dei doppi apici (quello che sulla malfamata tastiera italiana è sopra il 2) funziona solo in italiano; non ti resta che la via dei caratteri attivi, se non vuoi rimettere le mani nel file bib (io ricorrerei ai caratteri attivi, limitando la loro “attività” solo alla bibliografia con un bel gruppo).

          • #78159
            Up
            0
            Down
            ::


            Credo di essermi spiegato male nel secondo messaggio: a me servirebbe un modo per costringere LaTeX a sillabare parole legate da un trattino, non tanto un modo per andare a capo dopo il trattino.
            Cioè se ho le parole chemotherapy-induced vorrei che LaTeX sillabasse quelle due parole per stare nella riga senza sforamenti inserendo una opportuna cesura ed un ritorno a capo, mentre ciò non avviene.

            Comunque ho voluto verificare questa cosa dei caratteri attivi perchè ignoravo completamente la loro esistenza, ma mi restano due dubbi.
            Credo di aver capito che questi caratteri attivi permettono di andare a capo a piacere in corrispondenza di un carattere desiderato: è giusto?
            Poi, è giusta la scrittura per limitare l’azione di \discretionary nel documento?

            `
            \begingroup
            \discretionary{-}{}{-}

            \endgroup
            `

          • #78160
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              No, non hai capito; l’argomento non è così semplice come sarebbe desiderabile, quindi è necessario che tu legga la documentazione che ti ho segnalto; Ti mostro solo come fare per il trattino senza usare caratteri attivi:`
              {\renewcommand\-{\nobreak\hskip0pt\discretionary{-}{}{-}\nobreak\hskip0pt}
              bla bal blabla\-blabla bla bla
              }`

              \quel nobreak inpedisce di andare a cpao prima del trattino,; quell’hskip0pt serve per interrompere la parola, e il discretionary consente di andare a capo, ma mette il trattino sia che si vada a capo, sia che si tiri dritto. Il secondo \hskip serve per consetire a LaTeX riconoscere l’inizio di una nuova parola.

              Se volessi usare il trattino attivo dovresti usare:`\begingroup
              \let\trattino=-
              \catcode`\-\active
              \def-{\noblreak\hskip0pt\discretionary{\trattino}{}{\trattino}\nobreak\hskip0pt}
              bla bla blabla-blabla bla bla

              \endgroup`
              Qui ti ho scritto \begingroup e \endgroup per evidenziare il gruppo, invece di usare le graffe; in teoria ci sarebbe una differenza, ma in questa applicazione non conta. Come vedi per prima cosa ho coservato nella macro \trattino il segno non attivo, poi l’ho dichiarato attivo assegnandogli il codice di categoria 13 rappresentato dalla macro \active; ora il trattino è gestibile come il nome di una macro, senza nemmeno usare il backslash; a questo punto lo definisco come prima; finché non si chiude il gruppo,il trattino continua a comportarsi come una macro.

              In entrambi i casi possono venire divise in sillabe le parole (inglesi o italiane non importa, perché le definizioni di \- e di – non sono legate a nessuna lingua) sia la prola che precede il trattino sia quella che lo segue. Ovviamente possono sorgere degli inconvenienti di comprensione quando si inseriscono trattini attivi fra le parole della chimica organica formate da tante radici spesso legate con il trattino copulativo. è per questo che per impostazione predefinita LaTeX non usa queste macro perché non e una buona pratica tipografica dividere in sillabe le parole che compongono una locuzione contenente uno o più trattini copulativi.

              Come vedi si tratta di poche righe di codice, ma si tratta di cosette molto delicate e con controindicazioni evidenti.

            • #78161
              Up
              0
              Down
              ::


              Scusate per aver piantato in asso il post, ma questo weekend e stamattina non avevo Internet 🙁

              OldClaudio, grazie per il codice e l’esauriente spiegazione. Vedo che sono cose piuttosto complicate per il mio livello, pur avendo letto la guida non ci avevo capito poi molto.
              Purtroppo il tuo codice sembra non funzionarmi; ho messo nel file della bibliografia (richiamato con \input e compilato con biber) questo codice:

              `
              \cleardoublepage
              \begingroup
              \let\trattino=-
              \catcode`\-\active
              \def-{\nobreak\hskip0pt\discretionary{\trattino}{}{\trattino}\nobreak\hskip0pt}
              \printbibliography
              \endgroup
              `

              ma le parole unite dal trattino continuano a non essere spezzate e saltano sempre fuori gli sforamenti.

            • #78162
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                A me quella definizione funziona alla grande.

                Forse a te non funziona perché quei trattini fanno parte di argomenti di comandi, per cui quando vengonono scanditi dallo scanner di token, il trattino viene scandito come carattere di categoria 12, invece che 13 (active).

                Mo spiace, ma a questo punto non saprei più cosa dirti.

              • #78163
                Up
                0
                Down
                ::

                OldClaudio” post=77441A me quella definizione funziona alla grande.

                Forse a te non funziona perché quei trattini fanno parte di argomenti di comandi, per cui quando vengonono scanditi dallo scanner di token, il trattino viene scandito come carattere di categoria 12, invece che 13 (active).

                Mo spiace, ma a questo punto non saprei più cosa dirti.

                Mah, non credo siano parte di comandi, si tratta solo di entry nel record bibliografico, questa è uno di quelli che danno problemi:

                `
                @article{carozzi:2010,
                Author = {Carozzi, Valentina A and Chiorazzi, Alessia and Canta, Annalisa and Lapidus, Rena G and Slusher, Barbara S and Wozniak, Krystyna M and Cavaletti, Guido},
                Date-Added = {2012-06-10 19:06:45 +0200},
                Date-Modified = {2012-09-07 14:20:15 +0200},
                Doi = {10.1007/s12640-009-9114-1},
                Journal = {Neurotox Res},
                Journal-Full = {Neurotoxicity research},
                Month = {May},
                Number = {4},
                Pages = {380-91},
                Pmid = {19763734},
                Pst = {ppublish},
                Title = {Glutamate carboxypeptidase inhibition reduces the severity of chemotherapy-induced peripheral neurotoxicity in rat},
                Volume = {17},
                Year = {2010},
                Bdsk-Url-1 = {http://dx.doi.org/10.1007/s12640-009-9114-1}}
                `

                Le parole incriminate sono chemotherapy-induced nel titolo. Se non si riesce a metterci una pezza tramite LaTeX mi sa proprio che dovrò toglierli a mano.

                Peccato, grazie lo stesso.

              • #78164
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Tu non vedi i comandi, ma biblatex che cosa fa dietro le quinte?

                • #78165
                  Up
                  0
                  Down
                  ::


                  Ho deciso che rimuoverò i trattini, purtroppo non vedo altra soluzione a questo punto. Peccato…:sad:

                  OldClaudio, grazie lo stesso per il tempo speso.

                • #78166
                  Up
                  0
                  Down
                  ::

                  Matteo Colombo” post=77483Ho deciso che rimuoverò i trattini, purtroppo non vedo altra soluzione a questo punto. Peccato…:sad:

                  OldClaudio, grazie lo stesso per il tempo speso.

                  Dalla doc di biblatex:

                  \hyphenate:
                  conditional hyphen. In contrast to the standard \- command, this one allows hyphenation
                  in the rest of the word. It is similar to the “- shorthand provided by some language modules of the babel package.

                  \hyphen:
                  An explicit, breakable hyphen intended for compound words. In contrast to a literal ‘-’,
                  this command allows hyphenation in the rest of the word. It is similar to the “= shorthand provided
                  by some language modules of the babel package.

                  \nbhyphen:
                  An explicit, non-breakable hyphen intended for compound words. In contrast to a literal ‘-’,
                  this command does not permit line breaks at the hyphen but still allows hyphenation in the rest of the word.
                  It is similar to the “~ shorthand provided by some language modules of the babel package.

                  Se non riesci a risolvere, invia un documento minimale che riproduce il problema.

                  Ciao
                  Ivan

                • #78167
                  Up
                  0
                  Down
                  ::


                  Grazie Ivan, ci sono riuscito!!!

                  È bastato mettere \hyphen al posto dei trattini incriminati (lasciando ovviamente uno spazio con la parola dopo) e le parole finalmente si sono spezzate. Mi resta il dubbio se non ci sia veramente il modo di implementare questo comportamento senza dover riscrivere il file .bib ogni volta…

                  Avevo letto la guida di biblatex, ma quella parte mi era sfuggita (mi ero fermato all’opzione babel=hyphen); cercherò di prestare più attenzione.

                  Grazie a tutti per l’impegno.

                • #78168
                  Up
                  0
                  Down
                  ::

                  Matteo Colombo” post=77516Grazie Ivan, ci sono riuscito!!!

                  È bastato mettere \hyphen al posto dei trattini incriminati (lasciando ovviamente uno spazio con la parola dopo) e le parole finalmente si sono spezzate. Mi resta il dubbio se non ci sia veramente il modo di implementare questo comportamento senza dover riscrivere il file .bib ogni volta…

                  Avevo letto la guida di biblatex, ma quella parte mi era sfuggita (mi ero fermato all’opzione babel=hyphen); cercherò di prestare più attenzione.

                  Grazie a tutti per l’impegno.

                  Bisognerebbe conoscere bene tutti i comandi di biblatex prma di scrivere il database.
                  Ma questo è difficile. Anch’io non conoscevo quel comando.
                  L’ho scoperto per rispondere alla tua domanda 😉
                  A volte, infatti, è più economico un approccio bottom/up:
                  prima scrivo tutto poi se ci sono problemi cero la soluzione.
                  L’approccio top/down sarebbe: prima mi studio tutto quello che mi potrebbe servire
                  e poi, se ci sono problemi, applico la soluzione che già ho appreso.
                  Il secondo approccio è più professionale, ma chi ha il tempo di impararsi
                  tutti i comandi di un pacchetto perché, forse, ne avrà bisogno?

                  Ciao
                  Ivan

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

              Go to top