LaTeX come linguaggio di programmazione

LaTeX è un sistema per la composizione di documenti che sostituisce la nozione di What-You-See-Is-What-You-Get con idee standard dei linguaggi di programmazione convenzionali. Mark Harman dimostra la potenza di questa eredità.

Chiunque abbia usato un editor, un wordprocessor o un pacchetto DTP di tipo What-You-See-Is-What-You-Get (WYSIWYG) avrà probabilmente avuto due frustrazioni:-

WYSIWYG sembra sempre essere una bugia Quello che si vede è piuttosto simile a quello che si ottiene, o quello che si vede è quasi sempre quello che si ottiene, o quello che si vede sarebbe quello che si ottiene se la stampante avesse i font giusti, ma quello che si vede è raramente esattamente quello che si ottiene.

WYSIWYG è restrittivo Supponiamo che tu non riesca a vedere ciò che vuoi? Ciò che si vede è ciò che si ottiene ha l’ulteriore e tacita implicazione che ciò che non si riesce a vedere non si può nemmeno ottenere. Quante volte avete voluto che qualcosa avesse un aspetto leggermente diverso (o forse molto diverso) ma il vostro editor non ve lo permette?

LaTeX (pronunciato Lateck) è un sistema di composizione che non segue l’approccio WYSIWYG. Si ispira invece ai linguaggi di programmazione. Eredita tutti i vantaggi dei linguaggi di programmazione e alcuni dei loro svantaggi. Invece di comporre un documento sullo schermo (l’approccio WYSIWYG), un documento LaTeX è un programma che dice al sistema LaTeX come creare il documento. Il programma viene compilato usando un compilatore LaTeX per produrre un documento che può essere stampato o visualizzato.

Questo può suonare un po’ strano per qualcuno che ha familiarità con l’approccio WYSIWYG, ma chiunque goda (o apprezzi) la potenza e la flessibilità di un linguaggio di programmazione di alto livello, scoprirà presto che LaTeX è semplicemente un modo migliore di progettare documenti.

In questo articolo, spiegherò un po’ del linguaggio LaTeX, abbastanza da permettervi di scaricare un sistema LaTeX gratuito e di scrivere alcuni documenti normali. Non ci sarà tempo per coprire tutte le caratteristiche di LaTeX (ci vorrebbe un libro intero), ma spero di lasciarvi con una forte sensazione dei modi in cui scrivere un documento potrebbe, usando LaTeX, essere un’attività simile a scrivere un programma.

Un semplice file sorgente LaTeX

La figura 1 contiene un semplice file sorgente LaTeX. La prima linea è un comando LaTeX predefinito. Tutti i comandi iniziano con un carattere backslash. Il comando nella prima riga stabilisce le proprietà globali del documento da impaginare. Lo stile del documento article è lo stile usato per un articolo breve. Altri stili includono book, report, thesis e così via. Ogni stile di documento cambia i parametri globali che descrivono il layout del documento. Per esempio, nell’ambiente libro, le intestazioni vengono prodotte dando il titolo del capitolo e l’autore a pagine alterne.

Come tutti i buoni linguaggi di programmazione, tutto questo è, naturalmente, interamente configurabile. Tuttavia, come la maggior parte dei linguaggi di programmazione, più flessibilità volete, più avrete bisogno di conoscere il linguaggio di programmazione sottostante. Fortunatamente le impostazioni predefinite per tutti gli ambienti LaTeX danno risultati molto piacevoli, quindi è possibile fare molta strada senza dover conoscere troppo del linguaggio sottostante. Quello che si ottiene è probabilmente quello che si vuole, e se non lo è, almeno si potrà cambiarlo.

Il testo del documento stesso è contenuto nei comandi \begin{document} … \fine{documento}, \inizio} e \fine} sono comandi che aprono e chiudono un ambiente. Tutti i documenti (e frammenti di documenti) sono composti all’interno di un ambiente. Possiamo anche annidare gli ambienti, come vedremo più avanti.

I caratteri di spazio non sono importanti per LaTeX; uno spazio vale quanto cento. Le nuove linee possono anche essere inserite ovunque, ma due o più nuove linee sono usate per indicare il punto in cui un paragrafo finisce e un altro inizia. Quando si stampa il documento finale, LaTeX giustifica il testo a sinistra e a destra (inserendo i trattini, dove la pura giustificazione porterebbe ad un output poco attraente).

Un grande documento di solito consiste in un numero di sezioni, che possono contenere sottosezioni. Una nuova sezione viene introdotta in LaTeX usando il comando \section, e una nuova sottosezione con il comando \subsection. Il codice sorgente LaTeX in Figura 2 descrive un documento con due sezioni, i cui titoli saranno introduzione e motivazione. Notate che nel codice sorgente non abbiamo bisogno di dare alle sezioni un numero di sezione. LaTeX lo farà per noi quando compilerà il documento. Così, l’introduzione sarà la sezione numero 1 e il ragionamento sarà la sezione numero 2. Se dovessimo scambiare l’ordine in cui le due sezioni sono presenti (tagliando e incollando il codice sorgente), allora la logica diventerà la sezione 1, mentre l’introduzione diventerà automaticamente la sezione 2.

Ora sorge una domanda importante: Come potrei fare riferimenti incrociati da una sezione all’altra? Per esempio, supponiamo che io voglia fare riferimento alla sezione introduzione nella sezione logica. Il modo in cui questo viene realizzato illustra il primo vantaggio che otteniamo dal modo di fare le cose in LaTeX.

Riferimenti simbolici

Perché un file sorgente LaTeX è un programma, si possono usare nomi simbolici per riferirsi a parti del documento. Questo rende i riferimenti incrociati un piacere, poiché il riferimento incrociato è un’entità logica, che si riferisce a qualche parte nominata del documento. Se questa parte nominata del documento deve essere spostata, allora tutto quello che dobbiamo fare è ricompilare.

Per introdurre un riferimento simbolico, usiamo il comando \label{}, e per riferirci ad esso usiamo il comando \ref{}. La figura 3 lo illustra. \etichetta{intro} introduce un nome simbolico, etichetta, il cui valore dipende dal contesto in cui appare il comando \etichetta. In questo caso, dato che il comando \label è usato nella prima sezione del documento, il valore assegnato a intro sarà 1. Il comando \ref{} produce semplicemente il valore dell’etichetta. Ora, se sposto l’introduzione in una nuova posizione, per esempio, dopo la sezione razionale, il valore di intro cambierà in 2, e il riferimento incrociato in razionale punterà quindi alla nuova posizione dell’introduzione della sezione.

Questo stile di scrittura ci costringe a pensare al documento ad un livello logico piuttosto che ad un livello fisico. Sarebbe sciocco scrivere come abbiamo visto prima nella sezione \ref{intro} per esempio, perché potremmo spostare l’etichetta intro in un punto dopo il riferimento. Invece di pensare al nostro documento come un monolite di testo che si presenta in un ordine particolare, pensiamo ad un livello di astrazione più alto, come una collezione di sezioni che siamo liberi di spostare. Possiamo anche riutilizzare le sezioni di un documento in un altro, e se i nostri nomi simbolici sono unici, scopriremo che tutti i riferimenti incrociati funzionano correttamente.

Alcuni altri ambienti

LaTeX ha molti ambienti predefiniti utili. Supponiamo di voler produrre una sequenza di punti usando i punti elenco. Possiamo farlo con l’ambiente itemize, il codice sorgente in Figura 4 produrrà un documento che elenca i tre principali stati della materia, uno per riga e ciascuno preceduto da un punto elenco. Per molti aspetti il modo LaTeX di progettare un documento è simile al modo HTML di fare le cose. Per esempio, l’ambiente itemize è piuttosto simile all’ambiente delle liste non ordinate in HTML.

A volte vogliamo mettere gli elementi in una lista ordinata e numerata. Questo si ottiene con l’ambiente enumerate. La figura 5 mostra una sequenza annidata di elementi enumerati, che descrivono le quattro ere del tempo geologico e i periodi al loro interno. LaTeX usa diversi sistemi di numerazione per ogni livello di annidamento (numeri arabi per il livello uno, caratteri alfabetici per il livello due, numeri romani per il livello tre). Questo, come tutto il resto, può essere cambiato se lo si desidera.

Per enfatizzare una porzione di testo, questa viene racchiusa nell’ambiente em (enfatizzare), quindi si scrive semplicemente \inizio{em} aiuto! \per enfatizzare la parola aiuto (e il punto esclamativo che la segue).

Procedure

In un linguaggio di programmazione convenzionale, la possibilità di definire procedure dà al programmatore una notevole flessibilità. Anche in LaTeX si possono definire procedure per l’impaginazione del testo. La forma più semplice di procedura è quella senza parametri. Ci permette di dare un nome a qualche porzione di codice sorgente e poi richiamarla. Supponiamo che io stia scrivendo un documento in cui voglio fare riferimento ad un frutto, ma non ho ancora deciso se deve essere una mela, un’arancia o una pera. Potrei introdurre una procedura chiamata frutta, e mettere un nome arbitrario di frutta nel suo corpo. Quando avrò finalmente deciso a quale frutto voglio riferirmi, allora dovrò solo cambiare il corpo della procedura; tutti i punti in cui la procedura viene chiamata terranno automaticamente conto della modifica del suo corpo.

In LaTeX, una procedura è chiamata comando, e una nuova procedura viene creata con il comando \newcommand. I comandi sono spesso chiamati macro perché LaTeX espande le chiamate a questi quando li incontra nel corpo del documento. La Figura 6 illustra l’uso di una semplice macro senza parametri. Quando compilato, il sorgente LaTeX in questa figura produce il testo La prima mela che apparirà sarà la prima mela che mangerò.

Per essere del tutto corretto, questo potrebbe essere ottenuto, forse più semplicemente, con un wordprocessor WYSIWYG, semplicemente eseguendo una ricerca e sostituzione. (Naturalmente, questo non avrebbe funzionato se la frase fosse stata la prima \frutta ad apparire è la mela del mio occhio!) Questo è, comunque, solo un semplice esempio di ciò che possiamo fare con le macro di LaTeX. Entrano veramente in gioco quando gli forniamo dei parametri.

Parametri

Supponiamo che io stia scrivendo un documento sulla gestione degli array. Potrei voler descrivere un algoritmo per trovare l’elemento più grande di un array. Per rendere il documento più generico e per evitare di riscriverne grandi sezioni, potrei produrre due versioni, ognuna specifica per un particolare linguaggio di programmazione, per esempio, Basic e C. Usando i comandi, posso evitare di usare la particolare sintassi degli array, o almeno posso catturare le differenze sintattiche in un singolo comando, rendendo molto più facile adattare il mio documento a diversi linguaggi di programmazione.

La figura 7 illustra questo. Nella definizione del comando per \lookup, si dice al compilatore LaTeX che il comando prende due parametri, il primo è indicato come #1 e il secondo come #2. In una chiamata a un comando, i parametri sono forniti uno dopo l’altro tra parentesi graffe. Così la chiamata \lookup{S}{2}, produrrà il testo S(2). Questa è la versione Basic del comando \lookup. Se lo sostituiamo con la versione in Figura 8, allora otteniamo lo stesso documento, ma con riferimenti all’array tra parentesi quadre. Questa è la versione C del documento. Notate che la differenza tra i due documenti sorgente LaTeX è precisamente di due caratteri, cioè i due caratteri che costituiscono la differenza tra i riferimenti alle matrici in Basic e C.

Come per le procedure del linguaggio di programmazione, è possibile chiamare una procedura dal corpo di un’altra e usare il risultato di una chiamata di procedura come parametro effettivo di un’altra. Così, per esempio, possiamo scrivere \lookup{A}{{lookup{B}{1}} che produce il testo A(B(1)) o A] a seconda che stiamo usando la versione Basic o C del comando \lookup.

Variabili

LaTeX ha le proprie variabili, sulle quali possiamo eseguire semplici aritmetiche (sono possibili forme più avanzate di aritmetica, ma l’addizione è di solito tutto ciò che è richiesto per la composizione). Vedrò due semplici esempi del modo in cui possiamo usare le variabili, entrambi familiari ai programmatori: la variabile contatore e la variabile bandiera. Possiamo usare una variabile contatore per numerare ogni punto, e scrivere alcuni semplici comandi per controllare la numerazione. La Figura 9 illustra questo. Il contatore viene dichiarato usando il comando \newcounter. Viene impostato ad un valore specifico usando il comando \setcounter. Il comando \point è usato per stampare il numero del punto corrente e per far avanzare il contatore (per aggiungere uno al suo valore). Il comando \il<nome>, per qualche contatore <nome>, fa stampare il valore della variabile. Questo comando può essere usato con qualsiasi variabile, non solo quelle introdotte dall’utente, quindi per esempio \thesection stampa il valore corrente della variabile section. Nella Figura 9 usiamo il comando \point per stampare tre punti. Una bella caratteristica di questo approccio è che possiamo variare l’ordine in cui i punti si presentano e la numerazione cambierà di conseguenza.

Ora vediamo come possiamo usare le variabili come flag per scegliere quale testo viene prodotto in un documento. Come vedremo, la combinazione di flag e macro ci permette di scrivere documenti molto generici, che possono essere istanziati semplicemente scegliendo un valore adatto per il flag. Consideriamo di nuovo il problema di scrivere un documento sugli array, dove vogliamo due forme del comando \lookup, una per Basic e una per C. Sarebbe meglio se potessimo usare un flag nel nostro sorgente LaTeX per indicare se il linguaggio deve essere C o Basic. Tutto quello che dovremmo fare è dare al flag il valore corretto prima di compilare il documento. La figura 10 illustra questo.

La prima cosa da fare è includere l’opzione ifthen nella dichiarazione documentstyle. Questo ci permette di usare il comando ifthenelse in seguito. Poi dichiariamo una variabile contatore, language, che è impostata a 1 se il linguaggio è Basic e a 0 se è C. Il simbolo % è usato da LaTeX per i commenti; qualsiasi testo che appare dopo un simbolo % (e prima della fine della riga) è ignorato dal compilatore LaTeX. Poi impostiamo il contatore a 1, usando il comando \setcounter{language}{1}, così il testo che produrremo sarà, in questo caso, specializzato per Basic. Questa specializzazione si ottiene utilizzando la versione modificata del comando \lookup. La nuova versione di \lookup usa il comando integrato \ifthenesle per verificare il valore della variabile lingua. Il formato di un comando \ifthenelse è \ifthenelse{<test>}{<then_branch>}{<else_branch>}. Si comporta proprio come un’istruzione if in un linguaggio di programmazione convenzionale. Se <test> valuta vero, viene prodotto il testo nel <then_branch>, se falso, viene prodotto il testo nel <else_branch>.

Utilizzando questo flag potremmo scrivere molti comandi, ognuno dei quali produce il testo per un particolare tipo di dichiarazione, il linguaggio dipende dal valore della variabile contatore del flag. In questo modo potremmo scrivere un documento generico sulla programmazione e semplicemente impostare il flag in modo appropriato per produrre la versione specializzata del documento che vogliamo.

La figura 10 mostra come potremmo farlo. Definiamo dei comandi che producono la sintassi Basic o C per la ricerca delle matrici (usando la macro \lookup, come descritto sopra), l’aggiornamento delle matrici e, più elaboratamente, un comando che produce la sintassi appropriata per un ciclo for. La differenza tra un ciclo for in C e in Basic è in gran parte sintattica, e possiamo usare la flessibilità di LaTeX per sfuggire a questi dettagli sintattici. Il comando \forloop usa il linguaggio del contatore di flag per decidere se disporre i quattro elementi del ciclo in stile Basic o C. Questo ci permette di scrivere del testo sull’inizializzazione degli array e sui loop, senza dover decidere a quale linguaggio il documento di destinazione farà riferimento.

Si noti che nella versione C della sintassi del ciclo for le parentesi graffe che racchiudono le dichiarazioni del corpo del ciclo sono scritte come \{ … \invece che come { … }. Questo perché i simboli delle parentesi graffe hanno già un significato per LaTeX, quindi per fargli stampare le parentesi graffe li precediamo con un backslash.

Nella Figura 10, abbiamo impostato il linguaggio contatore a 1, quindi l’output prodotto sarà per Basic. Dal codice sorgente in Figura 10, LaTeX produrrà l’output in Figura 11. Se vogliamo produrre un documento che dica la stessa cosa sulle matrici C, dobbiamo semplicemente cambiare la linea \setcounter{language}{1} in \setcounter{language}{0}. È così facile.

Matematica

LaTeX è spesso (e giustamente) lodato per il modo in cui permette la composizione di matematica complessa. Molti testi moderni di matematica, informatica e altre scienze e ingegneria sono impaginati usando LaTeX.

Il testo matematico può essere impaginato in linea, nel qual caso appare nella frase in cui è digitato, o in modalità di visualizzazione, nel qual caso appare centrato su una riga a sé stante. Tutti i simboli matematici standard e le forme di testo sono previste per l’uso dei comandi. Poiché LaTeX esiste da così tanto tempo ed è stato usato, sviluppato e migliorato da così tanti matematici in tutto il mondo, è estremamente improbabile che esista una qualsiasi forma di output matematico che non sia stata soddisfatta da qualcuno. Una rapida occhiata alla tua libreria probabilmente rivelerà riconoscimenti a LaTeX in diversi libri di testo di informatica e matematica, dato che è spesso usato per preparare libri tecnici, permettendo agli autori di fornire copie pronte per la stampa ai loro editori.

C’è anche una fiorente comunità di utenti LaTeX che assicura che tutte queste preziose informazioni siano raccolte, mantenute e aggiornate. Tutti gli sviluppi di LaTeX sono interamente compatibili all’indietro, quindi non c’è bisogno di preoccuparsi che i vostri documenti vadano in qualche modo fuori moda.

Riutilizzo

Stimo che ci vogliono tra i due giorni e una settimana per diventare produttivi usando LaTeX. Molti lettori potrebbero considerarlo inaccettabile se paragonato al tempo di avviamento degli editor WYSIWYG. Certamente, se dovete solo preparare documenti come lettere e promemoria, allora LaTeX probabilmente non vale la pena considerarlo. Tuttavia, se siete interessati alla produzione di una grande quantità di testo e siete disposti ad investire in un sistema che potrebbe in definitiva farvi risparmiare mesi di lavoro, allora LaTeX potrebbe essere la risposta.

Uno dei vantaggi più intangibili, ma più attraenti sperimentati dagli utenti LaTeX deriva dal modo in cui, come un buon linguaggio di programmazione, LaTeX supporta il riutilizzo. Molto rapidamente vi troverete a costruire un insieme di macro personali, che vi permetteranno di adattare i vostri documenti ai vostri gusti. Riutilizzare parti di un documento in un altro si ottiene senza sforzo e senza soluzione di continuità. La continuità deriva da due aspetti dell’approccio LaTeX. La denominazione simbolica delle parti di un documento permette ai riferimenti incrociati di essere aggiornati automaticamente quando il documento viene modificato. Il concetto di ambiente significa che lo stesso pezzo di testo sorgente può apparire diverso quando viene incluso in contesti diversi. Naturalmente, questo contraddice direttamente il principio WYSIWYG, ma questa è la forza essenziale di LaTeX. Molte riviste di informatica, conferenze ed editori forniscono i propri file di stile LaTeX, che, quando inclusi in un file sorgente LaTeX, impaginano automaticamente il documento nella forma richiesta per la pubblicazione.

Dove andare dopo

Se sei interessato a provare LaTeX per te stesso, una versione per MS-Windows può essere ottenuta (gratuitamente) da http://www.eece.ksu.edu/~khc/tex.html. LaTeX viene fornito come standard sulla maggior parte delle piattaforme UNIX, e con la maggior parte delle distribuzioni Linux, quindi se stai usando una di queste prova a digitare man latex. C’è un sito FTP che contiene molti strumenti LaTeX utili, macro e documenti correlati a ftp.tex.ac.uk.

Ci sono due libri indispensabili sul tema della scrittura di documenti LaTeX. Entrambi sono altamente leggibili e informativi. LaTeX A Document Preparation System di Leslie Lamport (ISBN 0-201-15790-X), descrive il sistema di base ed è un ottimo libro per iniziare. Contiene abbastanza informazioni per scrivere immediatamente la maggior parte dei documenti normali. The LaTeX Companion di Mike Goossens, Frank Mittelbach e Alexander Samarin (ISBN 0-201-54199-8), è più dettagliato e copre tutte le nuove caratteristiche aggiunte a LaTeX dal progetto LaTeX2e. Questo libro è utile se volete scrivere molti documenti usando LaTeX e personalizzare il linguaggio secondo i vostri gusti. Spiega come ottenere ogni sorta di effetti esotici, come la disposizione del testo a forma di cuore (forse utile per certi documenti scritti poco prima del 14 febbraio). Entrambi questi libri sono pubblicati da Addison-Wesley.

Logico è meglio

Il sistema di preparazione dei documenti LaTeX si è evoluto e migliorato negli anni. È estremamente robusto e fornisce caratteristiche per scrivere documenti con standard pubblicabili che contengono testo e matematica. Un documento LaTeX è descritto usando un linguaggio di programmazione, che dà all’utente LaTeX tutta la potenza e la flessibilità di un linguaggio di programmazione convenzionale. Lo stile di scrittura costringe l’utente a vedere i documenti al livello della loro organizzazione logica, piuttosto che il loro aspetto fisico. Questo è inizialmente un po’ frustrante, ma alla fine ha molti vantaggi come il supporto al riutilizzo e la creazione di documenti generici che possono avere diverse istanziazioni fisiche.

Mark Harman è direttore della ricerca e capo facente funzione alla School of Informatics and Multimedia Technology nella University of North London (http://www.unl.ac.uk/~mark/welcome.html). Può essere contattato via email a [email protected] o per posta a Mark Harman, Project Project, School of Informatics and Multimedia Technology, University of North London, Holloway Road, London N7 8DB.


Figura 1 Un semplice documento LaTeX.

{documentstyle{article}

begin{document}

hello world

{end{document}


Figura 2 Sezioni

{documentstyle{article}

{begin{document}

{sezione{Introduzione}

Questo è un documento abbastanza breve e questa è la sua introduzione.

Sezione{Ragionamento}

Il documento è così breve perché è semplicemente un esempio.

fine{documento}


Figura 3 Riferimenti simbolici

{documentstyle{articolo}

Begin{documento}

Sezione{Introduzione}

Label{introduzione}

Questo è un documento abbastanza breve e questa è la sua introduzione.

Sezione{Ragionamento}

Una breve introduzione a questo documento può essere trovata nella sezione \ref{intro}.

{fine{documento}


Figura 4 L’ambiente Itemize.

\begin{itemize}

\item Solid

\item Liquid

\item Gas

\end{itemize}


Figura 5 L’ambiente enumerate.

inizio enumerazione

item Cenozoico

inizio enumerazione

item Quaternario

item Terziario

end enumerazione

item Mesozoico

inizio{enumerazione}

item Cretaceo

item Giurassico

item Triassico

end{enumerazione}

item Paleozoico

inizio{enumerazione}

item Permiano

item Carbonifero

item Devoniano

item Siluriano

item Ordoviciano

item Cambriano

end{enumerare}

\item Precambriano

{enumerare}


Figura 6 Comandi senza parametri.

{documentstyle{article}

newcommand{fruit} { apple }

begin{document}

Il primo frutto che appare sarà il primo frutto che mangerò.

fine{documento}


Figura 7 Parametri: Versione base.

{documentstyle{article}

newcommand{\lookup} {Per trovare l’elemento più grande dell’array A, memorizzate il primo elemento, \lookup{A}{0}, nella variabile b. Poi inserite un ciclo, controllato dalla variabile i, partendo da 1 e procedendo verso la fine dell’array. Ad ogni punto del ciclo, confronta l’elemento i, \lookup{A}{i}, con il valore in b. Se \lookup{A}{i} è maggiore di b, allora assegna \lookup{A}{i} a b.

\end{documento}


Figura 8 Parametri: C version.

{documentstyle{article}

{newcommand{\lookup} {Per trovare l’elemento più grande dell’array A, memorizzate il primo elemento, \lookup{A}{0}, nella variabile b. Poi inserite un ciclo, controllato dalla variabile i, partendo da 1 e procedendo verso la fine dell’array. Ad ogni punto del ciclo, confronta l’elemento i, \lookup{A}{i}, con il valore in b. Se \lookup{A}{i} è maggiore di b, allora assegna \lookup{A}{i} a b.

fine{documento}


Figura 9 Variabili contatore.

newcounter{numero punto}

setcounter{numero punto}{1}

newcommand{\point} {Punto \numero del punto \contapassi{numero del punto} }

\punto

Qualche testo associato ad uno dei punti

\punto

Qualche testo associato ad un altro punto

\punto

Un altro punto


Figura 10 Variabili flag.

\documentstyle{article}

\newcounter{language} % impostato a 1 per Basic e 0 per C

setcounter{language}{1}

\newcommand{\lookup}

{

ifthenelse{valore{lingua} = 1} {#1(#2)} {#1}

}

{newcommand{aggiornamento}

{

ifthenelse{valore{lingua} = 1} {CUI #1(#2) = #3} {#1 = #3}

}

% Il comando forloop prende quattro parametri

% 1. Il limite inferiore del ciclo – un’espressione intera o integrale.

% 2. Il limite superiore del ciclo – un’espressione intera o integrale.

% 3. La variabile di controllo del ciclo – una variabile integrale.

% 4. Il corpo del ciclo – una sequenza di istruzioni.

% Il flag counter language, è usato per determinare il linguaggio in cui

% la sintassi del ciclo è scritta.

nuovo comando{forloop}

{

{

{ifthenelse{\value{language} = 1}

{

FOR #3 = #1 TO #2

NEXT #3

}

{

for(#3=#1;#3 != #2;#3++)

{

{

}

{begin{document}

Per memorizzare il valore 10 nell’elemento numero 3 dell’array A, scriviamo \update{A}{3}{10}.

Per inizializzare gli elementi da 0 a 10 della matrice A con il valore iniziale 0, possiamo usare un ciclo for, partendo da 0 e andando fino a 10. Questo sarebbe scritto in questo modo

\forloop{0}{10}{i}{update{A}{i}{0}

\end{document}


Figura 11 Il risultato della compilazione del sorgente LaTeX in Figura 10.

Per memorizzare il valore 10 nell’elemento numero 3 dell’array A, scriviamo LET A(3) = 10.

Per inizializzare gli elementi da 0 a 10 della matrice A con il valore iniziale 0, possiamo usare un ciclo for, partendo da 0 e salendo fino a 10. Questo sarebbe scritto così

FOR i = 0 TO 10

LET A(i) = 0

NEXT i

(P)1997, Centaur Communications Ltd. EXE Magazine è una pubblicazione di Centaur Communications Ltd. Nessuna parte di questo lavoro può essere pubblicata, in tutto o in parte, con qualsiasi mezzo, incluso quello elettronico, senza l’espresso permesso della Centaur Communications e del detentore del copyright, se questo è una parte diversa.

EXE Magazine, St Giles House, 50 Poland Street, London W1V 4AX, email [email protected]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.