Re: Un bug di babel

#67909
OldClaudio
Partecipante
    Up
    0
    Down
    ::


    Ciao Ivan,
    siccome sono io che mi occupo della parte italiana di babel, ho dei dubbi ad implementare una cosa del genere; forse posso studiare qualcosa di più intelligente (dal punto di vista di babel, non della soluzione trovata) che non tocchi nient’altro dentro alle definizioni del nucleo di LaTeX. Ci penserò.

    Nel frattempo ci sono due punti da notare:
    !) il motore di composizione (che sia tex, pdftex, xetex, luatex) non divide in sillabe la prima parola dopo un cambiamento di font
    2) Nella GuidaGuIT, verso la fine del paragrafo C.1 sulla sillabazione, si suggerisce di inserire un grumo di colla di larghezza nulla come ti ha suggerito Enrico; la penalità è giusto che ci sia in modo che il motore di composizione non vada a capo dopo l’apostrofo; tuttavia io definirei un comando \hz, brevissimo da scrivere (babel definisce un comando simile che si chiama, mi pare, \allowbreak), così:
    `
    \newcommando\hz{\nobreak\hskip0pt}
    `
    e poi scriverei semplicemente
    `
    dell'\emph{\hz enciclopedia}
    `
    Non capita spesso di dover inserire \hz nei punti da sillabare quando il programma di composizione non è capace di farlo da solo. Io ho alle mie spalle almeno 5000 pagine di libri e documenti vari composti con LaTeX nell’arco di una trentina di anni e ho incontrato problemi di questo genere solo due o tre volte in questo arco di tempo… e di pagine.

    Comunque ci sono questi due trucchi molto semplici
    1) quando scrivi in italiano (e il problema si presenta in questo caso) puoi sempre mettere un doppio apice dopo la prima sillaba della parola che non si divide:
    `
    \dell'\emph{en”ciclopedia}
    `
    Il doppio apice in italiano è attivo e segna un punto lecito di cesura, in pratica spezzando senza spazio intermedio una parola in due monconi; se deve avere una cesura proprio fra i due monconi ci mette una trattino di cesura e va a capo.

    2) se nel tuo file hai caricato il pacchetto etoolbox, questo ridefinisce e definisce un certo numero di macro che permettono di “riparare” o di modificare le macro che interessa modificare. nel tuo caso continua a usare \emph che a sua volta usa \em, ma nel preambolo o in un tuo file di classe o di estensione aggiungi questo poco codice:
    `
    \makeatletter % non serve nel file .cls e .sty; serve solo nel preambolo
    \addto\em{\nobreak\hskip\z@}
    `
    e il tuo \emph funziona come desideri.

    Ciao
    Claudio

    Go to top