Re: I comandi del nucleo di LaTeX2e.

#50260
Up
0
Down
::

Ciao robitex, grazie della risposta.

Il comando \the lo trovi nel TeX book visto che si tratta di uno dei tanti comandi primitivi (anzi di solito quando senti parlare di comandi primitivi si tratta semplicemente dei comandi di TeX).

Avevo letto sul TeXbook, poco prima del tuo messaggio, delle cose riguardo il comando \the che hanno dato risposta alle mie curiosità. Credevo che fosse un comando definito da LaTeX;

Una lista dei comandi di LaTeX la trovi facilmente sul web, per esempio http://www.ics.uci.edu/~pan/documents/latex/ltx-2.html

Questo è un buon punto di partenza. Il mio scopo è conoscere tutti i comandi definiti da LaTeX in maniera tale da adoperare quello giusto al momento giusto. Non solo: la mia è anche una curiosità che nasce e si rinnova di volta in volta, quando leggo i messaggi qui sul forum. Sono sempre incuriosito, nel momento in cui qualcuno scrive un messaggio dove viene citato/adoperato un comando, sapere quel comando a cosa serve, come e perchè si usa, cosa fa insomma. Per esempio: l’altro giorno leggendo questo ho notato il comando \kern e una semplice ricerca sul forum è bastata a spiegarmi il suo significato (http://www.guit.sssup.it/phpbb/viewtopic.php?t=2811&start=0&postdays=0&postorder=asc&highlight=kern).

Per documentarsi con l’angolazione che tu proponi, leggi il libro di Enrico “Appunti di Programmazione in TeX/LaTeX”. lo trovi sul suo sito.

Per aiutarti meglio dovresti chiarire (chiarirti) i tuoi obiettivi: intendi imparare a programmare in TeX?
Bye

Per questo per ora è ancora presto: utilizzo LaTeX da poco più di un anno e sono ancora ad un livello molto basso per poter parlare di programmazione. Giorni fa ho letto senza un preciso intento, solo per curiosità:[ul][li] I registri token: questi sconosciuti del Prof. C. Beccari;[li] Ridefinire i comandi primitivi di TeX e applicazioni a LaTeX del Prof. E. Gregorio.[/ul]Ho capito ben poco. Per cui: ogni cosa a suo tempo.

Il nucleo di LaTeX consiste di 7992 righe di codice. 244581 caratteri (che fa una media di 30 caratteri per riga). Capirlo non è semplice, anzi in certi punti è decisamente complicato, soprattutto se non si hanno le basi della programmazione TeX.

Nella mia collezione di appunti ho cercato di evitare i dettagli TeXnici più riposti. La si può leggere senza aver letto prima il TeXbook, forse però arrivando a una comprensione superficiale. Si deve andare per gradi: prendi un pacchetto semplice e cerca di capire quello che fa, andando via via più a fondo e analizzando qualche altro pacchetto. Si impara molto per imitazione e sbattendo il muso trovandosi a chiedere: ma perché mai questa macro non fa quello che dovrebbe?

Vediamo un esempio “semplice”. Il comando \@onlypreamble prende come argomento un comando il cui uso viene disabilitato dopo \begin{document}.
`\def\@preamblecmds{}
\def\@onlypreamble#1{%
\expandafter\gdef\expandafter\@preamblecmds\expandafter{%
\@preamblecmds\do#1}}`
All’inizio l’espansione di \@preamblecmds è vuota. Con \@onlypreamble\pippo succede che l’espansione di \@preamblecmds diventa “\do\pippo”; se diamo poi \@onlypreamble\pluto, l’espansione di \@preamblecmds sarà
`\do\pippo\do\pluto`
Infatti quando \@onlypreamble\xyz viene espanso, si ottiene
`\gdef\@preamblecmds{\do\xyz}`
A questo punto il gioco è fatto: a \begin{document}, fra le altre cose, viene eseguita la seguente sequenza di comandi
`\gdef\do#1{\global\let#1\@notprerr}%
\@preamblecmds`
Il comando \do viene definito in modo che il suo argomento diventa (globalmente) equivalente a \@notprerr e poi viene espanso \@preamblecmds: dunque, nel nostro esempio, sarà espanso
`\do\pippo\do\pluto`
(ma in realtà \@preamblecmds contiene un sacco di token del genere). Che fa \@notprerr? Basta cercarlo in latex.ltx:
`\gdef\@notprerr{%
\@latex@error{Can be used only in preamble}\@eha}`
E che fanno \@latex@error e \@eha? Esercizio. 🙂

Ciao
Enrico

Go to top