Inconsolatamente verbatim

  • Creatore
    Topic
  • #38880
    robitex
    Amministratore del forum
      Up
      0
      Down
      ::


      Il problema che vi descriverò tra poco mi ha suscitato un senso di delusione, soprattutto dopo tanto lavoro per comporre questi miei benedetti fascicoli di calcolo.
      Tali documenti molto corposi, sono l’alternanza di brevi porzioni di testo e lunghi tabulati numerici a spaziatura fissa composti su una o due colonne, derivati da file rtf prodotti da un software di modellazione e poi “cucinati” per apparire come normale testo (l’incolonnamento è prodotto da un diverso numero di spazi tra i campi).

      Questo è il punto importante.
      Gli spazi non vengono poi trattati al solito modo da LaTeX perché inseriti in ambienti verbatim.
      Il risultato dipende quindi da un font monospaziato. Per esso ho scelto il font inconsolata perché si legge bene ed è un po’ più snello di quello standard.

      Allora compilate due volte il seguente codice, con e senza il caricamento del pacchetto inconsolata.

      `\documentclass[a4paper]{article}
      \usepackage[margin=10mm]{geometry}
      %\usepackage{inconsolata}

      \begin{document}
      \small
      \begin{verbatim}
      Nome Tipo Grav. Gamma Gamma Psi 0 Psi 1 Psi 2 Psi 2 Phi
      sism. sism. (coeff.
      correl.)
      Perm. non strutt.le G2 permanente * 1.50 1.00 nd nd nd nd nd
      Sismico SLU sismico 1.00 0.00 nd nd nd nd nd
      Sismico SLD sismico 0.00 1.00 nd nd nd nd nd
      Torcente SLV sismico correlato 1.00 0.00 nd nd nd nd nd
      Torcente SLD sismico correlato 0.00 1.00 nd nd nd nd nd
      Cat. A: Residenziale variabile * 1.50 1.00 0.70 0.50 0.30 0.30 1.00
      Cat. B: Uffici variabile * 1.50 1.00 0.70 0.50 0.30 0.30 1.00
      Cat. C: Affollamento variabile * 1.50 1.00 0.70 0.70 0.60 0.60 1.00
      Cat. D: Commerciale variabile * 1.50 1.00 0.70 0.70 0.60 0.60 1.00
      Cat. E: Magazzini variabile * 1.50 1.00 1.00 0.90 0.80 0.80 1.00
      Cat. F: Rimesse (<30kN) variabile * 1.50 1.00 0.70 0.70 0.60 0.60 1.00
      Cat. G: Rimesse (>30kN) variabile * 1.50 1.00 0.70 0.50 0.30 0.30 1.00
      Cat. H: Copertura variabile * 1.50 1.00 0.00 0.00 0.00 0.20 1.00
      Neve (q<1000) variabile * 1.50 1.00 0.50 0.20 0.00 0.20 1.00
      Neve (q>1000) variabile * 1.50 1.00 0.70 0.50 0.20 0.20 1.00
      Vento var. non contemp. 1.50 0.00 0.60 0.20 0.00 0.00 1.00
      Temperatura var. non contemp. 1.50 0.00 0.60 0.50 0.00 0.00 1.00
      Pesi strutturali, G1 permanente * 1.30 1.00 nd nd nd nd nd
      \end{verbatim}
      \end{document}`

      Con il font standard tutto bene, con l’inconsolata è un disastro totale.

      Ciao a tutti (da un inconsolato utilizzatore di LaTeX).

    Visualizzazione 11 filoni di risposte
    • Autore
      Risposte
      • #38881
        Antonio Ledda
        Partecipante
          Up
          0
          Down
          ::

          Il problema che vi descriverò tra poco mi ha suscitato un senso di delusione, soprattutto dopo tanto lavoro per comporre questi miei benedetti fascicoli di calcolo.
          Tali documenti molto corposi, sono l’alternanza di brevi porzioni di testo e lunghi tabulati numerici a spaziatura fissa composti su una o due colonne, derivati da file rtf prodotti da un software di modellazione e poi “cucinati” per apparire come normale testo (l’incolonnamento è prodotto da un diverso numero di spazi tra i campi).

          Questo è il punto importante.
          Gli spazi non vengono poi trattati al solito modo da LaTeX perché inseriti in ambienti verbatim.
          Il risultato dipende quindi da un font monospaziato. Per esso ho scelto il font inconsolata perché si legge bene ed è un po’ più snello di quello standard.

          Allora compilate due volte il seguente codice, con e senza il caricamento del pacchetto inconsolata.

          `\documentclass[a4paper]{article}
          \usepackage[margin=10mm]{geometry}
          %\usepackage{inconsolata}

          \begin{document}
          \small
          \begin{verbatim}
          Nome Tipo Grav. Gamma Gamma Psi 0 Psi 1 Psi 2 Psi 2 Phi
          sism. sism. (coeff.
          correl.)
          Perm. non strutt.le G2 permanente * 1.50 1.00 nd nd nd nd nd
          Sismico SLU sismico 1.00 0.00 nd nd nd nd nd
          Sismico SLD sismico 0.00 1.00 nd nd nd nd nd
          Torcente SLV sismico correlato 1.00 0.00 nd nd nd nd nd
          Torcente SLD sismico correlato 0.00 1.00 nd nd nd nd nd
          Cat. A: Residenziale variabile * 1.50 1.00 0.70 0.50 0.30 0.30 1.00
          Cat. B: Uffici variabile * 1.50 1.00 0.70 0.50 0.30 0.30 1.00
          Cat. C: Affollamento variabile * 1.50 1.00 0.70 0.70 0.60 0.60 1.00
          Cat. D: Commerciale variabile * 1.50 1.00 0.70 0.70 0.60 0.60 1.00
          Cat. E: Magazzini variabile * 1.50 1.00 1.00 0.90 0.80 0.80 1.00
          Cat. F: Rimesse (<30kN) variabile * 1.50 1.00 0.70 0.70 0.60 0.60 1.00
          Cat. G: Rimesse (>30kN) variabile * 1.50 1.00 0.70 0.50 0.30 0.30 1.00
          Cat. H: Copertura variabile * 1.50 1.00 0.00 0.00 0.00 0.20 1.00
          Neve (q<1000) variabile * 1.50 1.00 0.50 0.20 0.00 0.20 1.00
          Neve (q>1000) variabile * 1.50 1.00 0.70 0.50 0.20 0.20 1.00
          Vento var. non contemp. 1.50 0.00 0.60 0.20 0.00 0.00 1.00
          Temperatura var. non contemp. 1.50 0.00 0.60 0.50 0.00 0.00 1.00
          Pesi strutturali, G1 permanente * 1.30 1.00 nd nd nd nd nd
          \end{verbatim}
          \end{document}`

          Con il font standard tutto bene, con l’inconsolata è un disastro totale.

          Ciao a tutti (da un inconsolato utilizzatore di LaTeX).

          Buongiorno Roberto,
          sembra che con
          `\usepackage[T1]{fontenc}
          \usepackage{inconsolata} `
          le cose si sistemino.

          Ciao,
          Antonio

        • #38882
          Up
          0
          Down
          ::

          Buongiorno Roberto,
          sembra che con
          `\usepackage[T1]{fontenc}
          \usepackage{inconsolata} `
          le cose si sistemino.

          Per motivi a me ignoti, nella codifica OT1 il font Inconsolata non possiede i caratteri < e >:
          `Missing character: There is no < in font rm-inconsolata! Missing character: There is no > in font rm-inconsolata!
          Missing character: There is no < in font rm-inconsolata! Missing character: There is no > in font rm-inconsolata!`
          trovi infatti scritto nel log.

          Ciao
          Enrico

        • #38883
          robitex
          Amministratore del forum
            Up
            0
            Down
            ::


            Grazie ad Antonio ed al Prof. Enrico.

            La codifica del font NON è il problema. Infatti (era un po’ complicato spiegarlo), faccio uso di una classe specializzata che contiene:
            `%
            % section: loading package
            %
            \RequirePackage[italian]{babel}
            \RequirePackage[T1]{fontenc}
            \RequirePackage[latin1]{inputenc}
            %
            \RequirePackage{fancyhdr}
            \RequirePackage{amsmath}
            \RequirePackage{amssymb}
            \RequirePackage{calctab}
            \RequirePackage{tikz}
            \RequirePackage{eurosym}
            \RequirePackage{lmodern}
            \RequirePackage{indentfirst}
            \RequirePackage{microtype}
            \RequirePackage{geometry}
            \RequirePackage{graphicx}
            \RequirePackage{lastpage}`

            (So che le codifiche non andrebbero scritte nelle classi, ma in questo caso si tratta di una classe scritta da me e che uso soltanto io.)

            Il problema sta nel numero di colonne!! infatti nel sorgente di test aggiunto un comando \twocolumn, si verifica il disallineamento, SOLO nel caso in cui la colonna è troppo stretta per il testo in verbatim e si verifica overfull hbox.

            Se accorcio le stesse linee, eliminando l’overfull, l’allineamento ritorna perfetto.

            Bé almeno ho scoperto che se avessi controllato il log, avrei scoperto l’overfull!!
            Morale: consultate sempre il log!!! LaTeX a SEMPRE ragione!!
            Grazie a tutti.

          • #38884
            Up
            0
            Down
            ::

            Grazie ad Antonio ed al Prof. Enrico.

            La codifica del font NON è il problema. Infatti (era un po’ complicato spiegarlo), faccio uso di una classe specializzata che contiene:
            `%
            % section: loading package
            %
            \RequirePackage[italian]{babel}
            \RequirePackage[T1]{fontenc}
            \RequirePackage[latin1]{inputenc}
            %
            \RequirePackage{fancyhdr}
            \RequirePackage{amsmath}
            \RequirePackage{amssymb}
            \RequirePackage{calctab}
            \RequirePackage{tikz}
            \RequirePackage{eurosym}
            \RequirePackage{lmodern}
            \RequirePackage{indentfirst}
            \RequirePackage{microtype}
            \RequirePackage{geometry}
            \RequirePackage{graphicx}
            \RequirePackage{lastpage}`

            (So che le codifiche non andrebbero scritte nelle classi, ma in questo caso si tratta di una classe scritta da me e che uso soltanto io.)

            Il problema sta nel numero di colonne!! infatti nel sorgente di test aggiunto un comando \twocolumn, si verifica il disallineamento, SOLO nel caso in cui la colonna è troppo stretta per il testo in verbatim e si verifica overfull hbox.

            Se accorcio le stesse linee, eliminando l’overfull, l’allineamento ritorna perfetto.

            Bé almeno ho scoperto che se avessi controllato il log, avrei scoperto l’overfull!!
            Morale: consultate sempre il log!!! LaTeX a SEMPRE ragione!!
            Grazie a tutti.

            Ci manca una H? 🙂

            La questione è un po’ più sottile: il font Inconsolata, per motivi a me ignoti, definisce come positivi alcuni parametri che in un font a spaziatura fissa dovrebbero essere nulli, precisamente \fontdimen3 e \fontdimen4; questi parametri danno il fattore di espandibilità e di comprimibilità degli spazi tra parole quando è attivo il font stesso.

            Nel caso di Computer Modern Typewriter, i parametri sono nulli, Inconsolata invece ha \fontdimen3 uguale a 2.5 pt e \fontdimen4 uguale a 1.66667 pt. Nel caso la riga in verbatim sia più lunga della giustezza, TeX cerca di strizzarla usando gli spazi tra parole: ahi! Nel caso di Inconsolata ci riesce!

            Per ovviare all’inconveniente puoi fare così:
            `\usepackage{inconsolata}
            \makeatletter
            \expandafter\ifx\csname fifour@scaled\endcsname\relax
            \let\fifour@scaled\@empty
            \fi

            \DeclareFontFamily{T1}{fi4}{\hyphenchar\font=\m@ne
            \fontdimen3\font=\z@ \fontdimen4\font=\z@}
            \DeclareFontShape{T1}{fi4}{m}{n}{
            <-> \fifour@scaled ec-inconsolata
            }{}
            \makeatother`
            e mandare a Karl Berry una segnalazione: come minimo occorre un’opzione per scegliere spazi tra parole immodificabili.

            Spiegazione del trucco: il pacchetto inconsolata definisce come default per i font dattilografici la famiglia fi4; normalmente, quando LaTeX incontra per la prima volta la richiesta di un font in quella famiglia, cerca un file di nome t1fi4.fd (il prefisso è variabile, qui suppongo che la codifica corrente sia T1) dove troverà l’opportuno comando \DeclareFontFamily.

            L’ultimo argomento di \DeclareFontFamily contiene codice da eseguire ogni volta che un font di quella famiglia è caricato: nel caso dei font a spaziatura fissa è sempre “\hyphenchar\font=-1” per disabilitare la sillabazione.

            Tuttavia, se la famiglia è già dichiarata, il file t1fi4.fd non verrà nemmeno cercato; così posso semplicemente copiare il contenuto di t1fi4.fd, aggiungere il comando di azzeramento dei parametri e sono a posto.

            Siccome sono tra \makeatletter e \makeatother, posso far sfoggio della mia conoscenza dei comandi interni di LaTeX e usare \m@ne invece di -1 e \z@ invece di 0pt. 🙂

            Ciao
            Enrico

          • #38885
            robitex
            Amministratore del forum
              Up
              0
              Down
              ::

              Grazie ad Antonio ed al Prof. Enrico.

              La codifica del font NON è il problema. Infatti (era un po’ complicato spiegarlo), faccio uso di una classe specializzata che contiene:
              `%
              % section: loading package
              %
              \RequirePackage[italian]{babel}
              \RequirePackage[T1]{fontenc}
              \RequirePackage[latin1]{inputenc}
              %
              \RequirePackage{fancyhdr}
              \RequirePackage{amsmath}
              \RequirePackage{amssymb}
              \RequirePackage{calctab}
              \RequirePackage{tikz}
              \RequirePackage{eurosym}
              \RequirePackage{lmodern}
              \RequirePackage{indentfirst}
              \RequirePackage{microtype}
              \RequirePackage{geometry}
              \RequirePackage{graphicx}
              \RequirePackage{lastpage}`

              (So che le codifiche non andrebbero scritte nelle classi, ma in questo caso si tratta di una classe scritta da me e che uso soltanto io.)

              Il problema sta nel numero di colonne!! infatti nel sorgente di test aggiunto un comando \twocolumn, si verifica il disallineamento, SOLO nel caso in cui la colonna è troppo stretta per il testo in verbatim e si verifica overfull hbox.

              Se accorcio le stesse linee, eliminando l’overfull, l’allineamento ritorna perfetto.

              Bé almeno ho scoperto che se avessi controllato il log, avrei scoperto l’overfull!!
              Morale: consultate sempre il log!!! LaTeX a SEMPRE ragione!!
              Grazie a tutti.

              Ci manca una H? 🙂

              La questione è un po’ più sottile: il font Inconsolata, per motivi a me ignoti, definisce come positivi alcuni parametri che in un font a spaziatura fissa dovrebbero essere nulli, precisamente \fontdimen3 e \fontdimen4; questi parametri danno il fattore di espandibilità e di comprimibilità degli spazi tra parole quando è attivo il font stesso.

              Nel caso di Computer Modern Typewriter, i parametri sono nulli, Inconsolata invece ha \fontdimen3 uguale a 2.5 pt e \fontdimen4 uguale a 1.66667 pt. Nel caso la riga in verbatim sia più lunga della giustezza, TeX cerca di strizzarla usando gli spazi tra parole: ahi! Nel caso di Inconsolata ci riesce!

              Per ovviare all’inconveniente puoi fare così:
              `\usepackage{inconsolata}
              \makeatletter
              \expandafter\ifx\csname fifour@scaled\endcsname\relax
              \let\fifour@scaled\@empty
              \fi

              \DeclareFontFamily{T1}{fi4}{\hyphenchar\font=\m@ne
              \fontdimen3\font=\z@ \fontdimen4\font=\z@}
              \DeclareFontShape{T1}{fi4}{m}{n}{
              <-> \fifour@scaled ec-inconsolata
              }{}
              \makeatother`
              e mandare a Karl Berry una segnalazione: come minimo occorre un’opzione per scegliere spazi tra parole immodificabili.

              Spiegazione del trucco: il pacchetto inconsolata definisce come default per i font dattilografici la famiglia fi4; normalmente, quando LaTeX incontra per la prima volta la richiesta di un font in quella famiglia, cerca un file di nome t1fi4.fd (il prefisso è variabile, qui suppongo che la codifica corrente sia T1) dove troverà l’opportuno comando \DeclareFontFamily.

              L’ultimo argomento di \DeclareFontFamily contiene codice da eseguire ogni volta che un font di quella famiglia è caricato: nel caso dei font a spaziatura fissa è sempre “\hyphenchar\font=-1” per disabilitare la sillabazione.

              Tuttavia, se la famiglia è già dichiarata, il file t1fi4.fd non verrà nemmeno cercato; così posso semplicemente copiare il contenuto di t1fi4.fd, aggiungere il comando di azzeramento dei parametri e sono a posto.

              Siccome sono tra \makeatletter e \makeatother, posso far sfoggio della mia conoscenza dei comandi interni di LaTeX e usare \m@ne invece di -1 e \z@ invece di 0pt. 🙂

              Ciao
              Enrico

              Professore ci pensa lei a mandare la segnalazione a Karl Berry? Mi farebbe una cortesia viste le mie scarse conoscenze di TeX specie per gli argomenti riguardanti i font. Grazie mille.

            • #38886
              Up
              0
              Down
              ::

              Professore ci pensa lei a mandare la segnalazione a Karl Berry? Mi farebbe una cortesia viste le mie scarse conoscenze di TeX specie per gli argomenti riguardanti i font. Grazie mille.

              Fatto. Ma non ti sognare più di dare del lei qui. 🙂

              Ciao
              Enrico

            • #38887
              robitex
              Amministratore del forum
                Up
                0
                Down
                ::

                Professore ci pensa lei a mandare la segnalazione a Karl Berry? Mi farebbe una cortesia viste le mie scarse conoscenze di TeX specie per gli argomenti riguardanti i font. Grazie mille.

                Fatto. Ma non ti sognare più di dare del lei qui. 🙂

                Ciao
                Enrico

                Scusa Enrico! 😳 😳

                Sto facendo diverse cose allo stesso tempo per terminare la relazione (naturalmente in LaTeX) ed il messaggio mi è uscito così.

                Grazie e ciao. 😉

              • #38888
                Up
                0
                Down
                ::

                Grazie e ciao. 😉

                Ecco la risposta di Karl Berry:

                We should probably just remove stretch and shrink from the fonts. I
                simply didn’t think of this before. As I recall, cmtt has zero stretch
                and shrink.

                I’ll see if I can put together a new release. Thanks for letting me know.

                Per ora il trucco funziona.

                Ciao
                Enrico

              • #38889
                robitex
                Amministratore del forum
                  Up
                  0
                  Down
                  ::

                  Grazie e ciao. 😉

                  Ecco la risposta di Karl Berry:

                  We should probably just remove stretch and shrink from the fonts. I
                  simply didn’t think of this before. As I recall, cmtt has zero stretch
                  and shrink.

                  I’ll see if I can put together a new release. Thanks for letting me know.

                  Per ora il trucco funziona.

                  Ciao
                  Enrico

                  Grazie ancora Enrico. C’è solo una cosa da dire: ottimo lavoro!!!

                  Ciao.

                • #38890
                  Up
                  0
                  Down
                  ::


                  Su CTAN è arrivato l’aggiornamento, riporto l’annuncio:

                  This update of the Inconsolata monospaced support corrects the spacing-related \fontdimen values so that there is no stretch and shrink, and end-of-sentence extraspace is equal to the word space. (Same as in cmtt.)

                  Thanks to Enrico Gregorio and Eddie Kohler.

                  Ciao
                  Enrico

                • #38891
                  robitex
                  Amministratore del forum
                    Up
                    0
                    Down
                    ::

                    Su CTAN è arrivato l’aggiornamento, riporto l’annuncio:

                    This update of the Inconsolata monospaced support corrects the spacing-related \fontdimen values so that there is no stretch and shrink, and end-of-sentence extraspace is equal to the word space. (Same as in cmtt.)

                    Thanks to Enrico Gregorio and Eddie Kohler.

                    Ciao
                    Enrico

                    Si proprio stamani ho notato l’annuncio Grazie.
                    Roberto.

                  • #38892
                    Up
                    0
                    Down
                    ::

                    Si proprio stamani ho notato l’annuncio Grazie.
                    Roberto.

                    Installato l’aggiornamento (TeX Live 2009, per l’invidia di Debianisti e affini :)), tutto a meraviglia.

                    Ciao
                    Enrico

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

                Go to top