codice del comando \LaTeX

  • Questo topic ha 5 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 16 anni fa da robitex.
  • Creatore
    Topic
  • #49091
    Up
    0
    Down
    ::


    Salve a tutti,

    \`e un po’ che me lo chiedo e non sono riuscito a trovare la soluzione: qual \`e il codice che definisce il comando \LaTeX?

    Qualcuno lo sa o sa dove si trova?
    Grazie mille

    ES

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #49092
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::


        Apro la documentazione di LaTeX con il comando di console texdoc source2e.

        Dall’indice del pdf che texdoc apre, clicco sulla sezione Logos e leggo:

        `3 \DeclareRobustCommand{\LaTeX}{L\kern-.36em%
        4 {\sbox\z@ T%
        5 \vbox to\ht\z@{\hbox{\check@mathfonts
        6 \fontsize\sf@size\z@
        7 \math@fontsfalse\selectfont
        8 A}%
        9 \vss}%
        10 }%
        11 \kern-.15em%
        12 \TeX}`

        Bye

      • #49093
        Up
        0
        Down
        ::


        Interessante … sarebbe bello impaare a costruire qualche logo pesonalizzato 😉

        *emanuele si vede che non usi spesso il pacchetto {inputenc} 😆 😆
        scherzosamente eh…

      • #49094
        Up
        0
        Down
        ::


        Grazie mille robitex!

        *drudox84 ormai anche se carico il pacchetto mi viene automatico scrivere in quel modo.. 🙂

      • #49095
        Up
        0
        Down
        ::

        Apro la documentazione di LaTeX con il comando di console texdoc source2e.

        Dall’indice del pdf che texdoc apre, clicco sulla sezione Logos e leggo:

        `3 \DeclareRobustCommand{\LaTeX}{L\kern-.36em%
        4 {\sbox\z@ T%
        5 \vbox to\ht\z@{\hbox{\check@mathfonts
        6 \fontsize\sf@size\z@
        7 \math@fontsfalse\selectfont
        8 A}%
        9 \vss}%
        10 }%
        11 \kern-.15em%
        12 \TeX}`

        Può interessare anche l’analisi di ciò che succede. Il comando \kern, che richiede di essere seguito da una dimensione, serve per inserire uno spazio non flessibile (può essere negativo); la differenza con \hskip, la cui versione LaTeX è \hspace, è che un \kern non può essere usato per spezzare una riga. Quindi: componi una L, arretra di un po’ (l’unità di misura è em, quindi l’arretramento è “proporzionale al corpo del carattere).

        In un gruppo, in modo che le assegnazioni fatte siano locali, si misura l’altezza di una T: con \sbox{0}{T} si costruisce una box nel registro temporaneo 0 per avere a disposizione \ht0; a questo punto si costruisce una \vbox di altezza \ht0 nella quale si mette una \hbox e una spaziatura verticale a riempire: \hbox{…}\vss. In questo contesto \vss si comporta più o meno come \vfill.

        Che cosa va nella \hbox? Una A rimpicciolita, nel corpo che LaTeX userebbe per gli esponenti nelle formule. Per sapere quale sia, indipendentemente dal corpo in uso, c’è un bel trucco: si dà \check@mathfonts che appunto calcola i corpi da usare per le formule e definisce correttamente \@sfsize (oltre ad altri comandi); l’espansione di \@sfsize è proprio la misura del corpo per gli esponenti. Quindi \fontsize{\@sfsize}{0} predispone il corpo da usare per il testo che segue; l’avanzamento di riga è nullo, tanto qui è irrilevante. Prima di \selectfont, che sceglie il font, si dà \math@fontsfalse per evitare un certo numero di calcoli inutili.

        Chiusa la \vbox si dà un altro \kern negativo e si compone il logo \TeX.

        Esercizio: perché i % alla fine delle righe numerate 3 e 11 sono inutili?

        Nota: dove nella spiegazione ho scritto 0, il codice ha \z@; il nucleo di LaTeX è più efficiente con \z@.

        Ciao
        Enrico

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

          Esercizio: perché i % alla fine delle righe numerate 3 e 11 sono inutili

          Provo una risposta: perché TeX quando costruisce un valore dimensionale legge il valore numerico e l’unità di misura. Esso termina la lettura del testo che rappresenta l’unità di misura quando incontra un altro token od uno spazio di separazione come accade per i comandi macro.

          Quindi un codice come questo non comporta spazi spuri:
          `\newdimen\mydim
          \mydim=45 pt % qui ci sono degli spazi
          \multiply\mydim by 2 % qui ci sono altri spazi`

          Comunque, è stata un occasione per imparare finalmente cosa fa il comando \kern ed i trucchi che si basano sulla potenza compositiva dei box.
          Grazie Enrico.

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

      Go to top