[Risolto] Problemi tra ‘polyglossia’ e ‘dcolumn’

  • Creatore
    Topic
  • #110711
    MatteoF
    Partecipante
      Up
      0
      Down
      ::


      Buongiorno,
      volendo approfondire l’argomento “tabelle” ho appena letto la documentazione dei pacchetti ‘array’, ‘dcolumn’ e ‘tabularx’.

      Di seguito un emc, compilato con LuaLaTeX, in cui vengono caricati ‘polyglossia’ e ‘dcolumn’.
      `
      % !TEX encoding = UTF-8 Unicode
      % !TEX TS-program = lualatex

      \documentclass{article}
      \usepackage{fontspec}
      \usepackage{polyglossia}
      \setmainlanguage{italian}
      \usepackage{dcolumn}

      \newcolumntype{d}{D{,}{,}{2,4}}

      \begin{document}

      \begin{table}\centering
      \begin{tabular}{p{3cm}d}
      Potassio & 4,3407 \\
      Laurencio & 4,9 \\
      Sodio & 5,1391 \\
      Attinio & 5,17 \\
      Litio & 5,3917 \\
      Polonio & 8,417 \\
      Zolfo & 10,36 \\
      Ossigeno & 13,6181 \\
      \end{tabular}
      \caption{Energia ionizzante di alcuni elementi chimici}
      \end{table}

      \end{document}`

      Tutto bene, se non fosse che aggiungendo l’opzione ‘babelshorthands’
      `\setmainlanguage[babelshorthands]{italian}`
      la compilazione si blocca, restituendo l’errore:
      `! Missing number, treated as zero.`

      La documentazione dei due pacchetti non fa riferimento ad eventuali incompatibilità. Inoltre, l’errore compare anche se compilo con XeLaTeX.

      Chiarisco, infine, che ho effettuato la compilazione sia tramite TexLive2016 sia con TexLive2017 (dunque LuaTeX 1.0.4).

      Qualcuno è a conoscenza di questa problematica? Forse mi sto perdendo io in un bicchier d’acqua?

      Grazie in anticipo
      Matteo

    Visualizzazione 5 filoni di risposte
    • Autore
      Risposte
      • #110712
        Up
        0
        Down
        ::


        Questo a me funziona:
        `% !TEX encoding = UTF-8 Unicode
        % !TEX TS-program = lualatex

        \documentclass{article}
        \usepackage{fontspec}
        \usepackage{polyglossia}
        \setmainlanguage[babelshorthands]{italian}
        \usepackage{caption,booktabs}

        \usepackage{siunitx}
        \sisetup{output-decimal-marker={,}}

        \begin{document}

        \begin{table}
        \centering
        \caption{Energia ionizzante di alcuni elementi chimici.}
        \begin{tabular}{lS[table-format=2.4]}
        \toprule
        Elemento & {Energia} \\
        \midrule
        Potassio & 4,3407 \\
        Laurencio & 4,9 \\
        Sodio & 5,1391 \\
        Attinio & 5,17 \\
        Litio & 5,3917 \\
        Polonio & 8,417 \\
        Zolfo & 10,36 \\
        Ossigeno & 13,6181 \\
        \bottomrule
        \end{tabular}
        \end{table}

        \end{document}`
        La mia distribuzione:
        `This is LuaTeX, Version 1.0.4 (TeX Live 2017)
        restricted system commands enabled.
        (./dcolumn.tex
        LaTeX2e <2017-04-15>`

        Ciao
        Tommaso

      • #110713
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Non c’è nessuna incompatibilità fra i pacchetti che menzioni. Semplicemente il pacchetto gloss-italian.ldf non funziona più correttamante, perché l’opzione babelshorthands non è più riconosciuta.

          Ho difficoltà a correggere gloss-italian.ldf, perché il gruppo di lavoro che si occupa di polyglossia e dell’hyphenation è diventato impenetrabile per me. Vedo che cosa posso fare.

        • #110714
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Trovato.

            Si tratta del fatto che Dcolumn definisce il suo primo argomento come carattere attivo, rendendolo uguale al doppio apice diritto; gloss-italian.ldf con l’opzione babelshorthands, definisce anche lui il carattere ” come carattere attivo. le due cose vanno in conflitto.
            Tuttavia se sposti la chiamata a dcolumn prima di polyglossia tutto funziona bene e il tuo codice non presenta più problemi.

            Quello che ho scritto nel messaggio precedente va ignorato dalla prima parola all’ultima. O meglio, il gruppo che si occupa di poyglossia e di hyphenation è impenetrabile, ma non ha nulla a che vedere con il tuo problema.

          • #110715
            MatteoF
            Partecipante
              Up
              0
              Down
              ::


              Ciao Claudio e grazie per la soluzione. Senza saper né leggere né scrivere, anche andando per tentativi, non mi sarebbe mai venuto in mente di invertire l’ordine di chiamata…

              OldClaudio” post=111000Si tratta del fatto che Dcolumn definisce il suo primo argomento come carattere attivo, rendendolo uguale al doppio apice diritto; gloss-italian.ldf con l’opzione babelshorthands, definisce anche lui il carattere ” come carattere attivo. le due cose vanno in conflitto.

              A questo punto mi sorge una curiosità: ho provato ad impostare l’opzione ‘babelshorthands’ per tutte le lingue supportate (ovvero: catalano, olandese, tedesco e russo), ma il problema si evidenzia solamente con l’italiano. È dunque il pacchetto ‘gloss-italian.ldf’ a non essere stato implementato a dovere? Altrimenti l’errore dovrebbe presentarsi anche con le altre lingue…

              Intanto ringrazio anche Tommaso per aver tirato in ballo il pacchetto ‘siunitx’: sto analizzando differenze/analogie tra la S-column e la D-column dell’omonimo pacchetto.

              Matteo

            • #110716
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                I pacchetti relativi alle lingue catalano, olandese tedesco e russo sono state scritte da autori diversi, che generalmente hanno usato il doppio apice per formare “macro” dove il doppio apice funziona quasi come il segno \

                In italiano, occitano, piemontese, friulano, latino (che ho scritto io) ho preferito definire il carattere attivo “doppio apice” come una macro a se stante che accetta un token o un argomento fra graffe. Se leggi la documentazione babel-italian con texdoc, vedi i dettagli. In italiano e nelle altre lingue che ho gestito io, il doppio apice svolge molte funzioni diverse a seconda dell’argomento che riceve. Mi è parso un metodo più semplice che non quello di definire molte macro dove il doppio apice svolge la funzione del backslash.

                Questo che è capitato a te è il primo caso di doppio apice in conflitto con qualcos’altro; è dal 1991, circa) che il modulo per l’italiano ha queste definizioni e in questi 26 anni non era mai avvenuto un conflitto. No…, bugia! a quanto pare il doppio apice attivo interferisce male con il pacchetto xypic. Sol vecchio sito del GuIT c’è (forse ancora) un intervento che parla più o meno di “quell’imbecille che ha definito attivo il doppio apice…”. Siccome allora non ero abituato alle esternazioni alla Vittorio Sgarbi, mi sono tenuto l’epiteto, e ho cercato di porvi rimedio; perciò con polyglossia l’utente che vuole usare le scorciatoie di babel lo deve fare esplicitamente. Con babel, invece fino a non molto tempo fa non si poteva fare molto; ora il doppio apice attivo, cioè le scorciaotrie devono venire attivate espressamente; ma anche quando sono attivate esistono i comandi \shorthandoff e \shorthandon che permettono di disattivare tutti i caratteri attivi elencato negli argomenti delle due macro (di nuovo leggi babel-italian con texdoc).

                Tanto per fare un esempio, in italiano il doppio apice, se attivato, permette di inserire un punto di cesura fra due monconi di parola che diventano due “parole” da sillabare separatamente; per esempio macroistruzione se non si usa il doppio apice considera il gruppo oi come un dittongo e non lo divide; potresti avere, quindi una divisione macroi-struzione. Se invece nel sorgente scrivi macro”istruzione, la divisione diventa etimologica macro-istruzione (con macro e istruzione, che all’occorrenza possono essere divise a loro volta). Usando il metodo tedesco avrei dovuto usare qualcosa come 64 diverse definizioni di altrettante macro per prendere in considerazione le 26 lettere normali minuscole semplici dell’alfabeto latin, le 6 varianti accentate, e avrei dovuto ripetere le definizioni per altrettante maiuscole; fatti i conti e ottieni 62 definizioni. con la mia definizione la sola “macro”, formata dal doppio apice, legge il token successivo; se questo ha il codice di categoria 11 (lettera) inserisce quello che occorre per avere il risultato voluto.

                Siccome non si può avere “la moglie ubriaca e la botte piena”, bisogna accontentarsi; con babel si può attivare e disattivare il doppio apice a piacere dell’utente; con polyglossia, una volta attivato, lo si può disattivare solo cambiando lingua. Ahimè è il prezzo che bisogna pagare da quando Arthur Reutenhauer è il curatore di polyglossia, il coordinatore dell tex-hyphen group, e, ora, anche membro del board of directors del TUG. E siccome è una persona del tipo “frangar, non flectar”, non c’è modo di modificare gloss-italian senza che lui se la prenda e comunque metta i bastoni fra le ruote. Forse sono io che non sono abbastanza diplomatico; oppure sono io che non mi sono meritato una sufficiente considerazione fra coloro che contribuiscono materiale a TeXLive e ai suoi discendenti, mi ha già mandato a quel paese, per cui io ho fatto altrettanto. Non escludo che Enrico Gregorio, la cui fama è grande anche a livello internazionale, non è solo il migliore degli italiani, possa intervenire a modificare gloss-italian.ldf per aggiungere la funzionalità equivalente a quella di \shorthandoff e \shorthandoff, ma io ormai sono fuori.

                Scusa se lavo i panni sporchi in pubblico, ma sono veramente desolato per la situazione che si è venuta a creare.

              • #110717
                MatteoF
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Ti ringrazio per i chiarimenti, molto istruttivi (e anche per le esternazioni “più personali”, che al pari dei chiarimenti “TeXnici” aiutano anch’esse a cogliere molti aspetti di LaTeX e del suo funzionamento).

                  Matteo

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

              Go to top