L’arte di scrivere dati numerici con LaTeX

  • Creatore
    Topic
  • #47212
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ovvero: “Le gioie di siunitx
      ————————————–

      Ciao a tutti. Sono alle prese con il pacchetto siunitx: mi piace moltissimo, perché concentra funzioni di altri pacchetti (come numprint, icomma e dcolumn) e si propone come la soluzione definitiva per la scrittura di dati numerici.

      Delle colonne S di siunitx c’è però qualcosa che mi sfugge. Da quanto ho capito, quando maneggia una colonna S, siunitx di default mettre il separatore decimale al centro della colonna. Questo, secondo me, produce risultati non sempre adeguati. Per esempio:
      `\documentclass{article}
      \usepackage[italian]{babel}
      \usepackage[osf]{mathpazo}
      \usepackage[mode=math]{siunitx}
      \usepackage{booktabs}
      \sisetup{decimalsymbol=comma}

      \begin{document}

      \begin{tabular}{SSSSS}
      \toprule
      $B$ & $P_u$ & $u_u$ & $\beta$ & $G_f$ \\
      {(m)} & {(kg)} & {(m)} & & {(Pa)} \\
      \midrule
      5 & 269,8 & 0,000674 & 1,79 & 0,04089 \\
      10 & 421,0 & 0,001035 & 3,59 & 0,04089 \\
      20 & 640,2 & 0,001565 & 7,18 & 0,04089 \\
      \bottomrule
      \end{tabular}

      \end{document}
      `
      Se si prova a compilare, si vede una voragine tra le seconda e la terza colonna.

      Per rimediare si può dare l’opzione abnumalign=center che, da quanto ho capito, centra tutto il numero, ma a condizione che se ne specifichi manualmente il “formato” come ..

      `\begin{tabular}{S[tabnumalign=center]%
      S[tabnumalign=center,tabformat=3.1]%
      S[tabnumalign=center,tabformat=1.6]%
      S[tabnumalign=center,tabformat=1.2]%
      S[tabnumalign=center,tabformat=1.5]}
      \toprule
      $B$ & $P_u$ & $u_u$ & $\beta$ & $G_f$ \\
      {(m)} & {(kg)} & {(m)} & & {(Pa)} \\
      \midrule
      5 & 269,8 & 0,000674 & 1,79 & 0,04089 \\
      10 & 421,0 & 0,001035 & 3,59 & 0,04089 \\
      20 & 640,2 & 0,001565 & 7,18 & 0,04089 \\
      \bottomrule
      \end{tabular}
      `
      Ora il risultato è ottimo, ma specificare manualmente il formato di ciascuna colonna è scomodo: non dovrebbe pensarci il pacchetto automaticamente? Il fatto è che se non specifico il formato e mi limito semplicemente a dare tabnumalign=center come opzione globale
      `\sisetup{tabnumalign=center}

      \begin{tabular}{SSSSS}
      \toprule
      $B$ & $P_u$ & $u_u$ & $\beta$ & $G_f$ \\
      {(m)} & {(kg)} & {(m)} & & {(Pa)} \\
      \midrule
      5 & 269,8 & 0,000674 & 1,79 & 0,04089 \\
      10 & 421,0 & 0,001035 & 3,59 & 0,04089 \\
      20 & 640,2 & 0,001565 & 7,18 & 0,04089 \\
      \bottomrule
      \end{tabular}`
      il risultato è inaccettabile (alcune colonne sbordano e si sovrappongono).

      Un altro mistero: provate a sostituire nella tabella precedente $D$ al posto di $B$: siunitx dà un errore:
      `! Package siunitx Error: Invalid number format `D'.

      See the siunitx package documentation for explanation.
      Type H for immediate help.

      l.12 $D$ &
      $P_u$ & $u_u$ & $\beta$ & $G_f$ \\
      ?
      `
      Neppure mettere $D$ tra graffe risolve. Un bug?

      Qualcuno può illuminarmi?

      Grazie,
      L.

      P.S.

      Nell’Arte è proposta una tabella con allineamento alla virgola, ottenuta con il pacchetto dcolumn. Ecco come ottenere lo stesso risultato con siunitx:
      `\begin{tabular}{cS}
      \toprule
      Espressione & \multicolumn{1}{c}{Valore} \\
      \midrule
      $\pi$ & 3.1416 \\
      $\pi^{\pi}$ & 36.46 \\
      $\pi^{\pi^{\pi}}$ & 80662.7 \\
      \bottomrule
      \end{tabular}`
      Il codice è più semplice, e il risultato tipografico migliore di quello con dcolumn (le cifre vengono spaziate a gruppi di tre, aumentando la leggibilità).

      Per quanto riguarda \numprint, le sue funzioni vengono (sostanzialmente) svolte da \num. icomma? Non ce n’è più bisogno: \num e le colonne S provvedono a rendere la virgola decimale “intelligente”, spaziandola correttamente. Eccellente. 🙂

    Visualizzazione 21 filoni di risposte
    • Autore
      Risposte
      • #47213
        Up
        0
        Down
        ::

        Ovvero: “Le gioie di siunitx
        ————————————–

        Ciao a tutti. Sono alle prese con il pacchetto siunitx: mi piace moltissimo, perché concentra funzioni di altri pacchetti (come numprint, icomma e dcolumn) e si propone come la soluzione definitiva per la scrittura di dati numerici.

        Delle colonne S di siunitx c’è però qualcosa che mi sfugge. Da quanto ho capito, quando maneggia una colonna S, siunitx di default mettre il separatore decimale al centro della colonna. Questo, secondo me, produce risultati non sempre adeguati. Per esempio:
        `\documentclass{article}
        \usepackage[italian]{babel}
        \usepackage[osf]{mathpazo}
        \usepackage[mode=math]{siunitx}
        \usepackage{booktabs}
        \sisetup{decimalsymbol=comma}

        \begin{document}

        \begin{tabular}{SSSSS}
        \toprule
        $B$ & $P_u$ & $u_u$ & $\beta$ & $G_f$ \\
        {(m)} & {(kg)} & {(m)} & & {(Pa)} \\
        \midrule
        5 & 269,8 & 0,000674 & 1,79 & 0,04089 \\
        10 & 421,0 & 0,001035 & 3,59 & 0,04089 \\
        20 & 640,2 & 0,001565 & 7,18 & 0,04089 \\
        \bottomrule
        \end{tabular}

        \end{document}
        `
        Se si prova a compilare, si vede una voragine tra le seconda e la terza colonna.

        Per rimediare si può dare l’opzione abnumalign=center che, da quanto ho capito, centra tutto il numero, ma a condizione che se ne specifichi manualmente il “formato” come ..

        `\begin{tabular}{S[tabnumalign=center]%
        S[tabnumalign=center,tabformat=3.1]%
        S[tabnumalign=center,tabformat=1.6]%
        S[tabnumalign=center,tabformat=1.2]%
        S[tabnumalign=center,tabformat=1.5]}
        \toprule
        $B$ & $P_u$ & $u_u$ & $\beta$ & $G_f$ \\
        {(m)} & {(kg)} & {(m)} & & {(Pa)} \\
        \midrule
        5 & 269,8 & 0,000674 & 1,79 & 0,04089 \\
        10 & 421,0 & 0,001035 & 3,59 & 0,04089 \\
        20 & 640,2 & 0,001565 & 7,18 & 0,04089 \\
        \bottomrule
        \end{tabular}
        `
        Ora il risultato è ottimo, ma specificare manualmente il formato di ciascuna colonna è scomodo: non dovrebbe pensarci il pacchetto automaticamente?

        Attribuisci a TeX doti di chiaroveggenza che non può avere. Non conosco il funzionamento dettagliato di siunitx, ma a quanto pare lo spazio riservato alla parte intera coincide con quello riservato alla parte decimale e questo spiega le “voragini”.

        Soluzione: come in tutti gli aspetti della composizione tipografica, non si può avere un automatismo sempre, soprattutto nelle tabelle che vanno esaminate a una a una per trovarne i difetti e risolverli. Ma qui non è difficile: chi scrive la tabella sa qual è il formato dei dati.

        Il fatto è che se non specifico il formato e mi limito semplicemente a dare tabnumalign=center come opzione globale
        `\sisetup{tabnumalign=center}

        \begin{tabular}{SSSSS}
        \toprule
        $B$ & $P_u$ & $u_u$ & $\beta$ & $G_f$ \\
        {(m)} & {(kg)} & {(m)} & & {(Pa)} \\
        \midrule
        5 & 269,8 & 0,000674 & 1,79 & 0,04089 \\
        10 & 421,0 & 0,001035 & 3,59 & 0,04089 \\
        20 & 640,2 & 0,001565 & 7,18 & 0,04089 \\
        \bottomrule
        \end{tabular}`
        il risultato è inaccettabile (alcune colonne sbordano e si sovrappongono).

        Un altro mistero: provate a sostituire nella tabella precedente $D$ al posto di $B$: siunitx dà un errore:
        `! Package siunitx Error: Invalid number format `D'.

        See the siunitx package documentation for explanation.
        Type H for immediate help.

        l.12 $D$ &
        $P_u$ & $u_u$ & $\beta$ & $G_f$ \\
        ?
        `
        Neppure mettere $D$ tra graffe risolve. Un bug?

        Non è un bug; nelle colonne di tipo S vanno numeri. Ciò che non lo è può funzionare oppure no, dipende se entra in conflitto con il funzionamento interno della specifica dei numeri (d oppure D sono riservati per varie notazioni, mi pare). Ovviamente la soluzione è \multicolumn{1}{c}{…}

        Purtroppo la revisione dell’Arte cade in un brutto periodo: siunitx ha fatto la transizione alla versione 2 che non è pienamente compatibile con la 1; occorre specificare
        `\usepackage[load-configurations=version-1]{siunitx}`
        se si ha un documento preparato per la versione 1. Noioso, forse, ma la versione 2 è davvero molto più potente e configurabile della precedente e vale la pena passare alla nuova.

        Nella documentazione della versione 2 c’è la tabella riassuntiva con le corrispondenze fra vecchie opzioni e nuove. Secondo me è meglio usare la 2.

        Ciao
        Enrico

      • #47214
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::

          Attribuisci a TeX doti di chiaroveggenza che non può avere. Non conosco il funzionamento dettagliato di siunitx, ma a quanto pare lo spazio riservato alla parte intera coincide con quello riservato alla parte decimale e questo spiega le “voragini”.

          Per una volta, non sono d’accordo. Infatti le colonne standard di tipo c centrano il loro contenuto automaticamente.
          `\begin{tabular}{ccccc}
          \toprule
          {$B$} & {$P_u$} & {$u_u$} & {$\beta$} & $G_f$ \\
          {(m)} & {(kg)} & {(m)} & & {(Pa)} \\
          \midrule
          5 & 269,8 & 0,000674 & 1,79 & 0,04089 \\
          10 & 421,0 & 0,001035 & 3,59 & 0,04089 \\
          20 & 640,2 & 0,001565 & 7,18 & 0,04089 \\
          \bottomrule
          \end{tabular}`
          Penso che sarebbe logico che siunitx, una volta data l’opzione tabnumalign=center, facesse lo stesso (mettendo però sempre in maiuscolo i numeri, spaziando le cifre e tenendo la virgola decimale intelligente). Così non è:
          `\sisetup{tabnumalign=center}

          \begin{tabular}{SSSSS}
          \toprule
          $B$ & $P_u$ & $u_u$ & $\beta$ & $G_f$ \\
          {(m)} & {(kg)} & {(m)} & & {(Pa)} \\
          \midrule
          5 & 269,8 & 0,000674 & 1,79 & 0,04089 \\
          10 & 421,0 & 0,001035 & 3,59 & 0,04089 \\
          20 & 640,2 & 0,001565 & 7,18 & 0,04089 \\
          \bottomrule
          \end{tabular}`
          Considero il fatto che non si possa scrivere $D$ nell’intestazione di una colonna un bug bello e buono. Nella doc. c’è scritto di mettere le intestazioni tra graffe: devo poter scrivere una $D$, se lo desidero.

          Purtroppo la revisione dell’Arte cade in un brutto periodo:

          Tommaso e io abbiamo pensato di risolvere il problema pubblicando in due tappe: la prima a giorni (per ora senza le colonne S di siunitx), la seconda in ottobre.

          Ciao,
          L.

        • #47215
          Up
          0
          Down
          ::

          Attribuisci a TeX doti di chiaroveggenza che non può avere. Non conosco il funzionamento dettagliato di siunitx, ma a quanto pare lo spazio riservato alla parte intera coincide con quello riservato alla parte decimale e questo spiega le “voragini”.

          Per una volta, non sono d’accordo. Infatti le colonne standard di tipo c centrano il loro contenuto automaticamente.
          `\begin{tabular}{ccccc}
          \toprule
          {$B$} & {$P_u$} & {$u_u$} & {$\beta$} & $G_f$ \\
          {(m)} & {(kg)} & {(m)} & & {(Pa)} \\
          \midrule
          5 & 269,8 & 0,000674 & 1,79 & 0,04089 \\
          10 & 421,0 & 0,001035 & 3,59 & 0,04089 \\
          20 & 640,2 & 0,001565 & 7,18 & 0,04089 \\
          \bottomrule
          \end{tabular}`
          Penso che sarebbe logico che siunitx, una volta data l’opzione tabnumalign=center, facesse lo stesso (mettendo però sempre in maiuscolo i numeri, spaziando le cifre e tenendo la virgola decimale intelligente). Così non è:
          `\sisetup{tabnumalign=center}

          \begin{tabular}{SSSSS}
          \toprule
          $B$ & $P_u$ & $u_u$ & $\beta$ & $G_f$ \\
          {(m)} & {(kg)} & {(m)} & & {(Pa)} \\
          \midrule
          5 & 269,8 & 0,000674 & 1,79 & 0,04089 \\
          10 & 421,0 & 0,001035 & 3,59 & 0,04089 \\
          20 & 640,2 & 0,001565 & 7,18 & 0,04089 \\
          \bottomrule
          \end{tabular}`

          La documentazione dice chiaramente che tabnumalign=center va accompagnata da tabformat. Se questo non ti va, scrivi una tua estensione di siunitx. 🙂 Il fatto è che lo spazio riservato ai numeri è fisso, se non specificato diversamente con tabformat; suppongo che Joseph Wright ci abbia pensato e non sia riuscito a risolverlo diversamente e temo che ci sia poco da fare al riguardo. Problemi analoghi li ha anche numprint, che richiede per la stessa cosa una sintassi molto più complessa.

          Ti potrei anche spiegare dov’è il problema: risiede principalmente che il dato contenuto nella tabella va massaggiato in vari modi e questo richiede parecchi trucchi non semplici. Se vuoi la virgola intelligente e la separazione dei gruppi di cifre, questo è il prezzo.

          Considero il fatto che non si possa scrivere $D$ nell’intestazione di una colonna un bug bello e buono. Nella doc. c’è scritto di mettere le intestazioni tra graffe: devo poter scrivere una $D$, se lo desidero.

          Scrivendo {$D$} non ottengo alcun errore. Lo ottengo solo se invece scrivo ${D}$.

          Ciao
          Enrico

        • #47216
          lorenzo.pantieri
          Partecipante
            Up
            0
            Down
            ::

            Se vuoi la virgola intelligente e la separazione dei gruppi di cifre, questo è il prezzo.

            Chiarissimo. Per me, il gioco vale la candela eccome!

            Scrivendo {$D$} non ottengo alcun errore. Lo ottengo solo se invece scrivo ${D}$.

            Acc… 😳 Hai perfettamente ragione!

            Grazie mille, Enrico, risolutivo come sempre. Non mi resta che aspettare la compatibilità con gli Euer… 😉

            Ciao,
            L.

          • #47217
            Up
            0
            Down
            ::


            Ciao a tutti.
            Ho fatto numerosissime prove per capire il funzionamento del comando \num di siunitx, e ho notato che caricando gli euler per la matematica ma cambiando font corrente, diciamo i kpfonts con l’opzione oldstyle, \num fa quello che ci si aspetta: stampa numeri maiuscoli e spaziati ogni tre cifre a partire da destra, ma NON in Euler, ma in kpfonts maiuscolo. Euler fa il proprio dovere se i numeri sono scritti tra dollari.

            Con mathpazo ed euler, invece, \num stampa sempre in minuscolo.

            La stessa cosa accade se invece di Euler metto i font sansmath:

            `\usepackage{sansmath}
            \sansmath`

            I numeri in sansmath vengono senza grazie soltanto se tra dollari. Dentro \num vengono in kpfonts maiuscolo. E questo accade sia con mathpazo che con kpfonts…

            A questo punto, due domande:

            1. non è che centri anche matphazo oltre che Euler, dal momento che cambiando font corrente \num fa il proprio lavoro?

            2. non potrebbe essere che quel “math” dell’opzione mode=math di siunitx voglia dire semplicemente “maiuscolo” e non “matematico”?

            Ciao
            Tommaso

          • #47218
            lorenzo.pantieri
            Partecipante
              Up
              0
              Down
              ::


              Non so rispondere. Però osservo che \numprint di numprint si comporta in modo (forse) più “logico”:
              `\documentclass{scrreprt}
              \usepackage[italian]{babel}
              \usepackage[eulermath]{classicthesis}
              \usepackage{numprint}
              \begin{document}
              1500000 \\
              $1500000$ \\
              \numprint{1500000} \\
              $\numprint{1500000}$
              \end{document}`
              Come si vede compilando, \numprint fa esattamente quello che ci si aspetta:
              1. numeri minuscoli nella prima riga;
              2. numeri maiuscoli (Euler) nella seconda;
              3. numeri minuscoli e spaziati nella terza;
              2. numeri maiuscoli e spaziati (Euler) nella quarta.

              Ciao,
              L.

            • #47219
              Up
              0
              Down
              ::

              Non so rispondere. Però osservo che \numprint di numprint si comporta in modo (forse) più “logico”:
              `\documentclass{scrreprt}
              \usepackage[italian]{babel}
              \usepackage[eulermath]{classicthesis}
              \usepackage[mode=math]{siunitx}
              \usepackage{numprint}
              \begin{document}
              1500000 \\
              $1500000$ \\
              \numprint{1500000} \\
              $\numprint{1500000}$
              \end{document}`
              Come si vede compilando, \numprint fa esattamente quello che ci si aspetta:
              1. numeri minuscoli nella prima riga;
              2. numeri maiuscoli (Euler) nella seconda;
              3. numeri minuscoli (ma spaziati) nella terza;
              2. numeri maiuscoli (Euler) nella quarta.

              No, non è quello che ci si aspetta. Con i font Euler si ottiene il comportamento voluto dando anche l’opzione “math-rm=\mathnormal” (che però ha qualche limite che lascio trovare all’attento lettore). Nella terza riga i numeri devono venir fuori in modo matematico; non succede, senza l’opzione menzionata, per questioni TeXniche.

              Colgo l’occasione per annunciare severe rappresaglie contro Tommaso, colpevole di un “centri” che mi ha lasciato boccheggiante. E non era il caldo. 👿

              Ciao
              Enrico

            • #47220
              Up
              0
              Down
              ::


              @ Enrico:
              Certo, domani lascio pagare a te, OK? 😉
              Purtroppo si sta andando verso questa direzione: c’entra o centra? c’entrare, centrare o entrarci? Nessuno ha la risposta, e una lingua è una brutta bestia…
              Però le mie due domande non hanno avuto risposta 8)

              @ Lorenzo:
              Grazie, tu sì che sei un vero amico. Mica come quell’altro 😀

              Ciao
              Tommaso

            • #47221
              Up
              0
              Down
              ::

              @ Enrico:
              Certo, domani lascio pagare a te, OK? 😉
              Purtroppo si sta andando verso questa direzione: c’entra o centra? c’entrare, centrare o entrarci? Nessuno ha la risposta, e una lingua è una brutta bestia…

              La risposta c’è eccome. Che ci sia chi scrive “centra” senza apostrofo è un dato di fatto; se però perfino chi dovrebbe insegnare la forma corretta cala le braghe… 🙁

              🙂

              Però le mie due domande non hanno avuto risposta 8)

              Il pacchetto “sansmath” è un accrocchio che serve per scopi molto limitati. Che non funzioni con siunitx non mi sorprende.

              Ciao
              Enrico

            • #47222
              lorenzo.pantieri
              Partecipante
                Up
                0
                Down
                ::


                Resta il fatto che il problema di convivenza tra siunitx e gli Euler rimane. La metto così:

                a) voglio usare ClassicThesis con gli Euler per la matematica;
                b) voglio un comando chemi spazi correttamente i numeri, a gruppi di tre cifre, con la virgola intelligente;
                c) voglio che i numeri prodotti in questo modo siano matematici, ovvero siano Euler.

                Bene, \numprint soddisfa le tre esigenze contemporaneamente, \num no.
                `\documentclass{scrreprt}
                \usepackage[italian]{babel}
                \usepackage[eulermath]{classicthesis}
                \usepackage{numprint}
                \begin{document}
                1500000 \\
                $1500000$ \\
                \numprint{1500000} \\
                $\numprint{1500000}$
                \end{document}`

                `\documentclass{scrreprt}
                \usepackage[italian]{babel}
                \usepackage[eulermath]{classicthesis}
                \usepackage{siunitx}
                \begin{document}
                1500000 \\
                $1500000$ \\
                \num{1500000} \\
                $\num{1500000}$
                \end{document}`
                Ciao,
                L.

              • #47223
                Up
                0
                Down
                ::

                No, non è quello che ci si aspetta. Con i font Euler si ottiene il comportamento voluto dando anche l’opzione “math-rm=\mathnormal” (che però ha qualche limite che lascio trovare all’attento lettore). Nella terza riga i numeri devono venir fuori in modo matematico; non succede, senza l’opzione menzionata, per questioni TeXniche.

                Perché nella terza riga DEVONO venire in modo matematico? Riporto dalla doc di numprint:

                The number is printed in the current mode (math or text mode) so that an eventual chosen difference between mathematical and text numbers stays visible (e.g., by using the eco package).

                […]

                The number is printed in the active mode (text mode resp. math mode). This may be important if the digits are different in text and math mode as in this documentthatusesold-stylefiguresintextandliningfiguresinmathmode. See the difference between […] produced by

                ‘‘\numprint{123456.134e123}’’ and ‘‘$\numprint{123456.134e123}$’’

                Sarò anche stupido, ma io capisco che \numprint stampa numeri nel font corrente, e $\numprint$ in modo matematico. Ho fatto una prova, e caricando gli Euler $\numprint$ stampa in Euler, mentre senza dollari stampa in minuscolo ma spaziato, avendo caricato mathpazo con opzione osf.

                Chi mi chiarisce le idee? 😀

                Ciao
                Tommaso

              • #47224
                Up
                0
                Down
                ::


                Ciao Lorenzo,

                grazie per il tuo lavoro, non vedo l’ora di leggerlo!

                Con l’occasione ti volevo chiedere se scriverai anche del pacchetto pgfplotstable.

                Ti dico questo perché nella relazione che ho scritto per un esame penso che non ne sarei uscito vivo senza quel pacchetto.

                Il risultato di una tebella che ho scritto è questo:

                P.S. Lo so che la testa della tabella contiene qualche errore!! 🙂

                Saluti

                Michele

              • #47225
                lorenzo.pantieri
                Partecipante
                  Up
                  0
                  Down
                  ::

                  grazie per il tuo lavoro, non vedo l’ora di leggerlo!

                  Pazienta fino a domani! 😉

                  Con l’occasione ti volevo chiedere se scriverai anche del pacchetto pgfplotstable.

                  No, non lo conosco. Ci darò un’occhiata al più presto. Però lasciamo dire che quella tabella si può ottenere con gli strumenti presentati nell’Arte.

                  Ciao,
                  L.

                • #47226
                  Up
                  0
                  Down
                  ::

                  No, non è quello che ci si aspetta. Con i font Euler si ottiene il comportamento voluto dando anche l’opzione “math-rm=\mathnormal” (che però ha qualche limite che lascio trovare all’attento lettore). Nella terza riga i numeri devono venir fuori in modo matematico; non succede, senza l’opzione menzionata, per questioni TeXniche.

                  Perché nella terza riga DEVONO venire in modo matematico? Riporto dalla doc di numprint:

                  The number is printed in the current mode (math or text mode) so that an eventual chosen difference between mathematical and text numbers stays visible (e.g., by using the eco package).

                  […]

                  The number is printed in the active mode (text mode resp. math mode). This may be important if the digits are different in text and math mode as in this documentthatusesold-stylefiguresintextandliningfiguresinmathmode. See the difference between […] produced by

                  ‘‘\numprint{123456.134e123}’’ and ‘‘$\numprint{123456.134e123}$’’

                  Sarò anche stupido, ma io capisco che \numprint stampa numeri nel font corrente, e $\numprint$ in modo matematico. Ho fatto una prova, e caricando gli Euler $\numprint$ stampa in Euler, mentre senza dollari stampa in minuscolo ma spaziato, avendo caricato mathpazo con opzione osf.

                  Chi mi chiarisce le idee? 😀

                  Ciao
                  Tommaso

                  Il “mode” si riferisce all’opzione valida in quel momento per siunitx (mode=math oppure mode=text).

                  Ciao
                  Enrico

                • #47227
                  Up
                  0
                  Down
                  ::


                  Credo che ci siamo.
                  RIporto la risposta di Joseph Wright, cordialissimo e solerte autore di siunitx:

                  Hello Tommaso,

                  The standard settings for siunitx use \mathrm when printing in math
                  mode. The euler package sets up different digit styles in \mathrm and
                  \mathnormal. You probably want to use the later:

                  `\documentclass{article}
                  \usepackage[osf]{mathpazo}
                  \usepackage{euler}
                  \usepackage{siunitx}
                  \sisetup{math-rm = \mathnormal,mode = math}

                  \begin{document}
                  \num{123}
                  \end{document}`

                  La compilazione si interrompe con un errore, ovviamente, perché l’opzione data da Wright è per la versione 2 del pacchetto, che sarà disponibile soltanto con la TeX Live 2010. Preciso, per scansare le severe rappresaglie, che la stessa opzione era stata data anche da Enrico. 😀

                  Ora, compilate questo codice:

                  `% !TEX encoding = UTF-8 Unicode

                  \documentclass{scrreprt}
                  \usepackage[italian]{babel}
                  \usepackage[eulermath]{classicthesis}
                  \usepackage[decimalsymbol=comma]{siunitx}
                  \usepackage{numprint}
                  \sisetup{mathrm=mathnormal}

                  \begin{document}
                  123456

                  $123456$

                  123,456

                  $123,456$

                  \numprint{123456}

                  \numprint{123,456}

                  $\numprint{123456}$

                  $\numprint{123,456}$

                  \num{123456}

                  \num{123,456}

                  \sisetup{mode=text}
                  \num{123456}

                  \num{123,456}

                  \sisetup{mode=math}
                  \numprint{123}
                  \end{document}`

                  Io dico che i comandi di numprint e di siunitx funzionano bene, tranne che per una cosa: la virgola nell’argomento di \num non è quella di Euler, ma quella di Palatino. Da una serie di prove ho visto che caricando altri font che prevedono numeri minuscoli, come i kpfonts con l’opzione oldstyle, la virgola stampata è quella degli Euler. Forse c’entra anche Palatino.
                  Mettendo l’opzione per la versione 1 del pacchetto, tutto torna. E \numprint continua a stampare in minuscolo, se non è tra dollari. Forse che è proprio questa la sua funzione! 😀

                  Wright mi ha appena scritto:

                  You have version 1 of siunitx 🙂 Option should therefore read

                  `sisetup{mathrm = mathnormal,mode = math}`

                  (Version 2 was released about 6 weeks ago.)

                  Attendo critiche 😉

                  Ciao
                  Tommaso

                • #47228
                  Up
                  0
                  Down
                  ::

                  Credo che ci siamo.
                  RIporto la risposta di Joseph Wright, cordialissimo e solerte autore di siunitx:

                  Hello Tommaso,

                  The standard settings for siunitx use \mathrm when printing in math
                  mode. The euler package sets up different digit styles in \mathrm and
                  \mathnormal. You probably want to use the later:

                  `\documentclass{article}
                  \usepackage[osf]{mathpazo}
                  \usepackage{euler}
                  \usepackage{siunitx}
                  \sisetup{math-rm = \mathnormal,mode = math}

                  \begin{document}
                  \num{123}
                  \end{document}`

                  La compilazione si interrompe con un errore, ovviamente, perché l’opzione data da Wright è per la versione 2 del pacchetto, che sarà disponibile soltanto con la TeX Live 2010. Preciso, per scansare le severe rappresaglie, che la stessa opzione era stata data anche da Enrico. 😀

                  Ora, compilate questo codice:

                  `% !TEX encoding = UTF-8 Unicode

                  \documentclass{scrreprt}
                  \usepackage[italian]{babel}
                  \usepackage[eulermath]{classicthesis}
                  \usepackage[decimalsymbol=comma]{siunitx}
                  \usepackage{numprint}
                  \sisetup{mathrm=mathnormal}

                  \begin{document}
                  123456

                  $123456$

                  123,456

                  $123,456$

                  \numprint{123456}

                  \numprint{123,456}

                  $\numprint{123456}$

                  $\numprint{123,456}$

                  \num{123456}

                  \num{123,456}

                  \sisetup{mode=text}
                  \num{123456}

                  \num{123,456}

                  \sisetup{mode=math}
                  \numprint{123}
                  \end{document}`

                  Io dico che i comandi di numprint e di siunitx funzionano bene, tranne che per una cosa: la virgola nell’argomento di \num non è quella di Euler, ma quella di Palatino. Da una serie di prove ho visto che caricando altri font che prevedono numeri minuscoli, come i kpfonts con l’opzione oldstyle, la virgola stampata è quella degli Euler. Forse c’entra anche Palatino.
                  Mettendo l’opzione per la versione 1 del pacchetto, tutto torna. E \numprint continua a stampare in minuscolo, se non è tra dollari. Forse che è proprio questa la sua funzione! 😀

                  Wright mi ha appena scritto:

                  You have version 1 of siunitx 🙂 Option should therefore read

                  `sisetup{mathrm = mathnormal,mode = math}`

                  (Version 2 was released about 6 weeks ago.)

                  Attendo critiche 😉

                  Ciao
                  Tommaso

                  Il problema è: che c’entra \numprint con siunitx?

                  Ciao
                  Enrico

                • #47229
                  lorenzo.pantieri
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Eureka! Con l’opzione mathrm=mathnormal siunitx funziona anche con Euler! 🙂
                    `\documentclass{scrreprt}
                    \usepackage[eulermath]{classicthesis}
                    \usepackage[mode=math,decimalsymbol=comma,mathrm=mathnormal]{siunitx}
                    \usepackage{booktabs}

                    \begin{document}
                    1500000 \\
                    $1500000$ \\

                    \num{1500000} \\
                    $\num{1500000}$

                    \num[mode=text]{1500000} \\
                    $\num[mode=text]{1500000}$

                    \begin{tabular}{cS}
                    \toprule
                    Espressione & {Valore} \\
                    \midrule
                    $\pi$ & 3,1416 \\
                    $\pi^{\pi}$ & 36,46 \\
                    $\pi^{\pi^{\pi}}$ & 80662,7 \\
                    \bottomrule
                    \end{tabular}
                    \end{document}`
                    Tutto va come “ci si aspetta”.

                    Nella prima coppia di righe abbiamo il numero in minuscolo (Palatino) e maiuscolo (Euler).

                    Nella seconda coppia abbiamo sempre gli Euler: è giusto, perché l’impostazione generale è “mode=math” (che ritengo sia predefinita).

                    Nella terza coppia abbiamo i numeri minuscoli: giusto, perché lo si è richiesto espressamente in entrambi i casi.

                    La tabella, poi, è perfetta: Euler, incolonnamento alla virgola e cifre raggruppate a gruppi di tre.

                    Ottimo… anche se questo richiederà di modificare l’Arte di conseguenza… 😉

                    Ciao,
                    L.

                  • #47230
                    Up
                    0
                    Down
                    ::

                    Eureka! Con l’opzione mathrm=mathnormal siunitx funziona anche con Euler! 🙂
                    `\documentclass{scrreprt}
                    \usepackage[eulermath]{classicthesis}
                    \usepackage[mode=math,decimalsymbol=comma,mathrm=mathnormal]{siunitx}
                    \usepackage{booktabs}

                    \usepackage{numprint}
                    \begin{document}
                    1500000 \\
                    $1500000$ \\

                    \num{1500000} \\
                    $\num{1500000}$

                    \num[mode=text]{1500000} \\
                    $\num[mode=text]{1500000}$

                    \begin{tabular}{cS}
                    \toprule
                    Espressione & {Valore} \\
                    \midrule
                    $\pi$ & 3,1416 \\
                    $\pi^{\pi}$ & 36,46 \\
                    $\pi^{\pi^{\pi}}$ & 80662,7 \\
                    \bottomrule
                    \end{tabular}
                    \end{document}`
                    Tutto va come “ci si aspetta”.

                    Nella prima coppia di righe abbiamo il numero in minuscolo (Palatino) e maiuscolo (Euler).

                    Nella seconda coppia abbiamo sempre gli Euler: è giusto, perché l’impostazione generale è “mode=math” (che ritengo sia predefinita).

                    Nella terza coppia abbiamo i numeri minuscoli: giusto, perché lo si è richiesto espressamente in entrambi i casi.

                    La tabella, poi, è perfetta: Euler, incolonnamento alla virgola e cifre raggruppate a gruppi di tre.

                    Ottimo…

                    Non proprio. Prova ad aggiungere \SI{123456}{m^{23}} e sappimi dire. Se specifichi “unitmode=text”, l’unità di misura sarà nel carattere corretto, ma l’esponente diventa sbagliato. Soluzione: \SI{123456}{m^{$23$}}

                    Commenti finali: si possono usare i font Euler per il modo matematico, ma è meglio evitarli.

                    A che serviva numprint?

                    Ciao
                    Enrico

                  • #47231
                    lorenzo.pantieri
                    Partecipante
                      Up
                      0
                      Down
                      ::

                      Non proprio. Prova ad aggiungere \SI{123456}{m^{23}} e sappimi dire. Se specifichi “unitmode=text”, l’unità di misura sarà nel carattere corretto, ma l’esponente diventa sbagliato. Soluzione: \SI{123456}{m^{$23$}}

                      Ho provato a compilare
                      `\documentclass{scrreprt}
                      \usepackage[eulermath]{classicthesis}
                      \usepackage[mode=math,decimalsymbol=comma,mathrm=mathnormal]{siunitx}
                      \begin{document}
                      \SI{123456}{m^{23}}
                      \end{document}
                      `e mi sembra che il font sia giusto. Se vuoi ti mando il PDF che ottengo. Il tuo codice, poi, mi produce un errore.
                      `! Missing } inserted.

                      }
                      l.29 \SI{123456}{m^{$23$}}
                      ^^M
                      `

                      Commenti finali: si possono usare i font Euler per il modo matematico, ma è meglio evitarli.

                      Io direi invece: si possono usare i magnifici font Euler per il modo matematico, ma è bene sapere che si può andare incontro a qualche limitazione (per lo più superabile).

                      È solo la mia opinione.

                      A che serviva numprint?

                      Per scrivere un numero con le cifre spaziate a gruppi di tre (e con la virgola intelligente) ci sono diverse soluzioni: \numprint e \num sono fra queste. Fanno cose leggermente diverse, ma insomma il problema è quello. Nel codice precedente mi era sfuggita la chiamata al pacchetto: ora correggo!

                      Ciao,
                      L.

                    • #47232
                      Up
                      0
                      Down
                      ::


                      Serviva soltanto per far vedere la differenza di comportamento dei due pacchetti con Euler. Tu stesso, quando ti ho riportato la citazione dalla documentazione di numprint, hai chiamato in causa siunitx, che con numprint non C’ENTRA molto, o no? 😉

                      A dopo
                      Tommaso

                    • #47233
                      lorenzo.pantieri
                      Partecipante
                        Up
                        0
                        Down
                        ::

                        Serviva soltanto per far vedere la differenza di comportamento dei due pacchetti con Euler. Tu stesso, quando ti ho riportato la citazione dalla documentazione di numprint, hai chiamato in causa siunitx, che con numprint non C’ENTRA molto, o no? 😉

                        Dalla doc. di siunitx:

                        The numprint package has provided many useful ideas for the code used here for number formatting.

                        Ciao,
                        L.

                      • #47234
                        Up
                        0
                        Down
                        ::


                        OK,
                        scusa a Enrico, potevo leggere con più attenzione. Ma qui ci sono troppe cose sulla griglia…

                        Ciao
                        Tommaso

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

                    Go to top