Incompatibilità suftesi e babel-greek?

  • Creatore
    Topic
  • #116638
    Up
    0
    Down
    ::


    Ciao a tutti!

    Propongo un problema per i guru. Il seguente codice produce uno strano errore:
    ! LaTeX Error: Encoding scheme `t1′ unknown.

    Tale errore coinvolge le due opzioni di classe (testatine in maiuscolo e numero romano del capitolo) e l’opzione greek di babel.
    Eliminando una delle due opzioni di classe il problema scompare.
    Eliminando greek il problema scompare.
    Usando polyglossia il problema scompare.
    Eliminando qualche riga, in modo che il testo stia in una pagina, il problema scompare.

    (Ho commentato le due righe di codice che sono alla base delle due opzioni.)

    Non riesco a capire se si tratta di un errore nel codice di suftesi o di babel-greek

    Qualcuno ha voglia di svelare l’arcano? Grazie in anticipo.

    Ciao
    Ivan

    `\documentclass[headerfont=smallcaps,chapnumstyle=roman]{suftesi}

    \usepackage[greek,italian]{babel}

    \makeatletter
    %\def\SUF@thechapter{\textsc{\roman{chapter}}}

    %\def\SUF@Lheadstyle#1{\scshape\suftesi@MakeTextLowercase{\textls*{#1}}}
    \makeatother

    \begin{document}
    \chapter{Introduzione}

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,

    \end{document}

    `

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #116639
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Ivan, sembrerebbe un difetto di babel e di come definisce \BabelText.

        L’errore ha luogo nell generazione della testatina dolla seocnda pagina dove viene usate quel comando, che a sua volta reimposta la codifica usando le lettere minuscole, invece che maiuscole; \fontencoding{}\selectfont, credo che venga usato nella generazione del numero di pagina, in modo che stampi gli eventuali numeri romani sempre con caratteri latini, e non con caratteri greci. Non sono andato più a fondo di così, ma se carichi il pacchetto trace e usi \traceon prima dell’ultimo capoverso, nel file log ti appaiono migliaia di righe, ma se cerchi la stinga BabelTeX, sposti subito la schermata in cui appare l’errore.

        Forse varrebbe la pena di inviare questo esempio minimo a José Bezos, l’attuale curatore di babel.

        Il codice di babel è diventato complicatissimo e non saprei dove cercare per vedere che cosa succede nei dettagli. Potrebbe essere che la macro \latinencoding che viene correttamente definito come T1, ad un certo punto compaia nell’argomento di una macro \lowercase, mon non sono riuscito a trovare dove.

      • #116640
        Up
        0
        Down
        ::


        Grazie Claudio. Ero sicuro che saresti riuscito a darmi una mano.
        Nel frattempo aggiungo un altro dettaglio. Nel codice che crea il conflitto ho usato \MakeLowercase, che però non dà alcun problema con polyglossia. Se uso \lowercase il problema scompare anche con babel, ma non vorrei che questa soluzione creasse ulteriori disguidi. Mi pare di ricordare che al tempo ho preferito il primo comando per auliche ragione. Ora do un’occhiata con trace.

        Ciao
        Ivan

      • #116641
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Be’, \lowercase e MakLowercase funzionano in modo molto diverso; in particolare, se ricordo bene, \lowersa lavora solo su token di categoria 11 (lettere) ma non tocca altri token, nemmeno i nomi delle macro. Però \lowercase lavora solo cui caratteri ASCII, mentre \MakeLowercase ha qualche cognizione sia dei caratteri codificati a 8 bit (come T1) e con i caratteri opentype riesce a fere un bun lavoro.

        • #116642
          Up
          0
          Down
          ::


          Il problema è parecchio ingarbugliato…
          La soluzione più veloce che ho trovato consiste nel proteggere i comandi che generano il numero di capitolo.
          Non so però se è una buona soluzione. Tutto sommato il problema si presenta col greco (e solo con babel, non polyglossia).
          Quello che succede è che il comando \MakeLowercase, che uso nelle testatine, agisce anche su \fontencoding{T1} (inserito da babel-greek???) che viene trasformato in \fontencoding{t1}, con la t minuscola. Per questo viene generato l’errore ! LaTeX Error: Encoding scheme `t1′ unknown.

          `\renewcommand{\chaptermark}[1]{%
          \markboth{\chaptertitlename\ \protect\SUF@thechapter}{#1}}
          \ifsuftesi@article
          \renewcommand{\sectionmark}[1]{\markright{\protect\SUF@thesection.\ #1}}
          \else
          \renewcommand{\sectionmark}[1]{}
          \fi
          `

          Non sono ancora riuscito a generare un esempio minimo che prescinda da suftesi. Se ci riesco invio il file a Bezos.

          Ciao
          Ivan

        • #116643
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Questa cosa del greco che si sovrapponeva al modo di funzionare di pdfLaTeX in presenza di hyperref, dava problemi con i numeri di pagina anche molti anni fa. specialmente quando si inseriscono i numeri romani. Ora quando c’è il greco di mezzo, vengono usati i caratteri corrispondenti a i, v, x, l, c, d, m con i corrispondenti caratteri nella codifica LGR, con i risultati che puoi immaginare.

            Nella GuidGuIT e in altri documenti in cui invocavo il greco, ho provveduto in due modi:
            1) Ho evitato i numeri romani se non ridefinendo \roman e \Roman; ci aveva messo mano anche Enrico, perché la cosa era piuttosto complicata.
            2) per i numeri di pagina ho imposto lil formato direttamente nello stile della pagina, in modo che qualunque cosa ricevesse, facesse quello che doveva fare; in altre parole non ho ridefinitio \thepage, ma ho messo i comandi giosi direttamente in \ps@plain, \ps@headings, \ps@myheadings e negli altri possin=bili disegni di pagina che avrei definito caso eor caso;
            3) per gli indici generali e analitici analitici ho curato di disporre di macro che usassero il font small caps, perché come sai, in numeri romani tondi minuscoli mi fanno schifo; quello maiuscoletti vanno benissimo

            Nota che con XelaTeX e LuaLaTeX non cambi codifica, perché usando i font OpenType, quelli contengono sia i caratteri latini, sia (generalmente) i caratteri greci. Quindi la gestione delle lingue avviene in modo molto diverso da come succede con babel

          • #116644
            Up
            0
            Down
            ::


            Per il momento ho tamponato il problema con il codice sopra. Potevo anche definire i comandi \SUF@thechapter e \SUF@thesection con \protected\def, ma ho preferito la prima soluzione visto che il problema riguarda le testatine. Non ho però idea di quali altri problemi di nascondino dietro l’angolo.

            Ciao
            Ivan

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

        Go to top