LaTeX tipărire ca un limbaj de programare

LaTeX este un sistem de tipărire a documentelor care înlocuiește noțiunea de What-You-See-Is-What-You-Get cu idei standard din limbajele de programare convenționale. Mark Harman demonstrează puterea acestei moșteniri.

Cine a folosit un editor What-You-See-Is-What-You-Get (WYSIWYG), un procesor de texte sau un pachet DTP va fi avut probabil două frustrări:-

WYSIWYG pare să fie întotdeauna o minciună Ceea ce vezi este destul de asemănător cu ceea ce primești, sau ceea ce vezi este aproape întotdeauna ceea ce primești, sau ceea ce vezi ar fi ceea ce primești dacă imprimanta ta ar fi avut fonturile potrivite, dar ceea ce vezi este rareori exact ceea ce primești.

WYSIWYG este restrictiv Să presupunem că nu poți ajunge să vezi ceea ce vrei? Ceea ce vezi este ceea ce primești are implicația suplimentară, și tacită, că ceea ce nu reușești să vezi nu poți obține nici tu. De câte ori v-ați dorit ca ceva să arate ușor diferit (sau poate foarte diferit), dar editorul dumneavoastră nu vă permite acest lucru?

LaTeX (pronunțat Lateck) este un sistem de tipărire care nu urmează abordarea WYSIWYG. În schimb, este inspirat de limbajele de programare. Moștenește toate avantajele limbajelor de programare și unele dintre dezavantajele acestora. În loc să compună un document la ecran (abordarea WYSIWYG), un document LaTeX este un program care îi spune sistemului LaTeX cum să creeze documentul. Programul este compilat cu ajutorul unui compilator LaTeX pentru a produce un document care poate fi tipărit sau vizualizat.

Acest lucru poate părea puțin ciudat pentru cineva familiarizat cu abordarea WYSIWYG, dar oricine se bucură (sau apreciază) puterea și flexibilitatea unui limbaj de programare de nivel înalt, va descoperi în curând că LaTeX este pur și simplu un mod mai bun de a proiecta documente.

În acest articol, voi explica puțin din limbajul LaTeX, suficient pentru a vă permite să descărcați un sistem LaTeX gratuit și să scrieți câteva documente normale. Nu va fi timp pentru a acoperi toate caracteristicile lui LaTeX (ar fi nevoie de o carte întreagă), dar sper să vă las cu o senzație puternică a modurilor în care scrierea unui document ar putea fi, folosind LaTeX, o activitate similară cu scrierea unui program.

Un fișier sursă LaTeX simplu

Figura 1 conține un fișier sursă LaTeX simplu. Prima linie este o comandă predefinită LaTeX. Toate comenzile încep cu un caracter backslash. Comanda din prima linie stabilește proprietățile globale ale documentului care urmează să fie tipărit. Stilul de document article este stilul utilizat pentru un articol scurt. Alte stiluri includ book, report, thesis și așa mai departe. Fiecare stil de document modifică parametrii globali care descriu aspectul documentului dumneavoastră. De exemplu, în mediul carte, se produc anteturi care dau titlul capitolului și autorul pe pagini alternative.

Ca toate limbajele de programare bune, toate acestea sunt, bineînțeles, complet configurabile. Cu toate acestea, la fel ca majoritatea limbajelor de programare, cu cât doriți mai multă flexibilitate, cu atât veți descoperi că trebuie să cunoașteți mai multe despre limbajul de programare de bază. Din fericire, setările implicite pentru toate mediile LaTeX oferă rezultate foarte plăcute, astfel încât este posibil să ajungeți foarte departe fără a fi nevoie să cunoașteți prea multe despre limbajul de bază. Ceea ce obțineți este probabil să fie ceea ce doriți, iar dacă nu este așa, atunci cel puțin veți putea să-l schimbați.

Textul documentului propriu-zis este conținut în comenzile \begin{document} … \end{document}, \begin{} și \end{} sunt comenzi care deschid și închid un mediu. Toate documentele (și fragmentele de documente) sunt tipărite în cadrul unui mediu. Putem, de asemenea, anina medii, după cum vom vedea mai târziu.

Caracterele de spațiu nu sunt importante pentru LaTeX; un spațiu este la fel de bun ca o sută. Liniile noi pot fi, de asemenea, inserate oriunde, dar două sau mai multe linii noi sunt folosite pentru a indica punctul în care se termină un paragraf și începe altul. Când tipăriți documentul final, LaTeX va justifica textul la stânga și la dreapta (inserând liniuțe, acolo unde justificarea pură ar duce la o ieșire neatractivă).

Un document mare constă, de obicei, dintr-un număr de secțiuni, care pot conține subsecțiuni. O nouă secțiune este introdusă în LaTeX cu ajutorul comenzii \section, iar o nouă subsecțiune cu ajutorul comenzii \subsection. Codul sursă LaTeX din figura 2 descrie un document cu două secțiuni, ale căror titluri vor fi introducere și motivare. Observați că, în codul sursă, nu este necesar să dăm secțiunilor un număr de secțiune. LaTeX va face acest lucru pentru noi atunci când va compila documentul. Astfel, introducerea va fi secțiunea numărul 1, iar raționamentul va fi secțiunea numărul 2. Dacă ar fi să schimbăm ordinea în care apar cele două secțiuni (prin tăierea și lipirea codului sursă), atunci raționamentul va deveni secțiunea 1, în timp ce introducerea va deveni automat secțiunea 2.

Acum se pune o întrebare importantă: Cum aș putea face trimiteri încrucișate de la o secțiune la alta? De exemplu, să presupunem că vreau să fac referire la secțiunea introduction în secțiunea rationale. Modul în care se realizează acest lucru ilustrează primul avantaj pe care îl obținem din modul LaTeX de a face lucrurile.

Referințe simbolice

Pentru că un fișier sursă LaTeX este un program, puteți folosi nume simbolice pentru a vă referi la părți ale documentului. Acest lucru face ca referințele încrucișate să fie o plăcere, deoarece referința încrucișată este o entitate logică, care se referă la o parte numită a documentului. Dacă această parte numită a documentului ar trebui mutată, atunci tot ce trebuie să facem este să recompilăm.

Pentru a introduce o referință simbolică, folosim comanda \label{}, iar pentru a ne referi la ea folosim comanda \ref{}. Figura 3 ilustrează acest lucru. \label{intro} introduce un nume simbolic, label, a cărui valoare depinde de contextul în care apare comanda \label. În acest caz, deoarece comanda \label este utilizată în prima secțiune a documentului, valoarea atribuită lui intro va fi 1. Comanda \ref{} produce pur și simplu valoarea etichetei. Acum, dacă mut introducerea într-o nouă poziție, de exemplu, după secțiunea rationale, valoarea lui intro se va schimba la 2, iar referința încrucișată din rationale va indica astfel noua locație a introducerii secțiunii.

Acest stil de scriere ne obligă să ne gândim la document mai degrabă la nivel logic decât la nivel fizic. Ar fi o prostie să scriem așa cum am văzut mai devreme în secțiunea \ref{intro}, de exemplu, pentru că am putea muta eticheta intro într-un punct după referință. În loc să ne gândim la documentul nostru ca la un monolit de text care apare într-o anumită ordine, ne gândim la el la un nivel superior de abstractizare, ca la o colecție de secțiuni pe care suntem liberi să le mutăm. Putem chiar reutiliza secțiuni dintr-un document în altul și, cu condiția ca numele noastre simbolice să fie unice, vom constata că toate trimiterile încrucișate funcționează corect.

Câteva medii suplimentare

LaTeX are o mulțime de medii predefinite utile. Să presupunem că dorim să producem o secvență de puncte folosind gloanțe. Putem face acest lucru cu mediul itemize, codul sursă din figura 4 va produce un document care enumeră cele trei stări principale ale materiei, câte una pe linie și fiecare precedată de o bulină. În multe privințe, modul LaTeX de proiectare a unui document este similar cu modul HTML de a face lucrurile. De exemplu, mediul itemize seamănă mai degrabă cu mediul de liste nesortate din HTML.

Câteodată dorim să punem elementele într-o listă sortată, numerotată. Acest lucru se realizează cu mediul enumerate. Figura 5, prezintă o secvență imbricată de elemente enumerate, care descrie cele patru ere ale timpului geologic și perioadele din cadrul acestora. LaTeX utilizează sisteme de numerotare diferite pentru fiecare nivel de anidare (cifre arabe pentru nivelul unu, caractere alfabetice pentru nivelul doi, cifre romane pentru nivelul trei). Acest lucru, ca și orice altceva, poate fi schimbat dacă dorim acest lucru.

Pentru a sublinia o porțiune de text, aceasta este inclusă în mediul em (emphasise), așa că scriem pur și simplu \begin{em} help! \end{em} she cried. pentru a sublinia cuvântul help (și semnul exclamării care îl urmează).

Proceduri

Într-un limbaj de programare convențional, posibilitatea de a defini proceduri oferă programatorului o flexibilitate considerabilă. Și în LaTeX, putem defini proceduri pentru așezarea textului. Cea mai simplă formă de procedură este cea fără parametri. Ea ne permite să denumim o anumită porțiune de cod sursă și apoi să o apelăm. Să presupunem că scriu un document în care vreau să mă refer la un fruct, dar nu m-am hotărât încă dacă acesta va fi un măr, o portocală sau o pară. Aș putea introduce o procedură numită fruit, iar în corpul acesteia aș putea introduce un nume arbitrar de fruct. Când voi decide în cele din urmă la ce fruct vreau să mă refer, atunci va trebui doar să schimb corpul procedurii; toate punctele în care procedura este apelată vor ține cont automat de modificarea corpului său.

În LaTeX, o procedură se numește comandă, iar una nouă este creată cu comanda \newcommand. Comenzile sunt adesea numite macro, deoarece LaTeX extinde apelurile la acestea atunci când le întâlnește în corpul documentului. Figura 6 ilustrează utilizarea unei macro simple fără parametri. Atunci când este compilat, sursa LaTeX din această figură produce textul Primul măr care va apărea va fi primul măr pe care îl voi mânca.

Pentru a fi pe deplin corect, acest lucru ar putea fi realizat, poate mai simplu, cu un procesor de texte WYSIWYG, pur și simplu prin efectuarea unei căutări și înlocuiri. (Bineînțeles, acest lucru nu ar fi funcționat dacă propoziția ar fi fost primul \fruct care apare este mărul din ochii mei!) Acesta este, totuși, doar un exemplu simplu a ceea ce putem face cu macrourile LaTeX. Ele își arată cu adevărat utilitatea atunci când le furnizăm parametri.

Parametri

Să presupunem că scriu un document despre manipularea array-urilor. S-ar putea să vreau să descriu un algoritm pentru a găsi cel mai mare element al unui array. Pentru a face documentul mai generic și pentru a economisi rescrierea unor secțiuni mari din el, aș putea produce două versiuni, fiecare specifică unui anumit limbaj de programare, de exemplu, Basic și C. Utilizând comenzi, pot evita să folosesc sintaxa particulară a tablourilor sau, cel puțin, pot captura diferențele sintactice într-o singură comandă, ceea ce face mult mai ușoară adaptarea documentului meu la diferite limbaje de programare.

Figura 7 ilustrează acest lucru. În definiția comenzii pentru \lookup, se spune compilatorului LaTeX că această comandă ia doi parametri, primul este denumit #1 și al doilea #2. Într-un apel la o comandă, parametrii sunt furnizați unul după altul între paranteze drepte. Astfel, apelul \lookup{S}{2}, va produce textul S(2). Aceasta este versiunea de bază a comenzii \lookup. Dacă o înlocuim cu versiunea din figura 8, atunci obținem același document, dar cu referințe de matrice între paranteze pătrate. Aceasta este versiunea C a documentului. Observați că diferența dintre cele două documente sursă LaTeX este de exact două caractere, și anume, cele două caractere care constituie diferența dintre referințele la array-uri în Basic și C.

Ca și în cazul procedurilor din limbajul de programare, este posibil să se apeleze o procedură din corpul alteia și să se utilizeze rezultatul apelării unei proceduri ca parametru real al alteia. Astfel, de exemplu, putem scrie \lookup{A}{\lookup{B}{1}} care produce fie textul A(B(1)), fie A], în funcție de faptul că folosim versiunea Basic sau C a comenzii \lookup.

Variabile

LaTeX are propriile variabile, asupra cărora putem efectua aritmetică simplă (sunt posibile forme mai avansate de aritmetică, dar adunarea este de obicei tot ce este necesar pentru tipărire). Mă voi uita la două exemple simple ale modului în care am putea folosi variabilele, ambele familiare programatorilor; variabila contor și variabila steag.

Supunem că dorim să includem o secvență de puncte numerotate într-un document. Putem folosi o variabilă counter pentru a numerota fiecare punct și putem scrie câteva comenzi simple pentru a controla numerotarea. Figura 9 ilustrează acest lucru. Contorul este declarat cu ajutorul comenzii \newcounter. Acesta este setat la o anumită valoare cu ajutorul comenzii \setcounter. Comanda \point este utilizată pentru a tipări numărul curent de puncte și pentru a mări contorul (pentru a adăuga unu la valoarea sa). Comanda \the<name>, pentru un anumit contor <name>, face ca valoarea variabilei să fie tipărită. Această comandă poate fi utilizată cu orice variabilă, nu doar cu cele introduse de utilizator, astfel încât, de exemplu, \thesection tipărește valoarea curentă a variabilei section. În figura 9, folosim comanda \point pentru a imprima trei puncte. O caracteristică plăcută a acestei abordări este că putem varia ordinea în care apar punctele și numerotarea se va schimba în mod corespunzător.

Acum să vedem cum putem folosi variabilele ca indicatori pentru a alege ce text este produs într-un document. După cum vom vedea, combinația dintre stegulețe și macro-uri ne permite să scriem documente foarte generice, care pot fi instanțiate prin simpla alegere a unei valori adecvate pentru steguleț. Să luăm din nou în considerare problema scrierii unui document despre matrici, în cazul în care dorim două forme ale comenzii \lookup, una pentru Basic și una pentru C. Ar fi mai bine dacă am putea folosi un indicator în sursa LaTeX pentru a indica dacă limbajul trebuie să fie C sau Basic. Tot ceea ce ar trebui să facem atunci ar fi să dăm valoarea corectă indicatorului înainte de compilarea documentului. Figura 10 ilustrează acest lucru.

Primul lucru care trebuie făcut este să includem opțiunea ifthen în declarația documentstyle. Acest lucru ne permite să folosim comanda \ifthenelse mai târziu. Apoi declarăm o variabilă contor, language, care este setată la 1 dacă limbajul va fi Basic și la 0 dacă va fi C. Simbolul % este utilizat de LaTeX pentru comentarii; orice text care apare după un simbol % (și înainte de sfârșitul liniei) este ignorat de compilatorul LaTeX. În continuare, setăm contorul la 1, folosind comanda \setcounter{language}{1}, astfel încât textul pe care îl vom produce va fi, în acest caz, specializat pentru Basic. Această specializare se realizează cu ajutorul versiunii modificate a comenzii \lookup. Noua versiune a \lookup utilizează comanda încorporată \ifthenesle pentru a testa valoarea variabilei language. Formatul unei comenzi \ififthenelse este \ifthenelse{<test>}{<then_branch>}}{<else_branch>}. Se comportă la fel ca o instrucțiune if într-un limbaj de programare convențional. Dacă <test> se evaluează la true, se produce textul din textul din <then_branch>, dacă este fals, se produce textul din <else_branch>.

Utilizând acest flag am putea scrie o mulțime de comenzi, fiecare dintre ele producând textul pentru un anumit tip de instrucțiune, limbajul depinzând de valoarea variabilei flag counter. În acest fel, am putea scrie un document generic despre programare și am putea pur și simplu seta indicatorul în mod corespunzător pentru a produce versiunea specializată a documentului pe care o dorim.

Figura 10 arată cum am putea face acest lucru. Definim comenzi care produc sintaxa Basic sau C pentru căutarea de tablouri (folosind macroul \lookup, așa cum a fost descris mai sus), actualizarea tablourilor și, mai elaborat, o comandă care produce sintaxa corespunzătoare pentru o buclă for. Ultima dintre acestea necesită câteva explicații suplimentare.

Diferența dintre o buclă for în C și în Basic este în mare parte sintactică, iar noi putem folosi flexibilitatea LaTeX pentru a scăpa de aceste detalii sintactice. Comanda \forloop a folosit limbajul de contorizare a stegulețelor pentru a decide dacă să dispună cele patru elemente ale buclei în stil Basic sau C. Acest lucru ne permite să scriem un text despre inițializarea tablourilor și bucle, fără a fi nevoiți să decidem la ce limbaj se va referi documentul țintă.

Rețineți că, în versiunea C a sintaxei buclei for, parantezele curly care închid declarațiile din corpul buclei sunt scrise ca \{ … \}, mai degrabă decât ca { … }. Acest lucru se datorează faptului că simbolurile de paranteze curly bracket au deja o semnificație pentru LaTeX, astfel încât pentru a-l face să tipărească parantezele curly brackets le prefixăm cu o backslash.

În Figura 10, am setat limbajul de contorizare la 1, astfel încât rezultatul produs va fi pentru Basic. Din codul sursă din figura 10, LaTeX va produce rezultatul din figura 11. Dacă dorim să producem un document care să spună același lucru despre matrici C, trebuie doar să schimbăm linia \setcounter{language}{1} în \setcounter{language}{0}. Este atât de simplu.

Matematică

LaTeX este adesea (și pe bună dreptate) lăudat pentru modul în care permite tipărirea matematicii complexe. Multe texte moderne de matematică, informatică și alte texte științifice și inginerești sunt tipărite folosind LaTeX.

Textul matematic poate fi așezat fie în linie, caz în care apare în propoziția în care este tastat, fie în modul de afișare, caz în care apare centrat pe o linie proprie afișată ca și cum ar fi. Toate simbolurile matematice standard și formele de text sunt prevăzute pentru utilizarea comenzilor. Având în vedere că LaTeX există de atât de mult timp și a fost folosit, dezvoltat și îmbunătățit de atât de mulți matematicieni din întreaga lume, este extrem de puțin probabil să existe vreo formă de ieșire matematică care să nu fi fost prevăzută de cineva. O căutare rapidă prin raftul dvs. de cărți va dezvălui, probabil, recunoașteri pentru LaTeX în mai multe manuale de informatică și matematică, deoarece este adesea folosit pentru a pregăti cărți tehnice, permițând autorului (autorilor) să furnizeze o copie pregătită pentru cameră pentru editorii lor.

Există, de asemenea, o comunitate înfloritoare de utilizatori LaTeX care se asigură că toate aceste informații valoroase sunt colectate, menținute și actualizate. Toate dezvoltările LaTeX sunt în întregime retrocompatibile, așa că nu trebuie să vă faceți griji că documentele dvs. vor deveni cumva depășite.

Reutilizare

Stimez că este nevoie între două zile și o săptămână pentru a deveni productiv folosind LaTeX. Mulți cititori ar putea considera acest lucru inacceptabil în comparație cu timpul de inițiere pentru editorii WYSIWYG. Cu siguranță, dacă trebuie doar să pregătiți documente precum scrisori și memo-uri, atunci probabil că LaTeX nu merită luat în considerare. Cu toate acestea, dacă sunteți preocupat de producerea unei cantități mari de text și sunteți pregătit să investiți într-un sistem care, în cele din urmă, v-ar putea economisi luni de muncă, atunci LaTeX ar putea fi soluția.

Unul dintre cele mai intangibile, dar și cele mai atractive avantaje experimentate de utilizatorii LaTeX provine din modul în care, ca un limbaj de programare bun, LaTeX sprijină reutilizarea. Foarte repede vă veți trezi construindu-vă un set de macro-uri personale, care vă vor permite să vă adaptați documentele după propriul gust. Reutilizarea unor părți ale unui document în altul se realizează fără efort și fără probleme. Această ușurință derivă din două aspecte ale abordării LaTeX. Denumirea simbolică a părților unui document permite actualizarea automată a trimiterilor încrucișate pe măsură ce documentul este editat. Conceptul de mediu înseamnă că aceeași bucată de text sursă poate avea un aspect diferit atunci când este inclusă în contexte diferite. Desigur, acest lucru contravine direct principiului WYSIWYG, dar acesta este punctul forte esențial al LaTeX. Multe reviste de informatică , conferințe și edituri oferă propriile lor fișiere de stil LaTeX, care, atunci când sunt incluse într-un fișier sursă LaTeX, așează automat documentul în forma necesară pentru publicare.

Unde să mergem în continuare

Dacă sunteți interesat să încercați LaTeX pe cont propriu, o versiune MS-Windows poate fi obținută (gratuit) de la http://www.eece.ksu.edu/~khc/tex.html. LaTeX vine ca standard pe majoritatea platformelor UNIX și cu majoritatea distribuțiilor Linux, așa că, dacă folosiți una dintre acestea, încercați să tastați man latex. Există un site FTP care conține multe instrumente LaTeX utile, macro-uri și documente conexe la ftp.tex.ac.uk.

Există două cărți indispensabile pe tema scrierii de documente LaTeX. Ambele sunt foarte ușor de citit și informative. LaTeX A Document Preparation System de Leslie Lamport (ISBN 0-201-15790-X), descrie sistemul de bază și este o carte foarte bună pentru început. Ea conține suficiente informații pentru a scrie imediat majoritatea documentelor normale. The LaTeX Companion de Mike Goossens, Frank Mittelbach și Alexander Samarin (ISBN 0-201-54199-8), este mai detaliată și acoperă toate caracteristicile noi adăugate la LaTeX de către proiectul LaTeX2e. Această carte este utilă dacă doriți să scrieți un număr mare de documente folosind LaTeX și să personalizați limbajul după propriile gusturi. Ea explică cum se pot obține tot felul de efecte exotice, cum ar fi așezarea textului în formă de inimă (poate utilă pentru anumite documente scrise chiar înainte de 14 februarie). Ambele cărți sunt publicate de Addison-Wesley.

Logic este mai bine

Sistemul de pregătire a documentelor LaTeX a evoluat și s-a îmbunătățit de-a lungul anilor. Este extrem de robust și oferă caracteristici pentru scrierea de documente la standarde publicabile care conțin text și matematică. Un document LaTeX este descris cu ajutorul unui limbaj de programare, care oferă utilizatorului LaTeX toată puterea și flexibilitatea unui limbaj de programare convențional. Stilul de scriere obligă utilizatorul să privească documentele la nivelul organizării lor logice, mai degrabă decât la nivelul aspectului lor fizic. Acest lucru este inițial puțin frustrant, dar în cele din urmă are multe avantaje, cum ar fi sprijinirea reutilizării și crearea de documente generice care pot avea mai multe instanțieri fizice.

Mark Harman este director de cercetare și director interimar la School of Informatics and Multimedia Technology din cadrul University of North London (http://www.unl.ac.uk/~mark/welcome.html). El poate fi contactat prin e-mail la [email protected] sau prin poștă la Mark Harman, Project Project, School of Informatics and Multimedia Technology, University of North London, Holloway Road, London N7 8DB.


Figura 1 Un document LaTeX simplu.

\documentstyle{article}

\begin{document}

hello world

end{document}


Figura 2 Secțiuni

\documentstyle{article}

\begin{document}

\section{Introduction}

Acesta este un document destul de scurt și aceasta este introducerea sa.

\section{Rationale}

Documentul este atât de scurt pentru că este pur și simplu și un exemplu.

\end{document}


Figura 3 Referințe simbolice

\documentstyle{articol}

.

\begin{document}

\section{Introducere}

\label{intro}

Acesta este un document destul de scurt și aceasta este introducerea sa.

\section{Rationale}

O scurtă introducere a acestui document poate fi găsită în secțiunea \ref{intro}.

\end{document}


Figura 4 Mediul Itemize.

\begin{itemize}

\item Solid

\item Liquid

\item Gas

\end{itemize}


Figura 5 Mediul Enumerare.

\begin{enumerate}

\item Cenozoic

\begin{enumerate}

\item Cuaternar

\item Terțiar

\end{enumerate}

\item Terțiar

\end{enumerate}

\item Mesozoic

început{enumerate}

\item Cretacic

\item Jurasic

\item Triasic

\fârșit{enumerate}

\item Paleozoic

.

\nceput{enumerate}

\item Permian

\item Carboniferic

\item Devonian

\item Silurian

\item Ordovician

\item Cambrian

\end{enumerate}

\item Precambrian

\end{enumerate}


Figura 6 Comenzi fără parametrii.

\documentstyle{article}

\newcommand{\fruit} { apple }

\begin{document}

Primul \fruit care va apărea va fi primul \fruit pe care îl voi mânca.

\end{document}


Figura 7 Parametrii: Versiunea de bază.

\documentstyle{article}

\newcommand{\lookup} { #1(#2) }

\begin{document}

Pentru a găsi cel mai mare element al tabloului A, se memorează primul element, \lookup{A}{0}, în variabila b. Apoi se introduce o buclă, controlată de variabila i, începând cu 1 și continuând până la sfârșitul tabloului. În fiecare punct al buclei, comparați elementul i, \lookup{A}{i}, cu valoarea din b. Dacă \lookup{A}{i} este mai mare decât b, atunci atribuiți \lookup{A}{i} la b.

\end{document}


Figura 8 Parametrii: Versiunea C.

\documentstyle{article}

\newcommand{\lookup} { #1 }

\begin{document}

Pentru a găsi cel mai mare element al tabloului A, se memorează primul element, \lookup{A}{0}, în variabila b. Apoi se introduce o buclă, controlată de variabila i, care începe cu 1 și continuă până la sfârșitul tabloului. La fiecare punct din buclă, comparați elementul i, \lookup{A}{i}, cu valoarea din b. Dacă \lookup{A}{i} este mai mare decât b, atunci atribuiți \lookup{A}{i} la b.

\end{document}


Figura 9 Variabilele de contorizare.

\newcounter{pointnumber}

\setcounter{pointnumber}{1}

\newcommand{\point} { Point \thepointnumber \stepcounter{pointnumber} }

\punct

Un text asociat unuia dintre puncte

\punct

Un text asociat unui alt punct

\punct

Încă un punct

Încă un punct


Figura 10 Variabile indicator.

\documentstyle{article}

\newcounter{language} % setat la 1 pentru Basic și 0 pentru C

\setcounter{language}{1}

\newcommand{\lookup}

{

\ifthenelse{\value{language} = 1} {#1(#2)} {#1}

}

\newcommand{\update}

{

\ifthenelse{\value{language} = 1} {LET #1(#2) = #3} {#1 = #3}

}

% Comanda forloop acceptă patru parametri

% 1. Limita inferioară a buclei – un număr întreg sau o expresie integrală.

% 2. Limita superioară a buclei – o expresie întreagă sau integrală.

% 3. Variabila de control a buclei – o variabilă integrală.

% 4. Corpul buclei – o secvență de instrucțiuni.

% Flag counter language, este utilizat pentru a determina limbajul în care

% este scrisă sintaxa buclei.

\newcommand{\forloop}

{

\ifthenelse{\value{language} = 1}

{

FOR #3 = #1 TO #2

NEXT #3

}}

{

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

\{

\}

}

\begin{document}

Pentru a stoca valoarea 10 în elementul numărul 3 din matricea A, scriem \update{A}{3}{10}.

Pentru a inițializa elementele de la 0 la 10 din matricea A cu valoarea inițială 0, putem folosi o buclă for, începând de la 0 și mergând până la 10. Aceasta ar fi scrisă astfel

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

\end{document}


Figura 11 Rezultatul compilării sursei LaTeX din figura 10.

Pentru a stoca valoarea 10 în elementul numărul 3 din matricea A, scriem LET A(3) = 10.

Pentru a inițializa elementele de la 0 la 10 din array-ul A cu valoarea inițială 0, putem folosi o buclă for, începând de la 0 și mergând până la 10. Aceasta s-ar scrie în felul următor

FOR i = 0 TO 10

LET A(i) = 0

NEXT i

(P)1997, Centaur Communications Ltd. EXE Magazine este o publicație a Centaur Communications Ltd. Nici o parte din această lucrare nu poate fi publicată, integral sau parțial, prin orice mijloace, inclusiv electronice, fără permisiunea expresă a Centaur Communications și a deținătorului drepturilor de autor, în cazul în care acesta este o parte diferită.

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

Lasă un răspuns

Adresa ta de email nu va fi publicată.