LaTeX/Print version

De la Wikimanuale, o colecţie de manuale libere !
Salt la: navigare, căutare


Previzualizare

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Se acordă permisiunea de a copia, distribui şi/sau modifica acest document în condiţiile Licenţei GNU pentru Documentaţie Liberă (GNU Free Documentation License), Versiunea 1.2 sau oricărei versiuni mai noi publicată de Free Software Foundation; fără nicio Secţiune Invariantă (Invariant Sections), niciun Text pentru Coperta I (Front-Cover Texts) şi niciun Text pentru Coperta IV (Back-Cover Texts). O copie a acestei licenţe este în secţiunea intitulată "GNU Free Documentation License".

Cuprins

Capitole
  1. Noţiuni elementare
  2. Elemente de bază
  3. Structura unui document
  4. Erori şi avertismente
  5. Crearea unui titlu
  6. Gestiunea bibliografiei
  7. Tabele
  8. Formatare
  9. Formatare avansată
  10. Fonturi
  11. Aranjarea în pagină
  12. Matematică
  13. Matematică avansată
  14. Teoreme
  15. Etichete şi referinţe
  16. Indexare
  17. Glosar
  18. Algoritmi şi pseudocod
  19. Scrisori
  20. Importarea de imagini
  21. Crearea de imagini
  22. Elemente flotante, figuri şi note
  23. Prezentare
  24. Hyperlinkuri
  25. Culori
  26. Pachete
  27. Subiecte avansate
  28. Pentru profesori
  29. LaTeX personalizat
  30. Fişiere multiple
  31. Realizarea în colaborare de documente LaTeX
  32. Sfaturi şi trucuri
  33. Ghid general
  34. Exportarea sub alte formate
  35. Internaţionalizare
  36. Accente şi caractere speciale
Anexe

Introducere

Ce este TeX?

TeX (X sau chi se pronunţă ca în cuvântul scoţian loch) este un limbaj de markup şi de programare low-level creat de Donald Knuth pentru redactarea atractivă şi consistentă a documentelor. Numele său provine de la cuvântul grecesc "τεχνολογία" (technologìa), care se traduce prin "tehnologie" în română; prima sa silabă este "τεχ", similar cu TeX din alfabetul latin. După alte surse, numele provine de la cuvântul grecesc "τέχνη" (techni), care înseamnă artă sau meşteşug în română. În al doilea caz, prima silabă este tot "τεχ".

Knuth a început sǎ scrie programul de redactare TeX în 1977 pentru a explora potenţialul echipamentelor de tipǎrire digitală care începea să se infiltreze în domeniul editurilor de la vremea aceea, mai ales în speranţa că va putea inversa tendinţa deteriorării calităţii tipografice, care a văzut că-i afecta propriile cărţi şi articole.

TeX este un limbaj de programare, în sensul că suportă conceptul if-else, poţi face calcule cu el (care se realizează la compilarea documentului), etc., însă este foarte greu să faci altceva în afara redactării. Controlul fin pe care TeX îl oferă îl face foarte puternic, însă de asemenea dificil şi solicită mult timp. TeX este renumit pentru că este extrem de stabil, pentru că rulează pe multe tipuri diferite de calculatoare şi pentru faptul că practic nu are erori de programare.

În zilele noastre, când realizează documente în limbajul TeX, practic nimeni nu foloseşte TeX simplu. În schimb, se folosesc diferite distribuţii TeX, cum este LaTeX, pentru a economisi timp, pentru a automatiza anumite sarcini şi pentru a reduce numărul de erori introduse de utilizatori.

Ce este LaTeX?

LaTeX (pronounţat fie "Lah-tech", fie "Lay-tech") este un pachet macro bazat pe TeX creat de Leslie Lamport. Scopul său este să simplifice redactarea TeX, mai ales pentru documente ce conţin formule matematice.

Mulţi autori de mai târziu au contribuit cu extensii, numite pachete sau stiluri, la LaTeX. Unele dintre acestea sunt încorporate în majoritatea distribuţiilor software TeX/LaTeX; altele se pot găsi în arhivele de la Comprehensive TeX Archive Network (CTAN).

De vreme ce LaTeX conţine un grup de comenzi TeX, procesarea documentelor LaTeX este în esenţă programare. Creezi un fişier text în markup-ul LaTeX. Macroul LaTeX îl citeşte pentru a produce documentul final.

În mod evident, această abordare are câteva dezavantaje în comparaţie cu un program WYSIWYG (What You See Is What You Get - Ceea ce vezi pe ecran va fi tipărit exact la fel la imprimantă) de genul Openoffice.org Writer sau Microsoft Word.

În LaTeX:

  • Nu vezi (de obicei) versiunea finală a documentului când îl editezi.
  • În general, trebuie să ştii comenzile necesare pentru markup-ul LaTeX.
  • Câteodată e greu să obţii un anumit aspect pentru document.

Pe de altă parte, abordarea LaTeX are unele avantaje:

  • Fişierele sursă ale documentelor pot fi citite cu orice editor de texte şi înţelese, spre deosebire de formatele binare şi XML complexe utilizate de programele WYSIWYG.
  • Te poţi concentra doar pe structura şi conţinutul documentului, fără să fii prins de aspecte superficiale legate de afişare.
  • Nu trebuie să ajustezi manual fonturi, dimensiunea textului, înălţimea liniilor sau aranjarea textului pentru lizibilitate, deoarece LaTeX se ocupă de aceste aspecte în mod automat.
  • În LaTeX, structura documentului este vizibilă utilizatorului, şi poate fi copiată cu uşurinţă în alt document. În aplicaţii WYSIWYG, deseori nu este clar cum s-a realizat o anumită formatare, şi ar putea fi imposibil să fie copiată direct pentru a fi utilizată în alt document.
  • Aranjarea în pagină, fonturile, tabelele şi aşa mai departe sunt consistente pentru întregul document.
  • Formulele matematice sunt uşor de redactat.
  • Se generează uşor indecşi, note de subsol, citate şi referinţe.
  • Eşti nevoit să-ţi structurezi corect documentele.

Abordarea tipică LaTeX poate fi denumită WYSIWYM, adică What You See Is What You Mean — Vezi ceea ce vrei să spui: nu poţi vedea versiunea finală în vreme ce tipăreşti. În schimb, vezi structura logică a documentului. LaTeX se ocupă de formatare pentru tine.

Documentul LaTeX este un fişier text simplu ce cuprinde conţinutul documentului, cu markup adiţional. Când fişierul sursă este procesat de pachetul macro, poate produce documente în mai multe formate. LaTeX suportă nativ DVI şi PDF, însă cu alte programe poţi crea uşor PostScript, PNG, JPG, etc.

Programe necesare

Vei avea nevoie cel puţin de o distribuţie TeX, un editor de texte bun şi un program de vizualizare pentru DVI sau PDF.

Instalarea unei distribuţii

Distribuţiile recomandate pentru fiecare dintre sistemele de operare majore sunt:

Windows

Ambele distribuţii Windows au programe de instalare facile care se îngrijesc de setarea mediului şi descărcarea pachetelor.

Linux

  • Ubuntu are o versiune din 2009 a TeX Live în depozitele de software, aşa că puteţi folosi: sudo apt-get install texlive. Aici e un script pentru automatizarea instalării TeX Live 2010 în Ubuntu.
  • Fedora are doar o versiune din 2007 a TeX Live, însă din fericire se găseşte un bun depozit software aici pe care îl poţi folosi pentru a instala direct ultima versiune: yum install texlive (şi oricare dintre pachetele texlive-scheme-).

Dacă distribuţia ta nu are pachetele TeX Live, poţi pune o dorinţă în sistemul de gestiune a problemelor de programare (bug tracking system). În cazul cel mai rău, va trebui să descarci TeX Live singur şi să rulezi programul de instalare manual. Nu este greu, însă va trebui să faci mai multe alegeri decât atunci când îl instalezi cu un manager de pachete (package manager).

Mac OS

Descarcă MacTeX.mpkg.zip de pe MacTeX page, dezarhivează-l şi urmează instrucţiunile. E foarte uşor.

Obţinerea unui editor de texte

Îţi mai trebuie un editor de texte ca să scrii cod LaTeX, cum este un editor simplu de text de genul Notepad sau Notepad++. Un editor LaTeX dedicat va fi mai util datorită autocompletării şi afişării erorilor.

TeXworks

TeXworks este un editor TeX dedicat inclus în MiKTeX şi TeX Live. A fost dezvoltat în ideea că o interfaţă simplă este mai bună decât una plină de facilităţi, şi astfel să facă mai uşor pentru începătorii LaTeX să obţină ce vor: să-şi scrie documentele. TeXworks a fost dezvoltat iniţial întocmai pentru că un profesor de matematică a dorit ca studenţii să aibă o experienţă iniţială mai bună cu LaTeX.

Poţi instala TeXworks cu managerul de pachete al distribuţiei Linux pe care o foloseşti sau să-l selectezi ca opţiune la instalarea în Windows sau Mac.

Kile

Kile este un editor LaTeX KDE portabil (cross platform), ce oferă o interfaţă grafică deosebită pentru a edita mai multe tipuri de documente şi a le compila cu diverse compilatoare TeX. Kile se bazează pe editorul Kate, are o bară cu instrumente uşor accesibilă pentru simboluri, un program de vizualizare pentru structura documentului, o consolă şi opţiuni implicite uşor de personalizat. Kile poate rula în orice sistem de operare cu KDE.

TeXmaker

TeXmaker este un editor portabil, foarte asemănător cu Kile în ce priveşte facilităţile oferite şi interfaţa cu utilizatorul. În plus, are propriul program de vizualizare pentru PDF.

TeXnicCenter

TeXnicCenter este un editor LaTeX gratuit şi open source popular pentru Windows. Are o interfaţă cu utilizatorul similară cu TeXmaker şi Kile.

BaKoMa TeX

BaKoMa TeX este un editor LaTeX pentru Windows cu facilităţi de genul WYSIWYG. Realizează compilarea codului sursă LaTeX, pe care îl actualizează constant pentru a vedea schimbările produse documentelor aproape în timp real.

LyX

LyX este un editor LaTeX pentru Windows, Linux şi Mac OS. Conţine editoare pentru formule şi tabele şi afişează indicii vizuale ale documentului final pe ecran, permiţând utilizatorilor să scrie documente LaTeX fără să aibă în grijă sintaxa folosită.

TeXShop

TeXShop este un editor LaTeX în genul TeXworks pentru Mac OS.

gedit-latex-plugin

Gedit cu gedit-latex-plugin merită de asemenea să fie încercat de utilizatorii GNOME. Gedit este o aplicaţie portabilă pentru Windows, Mac şi Linux.

Gummi

Gummi este un editor LaTeX pentru Linux, care compilează rezultatul de ieşire al comenzii pdflatex în timp real şi îl prezintă în partea dreaptă a ecranului.

Programe de vizualizare

În sfârşit, îţi trebuie un program de redare pentru fişierele de ieşire LaTeX. Dacă foloseşti un compilator de genul pdflatex, poţi vizualiza rezultatul cu programul preferat de redare PDF (Adobe Reader, Okular, Evince, Sumatra, Foxit).

Practic toate distribuţiile LaTeX au un program de redare DVI pentru a vedea rezultatul implicit al comenzii latex, şi de asemenea programe utilitare cum este dvi2pdf pentru a converti automat rezultatul în format PDF.

Aplicaţii în cadrul unei distribuţii

Acestea sunt programele principale pe care le puteţi găsi în orice distribuţie (La)TeX:

  • tex: compilatorul cel mai simplu, primeşte ca input un fişier TeX şi creează un DVI
  • pdftex: primeşte un fişier TeX, însă creează un PDF
  • latex: cel mai folosit: primeşte ca input un fişier LaTeX şi creează un DVI
  • pdflatex: dintr-un fişier LaTeX creează un PDF
  • dvips: transformă un DVI în PostScript
  • dvipdf: transformă un DVI în PDF
  • dvipdfm: versiune îmbunătăţită a celei dinainte

Când LaTeX a apărut, singurul format pe care putea să-l creeze era DVI; mai târziu, pdflatex a adăugat formatul PDF. pdflatex şi dvipdfm pot amândouă să creeze fişiere PDF. pdflatex foloseşte caracteristici noi ale PDF-urilor, cum sunt hyperlinkurile, care nu se regăsesc în DVI. Trecerea prin formatul intermediar DVI impune limitările acestuia. Pe de altă parte, unele pachete — cum este PSTricks — se bazează pe procesul transformării în DVI, şi de aceea nu merg cu pdflatex. Unele pachete includ informaţii în DVI ce nu apar la vizualizarea DVI, ci doar la transformarea DVI într-un alt format, mai nou.

În mod normal, aţi scrie documentele puţin diferit în funcţie de compilatorul folosit (latex sau pdflatex). Însă, după cum vom vedea mai târziu, se poate adăuga un fel de nivel de abstractizare pentru a ascunde detaliile compilatorului folosit, în vreme ce compilatorul face el însuşi transformarea.

Notaţi faptul că, de vreme ce LaTeX este doar o colecţie de macrouri pentru TeX, dacă compilaţi un document TeX simplu cu un compilator LaTeX (cum este pdflatex), va merge, în vreme ce opusul nu este adevărat: dacă încercaţi să compilaţi un fişier sursă LaTeX cu un compilator de TeX veţi obţine multe erori.

Diagrama următoare prezintă relaţiile dintre codul sursă (La)TeX şi toate formatele ce pot fi create pe baza lui:

LaTeX diagram.svg

Textul scris cu roşu din căsuţe reprezintă formatele de fişiere, textul cu albastru de pe săgeţi reprezintă comenzile pe care trebuie să le folosiţi, iar textul scris mărunt, cu verde închis, de sub căsuţe reprezintă formatele de imagine suportate. De fiecare dată când treceţi printr-o transformare (de-a lungul unei săgeţi), pierdeţi ceva informaţii, lucru care poate diminua calitatea documentului. De aceea, pentru a obţine cea mai bună calitate a rezultatului, trebuie să alegeţi calea cea mai scurtă către formatul ţintă. Acesta este probabil şi modul cel mai convenabil pentru a genera fişierul de ieşire în formatul dorit. Pornind de la codul sursă LaTeX, calea cea mai bună de urmat ar fi să folosiţi comanda latex pentru output DVI şi pdflatex pentru PDF, transformând în PostScript numai când trebuie să tipăriţi documentul.

Cele mai multe dintre programele necesare ar trebui să fie deja în distribuţia LaTeX pe care o folosiţi; celelalte vin cu Ghostscript, care este un program gratuit şi multi-platform la rândul lui.

Capitolul Exportarea sub alte formate spune mai multe despre ce puteţi obţine din sursa LaTeX.

Capitole

Noţiuni elementare

Acest tutorial are rolul de a vă familiariza cu structura de bază a LaTeX-ului.

Înainte de a începe, asiguraţi-vă că aveţi LaTeX instalat pe calculator (vezi Instalare pentru instrucţiuni legate de instalare şi programele necesare). Vom începe prin a crea un fişier sursă LaTeX, iar apoi vom trece prin etapele necesare pentru a produce un format al rezultatului de calitate, de genul postscript (PS) sau PDF.

Codul sursă LaTeX

LaTeX foloseşte un limbaj de markup pentru a descrie structura şi prezentarea documentului. LaTeX transformă textul sursă, combinat cu markup, într-un document de calitate ridicată. Pentru a face o comparaţie, paginile web funcţionează într-o manieră similară: textul scris sub formă de HTML este folosit pentru a descrie documentul, însă browserul este acela care îl prezintă cu toate trăsăturile generate de markup - culori, fonturi, dimensiuni diferite, etc.

Inputul pentru LaTeX este un fişier text ASCII simplu. Puteţi să creaţi un astfel de fişier cu orice editor de texte. Acesta conţine textul documentului, ca şi comenzile ce indică LaTeX-ului cum să formateze textul.

Dacă sunteţi nerăbdători să vedeţi cum merge, un exemplu minimal arată cam în felul următor (comenzile vor fi explicate mai târziu):

\documentclass{article}

\begin{document}
 Salut, lume!
\end{document
}

Spaţii

"Spaţiile albe" (whitespace), precum spaţiu sau tab, sunt tratate uniform ca "spaţii" în LaTeX. Mai multe spaţii albe consecutive sunt tratate ca un singur "spaţiu". Spaţiul alb la începutul unei linii este în general ignorat, iar un singur sfârşit de linie este tratat ca "spaţiu alb". O linie ce nu conţine nimic sau doar spaţii albe între două linii de text defineşte sfârşitul unui paragraf. Mai multe linii goale sunt tratate la fel ca şi una singură. Textul de mai jos constituie un exemplu. În partea stângă este textul din fişierul de intrare, iar în partea dreaptă se află rezultatul formatat.

Nu contează dacă scrii unul
sau mai multe             spaţii
după un cuvânt.

O linie goală marchează începutul unui nou
paragraf.

Nu contează dacă scrii unul sau mai multe spaţii după un cuvânt.

O linie goală marchează începutul unui nou paragraf.

Caractere speciale

Simbolurile următoare sunt caractere rezervate care fie au o semnificaţie specială în LaTeX, fie nu sunt disponibile pentru toate fonturile. Dacă le scrieţi aşa cum sunt în text, în mod normal nu se vor tipări, ci vor determina programul LaTeX să facă lucruri pe care n-aţi avut intenţia să le faceţi.

# $ % ^ & _ { } ~ \

După cum veţi vedea, aceste caractere pot fi folosite în documente aşa cum sunt scrise dacă adăugaţi un prefix backslash:

\# \$ \% \textasciicircum{} \& \_ \{ \} \~{} \textbackslash{}

Celelalte simboluri şi multe altele pot fi tipărite cu comenzi speciale în formule matematice sau ca accente.

Caracterul backslash \ nu poate fi scris prin adăugarea unui alt backslash în faţa lui (\\); această secvenţă este folosită pentru a marca sfârşitul de linie. Pentru a introduce un backslash în modul matematic (math mode), puteţi folosi în schimb \backslash.

Comanda \~ produce un caracter tilda care este plasat pe litera următoare. Spre exemplu, \~n produce ñ. Pentru a produce doar caracterul ~, folosiţi \~{}, care pune un ~ peste o căsuţă goală.

În mod asemănător, comanda \^ pune o căciuliţă peste caracterul următor, spre exemplu \^{o} produce ô. Dacă trebuie să afişaţi în text simbolul ^, va trebui să folosiţi comanda \textasciicircum.

Dacă vreţi să inseraţi text ce ar putea conţine anumite simboluri particulare (ca în cazul URIs), puteţi folosi comanda \verb, care va fi discutată mai târziu, în secţiunea Formatare (inserează textul aşa cum este scris).

Comenzi LaTeX

Comenzile LaTeX sunt case sensitive (literele mari şi mici sunt diferite), având unul din următoarele două formate:

  • Încep cu un backslash \, iar apoi au un nume ce conţine numai litere. Denumirile comenzilor se termină cu un spaţiu, un număr sau cu orice alt caracter ce nu este literă.
  • Constau într-un backslash \ şi exact un caracter ce nu este literă.

Unele comenzi solicită un argument, care trebuie specificat între acolade { } după numele comenzii. Unele comenzi suportă parametri opţionali, care se adaugă după denumirea comenzii în paranteze drepte [ ]. Sintaxa generală este:

\numecmd[opţiune1,opţiune2,...]{argument1}{argument2}...

Medii LaTeX

Environments (mediile) în LaTeX au un rol foarte asemănător comenzilor, însă au de obicei efect asupra unei părţi mai mari a documentului. Sintaxa acestora este:

\begin{numemediu}
 text ce va fi afectat
\end{numemediu
}

Între \begin şi \end puteţi plasa oricâte alte comenzi sau medii imbricate doriţi. În general, mediile pot accepta la rândul lor argumente, însă această trăsătură nu prea este folosită, astfel că o vom discuta numai în părţile mai avansate ale documentului.

Orice lucru în LaTeX poate fi exprimat sub formă de comenzi şi medii.

Comentarii

Când LaTeX întâlneşte un caracter % în timp ce procesează un fişier de intrare, ignoră restul liniei curente, sfârşitul de linie, şi toate spaţiile albe de la începutul liniei următoare.

Comentariile pot fi folosite pentru a scrie note în fişierul de intrare, care nu vor face parte din versiunea tipărită.

Acesta este un exemplu: % stupid
% Mai bine: instructiv <----
    Supercal%
            ifragilist%
icexpialidocious

Acesta este un exemplu: Supercalifragilisticexpialidocious

Caracterul % poate fi de asemenea folosit pentru a împărţi liniile lungi de intrare, în care nu se permit spaţii albe sau caractere de sfârşit de linie.

Structura fişierului de intrare

Când LaTeX procesează un fişier de intrare, se aşteaptă ca acesta să aibă o anumită structură. Astfel, orice fişier de intrare trebuie să înceapă cu comanda

\documentclass{...}

Aceasta specifică ce tip de document intenţionaţi să scrieţi. După aceasta, puteţi include comenzi ce determină stilul întregului document, sau puteţi încărca pachete care să adauge noi trăsături sistemului LaTeX. Pentru a încărca un astfel de pachet, puteţi folosi comanda

\usepackage{...}

Când aţi terminat cu aceste setări ale documentului, începeţi să scrieţi textul efectiv al documentului cu comanda

\begin{document}

Acum scrieţi textul împreună cu unele comenzi LaTeX utile. La sfârşitul documentului, adăugaţi comanda

\end{document}

care spune sistemului LaTeX să termine de analizat documentul. Orice urmează acestei comenzi va fi ignorat de LaTeX. Zona dintre \documentclass şi \begin{document} se numeşte preambul (preamble).

O sesiune tipică din linia de comandă

LaTeX nu are el însuşi o interfaţă grafică (GUI - graphical user interface), de vreme ce este doar un program care prelucrează fişierele de intrare şi produce un fişier DVI sau PDF. Unele sisteme LaTeX au o interfaţă grafică, unde puteţi compila un fişier LaTeX printr-un simplu clic pe un buton corespunzător. În alte sisteme, s-ar putea să fie nevoie să scrieţi câteva comenzi la o consolă, aşadar iată cum puteţi determina sistemul LaTeX să vă compileze fişierele de intrare dacă aveţi doar o interfaţă text. Vă rugăm să notaţi că această descriere presupune că aveţi deja instalat un sistem LaTeX pe calculator.

  1. Editaţi/Creaţi fişierul de intrare (sursă) LaTeX. Acest fişier trebuie să fie text scris numai cu caractere ASCII. În Unix, toate editoarele de texte vor crea numai aşa ceva. În Windows, ar fi bine să salvaţi fişierul în format ASCII sau Plain Text. Când alegeţi un nume pentru fişier, aveţi grijă să aibă extensia .tex.
  2. Rulaţi fişierul de intrare în sistemul LaTeX. Dacă aţi realizat compilarea cu succes, veţi obţine un fişier de ieşire cu extensia .dvi. S-ar putea să trebuiască să rulaţi comanda LaTeX de compilare de mai multe ori pentru a include cuprinsul (tabla de materii) şi toate referinţele interne. Când fişierul sursă are o eroare, sistemul LaTeX va descrie această eroare şi va opri procesarea fişierului.

Tipăriţi CTRL-D ca să reveniţi la linia de comandă.

latex foo.tex

Acum puteţi vizualiza fişierul DVI. Într-un sistem Unix cu X11, puteţi scrie la linia de comandă xdvi foo.dvi, în Windows puteţi folosi un program numit yap (yet another previewer - încă un program de previzualizare). (Evince şi Okular, programele standard de vizualizare a documentelor pentru numeroase distribuţii Linux, permit afişarea fişierelor DVI.)

Puteţi urma o procedură similară cu pdflatex pentru a produce un document PDF din sursa iniţială .tex. La fel ca mai înainte, scrieţi la consolă comanda:

pdflatex foo.tex

Acum puteţi vizualiza fişierul PDF, foo.pdf.

Primul nostru document

Acum suntem în măsură să creăm primul nostru document. Vom scrie numai minimul absolut necesar pentru a produce un rezultat; binecunoscuta abordare Salut, lume! (Hello, world!) este foarte potrivită aici.

  • Deschideţi editorul favorit de texte. Dacă folosiţi Vim sau Emacs, şi acestea colorează textul corespunzător sintaxei LaTeX, lucru care vă va ajuta să scrieţi fişierele.
  • Copiaţi textul următor în editorul de texte. Aceasta este sursa LaTeX:

% salut.tex - Primul nostru exemplu LaTeX!
\documentclass{article}
\begin{document}
 Salut, lume!
\end{document
}

  • Salvaţi fişierul cu numele hello.tex.

Ce înseamnă toate astea?

% salut.tex - Primul nostru exemplu LaTeX! Prima linie este un comentariu deoarece începe cu simbolul procent (%); când LaTeX vede asta, pur şi simplu ignoră restul liniei. Comentariile sunt utile pentru a explica anumite părţi ale fişierului sursă. Spre exemplu, puteţi pune informaţii despre autor şi dată, sau despre orice altceva.
\documentclass{article} Această linie este o comandă ce spune sistemului LaTeX să folosească clasa de documente article (articol). O clasă de documente defineşte formatarea, care în acest caz este un format generic de articol. Înfăţişarea întregului document se poate schimba uşor, punând altă clasă în loc de articol.
\begin{document} Această linie marchează începutul mediului numit document; anunţă sistemul LaTeX că urmează să înceapă conţinutul documentului. Orice este scris înainte de această comandă este cunoscut în general sub numele de preambul (preamble).
Salut, lume! Aceasta este de fapt singura linie ce are un conţinut real - textul pe care vrem să-l afişăm pe pagină.
\end{document} Mediul document se termină aici. Această comandă transmite sistemului LaTeX că sursa documentului este completă, orice lucru scris în fişier după aceasta fiind ignorat.

După cum am spus mai devreme, fiecare comandă LaTeX începe cu un backslash (\). Acesta este modul în care sistemul LaTeX este anunţat ca oricând vede un backslash, să se aştepte la o comandă. Comentariile nu sunt considerate comenzi, de vreme ce tot ceea ce transmit sistemului LaTeX este să ignore linia curentă. Comentariile nu afectează niciodată documentul rezultat.

Generarea documentului

În mod sigur nu va fi cel mai grozav document pe care l-aţi văzut vreodată, însă vrem să-l vedem oricum. Presupun că sunteţi la linia de comandă, deja în directorul în care se găseşte salut.tex.

  1. Daţi comanda: latex salut (extensia .tex nu este necesară, deşi puteţi s-o includeţi dacă vreţi).
  2. Se vor afişa diverse informaţii despre fişierul sursā LaTeX şi despre progresul compilării. Dacă totul a mers bine, ultimele două linii afişate la consolă vor fi:
Output written on salut.dvi (1 page, 228 bytes).
Transcript written on salut.log.

Asta înseamnă că fişierul sursă a fost procesat şi documentul rezultat este hello.dvi, care are o pagină şi ocupă 228 octeţi. În felul acesta, aţi creat fişierul DVI, însă cu acelaşi fişier sursă puteţi crea un document PDF. Paşii de urmat sunt exact aceiaşi ca mai devreme, însă trebuie să înlocuiţi comanda latex cu pdflatex:

  1. Daţi comanda: pdflatex salut (ca mai înainte, extensia .tex este opţională).
  2. Se vor afişa diverse informaţii despre fişierul sursā LaTeX şi despre progresul compilării. Dacă totul a mers bine, ultimele două linii afişate la consolă vor fi:
Output written on salut.pdf (1 page, 12618 bytes).
Transcript written on salut.log.

Observaţi că documentul PDF este mult mai mare decât fişierul DVI, chiar dacă conţine exact aceleaşi informaţii. Principalele diferenţe între formatele DVI şi PDF sunt următoarele:

  • DVI are nevoie de mai puţin spaţiu pe disc şi se creează mai rapid. Nu include fonturile din document, astfel că dacă vreţi ca documentul să fie vizualizat corespunzător pe alt calculator, trebuie să aveţi toate fonturile necesare instalate. Nu suportă nici un fel de interactivitate cum sunt hyperlinkurile sau imaginile animate. Programele de vizualizare pentru DVI nu sunt foarte întâlnite, astfel încât puteţi să aveţi în vedere utilizarea unui atare program pentru a previzualiza documentul pe măsură ce-l scrieţi.
  • PDF necesită mai mult spaţiu pe disc şi se generează mai lent, însă include toate fonturile necesare din document, astfel că nu veţi avea nicio problemă de portabilitate. Oferă suport pentru hyperlinkuri interne şi externe. Suportă de asemenea facilităţi tipografice avansate: hanging punctuation, extinderea fonturilor şi ajustarea marginilor (margin kerning), aducând mai multă flexibilitate sistemului TeX şi un aspect mai plăcut. În prezent este standardul de facto pentru documentele tipărite sau publicate, aşa că-l puteţi avea în vedere pentru versiunea finală a documentului.

Până acum, aţi văzut că puteţi crea atât documente DVI, cât şi PDF din aceeaşi sursă. Asta e adevărat, însă devine ceva mai complicat dacă vreţi să introduceţi imagini sau linkuri. Aceste lucruri vor fi explicate în detaliu în capitolele următoare, însă pe moment să zicem că putem compila în ambele formate, DVI şi PDF, fără probleme.

Notaţi, în acest exemplu, că datorită simplităţii fişierului, este suficient să rulaţi comanda de compilare LaTeX o dată. Cu toate acestea, dacă începeţi să creaţi documente complexe, inclusiv bibliografii şi referinţe, etc, comanda LaTeX trebuie să fie executată de mai multe ori pentru a rezolva referinţele. Însă aceste lucruri vor fi discustate pe parcurs, pe măsură ce se ivesc.

Elemente de bază

Clase de documente

Prima informaţie de care LaTeX are nevoie când procesează un fişier de intrare este tipul de document pe care autorul vrea să-l creeze. Acesta se specifică cu comanda \documentclass:

\documentclass[opţiuni]{clasă}

Aici clasa specifică tipul de document ce va fi creat. Distribuţia LaTeX oferă clase adiţionale pentru alte tipuri de documente, inclusiv scrisori şi slide-uri. Parametrul pentru opţiuni personalizează comportamentul clasei de documente. Opţiunile trebuiesc separate prin virgulă.

Exemplu: un fişier de intrare pentru un document LaTeX ar putea începe cu linia

\documentclass[11pt,twoside,a4paper]{article}

care instruieşte sistemul LaTeX să formateze documentul ca pe un articol cu un font de bază de 11 puncte şi să producă un layout potrivit pentru tipărirea dublă faţă (double sided) pe o foaie A4.

Iată câteva clase de documente ce pot fi folosite în LaTeX:

Clase de documente
article pentru articole în jurnale ştiinţifice, prezentări, scurte rapoarte, documentaţie pentru programe, invitaţii, ...
proc o clasă pentru proceduri bazate pe clasa articol.
minimal este cât de mică posibil. Nu face decât să seteze dimensiunea paginii şi un font de bază. Se foloseşte în principal pentru depanare (debugging).
report pentru rapoarte mai lungi ce conţin mai multe capitole, cărţi mai mici, teze, ...
book pentru cărţi
slides for slide-uri. Clasa foloseşte litere mari sans serif.
memoir pentru a schimba în mod semnificativ documentul de ieşire. Se bazează pe clasa book, însă puteţi crea orice tip de document cu ea [1]
letter pentru scrisori.
beamer pentru prezentări (vezi LaTeX/Prezentare).

Opţiunile cele mai întâlnite pentru clasele standard de documente sunt prezentate în tabelul următor:

Opţiuni ale claselor de documente
10pt, 11pt, 12pt Setează dimensiunea fontului de bază pentru document. Dacă nu se specifică nicio opţiune, valoarea implicită este 10pt.
a4paper, letterpaper,... Defineşte mărimea hârtiei. Valoarea implicită este letterpaper; Totuşi, multe distribuţii europene de TeX sunt presetate pentru A4, nu Letter, iar acest lucru se aplică şi tuturor distribuţiilor LaTeX. Însă, în afară de asta, puteţi specifica şi a5paper, b5paper, executivepaper, legalpaper.
fleqn Afişează formulele matematice aliniate la stânga şi nu centrat.
leqno Numerotarea formulelor se afişează în partea stângă şi nu la dreapta.
titlepage, notitlepage Specifică dacă după titlul documentului trebuie să înceapă sau nu o pagină nouă. Clasa articol (article) nu începe o pagină nouă în mod implicit, în vreme ce raport (report) şi carte (book) încep o pagină nouă.
onecolumn, twocolumn Instruieşte sistemul LaTeX să formateze documentul într-o coloană sau două coloane.
twoside, oneside Specifică dacă documentul generat va fi cu faţă simplă sau cu faţă dublă. Clasele article şi report generează output cu faţă simplă, iar clasa book cu faţă dublă implicit. Notaţi că această opţiune priveşte numai stilul documentului. Opţiunea twoside nu spune imprimantei că trebuie să tipărească cu faţă dublă un document.
landscape Schimbă aşezarea în pagină a documentului pentru tipărire în modul landscape.
openright, openany Face capitolele să înceapă la pagini impare, respectiv la pagina următoare. Această opţiune nu merge cu clasa article, care nu are capitole. Clasa report porneşte implicit capitolele pe următoarea pagină disponibilă, iar clasa book implicit la paginile impare.
draft Determină sistemul LaTeX să indice problemele legate de împărţirea în silabe şi alinierea stânga-dreapta (justify) cu un pătrat mic în marginea din dreapta a liniei respective, astfel încât acestea să poată fi localizate rapid de utilizator. De asemenea suprimă includerea imaginilor, prezentând numai un cadru în locul acestora.

Spre exemplu, dacă vreţi ca un raport să fie generat cu 12pt pe o pagină A4, însă să fie tipărit cu faţă simplă în modul draft, veţi folosi:

\documentclass[12pt,a4paper,oneside,draft]{report}

Utilizarea de pachete

Pe măsură ce scrieţi documentul, veţi constata probabil că sunt unele probleme mai complicate pe care LaTeX-ul de bază nu le poate rezolva. Dacă vreţi să includeţi imagini, text colorat sau cod sursă dintr-un alt fişier, trebuie să augmentaţi facilităţile oferite de LaTeX. Astfel de îmbunătăţiri se accesează prin intermediul unor pachete. Pachetele sunt activate cu comanda

\usepackage[opţiuni]{pachet}

unde pachet este numele pachetului, iar opţiuni este o listă de cuvinte cheie ce activează facilităţi speciale ale pachetului. Unele pachete fac parte din distribuţia de bază LaTeX. Altele sunt oferite separat.

Distribuţiile TeX moderne au un mare număr de pachete pre-instalate. Dacă lucraţi pe un sistem Unix, folosiţi comanda texdoc pentru a accesa documentaţia legată de pachete. Pentru mai multe informaţii, vezi capitolul Pachete.

Tipuri de fişiere întâlnite

Când lucraţi cu LaTeX, vă veţi trezi în mijlocul unui labirint de fişiere cu diverse extensii şi probabil fără nici un indiciu. Lista următoare explică tipurile cele mai întâlnite de astfel de fişiere:

Extensii de fişiere frecvent întâlnite în LaTeX
.aux Un tip de fişier ce transportă informaţii de la un compilator la următorul. Între altele, fişierul cu extensia .aux se foloseşte la stocarea informaţiilor asociate cu referinţele.
.bbl Fişier de tip bibliografic generat de BiBTeX şi folosit de LaTeX
.bib Fişier tip bază de date bibliografică
.blg Fişier jurnal (log) de tip BiBTeX.
.bst Fişier pentru stiluri tip BiBTeX.
.cls Fişierele de tipul clasă definesc felul în care va arăta documentul. Acestea sunt selectate cu comanda \documentclass.
.dtx Fişiere TeX cu documentaţie . Acesta este principalul format de distribuţie pentru fişierele de stiluri LaTeX. Dacă procesaţi un fişier .dtx, obţineţi cod macro documentat din pachetul LaTeX conţinut în fişierul .dtx.
.ins Programul de instalare pentru fişierele conţinute în fişierul corespunzător .dtx. Dacă descărcaţi un pachet LaTeX din reţea, în mod normal veţi obţine un fişier .dtx şi un fişier .ins. Rulaţi comanda de compilare LaTeX având ca argument fişierul .ins pentru a dezarhiva fişierul .dtx.
.fd Fişier de descriere a fontului ce transmite sistemului LaTeX informaţii despre fonturile noi.
.dvi Fişier independent de dispozitiv (Device Independent). Acesta este rezultul principal obţinut de LaTeX în urma compilării cu comanda latex. Puteţi vedea conţinutul acestuia cu un program de previzualizare pentru DVI sau puteţi să-l listaţi cu comanda dvips sau folosind o aplicaţie similară.
.pdf Format portabil de document (Portable Document Format). Acesta este rezultul principal obţinut de LaTeX în urma compilării cu comanda pdflatex. Puteţi vedea sau lista conţinutul acestuia cu orice program de vizualizare pentru PDF.
.log Oferă detalii amănunţite despre ce s-a întâmplat în timpul ultimei compilări.
.toc Păstrează toate antetele de secţiuni. Este citit la următoarea compilare şi este folosit la producerea cuprinsului.
.lof La fel ca .toc, însă pentru lista de figuri.
.lot La fel, dar pentru lista de tabele.
.idx Dacă documentul conţine un index, LaTeX păstrează toate cuvintele din index în acest fişier. Procesaţi acest fişier cu comanda makeindex.
.ind Fişierul .idx procesat, gata de a fi inclus în document la următoarea compilare.
.ilg Fişier jurnal ce descrie efectele comenzii makeindex.
.sty Pachet macro LaTeX. Acesta este un fişier pe care îl puteţi încărca în documentul LaTeX cu ajutorul comenzii \usepackage.
.tex Fişier de intrare LaTeX sau TeX. Poate fi compilat cu comanda latex.

Proiecte mari

Când lucraţi la documente mari, poate veţi dori să le împărţiţi în mai multe fişiere mai mici. LaTeX are 3 comenzi pentru a insera un fişier în altul la construirea documentului final.

Cea mai simplă este comanda \input:

 \input{numefişier}

\input inserează conţinutul altui fişier, denumit numefişier.tex; observaţi că extensia .tex lipseşte. \input este doar o metodă simplă, automată de copiere a codului sursă din numefişier.tex.

Cealaltă comandă principală de incluziune este \include:

 \include{numefişier}

Comanda \include este diferită de \input prin aceea că la documentul final se adaugă rezultatul compilării în locul comenzilor din fişierele incluse. De aceea, la fiecare comandă \include, se creează o nouă pagină, care o face potrivită pentru entităţi mai mari, cum sunt capitolele dintr-o carte.

Documentele foarte mari (care includ de obicei multe fişiere) necesită foarte mult timp pentru compilare şi cei mai mulţi utilizatori găsesc convenabil să-şi testeze ultimele schimbări incluzând numai fişierele la care au lucrat. Un mod de a realiza acest lucru este comentarea liniilor ce conţin comanda \include din ierarhia de incluziuni:

% \include{numefişier1}
 \include{numefişier2}
 \include{numefişier3
}
% \include{numefişier4}

În cazul de faţă, utilizatorul vrea să includă numai numefişier2.tex şi numefişier3.tex. Dacă ierarhia de incluziuni este complexă, comentarea comenzilor poate favoriza apariţia unor erori: numeroaterea paginilor se va schimba, şi orice referinţe interne nu vor mai funcţiona. O alternativă mai bună ar fi păstrarea comenzilor de incluziune şi folosirea în preambul a comenzii \includeonly:

 \includeonly{numefişier2,numefişier3}

În felul acesta, vor fi executate numai comenzile \include pentru fişierele specificate, iar incluziunea va fi gestionată în document într-un singur loc. Notaţi faptul că nu trebuie să existe spaţii între numele de fişiere şi virgule.

Alegerea unor nume potrivite de fişiere

Nu folosiţi niciodată, cu niciun prilej, nume de directoare (foldere) sau de fişiere ce conţin spaţii. Deşi sistemul de operare pe care-l folosiţi probabil că le suportă, unele nu o fac, iar acest lucru nu poate crea decât probleme cu TeX. Daţi nume de fişiere cât de scurte sau de lungi vreţi, dar evitaţi cu stricteţe spaţiile. Folosiţi numai litere mici şi fără accente (a-z), cifre 0-9, cratimă (-) şi punct (.), (similar convenţiilor pentru o denumire de resursă Web, URL): acest lucru vă va permite să faceţi referire mai uşor la fişierele TeX de pe Web şi vă va face fişierele mai portabile. Unele sisteme de operare nu fac distincţie între literele mari şi mici, altele da. De aceea este mai bine să nu le amestecaţi.

Munca în echipă

Vezi capitolul Realizarea în colaborare de documente LaTeX.

Structura unui document

Scopul principal al scrierii unui text este să transmită idei, informaţii, sau cunoştinţe cititorului. Acesta va înţelege mai bine textul dacă ideile sunt bine structurate, şi vor percepe această structură mult mai bine dacă forma tipografică reflectă structura logică şi semantică a conţinutului.

LaTeX este diferit de alte sisteme de redactare prin faptul că trebuie să-i transmiţi numai structura logică şi semantică a textului. Acesta derivă apoi forma tipografică a textului în funcţie de "regulile" date de fişierul ce conţine setările pentru clasa documentului şi de diverse fişiere de stiluri. LaTeX permite utilizatorilor să-şi structureze documentele cu o serie de structuri ierarhice, printre acestea numărându-se capitole, secţiuni, subsecţiuni şi paragrafe.

Mediul document

După declaraţia clasei documentului, textul documentului este cuprins între două comenzi ce identifică începutul şi sfârşitul documentului efectiv:

\documentclass[11pt,a4paper,oneside]{report}

\begin{document}
...
\end{document
}

Textul efectiv al documentului ar fi în locul punctelor. Motivul pentru marcarea explicită a începutului documentului este ca LaTeX să permită inserarea unor specificaţii suplimentare de formatare înaintea acestuia (acolo unde este linia goală în exemplul dinainte: o să ne ocupăm de asta în curând). Motivul pentru marcarea explicită a sfârşitului textului este pentru a oferi un loc în care LaTeX să fie programat să îndeplinească sarcini adiţionale în mod automat la sfârşitul documentului, cum ar fi realizarea unui index.

Un efect secundar util al marcării sfârşitului textului din document este faptul că puteţi scrie comentarii sau păstra ceva text temporar după \end{document}, ştiind că LaTeX nu va încerca niciodată să-l formateze:

       
...
\end{document}
Nu uita să iei ultimul capitol de la Dorando!

Preambul

Preambulul (preamble) este tot ce intră de la începutul fişierului sursă LaTeX şi până la comanda \begin{document}. În mod normal conţine comenzi ce afectează întregul document.

% simplu.tex - Un articol simplu pentru a ilustra structura documentului.

\documentclass{article}
\usepackage{mathptmx}

\begin{document
}

Prima linie este un comentariu (după cum se specifică prin semnul %). Comanda \documentclass ia un argument, care în cazul de faţă este article (articol), întrucât acesta este tipul documentul pe care vrem să-l realizăm. Puteţi să creaţi propriul tip de document, după cum fac deseori jurnaliştii, care oferă pur şi simplu propriul fişier cu setările pentru clasa documentului, ce spune sistemului LaTeX cum să formateze conţinutul. Însă pe moment clasa standard pentru articole (article) este de ajuns pentru noi. \usepackage este o comandă importantă ce spune sistemului LaTeX să utilizeze nişte macrodefiniţii externe. În exemplul nostru, am specificat mathptmx, ceea ce înseamnă că LaTeX va folosi fontul Postscript Times de tipul 1 în locul fontului implicit ComputerModern. Şi în sfârşit, comanda \begin{document}. Aceasta nu face parte în mod strict din preambul, însă o voi menţiona aici oricum, de vreme ce semnifică sfârşitul preambulului, spunând că documentul începe acum.

La început de document

La începutul celor mai multe documente se găsesc informaţii despre documentul propriu-zis, cum sunt titlul şi data, ca şi informaţii despre autori, precum numele, adresa, adresa de email, etc. Toate aceste tipuri de informaţii din LaTeX sunt denumite colectiv top matter (ce se găseşte la început de document). Deşi nu este specificat în mod explicit (nu există nicio comandă \topmatter), veţi întâlni probabil termenul în documentaţia LaTeX.

Un exemplu simplu:

\documentclass[11pt,a4paper,oneside]{report}

\begin{document}
 \title{Cum structuraţi un document LaTeX}
 \author{Andrew Roberts}
 \date{December 2004}
 \maketitle
\end{document
}

Comenzile \title, \author şi \date nu au nevoie de explicaţii suplimentare. Scrieţi titlul, numele autorului şi data între acolade după comanda corespunzătoare. Titlul şi autorul sunt de obicei obligatorii (cel puţin dacă vreţi ca LaTeX să scrie titlul automat); dacă omiteţi comanda \date, LaTeX foloseşte implicit data curentă. Întotdeauna terminaţi partea de la începutul documentului cu comanda \maketitle, care transmite sistemului LaTeX că aceasta s-a încheiat şi că poate să formateze titlul în concordanţă cu informaţiile oferite şi cu clasa (stilul) utilizat. Dacă omiteţi comanda \maketitle, nu va fi afişat niciun titlu (în afară de cazul în care scrieţi unul explicit la începutul documentului).

Iată un exemplu mai complicat:

\title{Cum structuraţi un document \LaTeX{}}
\author{Andrew Roberts\\
  School of Computing,\\
  University of Leeds,\\
  Leeds,\\
  United Kingdom,\\
  LS2 1HE\\
  \texttt{andyr@comp.leeds.ac.uk}}
\date{\today
}
\maketitle

După cum vedeţi, puteţi folosi comenzi ca argumente ale comenzii \title şi ale altor comenzi. Backslash dublu (\\) este comanda LaTeX pentru a forţa trecerea la o linie nouă. LaTeX decide în mod normal singur unde să treacă la o linie nouă, şi în general are dreptate, însă câteodată aveţi nevoie de o linie mai scurtă, ca aici, şi atunci trebuie să adăugaţi un sfârşit de linie (\\).

Dacă sunt doi sau mai mulţi autori, puteţi să-i separaţi cu comanda \and:

\title{Documentul nostru nostim}
\author{Jane Doe \and John Doe}
\date{\today
}
\maketitle

\maketitle este singurul element care trebuie să fie situat după comanda \begin{document}, celelalte pot fi situate în preambul sau în corpul documentului (după \begin{document}). Dacă aveţi o clasă de la o firmă de publicaţii, sau dacă folosiţi clasa article a AMS (amsart), atunci puteţi folosi mai multe comenzi diferite pentru a introduce informaţiile legate de autori. Adresa de email este la sfârşit, iar comanda \texttt formatează adresa de email folosind un font mono-spaţiat. Comanda implementată în LaTeX \today va fi înlocuită cu data curentă la procesare, însă puteţi să specificaţi ce dată vreţi, în ce format doriţi. Dacă nu specificaţi nicio dată între acolade, atunci data va fi omisă.

Folosind această abordare, puteţi crea numai un output simplu, al cărui aspect este foarte greu de schimbat. Dacă vreţi să creaţi un titlu cu mai multe facilităţi, consultaţi secţiunea Crearea unui titlu.

Rezumat

Deoarece cele mai multe lucrări ştiinţifice au un rezumat la început, există comenzi predefinite ce spun sistemlui LaTeX care parte a conţinutului constituie rezumatul. Aceasta ar trebui să apară în ordinea logică a documentului, prin urmare, după partea de la începutul documentului (top matter) cu data şi autorii, însă înainte de secţiunile principale ale corpului documentului. Această comandă este disponibilă pentru clasele de documente articol (article) şi raport (report), însă nu şi pentru carte (book).

\documentclass{article}

\begin{document}

 \begin{abstract}
  Rezumat ...
  ...
 \end{abstract}
 ...
\end{document
}

Implicit, LaTeX va folosi cuvântul "Abstract" ca titlu pentru rezumat. Dacă vreţi să-l schimbaţi, spre exemplu în "Rezumat", adăugaţi linia următoare la preambul:

\renewcommand{\abstractname}{Rezumat}

Comenzi de împărţire pe secţiuni

Comenzile pentru inserarea secţiunilor sunt foarte intuitive. Desigur, anumite comenzi sunt corespunzătoare numai pentru anumite clase de documente. Spre exemplu, o carte are capitole, însă un articol nu are. Iată o versiune modificată a câtorva comenzi de structurare utilizate în simplu.tex.

\section{Introducere}
 Conţinutul secţiunii curente...

\section{Structură}
 Conţinutul secţiunii prezente...

 \subsection{Începutul documentului}
  Conţinutul acestei subsecţiuni...

  \subsubsection{Informaţii despre articole
}
   Conţinutul subsubsecţiunii de faţă...

După cum puteţi vedea, comenzile sunt foarte intuitive. Observaţi că nu trebuie să specificaţi numere pentru secţiuni. LaTeX le va numerota singur! De asemenea, pentru secţiuni, nu trebuie să marcaţi conţinutul ce aparţine unui bloc dat, cu ajutorul unor comenzi \begin şi \end, de exemplu. LaTeX oferă 7 niveluri de ierarhizare pentru definirea secţiunilor:

Comandă Nivel Comentariu
\part{parte} -1 nu în scrisori
\chapter{capitol} 0 numai pentru cărţi şi rapoarte
\section{secţiune} 1 nu în scrisori
\subsection{subsecţiune} 2 nu în scrisori
\subsubsection{subsubsecţiune} 3 nu în scrisori
\paragraph{paragraf} 4 nu în scrisori
\subparagraph{subparagraf} 5 nu în scrisori

Toate titlurile secţiunilor sunt adăugate automat cuprinsului (dacă vă hotărâţi să inseraţi un cuprins în document). Însă dacă faceţi schimbări manuale de stil antetului, spre exemplu un titlu foarte lung, sau caractere de sfârşit de linie speciale sau fonturi mai deosebite, acestea vor apare la rândul lor în Tabla de materii, lucru care cel mai probabil nu vreţi să se întâmple. LaTeX vă permite să daţi o versiune suplimentară opţională textului antetului, care va fi folosită numai în Cuprins şi în antetele din document. Această opţiune alternativă de antet se scrie în [paranteze drepte] înainte de acolade:

\section[Efectul tranferului de personal]{O analiză a efectului
 revizuirii politicilor de recrutare asupra tranferului de personal
 la sediile filialelor
}

Numerotarea secţiunilor

Numerotarea secţiunilor este făcută în mod automat de LaTeX, aşa că nu vă deranjaţi să realizaţi asta explicit, inseraţi numai antetul dorit între acolade. Părţile sunt numerotate cu cifre romane (Partea I, Partea II, etc.); capitolele şi secţiunile cu cifre arabe, ca documentul de faţă, iar anexele (care sunt doar un caz special de capitole şi au aceeaşi structură) sunt etichetate cu litere mari (A, B, C, etc.). Puteţi schimba nivelul de ierarhizare până la care merge numerotarea secţiunilor, astfel încât puteţi să o opriţi selectiv. Implicit se seteză la valoarea 2. Dacă doriţi ca numai părţile, capitolele şi secţiunile să fie numerotate, nu subsecţiunile sau subsubsecţiunile, etc., puteţi schimba valoarea contorului secnumdepth cu ajutorul comenzii \setcounter, dând un nivel de ierarhizare corespunzător din tabelul precedent. Spre exemplu, dacă vreţi să fie "1":

\setcounter{secnumdepth}{1}

Un contor corelat este tocdepth, care specifică nivelul de ierarhizare pe care îl ia Cuprinsul (Table of Contents - TOC). Poate fi resetat în exact acelaşi mod ca şi secnumdepth. Spre exemplu:

\setcounter{tocdepth}{3}

Pentru a obţine un antet de secţiune nenumerotat şi care nu intră în Cuprins, adăugaţi un asterisc după numele comenzii la începutul acoladei:

\subsection*{Introducere}

Toate comenzile de structurare de la \part* la \subparagraph* au această versiune "cu steluţă" ce poate fi folosită în condiţii speciale pentru a obţine un antet nenumerotat atunci când conform cu setarea secnumdepth ar fi numerotat.

Dacă vreţi ca secţiunea nenumerotată să fie totuşi inclusă în Cuprins, folosiţi comanda \addcontentsline în felul următor:

\section*{Introducere}
\addcontentsline{toc}{section}{Introducere
}

Notaţi că dacă folosiţi marcaje în document (bookmarks) pentru PDF, va trebui să adăugaţi o secţiune fantomă (phantom) astfel ca acel bookmark să indice corect locul din document:

\phantomsection
\addcontentsline{toc}{section}{Introducere}
\section*{Introduction
}

Pentru capitole va trebui de asemenea să terminaţi pagina curentă (acest lucru va corecta şi numărătoarea paginilor în Cuprins):

\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Bibliografie}
\bibliographystyle{unsrt
} % unsorted - nesortat
\bibliography{fişierul_meu_bib}

Valoarea de la care porneşte numărătoarea secţiunilor poate fi setată cu următoarea comandă:

\setcounter{section}{4}

Secţiunea următoare acestei comenzi va fi numerotată cu 5.

Comanda \phantomsection este definită în pachetul hyperref. Ea permite hyperref să pună un hyper marker la pagina corectă (selectarea din Cuprins a Bibliografiei vă trimite la pagina corectă la care incepe Bibliografia în document).

Anexe

LaTeX suportă şi numerotarea separată a anexelor. Macroul \appendix poate fi folosit pentru a indica faptul că secţiunile sau capitolele următoare vor fi numerotate ca anexe.

În clasele raport sau carte, acest lucru se scrie:

\appendix
\chapter{Prima Anexă}

Pentru clasa articol, folosiţi:

\appendix
\section{Prima Anexă}

Paragrafe

Paragrafele de text vin după antetele secţiunilor. Pur şi simplu scrieţi textul şi lăsaţi o linie liberă între paragrafe. Linia liberă înseamnă "începe un paragraf nou aici": nu înseamnă că o linie liberă va fi scrisă în documentul rezultat. Pentru formatarea indentării paragrafelor şi spaţierea dintre paragrafe, vezi secţiunea Formatare.

Cuprins

Toate antetele auto-numerotate sunt incluse automat în Cuprins. Nu trebuie să adăugaţi un Cuprins la document, dar dacă vreţi s-o faceţi, adăugaţi comanda \tableofcontents în locul în care vreţi să apară cuprinsul în documentul de ieşire (de obicei după Rezumat).

Intrările din Cuprins sunt reordonate la fiecare nouă procesare a documentului şi reproduse la procesarea următoare, astfel că trebuie să compilaţi fişierul LaTeX încă o dată pentru a fi siguri că toate referinţele la numerele de pagini din Cuprins au fost calculate corect. Am văzut deja cum putem folosi un argument opţional la comenzile de scriere a secţiunilor pentru a adăuga text la Cuprins care diferă puţin de cel afişat în corpul documentului. Se pot adăuga de asemenea linii suplimentare la Cuprins, pentru a forţa includerea antetelor secţiunilor suplimentare sau nenumerotate.

Comenzile \listoffigures şi \listoftables merg exact la fel ca \tableofcontents, listând automat toate tabelele şi figurile. Dacă le folosiţi, în mod normal le veţi scrie după comanda \tableofcontents. Comanda \tableofcontents afişează în mod normal numai antetele secţiunilor numerotate şi numai până la nivelul de ierarhizare definit de contorul tocdepth, însă puteţi adăuga intrări suplimentare cu comanda \addcontentsline. Spre exemplu, dacă folosiţi un antet de secţiune nenumerotată pentru a începe un text preliminar de genul unei Prefeţe sau Cuvânt înainte, puteţi scrie:

\subsection*{Prefaţă}
\addcontentsline{toc}{subsection}{Prefaţă
}

Aceste comenzi vor formata o intrare nenumerotată în Cuprins pentru "Prefaţă" în stilul "subsection". Puteţi folosi acelaşi mecanism pentru a adăuga linii la Lista de figuri sau la Lista de tabele, scriind lof sau lot în loc de toc.

Pentru a schimba numele Cuprinsului, trebuie să folosiţi această comandă în preambulul documentului:

\renewcommand{\contentsname}{Titlu nou pentru cuprins}

Denumirile listei de figuri List of Figures (LoF) şi listei de tabele List of Tables (LoT) pot fi schimbate înlocuind \contentsname cu \listfigurename pentru LoF şi cu \listtablename pentru LoT.

Niveluri de ierarhizare

Cuprinsul implicit va lista antete până la nivelul de ierarhizare 3. Pentru a schimba acest nivel implicit folosiţi în preambul comanda:

\setcounter{tocdepth}{4}

Asta va face cuprinsul să includă tot până la paragrafe. Nivelurile sunt definite mai sus pe această pagină (într-un tabel).

Bibliografie

Orice lucrare bună de cercetare are o listă de referinţe. Sunt două moduri prin care puteţi insera referinţe în LaTeX:

  • le puteţi include direct în document. E mai simplu, însă vă poate lua mult timp dacă scrieţi mai multe lucrări cu subiecte similare astfel încât trebuie să citaţi des aceleaşi cărţi.
  • le puteţi păstra într-un fişier BibTeX extern, iar apoi le puteţi lega la document printr-o comandă şi folosi stilul Bibtex pentru a le defini aspectul din document. În felul acesta puteţi crea o mică bază de date a referinţelor pe care le-aţi putea folosi şi pur şi simplu să le legaţi la document, lăsând sistemul LaTeX să lucreze pentru voi.

Pentru a afla cum puteţi adăuga o bibliografie documentului, consultaţi secţiunea Gestiunea bibliografiei.

Erori şi avertismente

LaTeX descrie ce formatează ce măsură ce prelucrează textul, iar dacă întâlneşte ceva ce nu înţelege sau nu poate să facă, va afişa un mesaj de eroare spunând ce nu e bine. Poate de asemenea să afişeze avertismente pentru probleme mai puţin grave.

Nu intraţi în panică dacă vedeţi mesaje de eroare: se întâmplă adesea să scrieţi greşit comenzi, să uitaţi acolade, să scrieţi un slash în loc de backslash, sau să folosiţi un caracter special din greşeală. Erorile sunt uşor de observat şi de corectat în editorul pe care-l folosiţi, iar apoi puteţi compila din nou fişierul cu LaTeX pentru a vedea dacă aţi corectat totul. Câteva dintre erorile cele mai întâlnite sunt descrise în secţiunile următoare.

Mesaje de eroare

Formatul unui mesaj de eroare este întotdeauna acelaşi. Mesajele de eroare încep cu un semn de exclamaţie la începutul liniei şi fac o descriere a erorii, urmată de o altă linie ce începe cu numărul liniei unde apare eroarea în documentul sursă LaTeX. Iată un exemplu în care utilizatorul a scris greşit comanda \tableofcontents:

! Undefined control sequence.
l.6 \tableofcotnetns

Când LaTeX găseşte o eroare, afişează mesajul corespunzător şi se opreşte. Trebuie să apăsaţi una din următoarele taste pentru a continua:

Tasta Semnificaţie
x Opreşte imediat şi ieşi (exit) din program.
q Continuă fără a ţine cont de erori (în linişte - quietly).
e Opreşte programul, însă re-poziţionează textul în editorul meu favorit în punctul unde a fost semnalată eroarea (Merge numai dacă folosiţi un editor cu care LaTeX poate comunica).
h Încearcă să oferi mai multe indicaţii (ajutor - help).
i (urmat de o corecţie) înseamnă introdu corectura în locul erorii şi continuă (Aceasta este numai o corectură temporară pentru a continua procesarea fişierului. Tot va trebui să corectaţi greşeala în editor).
r rulează în mod non-stop. Ignoră erorile, dacă numărul lor nu trece de o limită prestabilită (100 erori).

Unele sisteme (Emacs de exemplu) rulează LaTeX cu opţiunea "nonstop" pornită, astfel că va procesa întotdeauna textul până la sfârşitul fişierului, indiferent ce erori apar, sau până când se atinge limita implicită.

Avertismente

Avertismentele nu încep cu semnul exclamării: sunt doar comentarii făcute de LaTeX despre lucruri pe care poate ar fi bine să vă uitaţi, cum ar fi linii prea lungi sau prea scurte (deseori cauzate de o împărţire în silabe neobişnuită, de exemplu), pagini prea lungi sau prea scurte şi alte amănunte tipografice (dintre care pe cele mai multe în general le ignoraţi). Spre deosebire de alte sisteme, care încearcă să ascundă nepotrivirea în text (de obicei fără succes) modificând spaţiile dintre cuvinte, LaTeX consideră că autorul sau editorul ar trebui să ia decizia corespunzătoare. Deşi cu siguranţă puteţi seta parametrii LaTeX astfel încât spaţierea să fie permisă în limite foarte largi ca să nu apară vreodată un avertisment legat de linii sau pagini inestetice, cel mai probabil doar veţi amâna apariţia problemelor până când cititorii şi publicaţiile vor începe să se plângă.

Exemple

Numai câteva erori mai întâlnite sunt menţionate aici: cele mai probabile pentru începători. Dacă găsiţi alt mesaj de eroare decât cele prezentate aici şi nu e clar ce aveţi de făcut, cereţi ajutor.

Cele mai multe mesaje de eroare sunt auto-explicative, însă reţineţi că locul în care LaTeX detectează şi raportează o eroare poate fi după locul în care eroarea apare de fapt în fişier. Spre exemplu, dacă uitaţi să închideţi o acoladă ce cuprindea, să zicem, caractere italice, LaTeX nu va raporta eroarea până când nu se întâmplă alt lucru care nu s-ar putea întâmpla până la acolada de închidere (care ar putea fi la sfârşitul documentului!). Unele erori nu pot fi corectate decât de utilizatorii care pot citi şi înţelege cum ar trebui să arate sau ce sens ar trebui să aibă textul scris din document.

Nou veniţii ar trebui să-şi amintească să se uite peste lista cu caractere speciale: un număr foarte mare de erori atunci când învăţaţi LaTeX se datorează scrierii accidentale a unui caracter special când de fapt nu doriţi asta. Această tendinţă dispare după câteva zile de practică, după ce v-aţi obişnuit cu ele.


Prea multe acolade de închidere }

   
! Too many }'s.
l.6 \date Decembrie 2004}

Motivul pentru care LaTeX consideră că sunt prea multe acolade de închidere } aici este că lipseşte acolada de deschidere după secvenţa de control \date şi înainte de cuvântul Decembrie, astfel că acolada de închidere apare în plus cu una (după cum şi este!). De fapt, sunt şi alte lucruri care pot să urmeze comenzii \date pe lângă o dată între acolade, aşa că LaTeX nu poate ghici că aţi omis acolada de deschidere până când nu găseşte una de închidere!

Secvenţă de control nedefinită

! Undefined control sequence.
l.6 \dtae
{December 2004}

În acest exemplu, LaTeX se plânge că nu are o astfel de comandă ("control sequence" - secvenţă de control) numită \dtae. Evident a fost scrisă greşit, însă numai un utilizator poate vedea asta: tot ce ştie LaTeX e că \dtae nu este o comandă pe care o cunoaşte: este nedefinită. Greşelile de ortografie sunt cauzele cele mai întâlnite de erori. Dacă editorul pe care-l folosiţi are meniuri ce vă permit inserarea de comenzi şi medii LaTeX cunoscute, folosiţi-le!

Nu e în modul matematic

! Missing $ inserted

Un caracter ce poate să apară numai în modul matematic a fost inserat într-un text obişnuit. Fie treceţi în modul matematic prin \begin{math}...\end{math}, fie folosiţi 'modul matematic rapid': \ensuremath{formule, ecuaţii, etc.}. Formulele matematice mai pot fi scrise între $mate$ sau \(mate\), ca şi pe o singură linie cu $$mate$$ sau \[mate\].



Argumente incomplete (Runaway argument)

Dacă avem o secvenţă de cod LaTeX de genul următor:

{Decembrie 2004 \maketitle

% alte comenzi LaTeX

LaTeX va semnala următoarea eroare:

Runaway argument?
! Paragraph ended before \date was complete.
<to be read again>
\par
l.8

În cazul acestei erori, acolada de închidere a fost omisă din formatul datei. Este opusul erorii cu prea multe acolade de închidere } şi are ca rezultat faptul că \maketitle încearcă să formateze titlul paginii în vreme ce LaTeX încă aşteaptă informaţii despre dată!

Căsuţă orizontală prea mică (Underfull hbox)

   
Underfull \hbox (badness 1394) in paragraph
at lines 28--30
[][]\LY1/brm/b/n/10 Bull, RJ: \LY1/brm/m/n/10
Ac-count-ing in Busi-
[94]

Acesta este un avertisment că LaTeX nu poate extinde textul (spaţiile dintre cuvinte) îndeajuns ca să cuprindă linia (nu este de ajuns text pentru a umple linia), fără să extindă spaţierea dincolo de limita maximă permisă în mod curent. Indicele de depăşire a spaţierii maxime permise (badness) (0-10,000) indică cât de severă este aceasta (aici puteţi ignora un exces de 1394). Avertismentul transmite liniile fişierului pe care le formata când a găsit problema, iar numărul din paranteze drepte este numărul paginii pe care se găsesc în fişierul de ieşire liniile respective. Codul separat de bare (slash) reprezintă tipul, stilul de font şi mărimea acestuia de pe acele linii. Ignoraţi-le pe moment.

Acest avertisment apare de asemenea când terminaţi un paragraf (sau altă structură) cu \\ (sfârşit de linie). Un paragraf se termină cu o linie liberă sau cu comanda \par. Aşadar, nu puneţi \\ urmat de o linie liberă sau \par. LaTeX emite un avertisment aici întrucât se aşteaptă ca să urmeze o nouă linie (care face parte din acelaşi paragraf) după \\.

Căsuţă orizontală prea mare (Overfull hbox)

[101]
Overfull \hbox (9.11617pt too wide) in paragraph
at lines 860--861
[]\LY1/brm/m/n/10 Windows, \LY1/brm/m/it/10 see
\LY1/brm/m/n/10 X Win-

Acest avertisment spune că există o problemă cu împărţirea în silabe sau cu alinierea stânga-dreapta: mutarea ultimului cuvânt de pe linia curentă pe linia următoare ar face spaţiile de pe linia curentă mai mari decât limită curentă permisă; păstrarea cuvântului pe această linie ar face spaţiile mai mici decât limita curentă permisă pentru asta, astfel încât cuvântul este lăsat pe acea linie, însă cu spaţiul minim permis între cuvinte, lucru care face ca linia curentă să treacă dincolo de marginea din dreapta.

Avertismentul este dat în aşa fel încât să puteţi găsi uşor linia sau liniile din codul sursă ce au cauzat problema (în cazul nostru: 860-861) şi să o rezolvaţi. Linia din acest exemplu este mai lungă cu ceva mai mult de 9pt. Locul ales pentru despărţirea în silabe care minimizează eroarea este prezentat la sfârşitul liniei (Win-). Numerele de linii şi pagini sunt la fel ca mai înainte (pentru căsuţa orizontală prea mică). În cazul de faţă, 9pt este prea mult pentru a fi ignorat (peste 3mm), fiind necesară o corecţie manuală (cum ar fi o schimbare a împărţirii în silabe), sau trebuie schimbate setările de spaţiere sau dimensiunea liniilor.

Dacă cuvântul "overfull" include un slash, ca în "input/output", acesta ar trebui formatat în mod corespunzător: "input\slash output". Utilizarea comenzii \slash are acelaşi efect ca şi folosirea caracterului "/", cu excepţia faptului că poate forma sfârşitul liniei (cuvintele care urmează vor apare la începutul liniei următoare). Caracterul "/" se foloseşte în mod uzual în cadrul grupurilor unitare, ca în "lună/an", care nu ar trebui separate pe mai multe linii.

Pachet lipsă

! LaTeX Error: File `paralisy.sty' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)
Enter file name:

Când folosiţi comanda \usepackage pentru a cere sistemului LaTeX să includă un anumit pachet, va căuta un fişier cu numele specificat urmat de extensia .sty. În cazul de faţă, utilizatorul a scris greşit denumirea pachetului paralist, lucru care este uşor de corectat. Cu toate acestea, dacă aţi scris numele corect, însă pachetul nu este instalat pe calculator, va trebui să-l luaţi de pe net şi să-l instalaţi înainte de a continua. Dacă nu vreţi să afectaţi setările globale de instalare de pe calculator, puteţi să descărcaţi de pe Internet fişierul .sty necesar şi să-l puneţi în acelaşi director cu documentul pe care îl compilaţi.

Avertisment al pachetului Babel: Nu s-au încărcat formatele de împărţire în silabe pentru limba X

Deşi acesta este un avertisment al pachetului Babel şi nu al sistemului LaTeX, această eroare este foarte întâlnită şi poate genera unele probleme ciudate legate de împărţirea în silabe a cuvintelor în documente. Regulile greşite de împărţire în silabe pot face documentul să arate neîngrijit.

Package babel Warning: No hyphenation patterns were loaded for
(babel)                the language `Latin'
(babel)                I will use the patterns loaded for \language=0 instead.

Acest lucru se poate întâmpla după utilizarea comenzii (vezi LaTeX/Internaţionalizare):

\usepackage[latin]{babel}

Soluţia nu este dificilă: instalaţi pachetul cu limba dorită în Distribuţia LaTeX. Puteţi opta pentru instalarea pachetului multilingv ml.sty.

Crearea unui titlu

Există mai multe situaţii în care aţi dori să creaţi un titlu într-un format aleator în locul formatului implicit din LaTeX. Pentru documente mai mici, cum sunt articolele simple, outputul comenzii \maketitle este în general adecvat, însă documentele mai mari (cum sunt cărţile şi rapoartele) deseori necesită o formatare mai complexă. Deşi se poate schimba outputul comenzii \maketitle, e o procedură complicată chiar şi pentru schimbări minore aduse titlului. În astfel de cazuri, este deseori mai bine să creaţi titlul de la zero, iar această secţiune vă va învăţa cum să faceţi asta.

Pagini standard de titlu

Multe clase de documente asigură o pagină de titlu. Utilizatorul trebuie să specifice manual din titlu folosind aceste comenzi plasate la începutul documentului:

\title{Triangulaţia datelor din titlu în manieră Gaussiană
       neliniară prin intermediul seriilor $\rho$}
\date{31 Octombrie 475}
\author{John Doe\\ Departmentul de magie, Universitatea Richard Miles
        \and Richard Row, Academia \LaTeX\
}

În general data se exclude din titlul paginii folosind comanda \date{} fără a furniza o dată anume. Omiterea acestei comenzi are ca rezultat implicit introducerea datei curente (cu comanda \today) în fişierul sursă.

Pentru a forma o pagină de titlu, folosiţi comanda

\maketitle

Aceasta ar trebui să urmeze comenzilor menţionate mai devreme (care pot fi situate şi de multe ori sunt înainte de begin{document}, în preambul). În cazul celor mai multe stiluri de documente, această comandă va forma o pagină separată de titlu, în vreme ce stilul de document article va plasa titlul la începutul primei pagini. Notaţi că mediul abstract (rezumat) ar trebui să preceadă comanda \maketitle în documentele AMS.

Notele de subsol din pagina de titlu pot fi specificate cu comanda \thanks. Spre exemplu, puteţi adăuga

\author{John Doe\thanks{Finanţat cu o bursă de la NASA \#42}}

Comanda \thanks poate fi folosită şi în cadrul comenzii \title.

Depinde de clasa de documente ce comenzi pot fi folosite în pagina de titlu generată de comanda \maketitle. Spre exemplu, pachetul amsart foloseşte comenzi ca \address, \dedicatory, \email şi altele în pagina de titlu, în timp ce alte clase pot folosi numai comanda \title.

Pagini personalizate de titlu

Crearea titlului

În mod normal, avantajul utilizării LaTeX în locul programelor tradiţionale de procesare de cuvinte este că LaTeX îţi permite să te concentrezi asupra conţinutului, ocupându-se el de ajustarea marginilor, alinierea în pagină şi de alte probleme legate de redactare. Pe de altă parte, dacă vrei să scrii propriul format pentru titlu, e exact pe dos: trebuie să ai grijă de fiecare lucru — de data asta LaTeX nu va face nimic ca să te ajute. Poate fi dificil să creezi propriul format de titlu de vreme ce LaTeX nu a fost făcut să fie interactiv în modul grafic în ce priveşte ajustarea aranjării în pagină. Procesul este similar cu lucrul direct cu cod HTML, cu excepţia faptului că de fiecare dată când vrei să vezi rezultatul, trebuie să recompilezi sursa. Deşi acest lucru pare să fie un inconvenient major, avantajul este că odată ce noul format de titlu a fost scris, poate servi drept model pentru toate celelalte documente care folosesc acelaşi format de titlu. Cu alte cuvinte, îndată ce aveţi un layout care vă place, îl puteţi folosi în orice alte documente aţi dori să aveţi acel layout fără să fie necesare ajustări adiţionale.

Primul pas: deoarece veţi lucra doar la prima pagină a documentului şi va trebui să compilaţi foarte des, nu trebuie să compilaţi tot documentul de fiecare dată, e de ajuns să vă uitaţi la prima pagină. De aceea vom crea mai întâi un document de formă pentru a pregăti titlul şi apoi îl vom include pur şi simplu în documentul principal deja existent pe care îl scriem. Să numim documentul cu titlul titlu_test.tex şi să scriem în el următoarea secvenţă de cod:

\documentclass[pdftex,12pt,a4paper]{report}

\usepackage[pdftex]{graphicx}

\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}

\begin{document}

\input{./titlu.tex}
\end{document
}

Acesta urmează a fi compilat cu comanda pdflatex pentru a crea un PDF. Este un document foarte simplu, însă ţineţi cont că are aceleaşi setări ca şi documentul pe care-l scrieţi, astfel că includerea titlului în document nu va schimba rezultatul. În acest caz (vezi prima linie) mărimea fontului este fixată la 12pt, iar mărimea paginii la A4. Pachetul graphicx este inclus pentru a putea insera o imagine în titlu. Apoi definim o comandă numită \HRule; tot ce va face aceasta va fi să insereze o linie orizontală de lungime egală cu pagina şi de grosime 0,5 mm. Dacă vreţi, puteţi să-i schimbaţi setările în definiţie. În cele din urmă, documentul efectiv începe şi nu face decât să includă fişierul titlu.tex, care trebuie să fie în acelaşi director cu fişierul nostru de testare titlu_test.tex.

Acum creaţi fişierul titlu_test.tex şi scrieţi în el:

\begin{titlepage}


\end{titlepage
}

Toate lucrurile pe care vreţi să le puneţi în titlu trebuie să fie înăuntrul secvenţei determinate de mediul titlepage. Acum, dacă compilaţi titlu_test.tex, veţi vedea cum arată noul titlu în fişierul titlu_test.pdf. Iată ce trebuie să ştiţi ca să scrieţi titlul:

Aliniere 
dacă vreţi să centraţi un text folosiţi \begin{center} ... \end{center}. Dacă vreţi să-l aliniaţi altfel, folosiţi mediul flushleft pentru aliniere la stânga şi flushright pentru aliniere la dreapta.
Imagini 
comanda pentru includerea de imagini este următoarea (exemplul este pentru un logo mic, însă puteţi introduce orice imagine de orice dimensiune):

\includegraphics[width=0.15\textwidth]{./logo}

Nu scrieţi \begin{figure} aşa cum faceţi de obicei întrucât nu vreţi ca figura să fie mobilă, vreţi doar să o fixaţi în locul specificat. Când scrieţi setările pentru imagine, reţineţi că sistemul TeX o consideră doar o căsuţă mai mare.

Mărimea textului 
Dacă vreţi să modificaţi dimensiunea unui text, puneţi-l între acolade {aşa}, şi atunci puteţi folosi următoarele comenzi (în ordinea descrescătoare a mărimii): \Huge, \huge, \LARGE, \Large, \large, \small, \footnotesize, \scriptsize, \tiny. De exemplu:

{\large acest text este ceva mai mare decât textul normal}, acesta nu

\normalsize se foloseşte pentru a scrie text la dimensiunea implicită (normală) a documentului.
Linii noi 
puteţi forţa începutul unei linii noi prin \\. Dacă vreţi să adăugaţi mai mult spaţiu vertical, nu trebuie să folosiţi mai multe comenzi pentru a insera linii noi, doar menţionaţi dimensiunea spaţiului vertical dorit. Spre exemplu, \\[1cm] va pune un spaţiu vertical de 1cm între linia curentă şi următoarea.
Data 
puteţi introduce data curentă cu comanda \today. Dacă nu vreţi să introduceţi nici o dată, nu trebuie să scrieţi nimic în şirul de caractere pentru comanda \date{}.
Umplerea paginii 
comanda \vfill adaugă spaţiu vertical până la umplerea paginii. Dacă daţi această comandă în interiorul paginii, tot textul ce îi urmează va fi scris la capătul paginii curente.

Un exemplu concret

Toate aceste sfaturi poate că v-au creat confuzie. Aşadar, iată un exemplu concret de aplicare a acestora. Uitaţi-vă peste titlu_test.tex descris mai devreme. Iată aici un exemplu pentru titlu.tex. În partea dreaptă puteţi vedea rezultatul compilării fişierului titlu_test.tex în format PDF:

\begin{titlepage}

 \begin{center
}


  % Partea superioară a paginii
  \includegraphics[width=0.15\textwidth]{./logo}\\[1cm]    

  \textsc{\LARGE University of Beer}\\[1.5cm]

  \textsc{\Large Final year project
}\\[0.5cm]

  % Titlu
  \HRule \\[0.4cm]
  {\huge \bfseries Lager brewing techniques}\\[0.4cm]

  \HRule \\[1.5cm]

  % Autor şi supervizor
  \begin{minipage}{0.4\textwidth}
   \begin{flushleft} \large
    \emph{Author:}\\
    John \textsc{Smith}
   \end{flushleft}
  \end{minipage}
  \begin{minipage}{0.4\textwidth}
   \begin{flushright} \large
    \emph{Supervisor:} \\
    Dr.~Mark \textsc{Brown}
   \end{flushright}
  \end{minipage
}

  \vfill

  % Partea de jos a paginii
  {\large \today}

 \end{center}

\end{titlepage
}

Latex wikibook test title.png

Imaginea este dintr-un fişier numit logo.png care se găseşte în acelaşi director cu fişierele titlu.tex şi titlu_test.tex. Deoarece am vrut să scriu atât numele autorului, cât şi pe cel al supervizorului aliniate în mod corespunzător, am folosit un truc: am creat 2 mici minipagini, una la stânga şi cealaltă la dreapta. Lăţimea lor e ceva mai mică decât jumătate din lăţimea paginii (după cum vedeţi, ele sunt exact la 40% din lăţimea textului). În cadrul minipaginilor, am folosit alinieri diferite. Cu ajutorul comenzii \vfill am scris data exact la capătul paginii.

După cum vedeţi, codul arată mai urât decât sursa LaTeX standard întrucât trebuie să formataţi şi outputul (în locul sistemului LaTeX). Dacă vă apucaţi să schimbaţi aspectul fontului, codul va fi mai puţin limpede, însă puteţi face asta: este doar pentru titlu, iar codul acesta complicat va fi izolat de restul documentului într-un fişier separat titlu.tex.

Integrarea paginii titlu

Presupunând că pagina titlu este acum conţinută într-un fişier numit titlu.tex, acesta trebuie plasat în acelaşi director cu documentul principal. Pentru a-l putea integra, trebuie să scrieţi comanda de includere \input{./title.tex} la începutul documentului. Nu uitaţi să adăugaţi şi comenzile \usepackage[pdftex]{graphicx} şi \newcommand{\HRule}{\rule{\linewidth}{0.5mm}} în preambulul secţiunii.

De exemplu, prima secţiune a documentului ar arăta în felul următor:

...
\usepackage[pdftex]{graphicx}

\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}

\begin{document}

\input{./title.tex
}
\tableofcontents
...

Gestiunea bibliografiei

Pentru orice lucrare academică/de cercetare, încorporarea referinţelor într-un document este o sarcină importantă. Din fericire, LaTeX oferă o varietate de facilităţi care fac tratarea referinţelor mult mai simplă, între care menţionăm suportul nativ pentru citarea referinţelor. Cu toate acestea, o soluţie mult mai flexibilă este oferită de programul auxiliar BibTeX (care deseori face parte din distribuţia standard LaTeX.)

BibTeX facilitează stocarea tuturor referinţelor într-o bază de date externă sub forma unui fişier text. Această bază de date poate fi legată la orice document LaTeX, şi se pot da citate legate de orice referinţă conţinută în fişier. Acest lucru este adesea mai convenabil decât includerea manuală a referinţelor la sfârşitul fiecărui document scris. Există acum o sursă bibliografică centralizată ce poate fi legată la oricâte documente dorim (scrie o dată, citeşte de mai multe ori!). Desigur, bibliografiile pot fi împărţite în oricât de multe fişiere doriţi, astfel că poate să existe un fişier care să conţină referinţe legate de Relativitatea generală şi altul referitor la Mecanica cuantică. Când scrieţi o lucrare despre Gravitatea cuantică (GC), care încearcă să lege aceste două teorii, ambele fişiere pot fi legate la document, pe lângă referinţele specifice GC.

Sistem implementat intern

Dacă scrieţi doar unul sau două documente şi nu aveţi de gând să scrieţi mai mult referitor la acelaşi subiect vreme îndelungată, poate că nu vreţi să pierdeţi timpul cu crearea unei baze de date cu referinţe pe care nu le veţi folosi nicicând. În acest caz, ar trebui să vă gândiţi să folosiţi numai suportul bibliografic de bază pe care îl pune la dispoziţie LaTeX.

LaTeX oferă un mediu numit thebibliography, pe care îl folosiţi acolo unde vreţi să apară bibliografia, lucru care înseamnă de obicei la sfârşitul documentului, chiar înainte de comanda \end{document}. Iată aici un exemplu concret:

\begin{thebibliography}{9}

 \bibitem{lamport94}
  Leslie Lamport,
  \emph{\LaTeX: A Document Preparation System}.
  Addison Wesley, Massachusetts,
  2nd Edition,
  1994.

\end{thebibliography
}

Bine, dar ce înseamnă toate astea? Primul lucru de notat este mediul bibliografic. thebibliography este un cuvânt cheie pe care LaTeX îl recunoaşte, astfel că tot ce e cuprins între etichetele de început şi de sfârşit ale mediului sunt informaţii pentru bibliografie. Argumentul opţional pe care l-am furnizat după declaraţia de început a mediului ({9}) spune sistemului LaTeX ce lăţime va avea în documentul de ieşire eticheta unui articol (spre exemplu, câte cifre maxim va putea avea numărul unei referinţe). Notaţi că acesta nu este totuşi un parametru literal, adică numărul 9 în cazul nostru, ci o lăţime de text (un caracter). Prin urmare, transmit efectiv sistemului LaTeX că voi avea nevoie numai de un caracter pentru etichetele referinţelor, ceea ce înseamnă nu mai mult de 9 referinţe numerice în total. Dacă vreţi mai mult de 9 referinţe, introduceţi un număr cu mai multe cifre, de exemplu '99', care permite cel mult 99 de referinţe.

Urmează intrarea cu referinţa efectivă. Aceasta este precedată de comanda \bibitem{cheia de citare}. Cheia de citare trebuie să fie un identificator unic pentru acea referinţă particulară, şi este deseori un grup de litere şi cifre sau alte simboluri (fără virgulă) uşor de reţinut. Eu folosesc de obicei numele de familie al autorului, urmat de ultimele două cifre ale anului apariţiei cărţii (aici lamport94). Dacă autorul a scris mai mult de o carte sau articol într-un an dat şi sunt amândouă citate ca referinţe, atunci adaug literele 'a', 'b', etc. Însă puteţi să alegeţi orice variantă vă convine. Tot ce urmează cheii este referinţa însăşi. Trebuie s-o scrieţi aşa cum vreţi să apară în document. Am pus părţile componente ale referinţei, cum sunt autorul, titlul, etc., pe linii diferite pentru lizibilitate. Aceste capete de linie sunt ignorate de LaTeX. Vreau ca titlul să fie scris cu caractere italice, aşa că am folosit comanda \emph{} pentru asta.

Citate

E foarte uşor să citezi un document dat. Acolo unde vreţi să apară citatul scrieţi: \cite{cheia de citare}, unde cheia de citare este aceea a articolului bibliografic (bibitem) pe care vreţi să-l citaţi. Când LaTeX procesează documentul, citatul va fi legat de o referinţă bibliografică şi înlocuit cu numărul acesteia. Avantajul este aici, încă o dată, faptul că LaTeX face el aceste înlocuiri. Dacă aceste înlocuiri trebuiau făcute manual, atunci adăugarea sau înlăturarea unei referinţe ar fi fost o muncă foarte grea, deoarece ar fi trebuit să renumerotaţi manual toate citatele.

În locul editoarelor WYSIWYG (What You See Is What You Get - ceea ce este afişat pe ecran va fi tipărit exact la fel la imprimantă), puteţi folosi sisteme cu formatare manuală a textului de genul \TeX{} sau \LaTeX{} \cite{lamport94}.

Referinţe mai specifice

Câteodată veţi dori poate să faceţi o referinţă la o anumită pagină, figură sau teoremă dintr-un text. Pentru aceasta puteţi folosi argumentele comenzii \cite:

\cite[p. 215]{citatul01}

Argumentul "p. 215" va fi afişat între aceleaşi paranteze drepte.

Citate multiple

Când aveţi nevoie să daţi mai multe citate odată, puteţi folosi o singură comandă \cite{}. Citatele sunt separate prin virgulă. Iată un exemplu:

\cite{citatul01,citatul02,citatul03}

Rezultatul va fi că citatele vor fi afişate între aceleaşi paranteze drepte.

Nici un citat

Dacă vreţi ca o referinţă să apară numai în bibliografie, însă nu de unde se face trimiterea în textul documentului, atunci puteţi folosi comanda \nocite{} ca în exemplul următor:

Lamport a arătat în 1995 ceva...  \nocite{lamport95}.

O versiune specială a comenzii, \nocite{*}, include toate intrările din baza de date, fie că sunt făcute trimiteri la ele în document sau nu.

Natbib

Utilizând suportul standard pentru bibliografie din LaTeX, veţi observa că fiecare referinţă este numerotată şi fiecare citat corespunde numerelor. Stilul numeric al citatelor este foarte întâlnit în lucrările ştiinţifice. În alte discipline, stilul autor-an, de exemplu, (Roberts, 2003), de genul Harvard, este preferat, şi de fapt devine tot mai răspândit în publicaţiile ştiinţifice. Nu vom argumenta aici în favoarea unui stil sau a altuia, însă puteţi obţine un astfel de output folosind pachetul natbib. De fapt, acesta poate înlocui comenzile de citare ale sistemului LaTeX, deoarece Natbib permite utilizatorului să facă uşor trecerea de la sistemul Harvard la cel numeric şi invers.

Primul lucru pe care trebuie să-l faceţi este la includeţi pachetul natbib în preambul:

\usepackage{natbib}

Comenzi Natbib
Comanda de citare Output
\citet{goossens93} Goossens et al. (1993)
\citep{goossens93} (Goossens et al., 1993)
\citet*{goossens93} Goossens, Mittlebach şi Samarin (1993)
\citep*{goossens93} (Goossens, Mittlebach şi Samarin, 1993)
\citeauthor{goossens93} Goossens et al.
\citeauthor*{goossens93} Goossens, Mittlebach şi Samarin
\citeyear{goossens93} 1993
\citeyearpar{goossens93} (1993)
\citealt{goossens93} Goossens et al. 1993
\citealp{goossens93} Goossens et al., 1993

De asemenea, trebuie să modificaţi fişierul ce conţine stilul bibliograiei, astfel că va trebui să înlocuiţi linia corespunzătoare de la sfârşitul fişierului cu: \bibliographystyle{plainnat}. Odată ce aţi făcut asta, nu trebuie decât să modificaţi comenzile existente de citare \cite din document pentru a afişa tipul de citat pe care îl doriţi.

Comenzile principale adaugă t de la 'textual' sau p de la 'parenteze', la comanda \cite de bază. Observaţi de asemenea cum Natbib implicit comprimă referinţele cu 3 sau mai mulţi autori la forma mai concisă primul nume et al. Adăugând un asterisc (*), puteţi suprascrie acest comportament implicit şi lista toţi autorii pentru acel citat. Natbib suportă şi alte comenzi specializate, care sunt afişate în acest tabel.

Ultimele lucruri pe care vreau să le spun despre Natbib se referă la personalizarea stilului de citare. Comanda \bibpunct poate înlocui valorile implicite şi schimba anumite setări. Spre exemplu, am scris următoarele în preambul:

\bibpunct{(}{)}{;}{a}{,}{,}

Comanda necesită 6 parametri obligatorii.

Stiluri compatibile Natbib
Stil Sursă Descriere
plainnat În pachetul de bază versiune compatibilă natbib pentru plain
abbrvnat În pachetul de bază versiune compatibilă natbib pentru abbrv
unsrtnat În pachetul de bază versiune compatibilă natbib pentru unsrt
apsrev pagina REVTeX 4 stil compatibil natbib cu revistele Physical Review
rmpaps pagina REVTeX 4 stil compatibil natbib cu revistele Review of Modern Physics
IEEEtranN intrare în catalogul TeX stil compatibil natbib cu publicaţiile IEEE
achemso intrare în catalogul TeX stil compatibil natbib cu revistele American Chemical Society
rsc intrare în catalogul TeX stil compatibil natbib cu revistele Royal Society of Chemistry
  1. Simbolul pentru paranteza deschisă '('.
  2. Simbolul pentru paranteza închisă ')'.
  3. Simbolul care apare între citatele multiple ';'.
  4. Al patrulea argumnet este o literă:
    • n - stil numeric.
    • s - stil numeric tip exponent (superscript).
    • orice altă literă - stilul autor-an.
  5. Semnul de punctuaţie ce va apare între autor şi anul publicării (numai pentru cazul cu paranteze).
  6. Semnul de punctuaţie folosit între ani, la citatele multiple când există un autor comun, de exemplu, (Chomsky 1956, 1957). Dacă vreţi să introduceţi un spaţiu suplimentar, trebuie să scrieţi {,~}.

După cum vedeţi, acest pachet este foarte flexibil, mai ales pentru că puteţi trece de la un stil de citare la altul prin modificarea unui singur parametru. Uitaţi-vă peste manualul Natbib, este un document scurt şi puteţi învăţa mai multe despre utilizarea natbib.

BibTeX

Am introdus mai devreme ideea de a scrie referinţele la sfârşitul documentului, iar apoi de a folosi comanda \cite pentru a le cita în textul documentului. În acest tutorial, vreau să vă prezint o metodă mai bună, mai flexibilă. De aceea vreau să vă vorbesc acum despre utilizarea BibTeX.

O bază de date BibTeX este stocată sub forma unui fişier cu extensia .bib. Este un fişier text, astfel că poate fi vizualizat şi editat cu uşurinţă. Structura fişierului este şi ea foarte simplă. Iată un exemplu de articol BibTeX:

@article{greenwade93,
    author  = "George D. Greenwade",
    title   = "The {C}omprehensive {T}ex {A}rchive {N}etwork ({CTAN})",
    year    = "1993",
    journal = "TUGBoat",
    volume  = "14",
    number  = "3",
    pages   = "342--351"
}

Fiecare intrare începe cu declaraţia tipului referinţei, sub forma @type. BibTeX cunoaşte practic toate tipurile la care vă puteţi gândi, între care mai întâlnite sunt: book (carte), article (articol), iar pentru lucrările prezentate la conferinţe, inproceedings. În exemplul de faţă, am făcut referire la un articol dintr-o revistă.

După tip, trebuie să fie o acoladă de deschidere '{', care semnifică începutul atributelor referinţei. Primul urmează imediat după acoladă, care este cheia de citare. Această cheie trebuie să fie unică pentru toate intrările din bibliografie. Acest identificator este acela pe care-l veţi folosi în document pentru a face trimiteri la referinţă. Depinde de tine cum vei eticheta fiecare referinţă, însă există un standard general ce specifică folosirea numelui de familie al autorului, urmat de anul publicării lucrării. Asta este şi schema folosită în tutorialul de faţă.

Apoi, e clar că ce urmează sunt câmpurile şi datele relevante pentru acea referinţă particulară. Denumirile câmpurilor din stânga sunt cuvinte cheie BibTeX. Ele sunt urmate de un semn de egalitate (=) după care se specifică valoarea acelui câmp. BibTeX se aşteaptă să marcaţi explicit începutul şi sfârşitul fiecărei valori. Eu folosesc ghilimele ("), cu toate astea, puteţi folosi şi acolade ('{', '}'). Însă după cum veţi vedea în curând, acoladele au alte roluri, în cadrul atributelor, aşa că prefer să nu le folosesc în acest scop deoarece pot să genereze confuzie. O excepţie notabilă este când vreţi să utilizaţi caractere cu umlaut (ü, ö, etc), de vreme ce notaţia acestora este în formatul \"{o}, iar ghilimelele folosite aici vor închide câmpul reprezentând valoarea atributului respectiv, determinând apariţia unei erori în analiza referinţei de către sistemul LaTeX.

Reţineţi că fiecare atribut trebuie să fie urmat de o virgulă pentru a-l delimita de următorul. Nu trebuie să puneţi virgulă după ultimul atribut, deoarece acolada de închidere va spune sistemului BibTeX că nu mai sunt atribute pentru această intrare, deşi nu este greşit dacă puneţi virgulă şi aici.

Poate dura ceva timp până învăţaţi care sunt tipurile de referinţe şi ce câmpuri are fiecare (şi care dintre acestea sunt obligatorii şi care opţionale, etc). Aşadar, uitaţi-vă peste aceste tipuri de referinţe şi peste aceste câmpuri de referinţe pentru descrierile tuturor acestor câmpuri. Poate ar fi bine să salvaţi sau să tipăriţi aceste pagini ca să vă fie la îndemână când aveţi nevoie de ele.

Autori

BibTeX poate fi foarte inteligent în ce priveşte gestionarea numelor autorilor. Poate accepta nume sub forma prenume nume de familie sau nume de familie, prenume. Eu personal o folosesc pe prima, însă reţineţi că ordinea în care le introduceţi (sau orice date din cadrul unei intrări în privinţa asta) este personalizabilă astfel încât BibTeX pote manipula intrările şi apoi genera ieşirile în forma pe care o doriţi. Dacă utilizaţi formatul prenume nume de familie, trebuie să fiţi atenţi la câteva nume speciale, spre exemplu când numele de familie este compus, ca în cazul "John von Neumann". În această formă, BibTeX presupune că ultimul cuvânt este numele de familie, şi tot ce este înainte constituie prenumele, inclusiv orice particulă intermediară. De aceea trebuie să transmiteţi explicit în cazul acesta sistemului BibTeX să ţină 'von' şi 'Neumann' împreună. Acest lucru este uşor de realizat cu ajutorul acoladelor. Astfel, acest nume trebuie scris sub forma "John {von Neumann}". O atare situaţie este uşor de evitat dacă scrieţi numele sub forma nume de familie, prenume, de vreme ce acestea sunt separate de virgulă.

În al doilea rând, trebuie să vedem cum spunem sistemului BibTeX că o referinţă are mai mulţi autori. Acest lucru este foarte uşor de făcut, punând cuvântul cheie and între oricare doi autori succesivi, ca în exemplul următor:

@book{goossens93,
    author    = "Michel Goossens and Frank Mittlebach and Alexander Samarin",
    title     = "The LaTeX Companion",
    year      = "1993",
    publisher = "Addison-Wesley",
    address   = "Reading, Massachusetts"
}

Cartea de faţă are 3 autori, oricare doi fiind separaţi după cum s-a descris mai devreme. Desigur, când BibTeX procesează aceste date şi formează rezultatul, va rămâne un singur 'and' între penultimul şi ultimul autor, însă în fişierul .bib, trebuie să fie toate aceste and-uri pentru a putea separa fiecare autor în parte.

Formate standard

@article 
Un articol (article) dintr-un ziar sau o revistă.
  • Câmpuri obligatorii: autor (author), titlu (title), revistă (journal), an (year).
  • Câmpuri opţionale: volum (volume), număr (number), pagini (pages), lună (month), notă (note).
@article{Xarticle,
    author    = "",
    title     = "",
    journal   = "",
    %volume   = "",
    %number   = "",
    %pages    = "",
    year      = "XXXX",
    %month    = "",
    %note     = "",
}
@book 
Carte (book) publicată
  • Câmpuri obligatorii: autor/editor, titlu, editură (publisher), an.
  • Câmpuri opţionale: volum/număr, serie (series), adresă (address), ediţie (edition), lună, notă.
@book{Xbook,
    author    = "",
    title     = "",
    publisher = "",
    %volume   = "",
    %number   = "",
    %series   = "",
    %address  = "",
    %edition  = "",
    year      = "XXXX",
    %month    = "",
    %note     = "",
}
@booklet 
O lucrare legată fără editură sau sponsor.
  • Câmpuri obligatorii: titlu.
  • Câmpuri opţionale: autor, modul de publicare (howpublished), adresă, lună, an, notă.
@booklet{Xbooklet,
    %author   = "",
    title     = "",
    %howpublished   = "",
    %address  = "",
    year      = "XXXX",
    %month    = "",
    %note     = "",
}
@conference 
La fel cu inproceedings
  • Câmpuri obligatorii: autor/editor, titlu, titlul cărţii (booktitle), an.
  • Câmpuri opţionale: editor, volum/număr, serie, pagini, adresă, lună, organizaţie (organization), editură, notă.
@conference{Xconference,
    author    = "",
    title     = "",
    booktitle = "",
    %editor   = "",
    %volume   = "",
    %number   = "",
    %series   = "",
    %pages    = "",
    %address  = "",
    year      = "XXXX",
    %month    = "",
    %publisher= "",
    %note     = "",
}
@inbook 
Secţiune a unei cărţi
  • Câmpuri obligatorii: autor/editor, titlu, capitol (chapter) şi/sau pagini, editură, an.
  • Câmpuri opţionale: volum/număr, serie, tip (type), adresă, ediţie, lună, notă.
@incollection 
O secţiune a unei cărţi ce are un titlu propriu.
  • Câmpuri obligatorii: autor, titlu, titlul cărţii, editură, an.
  • Câmpuri opţionale: editor, volum/număr, serie, tip, capitol, pagini, adresă, ediţie, lună, notă.
@inproceedings 
Articol în cadrul pregătirilor unei conferinţe.
  • Câmpuri obligatorii: autor, titlu, titlul cărţii, an.
  • Câmpuri opţionale: editor, volum/număr, series, pagini, adresă, lună, organizaţie, editură, notă.
@manual 
Manual tehnic
  • Câmpuri obligatorii: titlu.
  • Câmpuri opţionale: autor, organizaţie, adresă, ediţie, lună, an, notă.
@mastersthesis 
Teză de master (Master's thesis)
  • Câmpuri obligatorii: autor, titlu, şcoală (school), an.
  • Câmpuri opţionale: tip, adresă, lună, notă.
@mastersthesis{Xthesis,
    author    = "",
    title     = "",
    school    = "",
    %type     = "",
    %address  = "",
    year      = "XXXX",
    %month    = "",
    %note     = "",
}
@misc 
Format util pentru alte tipuri de publicaţii
  • Câmpuri obligatorii: nici unul
  • Câmpuri opţionale: autor, titlu, modul de publicare, lună, an, notă.
@misc{Xmisc,
    %author    = "",
    %title     = "",
    %howpublished = "",
    %year     = "XXXX",
    %month    = "",
    %note     = "",
}
@phdthesis 
Teză de doctorat (Ph.D. thesis)
  • Câmpuri obligatorii: autor, titlu, an, şcoală.
  • Câmpuri opţionale: adresă, lună, cuvinte cheie (keywords), notă.
@proceedings 
Pregătirile unei conferinţe
  • Câmpuri obligatorii: titlu, an.
  • Câmpuri opţionale: editor, volum/număr, serie, adresă, lună, organizaţie, editură, notă.
@techreport 
Raport tehnic (technical report) al unei instituţii educaţionale, comerciale sau de standardizare.
  • Câmpuri obligatorii: autor, titlu, instituţie (institution), an.
  • Câmpuri opţionale: tip, număr, adresă, lună, notă.
@techreport{Xtreport,
    author    = "",
    title     = "",
    institution = "",
    %type     = "", 
    %number   = "",
    %address  = "",
    year      = "XXXX",
    %month    = "",
    %note     = "",
}
@unpublished 
Articol, carte, teză, etc., nepublicate.
  • Câmpuri obligatorii: autor, titlu, notă.
  • Câmpuri opţionale: lună, an.

Formate nestandardizate

@patent
@colecţie (collection)
@electronic

Păstrarea literelor mari

Dacă BibTeX nu a fost configurat în aşa fel încât să păstreze toate literele mari din titluri, pot apare probleme, mai ales dacă faceţi trimiteri la substantive proprii, sau acronime. Pentru a instrui BibTeX să păstreze literele mari, folosiţi acolade în jurul literei, (sau literelor, pentru un acronim) în chestiune şi totul va fi bine! Sau puteţi pune întregul titlu între acolade:

 title = "{Compania LaTeX}"

Câteva exemple adiţionale

Urmează câteva exemple adiţionale de intrări bibliografice. Primul prezintă un caz în care sunt mai mulţi autori, ale căror nume sunt în formatul Nume de familie, Prenume, iar al doilea tratează cazul incollection.

@article{AbedonHymanThomas2003,
  author = "Abedon, S. T. and Hyman, P. and Thomas, C.",
  year = "2003",
  title = "Examinarea experimentală a evoluţiei bacteriofage în perioada latentă ca răspuns
           la disponibilitatea bacterială",
  journal = "Microbiologie aplicată şi de mediu",
  volume = "69",
  pages = "7499--7506"
}

@incollection{Abedon1994,
  author = "Abedon, S. T.",
  title = "Descompunerea şi interacţiunea dintre bacteriofagele libere şi celulele infectate",
  pages = "397--405",
  booktitle = "Biologia moleculară a celulelor bacteriofage T4",
  editor = "Karam, Jim D. Karam and Drake, John W. and Kreuzer, Kenneth N. and Mosig, Gisela
            and Hall, Dwight and Eiserling, Frederick A. and Black, Lindsay W. and
            Kutter, Elizabeth and Carlson, Karin and Miller, Eric S. and Spicer, Eleanor",
  publisher = "Editura ASM, Washington DC",
  year = "1994"
}

Dacă trebuie să citaţi un site web, puteţi folosi @misc:

@misc{website:fermentas-lambda,
      author = "Fermentas SRL",
      title = "Lambda-fage: fişă de descriere \& restricţii",
      month = "Noiembrie",
      year = 2008,
      howpublished = "\url{http://www.fermentas.com/techinfo/nucleicacids/maplambda.htm}"
}

Câmpul 'notă' este nimerit dacă trebuie să adăugaţi informaţii nestructurate, spre exemplu, faptul că numărul corespunzător al revistei urmează să apară:

@article{găurile-negre,
      author="Iepuraş, I.",
      title="Găurile negre şi legătura lor cu ascunderea ouălor",
      journal="Fizică teoretică de Paşte",
      publisher="Ouă SRL",
      year="2010",
      note="(urmează să apară)"
}

Folosirea fişierului .bib de către documentul curent LaTeX

De fapt acest lucru nu e foarte dificil. La sfârşitul fişierului LaTeX (adică după conţinut, dar înainte de \end{document}), trebuie să scrieţi următoarele comenzi:

\bibliographystyle{plain}
\bibliography{fişier_1,fişier_2,...,fişier_n
}
% Observaţi că nu sunt spaţii între virgule şi următoarele fişiere ''bib''.

Stilurile bibliografice sunt fişiere recunoscute de BibTeX şi care îi spun cum să formateze informaţiile păstrate în fişierul .bib când este procesat pentru a produce documentul final. Aşadar prima comandă afşată mai sus declară fişierul de stil ce va fi folosit. Fişierul de stil este în cazul de faţă plain.bst (care vine ca standard cu BibTeX). Nu trebuie să adăugaţi extensia .bst când folosiţi această comandă, deoarece se adaugă automat. În ciuda numelui său, stilul simplu (plain) face o treabă foarte bună (uitaţi-vă la outputul acestui tutorial ca să înţelegeţi ce vreau să spun).

A doua comandă este cea care specifică de fapt fişierul .bib pe care vreţi să-l folosiţi. Fişierele menţionate aici se numesc fişier_1.bib, fişier_2.bib, . . ., fişier_n.bib, însă încă o dată, nu includeţi extensia fişierului. Pe moment, fişierul .bib este în acelaşi director cu documentul LaTeX. Totuşi, dacă fişierul .bib este în altă parte (lucru care are sens dacă intenţionaţi să menţineţi o bază de date centralizată de referinţe pentru toate lucrările pe care vreţi să le scrieţi), trebuie să specificaţi şi calea către fişier, de exemplu \bibliography{/unde/va/fişier}.

Acum că LaTeX şi BibTeX ştiu unde să caute fişierele corespunzătoare, citarea referinţelor este un lucru trivial. \cite{cheia de citare} este comanda care vă trebuie, cu observaţia că această cheie trebuie să corespundă exact unei singure intrări în fişierul .bib. Dacă vreţi să citaţi mai mult de o referinţă în acelaşi timp, procedaţi în felul următor: \cite{cheia_1, cheia_2, ..., cheia_N}.

De ce nu generează LaTeX niciun rezultat?

BibTeX face mai complexă procesarea sursei pentru a obţine rezultatul dorit. Acest lucru este în mare măsură ascuns utilizatorului, însă din cauza complexităţii trimiterilor din fişierul sursă LaTeX la intrările din baza de date dintr-un alt fişier, trebuie să compilaţi sursa de mai multe ori, până când vor fi rezolvate toate referinţele din document. Iată comenzile pe care trebuie să le daţi:

  1. latex codul_sursă_latex (nu are nevoie de extensia .tex)
  2. bibtex codul_sursă_latex (nu folosiţi extensia .tex)
  3. latex codul_sursă_latex (nu necesită extensia .tex)
  4. latex codul_sursă_latex (nu necesită extensia .tex)

După prima comandă, veţi vedea erori de genul:

LaTeX Warning: Citation `lamport94' on page 1 undefined on input line 21.
...
LaTeX Warning: There were undefined references.

Pasul următor este rularea comenzii bibtex pentru aceeaşi sursă LaTeX (şi nu asupra fişierului .bib) pentru a defini toate referinţele din document. Ar trebui să vedeţi un output de genul:

This is BibTeX, Version 0.99c (Web2C 7.3.1)
The top-level auxiliary file: codul_sursă_latex.aux
The style file: plain.bst
Database file #1: fişier.bib

Al treilea pas, care constă în invocarea comenzii de compilare LaTeX a doua oară, va da erori precum "LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.". Nu vă alarmaţi, e aproape gata. După cum puteţi ghici, tot ce trebuie să faceţi e să urmaţi instrucţiunile şi să rulaţi comanda de compilare LaTeX a treia oară, care va genera documentul după cum era de aşteptat, fără alte probleme.

Dacă vreţi să generaţi un PDF în loc de DVI, puteţi folosi comanda pdflatex în locul comenzii latex:

  1. pdflatex codul_sursă_latex (nu are nevoie de extensia .tex)
  2. bibtex codul_sursă_latex (nu folosiţi extensia .tex)
  3. pdflatex codul_sursă_latex (nu necesită extensia .tex)
  4. pdflatex codul_sursă_latex (nu necesită extensia .tex)

Notaţi că dacă editaţi sursa cu programul vim şi încercaţi să folosiţi modul de rulare de comenzi şi shortcut-ul pentru fişierul curent (%) pentru a procesa documentul, ca în exemplul de mai jos:

  1. :! pdflatex %
  2. :! bibtex %

veţi obţine o eroare de genul:

  1. I couldn't open file name 'fişierul_curent.tex.aux'

S-ar părea că extensia fişierului este inclusă automat când se execută comanda pentru fişierul curent (%). Pentru a procesa documentul cu vim, trebuie să furnizaţi explicit numele fişierului fără extensie ca să meargă comanda bibtex, ca în exemplul următor:

  1. :! pdflatex %
  2. :! bibtex codul_sursă_latex (fără extensie, după cum s-a precizat mai devreme)
  3. :! pdflatex %
  4. :! pdflatex %

Stiluri de bibliografie

Puteţi vedea mai jos 3 stiluri de bibliografie disponibile în LaTeX:

plain
abbrv
alpha


Pentru a numerota referinţele în ordinea apariţiei lor în locul ordinii alfabetice implicite, folosiţi ieeetr :

    \bibliographystyle{ieeetr}


Găsiţi mai multe exemple la pagina http://www.cs.stir.ac.uk/~kjt/software/latex/showbst.html.

Cum includeţi URL-uri în bibliografie

După cum aţi observat, nu este niciun câmp pentru URL-uri. O posibilitate ar fi să includeţi adresele de Internet în câmpul howpublished pentru @misc sau în câmpul note pentru @techreport, @article, @book:

howpublished = "\url{http://www.example.com}"

Uitaţi-vă peste utilizarea comenzii \url pentru a asigura afişarea corespunzătoare a URL-urilor.

O altă modalitate ar fi să utilizaţi câmpul special url şi să faceţi stilul bibliografiei să-l recunoască:

url = "http://www.example.com"

Trebuie să folosiţi \usepackage{url} în primul caz şi \usepackage{hyperref} în al doilea.

Stilurile oferite de Natbib (vezi mai jos) au acest câmp, alte stiluri pot fi modificate cu ajutorul programului urlbst. Acesta poate face modificări la 3 stiluri standard (plain, abbrv şi alpha).

Dacă vreţi să ştiţi mai multe despre includerea URL-urilor în bibliografie, visitaţi FAQ of UK List of TeX.

Modificarea aspectului bibliografiei

Unul din principalele avantaje ale BibTeX, mai ales pentru oamenii care scriu multe lucrări de cercetare, este abilitatea de a modifica bibliografia pentru a o adapta la cerinţele unei anumite publicaţii. Veţi vedea că diverse publicaţii au tendinţa să-şi formeze propriul stil de formatare a referinţelor, la care autorii trebuie să se conformeze dacă vor să-şi publice manuscrisele. De fapt, revistele cunoscute şi organizatorii de conferinţe deseori au propriul stil de bibliografie (un fişier .bst) pentru utilizatorii BibTeX, care face toată munca grea în locul vostru.

Lucrul acesta poate fi realizat datorită naturii bazei de date bibliografice (a fişierului .bib), în care toate informaţiile despre referinţe se păstrează într-un format structurat, însă fără informaţii despre stil. Aceasta este o temă comună în LaTeX în general, prin care se încearcă pe cât de mult posibil să se separe conţinutul de prezentare.

Un fişier cu stilul bibliografic (.bst) va spune sistemului LaTeX cum să formateze fiecare atribut, în ce ordine să le aranjeze, ce semne de punctuaţie să folosească între atribute, etc. Din păcate, crearea manuală a unui astfel de stil nu este o sarcină uşoară. De aceea vom folosi programul makebst (cunoscut şi sub numele de custom-bib — bibliografie personalizată).

Makebst poate fi folosit pentru a genera automat un fişier .bst conform specificaţiilor date. Este foarte simplu, şi vă cere de fapt să răspundeţi la o serie de întrebări legate de preferinţele pe care le aveţi. La sfârşit, va genera un fişier de stil corespunzător.

Acest program ar trebui să facă parte din distribuţia LaTeX pe care o aveţi instalată (altfel, puteţi să-l luaţi de pe net) şi este foarte simplu de pornit. În terminal, scrieţi:

latex makebst

LaTeX va găsi fişierul relevant şi va începe procesul de chestionare. Va trebui să răspundeţi la o serie de întrebări (deşi, notaţi că răspunsurile implicite sunt destul de bune), ceea ce înseamnă că ar fi greu să prezentăm un exemplu în acest tutorial. Cu toate acestea, este relativ simplu. Iar dacă vă trebuie mai multe îndrumări, puteţi consulta manualul disponibil. Vă recomand să-l încercaţi şi să vedeţi ce rezultate obţineţi când procesaţi un document LaTeX cu noul fişier de stil.

Dacă folosiţi un fişier separat .bst, este important ca LaTeX să-l poată găsi! Aşadar, aveţi grijă să fie în acelaşi director cu fişierul sursă LaTeX, în afară de cazul în care folosiţi unul dintre fişierele standard de stil (cum sunt plain sau plainnat, care fac parte din distribuţia LaTeX — acestea vor fi găsite automat în directoarele de instalare. De asemenea, asiguraţi-vă că aţi furnizat numele fişierului .bst ca argument al comenzii \bibliographystyle{stil} (însă fără extensia .bst).

Adaptarea aspectului bibliografiei la specificul local

Când scrieţi documente în altă limbă decât engleza, veţi dori poate să adaptaţi aspectul bibliografiei la limba în care scrieţi. Asta vizează cuvinte ca editori, şi sau în, ca şi un aspect tipografic corespunzător. Puteţi folosi pachetul babelbib în cazul acesta. Spre exemplu, ca să scrieţi bibliografia în germană, adăugaţi următoarele comenzi în preambul:

\usepackage[fixlanguage]{babelbib}
\selectbiblanguage{german
}

Altfel, puteţi seta fiecare intrare din bibliografie potrivit limbii documentului citat:

\usepackage{babelbib}

Limba specifică unei intrări din bibliografie se specifică sub forma unui câmp adiţional la intrarea BibTeX:

@article{mueller08,
  % ...
  language = {german}
}

Pentru ca a putea utiliza pachetul babelbib, trebuie să folosiţi un stil bibliografic suportat de acesta — babplain, babplai3, babalpha, babunsrt, bababbrv sau bababbr3:

\bibliographystyle{babplain}
\bibliography{fişier_bibtex
}

Obţinerea datelor bibliografice

Multe baze de date online oferă date bibliografice în format BibTeX, făcând mai uşoară munca de creare a propriei baze de date. De exemplu, Google Scholar oferă opţiunea de a returna un rezultat formatat în mod corespunzător, însă trebuie pornită de la Preferinţe.

Reţineţi faptul că bazele de date bibliografice sunt deseori produsul mai multor generaţii de procesare automată, astfel încât codul BibTex rezultat poate prezenta o serie de erori minore, mai ales în cazul intrărilor mai vechi.

Programe utile

Vezi şi Comparaţie între programele de gestiune a referinţelor .

JabRef
BibDesk
  • Mendeley este un program academic gratuit pentru gestionarea de PDF-uri, care poate administra o bibliografie în Open Office şi citi BibTeX.
  • Zotero este un program gratuit şi open-source de gestiune a referinţelor integrat ca plugin pentru Firefox, capabil să importe şi să exporte fişiere bib.
  • Referencer este o aplicaţie Gnome pentru organizarea documentelor şi referinţelor, care poate genera un fişier bibliografic BibTeX.
  • Citavi este un program comercial (cu o versiune gratuită limitată) care chiar caută în biblioteci de date după citate şi păstrează toate cunoştinţele într-o bază de date. Aceasta poate fi exportată sub diverse formate. Merge cu MS Word şi Open Office Writer. Mai mult, există plugin-uri pentru browsere şi pentru Acrobat Reader, care includ automat referinţe la proiecte.
  • JabRef este un mic program Java care permite editarea facilă a fişierelor BibTeX şi altor baze de date bibliografice, ocupându-se de cele mai multe detalii pentru voi.
  • Bibliographer este un editor pentru bazele de date BibTeX proiectat să fie uşor de folosit. Între trăsăturile sale se includ legarea fişierelor de intrările bibliografice cu suport pentru indexare şi căutarea în baza de date. Interfaţa permite o navigare facilă a bibliografiei, un dublu clic pe o înregistrare deschizând fişierul bibliografic corespunzător.
  • cb2Bib este un program ce permite extragerea rapidă de informaţii neformatate, sau de referinţe bibliografice nestandardizate din alerte de email, pagini Web şi fişiere PDF.
  • KBibTeX este un editor de BibTeX pentru KDE pentru a edita bibliografiile folosite de LaTeX. Între facilităţile oferite se numără măşti pentru datele de intrare, demararea interogaţiilor web (de exemplu Google sau PubMed) şi exportarea sub formă de PDF, PostScript, RTF şi XML/HTML. Deoarece KBibTeX foloseşte tehnologia KParts din KDE, KBibTeX poate fi încorporat în Kile sau Konqueror.
  • KBib este încă un editor de BibTeX pentru KDE. Prezintă facilităţi similare, şi o interfaţă puţin diferită. Acestea includ generarea de referinţe BibTeX din fişiere PDF, text, DOI, arXiv şi ID-uri PubMed. Se oferă de asemenea suport pentru interogări Web către Google Scholar, PubMer, arXiv şi un număr de alte servicii.
  • Bibwiki este o pagină specială pentru ca MediaWiki să gestioneze bibliografii BibTeX. Oferă de asemenea un mod simplu de a importa şi exporta articole de bibliografie.
  • BibDesk este un program de gestiune a referinţelor bibliografice pentru Mac OS X. Prezintă o interfaţă foarte uşor de folosit şi oferă un număr de facilităţi precum directoare inteligente bazate pe cuvinte cheie şi afişaj tex.
  • CiteULike este un serviciu online gratuit pentru organizarea lucrărilor academice. Poate exporta citatele în format BibTeX şi poate lua date BibTeX de pe multe site-uri web cunoscute.
  • Bibtex este un plugin DokuWiki ce permite includerea de citate formatate bibtex în pagini DokuWiki şi le afişează în format APA. Notă: acest plugin este vulnerabil la un atac XSS. http://www.dokuwiki.org/plugin:bibtex
  • BibSonomy — un sistem gratuit de stocare a adreselor de documente (social bookmark) şi de gestiune a publicaţiilor bazat pe BibTeX.
  • Synapsen — Hypertextual Card Index / Reference Manager (program de gestiune a referinţelor) cu suport special pentru BiBTeX / biblatex, scris în Java.

Rezumat

Deşi nu durează mult să învăţaţi să lucraţi cu BibTeX, pe termen lung, se va dovedi un mod eficient de a vă gestiona referinţele. Puteţi găsi pe site-uri Web fişiere .bib ce conţin propriile publicaţii ale unor autori, sau opere relevante dintr-un anumit domeniu, etc. Sau în acele baze de date bibliografice online, de dimensiuni foarte mari, găsiţi deseori versiuni BibTeX de publicaţii, pe care le puteţi copia uşor într-un fişier .bib!

Păstrarea tuturor referinţelor într-un singur loc se poate dovedi un mare avantaj. Iar păstrarea lor într-o formă structurată, lucru ce permite obţinerea unui output personalizat, este încă un avantaj. Se găsesc o mulţime de programe gratuite care vă pot încărca fişierele .bib, care permit vizualizarea acestora într-o manieră mai eficientă, ca şi sortarea lor şi controlul erorilor.

Bibliografia în tabla de materii

Dacă scrieţi o carte (book) sau redactaţi un raport (report), veţi insera probabil bibliografia folosind comenzi de genul:

\begin{thebibliography}{99}
 \bibitem{bib:o_carte} ceva informaţii
 \bibitem{bib:un_articol} alte informaţii
\end{thebibliography
}

Aceste comenzi vor crea un output sub formă de capitole, afişând în mod corespunzător toate referinţele. Deşi arată ca un capitol, nu va fi tratat ca atare, prin urmare nu va apare în Cuprinsul de la începutul documentului. Dacă vreţi ca bibliografia să apară în Cuprins, adăugaţi următoarele două linii înainte de mediul thebibliography:

\clearpage
\addcontentsline{toc}{chapter}{Bibliografie}

(SAU dacă scrieţi un articol)

Prima comandă termină paragraful sau pagina curentă. Dacă scrieţi o carte (book), folosiţi comanda \cleardoublepage pentru ca bibliografia să înceapă la următoarea pagină impară. A doua comandă va adăuga o linie la Tabla de materii (prima opţiune, toc), va fi ca cele create de capitole (a doua opţiune, chapter), iar al treilea argument va fi afişat pe linia corespunzătoare în Cuprins. Dacă importaţi bibliografia dintr-un fişier bib separat, adăugaţi aceste comenzi între liniile \bibliographystyle şi \bibliography.

Mediul thebibliography va scrie automat textul Bibliography în document la începutul bibliografiei, însă la cuprins va apare textul ales în comanda de mai sus (al treilea argument). Puteţi face să apară acelaşi text şi în document, folosind comanda \renewcommand\refname{Bibliografie} în preambul (\bibname pentru carte sau raport).

Dacă utilizaţi pachetul hyperref, trebuie să folosiţi şi comanda \phantomsection pentru a permite un hyperlink din Cuprins către bibliografie.

\clearpage
\phantomsection
\addcontentsline{toc}{chapter}{Bibliography}

Acest truc este deosebit de util când trebuie să inseraţi bibliografia în Cuprins, însă merge pentru orice. Când LaTeX întâlneşte codul de mai sus, va înregistra informaţiile după cum s-a descris mai sus şi numărul paginii curente, inserând o linie nouă în pagina de Cuprins.

Adăugaţi bibliografia la Cuprins ca articol numerotat

Dacă vreţi ca bibliografia să fie o secţiune sau un capitol numerotate, veţi aplica probabil metoda următoare:

\cleardoublepage % această comandă este necesară dacă scrieţi o carte, pentru
                 % ca bibliografia să înceapă pe o pagină nouă corespunzătoare
                 % folosiţi \clearpage pentru articol sau "oneside" pentru carte
\renewcommand*{\refname}{} % la Cuprins nu va apare un titlu al bibliografiei,
\section{Bibliografie}     % astfel că puteţi pune un titlu normal de secţiune
                           % înainte de intrările bibliografice
\begin{thebibliography}{99}
...
\end{thebibliography}

O altă soluţie, chiar mai uşoară, este să folosiţi \section în cadrul blocului \renewcommand:

\renewcommand{\refname}{\section{Surse}} % "Surse" este titlul secţiunii
\begin{thebibliography}{99}
...
\end{thebibliography}

Puteţi folosi \renewcommand*{\refname}{\vspace*{-12mm}} pentru a înlătura spaţiul suplimentar introdus de comanda \refname.

  • Notă: Folosiţi \bibname în loc de \refname pentru clasele carte şi raport.

Tabele

În lucrările academice, tabelele sunt întâlnite la tot pasul, fiind deseori folosite pentru rezumarea rezultatelor din cercetare. Este bine deci să învăţaţi să lucraţi cu tabele, dacă vreţi produceţi lucrări de calitate.

Totuşi, dacă există un domeniu din LaTeX cel mai puţin intuitiv, atunci acesta este. Tabelele simple nu necesită un efort prea mare, însă veţi observa curând că orice lucru mai avansat poate solicita eforturi substanţiale. Aşadar, vom începe cu lucrurile simple şi vom înainta pas cu pas.

Soluţie alternativă: S-ar putea să economisiţi foarte mult timp convertind tabele din foile de calcul OpenOffice cu ajutorul unor plugin-uri open source, vezi de exemplu http://calc2latex.sourceforge.net/.

Mediul tabular

Mediul tabular poate fi folosit pentru redactarea de tabele cu linii orizontale şi verticale opţionale. LaTeX determină automat lăţimea coloanelor.

Prima linie a mediului are forma: \begin{tabular}[poz]{specificaţii tabel}

Argumentul cu specificaţiile tabelului spune sistemului LaTeX ce aliniere să folosească pentru fiecare coloană şi liniile verticale pe care trebuie să le insereze.

Nu trebuie specificat numărul de coloane, deoarece acesta este dedus din numărul de argumente furnizate. Puteţi de asemenea să adăugaţi aici şi linii verticale între coloane. Puteţi folosi următoarele simboluri pentru a descrie coloanele tabelului (unele necesită includerea pachetului array):

l coloană aliniată la stânga
c coloană centrată
r coloană aliniată la dreapta
p{lăţime} coloană paragraf cu textul aliniat vertical sus
m{lăţime} coloană paragraf cu textul aliniat vertical la mijloc (necesită pachetul array)
b{lăţime} coloană paragraf cu textul aliniat vertical jos (necesită pachetul array)
| linie verticală
|| linie verticală dublă

Implicit, dacă textul unei coloane este prea lat pentru pagină, LaTeX nu-l va împărţi automat pe mai multe linii. Cu ajutorul parametrul p{lăţime}, puteţi defini un tip special de coloană, care va cuprinde textul ca într-un paragraf normal. Puteţi pasa lăţimea folosind orice unitate suportată de LaTeX, cum ar fi pt, px, mm sau cm, sau comenzi pentru lungime, cum este \textwidth. Găsiţi o listă completă în anexe Macrouri utile pentru măsurare.

Parametrul opţional poz poate fi folosit pentru a specifica poziţia verticală a tabelului faţă de poziţia textului înconjurător. În cele mai multe cazuri, nu veţi avea nevoie de această opţiune. Devine relevantă numai dacă tabelul nu face parte el însuşi dintr-un paragraf. Puteţi folosi următoarele litere pentru opţiune:

b jos (bottom)
c centru (implicit)
t sus (top)

În prima linie aţi scris câte coloane vreţi, alinierea lor şi liniile verticale care le separă. În cadrul textului controlat de acest mediu, trebuie să scrieţi textul pe care-l doriţi, separând coloanele şi introducând manual linii noi (pentru a trece la rândul următor). Trebuie să folosiţi următoarele comenzi:

& separator de coloane
\\ începe un rând nou (puteţi specifica un spaţiu adiţional după \\, folosind paranteze drepte, spre exemplu \\[6pt])
\hline linie orizontală
\cline{i-j} linie orizontală parţială începând cu coloana i şi terminând cu coloana j

Notaţi faptul că spaţiul alb inserat între aceste comenzi depinde doar de preferinţele utilizatorului. Eu personal adaug spaţii între comenzi ca să fac codul mai uşor de citit.

Exemple de bază

Acest exemplu arată cum se poate crea un tabel simplu în LaTeX. Este un tabel cu 3 linii şi 3 coloane, însă fără nicio linie orizontală care să separe rândurile.

\begin{tabular}{ l c r }
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
\end{tabular
}

Latex Basic table1.png

Incluzând câteva linii verticale, obţinem:

\begin{tabular}{ l | c || r | }
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
\end{tabular
}

Latex Basic table2.png

Pentru a adăuga linii orizontale înainte şi după tabel, procedăm în felul următor:

\begin{tabular}{ l | c || r | }
  \hline                       
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
  \hline  
\end{tabular
}

Latex Basic table3.png

Şi în cele din urmă, pentru a adăuga linii între toate rândurile, ca şi pentru a centra textul din tabel (observaţi utilizarea mediului centru (center) — evident, rezultatul centrării textului nu este evident în cazul acestui exemplu simplu):

\begin{center}
  \begin{tabular}{ l | c || r | }
    \hline
    1 & 2 & 3 \\ \hline
    4 & 5 & 6 \\ \hline
    7 & 8 & 9 \\
    \hline
  \end{tabular}
\end{center
}

Latex Basic table4.png

\begin{tabular}{|r|l|}
  \hline
  7C0 & hexazecimal \\
  3700 & octal \\ \cline{2-2}
  11111000000 & binar \\
  \hline \hline
  1984 & zecimal \\
  \hline
\end{tabular
}

Latex exemplu tabular cline.png

Specificarea coloanelor cu >{\comandă} şi <{\comandă}

Cu ajutorul pachetului array puteţi modifica specificaţiile coloanelor. Acest lucru se face prin intermediul argumentului mediului tabular folosind >{\comandă} pentru comenzile executate chiar înainte de fiecare coloană şi <{\comandă} pentru comenzile executate imediat după fiecare coloană. Spre exemplu, pentru a obţine o coloană în modul matematic, scrieţi: \begin{tabular}{>{$}c<{$}}. Un alt exemplu este schimbarea fontului: \begin{tabular}{>{\small}c} pentru a afişa coloana într-un font mai mic.

Argumentul specificaţiilor > şi < trebuie să fie corect echilibrat în ceea ce priveşte caracterele { şi }. Asta înseamnă că >{\bfseries} este valid, în vreme ce >{\textbf} nu va merge, iar >{\textbf{} nu este valid. Dacă aveţi nevoie să folosiţi textul tabelului ca argument (spre exemplu, utilizând comanda \textbf pentru a produce text aldin), trebuie să folosiţi comenzile \bgroup şi \egroup: >{\textbf\bgroup}c<{\egroup} produce efectul dorit. Acest procedeu se poate aplica numai pentru câteva comenzi de bază din LaTeX. Pentru alte comenzi, cum este \underline pentru a scrie text subliniat, trebuie să păstraţi temporar textul din coloană într-o căsuţă cu ajutorul comenzii lrbox. Mai întâi, trebuie să definiţi o astfel de căsuţă cu comanda \newsavebox{\boxname}, iar apoi puteţi defini:

>{\begin{lrbox}{\boxname}}%
l%
<{\end{lrbox}%
  \underline{\unhbox\boxname}}%
 }

Astfel, se salveză textul într-o căsuţă, iar apoi se ia din căsuţă cu comanda \unhbox (în felul acesta se distruge căsuţa; dacă mai e necesară, folosiţi în schimb comanda\unhcopy) şi se pasează comenzii \underline. (Pentru LaTeX2e, ar fi bine să folosiţi \usebox{\boxname} în loc de \unhbox\boxname.)

Acelaşi truc realizat cu \raisebox în loc de \underline poate forţa toate liniile dintr-un tabel să aibă aceeaşi înălţime, în locul înălţimii naturale variate ce poate apare, spre exemplu, când în text sunt termeni matematici sau exponenţi.

Iată un exemplu ce prezintă utilizarea p{...} şi >{\centering} :

\begin{tabular}{>{\centering}p{3.5cm}>{\centering}p{3.5cm}}
 Geometrie & Algebră
 \tabularnewline
 \hline
 Puncte & Adunare
 \tabularnewline
 Sfere & Înmulţire
\end{tabular
}

Notaţi utilizarea comenzii \tabularnewline în locul \\ pentru a evita apariţia unei erori Misplaced \noalign.

Împărţirea pe linii a textului din tabele

Algoritmii LaTeX pentru formatarea tabelelor au câteva deficienţe. Una dintre ele este faptul că nu vor împărţi automat pe linii textul de pe coloane, chiar dacă se depăşeşte lăţimea paginii. Pentru coloane despre care ştiţi că vor conţine text ce va trebui aranjat pe coloane de o lăţime dată, se recomandă să folosiţi atributul p şi să specificaţi lăţimea dorită a coloanei (deşi s-ar putea să fie nevoie să faceţi câteva încercări până când veţi obţine rezultatul dorit). Folosiţi atributul m pentru ca liniile de text din coloane să fie aliniate în mijlocul căsuţei ce conţine textul (numărul maxim de linii pe care va fi aranjat textul de pe fiecare coloană va determina înălţimea acestor căsuţe) şi b pentru alinierea în partea inferioară a acesteia.

Iată un exemplu concret. Codul ce urmează creează două tabele cu acelaşi conţinut; singura diferenţă este că ultima coloană a celui de-al doilea tabel are o lăţime definită de 5 centimetri, în vreme ce pentru primul tabel nu are fixată o dimensiune. Compilând acest cod:

\documentclass{article}

\usepackage[utf8x]{inputenc
} % pentru caractere româneşti
\usepackage{array} % pentru \extrarowheight

\begin{document}
 \setlength{\extrarowheight}{2pt
} % adaugă spaţiu vertical suplimentar liniilor din tabele

 Fără specificarea lăţimii pentru ultima coloană:

 \begin{center}
  \begin{tabular}{ | l | l | l | l |}
   \hline
   Ziua & Temp Min & Temp Max & Rezumat \\[2pt]
   \hline
   Luni & 11C & 22C & Zi senină cu mult soare.
   Totuşi, briza puternică va reduce temperatura. \\[2px]
   \hline
   Marţi & 9C & 19C & Noros cu ploaie, de-a lungul multor regiuni nordice.
   Timp frumos în cea mai mare parte a Scoţiei şi Irlandei de Nord,
   însă ploaia va ajunge în nordul extrem. \\[0.5mm]
   \hline
   Miercuri & 10C & 21C & Dimineaţa va continua să plouă.
   Vremea se va îmbunătăţi la începutul după-amiezii şi
   va continua să se îmbunătăţească de-a lungul serii. \\[0.5mm]
   \hline
  \end{tabular}
 \end{center}

 Cu lăţimea specificată:

 \begin{center}
  \begin{tabular}{ | l | l | l | p{5cm} |}
   \hline
   Ziua & Temp Min & Temp Max & Rezumat \\[2pt]
   \hline
   Luni & 11C & 22C & Zi senină cu mult soare.
   Totuşi, briza puternică va reduce temperatura. \\[2px]
   \hline
   Marţi & 9C & 19C & Noros cu ploaie, de-a lungul multor regiuni nordice.
   Timp frumos în cea mai mare parte a Scoţiei şi Irlandei de Nord,
   însă ploaia va ajunge în nordul extrem. \\[0.5mm]
   \hline
   Miercuri & 10C & 21C & Dimineaţa va continua să plouă.
   Vremea se va îmbunătăţi la începutul după-amiezii şi
   va continua să se îmbunătăţească de-a lungul serii. \\[0.5mm]
   \hline
  \end{tabular}
 \end{center}

\end{document
}

Veţi obţine următorul rezultat:

Latex exemplu tabel încadrare text.png

Observaţi că primul tabel este decupat: outputul depăşeşte lăţimea paginii.

Alinierea stânga-dreapta a textului în tabele

În rare ocazii, ar putea fi necesar să măriţi fiecare linie dintr-un tabel până la lăţimea naturală a celei mai lungi linii, spre exemplu când acelaşi text trebuie afişat în două limbi diferite, iar utilizatorul vrea să le prezinte unul lângă celălalt, cu liniile sincronizate. Un mediu tabelar ajută la împărţirea textului pe linii, însă nu aliniază textul stânga-dreapta, ceea ce lasă margini drepte neregulate. Pachetul eqparbox include comanda \eqmakebox, care este la fel ca \makebox, doar că, în locul unui argument width, ia o etichetă. În timpul compilării, ţine evidenţa tuturor căsuţelor \eqmakebox cu aceeaşi etichetă, memorând lăţimea maximă a textului, astfel încât să poată mări toate căsuţele până la această valoare. În combinaţie cu pachetul array, puteţi defini un specificator de coloană ce aliniază la stânga-dreapta textul de pe toate liniile: (Vezi documentaţia pachetului eqparbox pentru mai multe detalii.)

\newsavebox{\tstretchbox}
\newcolumntype{S
}[1]{%
 >{\begin{lrbox}{\tstretchbox}}%
 l%
 <{\end{lrbox}%
   \eqmakebox[#1][s]{\unhcopy\tstretchbox}}%
  }

Alte medii în tabele

Dacă folosiţi anumite medii LaTeX în celulele tabelelor, cum ar fi verbatim or enumerate

\begin{tabular}{| c | c |}
 \hline
 \begin{verbatim}
  cod
 \end{verbatim}
 & descriere
 \\
 \hline
\end{tabular
}

puteţi întâlni erori de genul

! LaTeX Error: Something's wrong--perhaps a missing \item.

Pentru a rezolva această problemă, schimbaţi specificatorul coloanei la paragraf (p, m sau b).

\begin{tabular}{| m{5cm} | c |}

Definirea mai multor coloane odată

Puteţi defini mai multe coloane identice odată cu ajutorul sintaxei *{num}{str}.

Acest lucru este deosebit de util când tabelul are multe coloane.

Iată un tabel cu 6 coloane centrate, flancate de o singură coloană de fiecare parte:

\begin{tabular}{l*{6}{c}r}
Team              & P & W & D & L & F  & A & Pts \\
\hline
Manchester United & 6 & 4 & 0 & 2 & 10 & 5 & 12  \\
Celtic            & 6 & 3 & 0 & 3 &  8 & 9 &  9  \\
Benfica           & 6 & 2 & 1 & 3 &  7 & 8 &  7  \\
FC Copenhagen     & 6 & 2 & 1 & 2 &  5 & 8 &  7  \\
\end{tabular
}

Latex example defining multiple columns.png

@-expresii

Separatorul de coloană poate fi specificat cu construcţia @{...}.

În mod tipic, aceasta ia ca argument un text, iar când se anexează la o coloană, va insera automat acest text în fiecare celulă de pe coloană înainte de datele efective pentru acea celulă. Această comandă şterge spaţiul dintre coloane şi îl înlocuieşte cu ce se găseşte între acolade. Pentru a adăuga spaţiu, folosiţi @{\hspace{lăţime}}.

Evident, aceste explicaţii nu sunt foarte clare, astfel că vor fi necesare câteva exemple pentru clarificare. Câteodată, e de dorit ca în tabelele ştiinţifice numerele să fie aliniate după punctul zecimal. Puteţi face asta în felul următor:

\begin{tabular}{r@{.}l}
  3   & 14159 \\
  16  & 2     \\
  123 & 456   \\
\end{tabular
}

\begin{align}3&.14159\\16&.2\\123&.456\end{align}


Notaţi că abordarea de mai sus nu va merge bine dacă antetul coloanei este mai lung decât oricare dintre numere. Pentru a centra coloana după punctul zecimal, folosiţi pachetul dcolumn, care oferă un nou specificator de coloană pentru datele flotante.

Suprimarea spaţiilor realizată de @-expresii le face foarte utile pentru manipularea spaţiului orizontal dintre coloane. Dat fiind un tabel de bază, variind specificaţiile coloanelor, obţinem:

\begin{tabular}{|l|l|}
  \hline
  date & date \\
  \hline
  date & date \\
  \hline
\end{tabular
}

{|l|l|}

Specificator1.png

{|@{}l|l@{}|}

Specificator2.png

{|@{}l@{}|l@{}|}

Specificator3.png

{|@{}l@{}|@{}l@{}|}

Specificator4.png

Întinderea liniilor şi coloanelor

Pentru a încheia acest tutorial, vom lucra puţin la generarea de tabele mai complexe. Deloc surprinzător, comenzile necesare trebuie incluse în datele din tabel.

Linii care se întind pe mai multe coloane

Comanda pentru asta arată în felul următor: \multicolumn{număr_coloane}{aliniere}{conţinut}. număr_coloane este numărul de coloane succesive care vor fi îmbinate pentru a fi reprezentate ca o singură coloană; aliniere este l, c, r sau o opţiune de genul p{5.0cm} . Iar conţinut reprezintă pur şi simplu datele efective care vor fi conţinute în celulă. Iată un exemplu simplu:

\begin{tabular}{|l|l|}
  \hline
  \multicolumn{2}{|c|}{Componenţa echipei
} \\
  \hline
  PT & Paul Robinson \\ % portar
  FS & Lucus Radebe \\ % fundaş stânga
  FC & Michael Duberry \\ % fundaş central
  FC & Dominic Matteo \\
  FD & Didier Domi \\ % fundaş dreapta
  MC & David Batty \\ % mijlocaş
  MC & Eirik Bakke \\
  MC & Jody Morris \\
  IN & Jamie McMaster \\
  OG & Alan Smith \\ % om de gol
  OG & Mark Viduka \\
  \hline
\end{tabular}

Multicolumn.png

Coloane care se întind pe mai multe linii

Primul lucru pe care trebuie să-l faci este să adaugi \usepackage{multirow} în preambul. Asta oferă comanda necesară pentru a întinde o celulă pe mai multe linii: \multirow{număr_linii}{lăţime}{conţinut}. Sensul argumentelor este destul de uşor de dedus (* pentru lăţime înseamnă lăţimea naturală a conţinutului).

...
\usepackage{multirow}
...

\begin{tabular}{|l|l|l|}
\hline
\multicolumn{3}{|c|}{Componenţa echipei} \\
\hline
Portar & PT & Paul Robinson \\ \hline
\multirow{4}{*}{Fundaşi} & FS & Lucus Radebe \\
 & FC & Michael Duberry \\
 & FC & Dominic Matteo \\
 & FD & Didier Domi \\ \hline
\multirow{3}{*}{Mijlocaşi} & MC & David Batty \\
 & MC & Eirik Bakke \\
 & MC & Jody Morris \\ \hline
Înaintaşi & IN & Jamie McMaster \\ \hline
\multirow{2}{*}{Om de gol} & OG & Alan Smith \\
 & OG & Mark Viduka \\
\hline
\end{tabular
}

Multirow.png

Lucrul principal de notat când folosiţi comanda \multirow este că trebuie inserată o intrare nulă pentru fiecare celulă corespunzătoare de pe fiecare linie succesivă de înlocuit.

Dacă nu sunt date pentru o celulă, nu tipăriţi nimic, însă tot vă trebuie "&" pentru a le separa de datele coloanei următoare. Cititorul atent trebuie să fi dedus deja că pentru un tabel cu n coloane, trebuie să fie întotdeauna n-1 "&" pe fiecare linie. Singura excepţie este când folosiţi \multicolumn şi \multirow pentru a crea celule care se întind pe mai multe coloane sau linii.

Celule care se întind în ambele direcţii simultan

Iată un exemplu ceva mai complex despre celule care se întind în ambele direcţii simultan, cu marginile trasate corect:

\usepackage{multirow}

\begin{tabular}{cc|c|c|c|c|l}
\cline{3-6}
& & \multicolumn{4}{|c|}{Numere prime} \\ \cline{3-6}
& & 2 & 3 & 5 & 7 \\ \cline{1-6}
\multicolumn{1}{|c|}{\multirow{2}{*}{Puteri}} &
\multicolumn{1}{|c|}{504} & 3 & 2 & 0 & 1 &     \\ \cline{2-6}
\multicolumn{1}{|c|}{}                        &
\multicolumn{1}{|c|}{540} & 2 & 3 & 1 & 0 &     \\ \cline{1-6}
\multicolumn{1}{|c|}{\multirow{2}{*}{Puteri}} &
\multicolumn{1}{|c|}{cmmdc} & 2 & 2 & 0 & 0 & min \\ \cline{2-6}
\multicolumn{1}{|c|}{}                        &
\multicolumn{1}{|c|}{cmmmc} & 3 & 3 & 1 & 1 & max \\ \cline{1-6}
\end{tabular
}

Exemplu multicolumn multirow.png

Comanda \multicolumn{1}{|c|}{...} este folosită numai pentru a trasa margini verticale la stânga şi la dreapta celulei. Chiar şi atunci când este combinată cu \multirow{2}{*}{...}, tot trasează margini verticale ce se întind numai de-a lungul primei linii. Pentru a trasa linii verticale care se întind pe mai multe linii, folosim comanda \multicolumn{1}{|c|}{...} care trebuie să includă liniile unite de comanda multirow. Notaţi faptul că nu puteţi folosi direct \hline pentru a trasa linii orizontale, întrucât nu vrem ca linia să fie trasată peste textul ce se întinde de-a lungul mai multor linii. Folosim în schimb comanda \cline{2-6} pentru a nu trasa linia de-a lungul primei coloane, ce conţine textul "Puteri".

Iată încă un exemplu ce exploatează aceleaşi idei pentru a realiza binecunoscuta dublă dihotomie "2x2":

\begin{tabular}{r|c|c|}
\multicolumn{1}{r}{}
 &  \multicolumn{1}{c}{neinteractiv}
 & \multicolumn{1}{c}{interactiv} \\
\cline{2-3}
intrări multiple & Bibliotecă & Universitate \\
\cline{2-3}
unu-la-unu & Carte & Tutorial \\
\cline{2-3}
\end{tabular
}

Latex-tabele-dublă-dihotomie-exemplu.png

Redimensionarea tabelelor

Comanda \resizebox{lăţime}{înălţime}{obiect} poate fi folosită cu tabular pentru a specifica înălţimea şi lăţimea unui tabel. Exemplul următor arată cum se poate redimensiona un tabel la 8cm lăţime, menţinând rata iniţială lăţime/înălţime.

\resizebox{8cm}{!} {
  \begin{tabular}...
  \end{tabular}
}

Ca o alternativă, puteţi folosi \scalebox{rată}{obiect} în acelaşi fel, însă cu rate în loc de dimensiuni fixe:

\scalebox{0.7}{
  \begin{tabular}...
  \end{tabular}
}

Atât \resizebox, cât şi \scalebox necesită pachetul graphicx.

Pentru a redimensiona spaţiul dintre coloane (LaTeX va alege implicit coloane foarte strânse), puteţi modifica separarea coloanelor: \setlength{\tabcolsep}{5pt}. Valoarea implicită este 6pt.

Tabele cu text scris pe lateral

Tabelele pot fi aranjate pe lateral într-un document cu ajutorul pachetului rotating şi a mediului sidewaystable care să includă tabelul. (NOTĂ: cele mai multe programe de vizualizare pentru DVI nu suportă afişarea textului rotit. Convertiţi documentul într-un PDF ca să vedeţi rezultatul. Cele mai multe, dacă nu toate, programele de vizualizare a PDF-urilor suportă textul rotit.)

\usepackage{rotating}

\begin{sidewaystable}
 \begin{tabular}
  ...
 \end{tabular}
\end{sidewaystable
}

Pentru a roti textul înăuntrul tabelului:

\usepackage{rotating}

\begin{tabular}{...}
 \begin{sideways}
  text rotit ...
 \end{sideways}
\end{tabular
}

Când doriţi să aşezaţi tabelul rotit în exact acelaşi loc în care apare în fişierul sursă (.tex), puteţi folosi pachetul rotfloat. Atunci puteţi folosi \begin{sidewaystable}[H] la fel ca pentru orice alt tabel. Opţiunea 'H' nu poate fi folosită fără acest pachet.

Culori de bază alternate în tabele

Pachetul xcolor oferă comenzile necesare pentru a realiza tabele cu culori de bază alternate, când sunt încărcate cu opţiunea table. Comanda \rowcolors{<începutul liniei>}{<culoare impară>}{<culoare pară>} trebuie specificată chiar înainte de a începe mediul tabular.

\documentclass{article}

\usepackage[table]{xcolor}

\begin{document}

\begin{center}
\rowcolors{1}{green}{pink}

\begin{tabular}{lll}
impar & impar & impar \\
par   & par   & par \\
impar & impar & impar \\
par   & par   & par \\
\end{tabular}
\end{center}

\end{document
}

LaTeX tabel culori alternate.png

Comanda \hiderowcolors dezactivează colorarea liniei specificate. Colorarea poate fi reactivată în interiorul tabelului cu comanda \showrowcolors.

Colorarea celulelor individuale

La fel ca mai sus, colorarea celulelor individuale foloseşte pachetul xcolor.

\usepackage[table]{xcolor}

\cellcolor[gray]{0.9
} % gri deschis (''gray'' este aici schema de colorare alb-negru)
\cellcolor{red} % roşu

Linii verticale parţiale

Adăugarea unei linii verticale parţiale unei celule individuale:

\begin{tabular}{ l c r }
  1 & 2 & 3 \\
  4 & 5 & \multicolumn{1}{r|}{6}  \\
  7 & 8 & 9 \\
\end{tabular
}

Partial-vertical-line-add.png

Înlăturarea unei părţi a unei linii verticale dintr-o celulă anume:

\begin{tabular}{ | l | c | r | }
  1 & 2 & 3 \\
  4 & 5 & \multicolumn{1}{r}{6} \\
  7 & 8 & 9 \\
\end{tabular
}

Partial-vertical-line-remove.png

Mediul table - ataşarea de legende, etc

Deşi mediul tabular poate crea tabele complexe, nu acoperă tot ce puteţi face cu tabelele. Spre exemplu, poate veţi dori o legendă pentru un tabel. Din acest motiv, dar şi din altele, ar trebui să plasaţi mediul tabular într-un mediu table:

\begin{table}
 \caption{Activitate la temperatura maximă}
 \begin{tabular}{| r | r || c | c | c |}
  ...
 \end{tabular}
\end{table
}

De ce există aceste două medii diferite? Gândiţi-vă în felul următor: mediul tabular se ocupă cu aranjarea elementelor într-o structură tabelară, în vreme ce mediul table reprezintă un tabel la un nivel mai conceptual. Asta explică de ce nu mediul tabular, ci table este cel care oferă posibilitatea de a ataşa legende (întrucât legenda nu se afişează în structura tabelară).

Mediul table prezintă multe similarităţi cu mediul figure, în ce priveşte tratarea elementelor "flotante", etc. Spre exemplu, poate specifica plasarea pe pagină cu opţiunea [placement], valorile valide sunt orice combinaţie de (ordinea nu este importantă):

h unde este declarat tabelul (aici — here)
t la începutul (top) paginii
b la sfârşitul (bottom) paginii
p pe o pagină dedicată de elemente flotante
! suprascrie restricţiile flotante implicite. Spre exemplu, dimensiunea maximă permisă unui element flotant b este în mod normal foarte mică; dacă vreţi o dimensiune mai mare, aveţi nevoie şi de parametrul !.

Valoarea implicită este [tbp]. Dacă vreţi să plasaţi un tabel în locul în care este declarat, nu scrieţi doar [h]; dacă tabelul nu încape (întrucât textul este aproape de sfârşitul paginii, să zicem), va fi mutat pe o pagină dedicată cu elemente flotante (ca în cazul unui element flotant p), care poate fi la ceva distanţă în document. O regulă general recomandată este să folosiţi întotdeauna htbp până la sfârşitul documentului, stadiu în care parametrii flotanţi finali pot fi mai bine rafinaţi.

Mediul table este de asemenea util când vreţi să aveţi o listă de tabele la începutul sau la sfârşitul documentului, cu ajutorul comenzii \listoftables; aceasta permite realizarea de referinţe la tabel în felul următor:

Puteţi face referire la table~\ref{tabelul_meu} pentru a vedea un exemplu.

...

\begin{table}
  \begin{tabular}
     ...
  \end{tabular}
  \caption{Un exemplu de tabel}
  \label{tabelul_meu}
\end{table
}

Mediul tabular* - controlarea lăţimii unui tabel

Acesta este în fapt o uşoară extensie a versiunii originale tabular, deşi necesită un argument în plus (înainte de descrierile coloanelor) pentru a specifica lăţimea preferată a tabelului.

\begin{tabular*}{0.75\textwidth}{ | c | c | c | r | }
  \hline
  eticheta 1 & eticheta 2 & eticheta 3 & eticheta 4 \\
  \hline
  articolul 1  & articolul 2  & articolul 3  & articolul 4  \\
  \hline
\end{tabular*
}

LaTeX lăţime tabel1.png

Totuşi, asta s-ar putea să nu arate exact aşa după cum era de aşteptat. Coloanele tot mai sunt la lăţimea lor naturală (îndeajuns de mari cât să cuprindă conţinutul), în vreme ce liniile sunt îndeajuns de mari pe cât de lat a fost specificat tabelul. Dacă nu vă place acest comportament implicit, trebuie de asemenea să inseraţi manual încă un spaţiu pentru o coloană. LaTeX are rubber lengths, care, spre deosebire de altele, nu sunt fixate (lungimi flexibile). LaTeX poate decide dinamic cât de mari ar trebui să fie aceste lungimi. Spre exemplu:

\begin{tabular*}{0.75\textwidth}{@{\extracolsep{\fill}} | c | c | c | r | }
  \hline
  eticheta 1 & eticheta 2 & eticheta 3 & eticheta 4 \\
  \hline
  articolul 1  & articolul 2  & articolul 3  & articolul 4  \\
  \hline
\end{tabular*
}

LaTeX lăţime tabel2.png

Observaţi construcţia @{...} adăugată la începutul descrierii coloanei. În cadrul acesteia se găseşte comanda \extracolsep, care necesită ă lăţime. Puteam folosi o lăţime fixă. Cu toate acestea, utilizând o lungime flexibilă, cum este \fill, coloanele sunt spaţiate automat în mod egal.

Pachetul tabularx - extinderea coloanelor

Acest pachet oferă un mediu tabelar numit tabularx, similar cu tabular*, cu excepţia faptului că are un nou specificator de coloană, X. Coloana(ele) specificat(e) cu acest specificator vor fi extinse pentru a aduce tabelul la lăţimea specificată, simplificând în mare măsură crearea tabelelor.

\usepackage{tabularx}

...

\begin{tabularx}{\textwidth}{ |X|X|X|X| }
  \hline
  eticheta 1 & eticheta 2 & eticheta 3 & eticheta 4 \\
  \hline
  articolul 1 & articolul 2 & articolul 3 & articolul 4  \\
  \hline
\end{tabularx
}

LaTeX X lăţime tabel1.png


Conţinutul căsuţelor este tratat la fel ca pentru o coloană tip paragraf p, cu excepţia faptului că lăţimea se calculează automat. Dacă folosiţi pachetul array, puteţi aplica orice comandă >{\cmd} sau <{\cmd} pentru a realiza comportamentul dorit (precum \centering sau \raggedright\arraybackslash), după cum a fost descris mai devreme.

O altă opţiune este folosirea \newcolumntype pentru a formata coloanele într-un mod specific. Aceasta defineşte un nou specificator pentru coloane, de exemplu, R. În exemplul următor, coloanele a doua şi a patra sunt ajustate într-un mod diferit (\raggedleft):

\usepackage{tabularx}
...
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\begin{tabularx}{\textwidth}{ |l|R|l|R| }
  \hline
  eticheta 1 & eticheta 2 & eticheta 3 & eticheta 4 \\
  \hline
  articolul 1 & articolul 2 & articolul 3 & articolul 4  \\
  \hline
\end{tabularx
}

LaTeX X lăţime tabel2.png


Tabularx poate fi folosit cu linii care se întind pe mai multe coloane, cu ajutorul comenzii \multicolumn. Cele două coloane centrale sunt tratate ca una singură, folosind opţiunea X@{}. Notaţi că lăţimea liniei formate de comanda \multicolumn (care în exemplul nostru este 2) ar trebui să fie egală cu lăţimea coloanelor unite (în exemplul de faţă 1+1):

\usepackage{tabularx}
...
\begin{tabularx}{1\textwidth}{|>{\setlength\hsize{1\hsize}\centering}X|>{\setlength\hsize{1\hsize}\raggedleft}X@{} >{\setlength\hsize{1\hsize}\raggedright}X|>{\setlength\hsize{1\hsize}\centering}X|}
 \hline
 Eticheta 1 & \multicolumn{2}{>{\centering\setlength\hsize{2\hsize}}X|}{Eticheta 2} &
 Eticheta 3 \tabularnewline
 \hline
 123 & 123 & 456 & 123 \tabularnewline
 \hline
 123 & 123 & 456 & 123 \tabularnewline
 \hline
\end{tabularx
}

LaTeX multicolumn tabularx.png

Imagini centrate vertical

Inserarea de imagini pe o linie a unui tabel le va alinia în partea superioară a celulei. Utilizând pachetul array, această problemă poate fi rezolvată. Definirea unui nou tip de coloană (newcolumntype) va menţine imaginea centrată vertical.

\newcolumntype{V}{>{\centering\arraybackslash} m{.4\linewidth} }

Sau folosiţi o căsuţă în modul paragraf (parbox) pentru a centra imaginea.

\parbox[c]{1em}{\includegraphics{imagine.png}}

Tabele profesionale

Multe tabele din cărţile şi revistele profesionale prezintă tabele simple, care au un spaţiu corespunzător înainte şi după linii, şi care nu folosesc aproape niciodată linii verticale. Multe exemple de tabele LaTeX (inclusiv cele din acest wikimanual) prezintă utilizarea liniilor simple (orizontale: "\hline şi verticale: "|") şi duble ("\hline\hline", respectiv "||"), considerate nenecesare şi care distrag atenţia în cazul unui format profesional pentru publicaţii. Pachetul booktabs poate oferi cu uşurinţă acest profesionalism în tabelele LaTeX, iar documentaţia aferentă vă pune la dispoziţie un ghid pentru a înţelege ce înseamnă un tabel "reuşit".

Pe scurt, pachetul foloseşte \toprule pentru linia ce marchează începutul tabelului, \midrule pentru liniile ce apar în interiorul tabelului şi \bottomrule pentru linia ce marchează sfârşitul tabelului. Asta asigură faptul că lăţimea liniei şi spaţierea sunt acceptabile. În plus, puteţi folosi \cmidrule în locul \cline pentru linii care marchează un număr specificat de coloane. Exemplul următor compară implementările uzuale din LaTeX (cu şi fără pachetul array) cu booktabs:

LaTeX uzual Cu pachetul array Cu booktabs

\begin{tabular}{llr}
\hline
\multicolumn{2}{c}{Articol} \\
\cline{1-2}
Animal & Descriere & Preţ (\$) \\
\hline
Gnat  & per gram  & 13.65 \\
      & la bucată &  0.01 \\
Gnu   & la bax    & 92.50 \\
Emu   & la bax    & 33.33 \\
Armadillo & congelat & 8.99 \\
\hline
\end{tabular
}

\usepackage{array}

...

\begin{tabular}{llr}
\firsthline
\multicolumn{2}{c}{Articol} \\
\cline{1-2}
Animal & Descriere & Preţ (\$) \\
\hline
Gnat  & per gram  & 13.65 \\
      & la bucată &  0.01 \\
Gnu   & la bax    & 92.50 \\
Emu   & la bax    & 33.33 \\
Armadillo & congelat & 8.99 \\
\lasthline
\end{tabular
}

\usepackage{booktabs}

...

\begin{tabular}{llr}
\toprule
\multicolumn{2}{c}{Articol} \\
\cmidrule(r){1-2}
Animal & Descriere & Preţ (\$) \\
\midrule
Gnat  & per gram  & 13.65 \\
      & la bucată &  0.01 \\
Gnu   & la bax    & 92.50 \\
Emu   & la bax    & 33.33 \\
Armadillo & congelat & 8.99 \\
\bottomrule
\end{tabular
}

LaTeX tabel animale.png LaTeX tabel booktabs animale.png

Poate veţi avea nevoie de note de subsol sub un tabel (şi nu la sfârşitul paginii) şi de o legendă (sau titlu) aşezate la o distanţă corespunzătoare deasupra tabelului. Aceste lucruri se pot realiza folosind pachetul ctable. Acesta oferă opţiunea inserării unui scurt titlu în lista de tabele, în locul titlului sau legendei efective (care pot fi foarte lungi sau nepotrivite pentru lista de tabele). Pachetul ctable utilizează pachetul booktabs.

Adăugarea de spaţiu deasupra şi sub liniile create de comenzile \hline şi \cline

Un mod alternativ de a ajusta spaţierea liniilor este să adăugăm \noalign{\smallskip} înainte şi/sau după comenzile \hline şi \cline{i-j}:

LaTeX uzual

\begin{tabular}{llr}
\hline\noalign{\smallskip}
\multicolumn{2}{c}{Articol} \\
\cline{1-2}\noalign{\smallskip}
Animal & Descriere & Preţ (\$) \\
\noalign{\smallskip}\hline\noalign{\smallskip}
Gnat  & per gram  & 13.65 \\
      & la bucată &  0.01 \\
Gnu   & la bax    & 92.50 \\
Emu   & la bax    & 33.33 \\
Armadillo & congelat & 8.99 \\
\hline
\noalign{\smallskip}\hline
\end{tabular
}

LaTeX tabel animale smallskip.png

Puteţi de asemenea să specificaţi explicit un spaţiu după terminatorul de linie:

\begin{tabular}{|l|l|}
\hline
Mineral & Culoare \\[1cm]
Rubin & roşu \\
Safir & albastru \\
\hline
\end{tabular
}

LaTeX tabel spaţiere explicită.png

Tabele cu mărimi diferite de fonturi

Puteţi modifica mărimea implicită a fontului pentru un tabel folosiţi pur şi simplu o comandă care setează mărimea fontului (aici: \footnotesize) după declaraţia \begin{table}...:

\begin{table}[h]\footnotesize
  \caption{Rezultate la temperatura maximă}
  \begin{tabular}{| r | r || c | c | c |}

      ...

  \end{tabular}
\end{table
}

Mărimea fontului pentru titlul sau legenda tabelului nu este afectată.

Pentru a controla mărimea fontului pentru legendă, vezi Stiluri de titluri.

Vreţi ceva mai complicat?

Uitaţi-vă peste următoarele pachete:

  • hhline: controlaţi liniile orizontale
  • array: definiţi mai uşor coloanele
  • colortbl: faceţi tabele mai colorate
  • supertabular: pentru tabele care se întind pe mai multe pagini
  • longtable: similar cu supertabular
    • Notă: notele de subsol nu merg cum trebuie într-un mediu tabelar obişnuit, însă situaţia se schimbă într-un mediu longtable
  • xtab: încă un pachet pentru tabele care trebuie să se întindă pe mai multe pagini
  • tabulary: tabular* modificat, permiţând setarea lăţimii coloanelor pentru înălţimi egale
  • arydshln: creează linii orizontale şi verticale punctate
  • ctable: permite afişarea notelor de subsol sub tabel şi a titlului sau legendei spaţiate corespunzător deasupra tabelului (încorporează pachetul booktabs)
  • slashbox: creează tabele 2D, prima celulă conţinând o descriere pentru ambele axe

Rezumat

Aici se încheie discuţia noastră despre elementele de bază privind tabelele. Experimentarea conduce repede la stăpânirea cunoştinţelor. Sintaxa tabelelor din LaTeX poate arăta destul de neîngrijit, iar exemplele noi pot crea confuzie. Însă din fericire, am acoperit destul de multe aspecte aici, suficient pentru a crea orice tabele doriţi. Deloc surprinzător, LaTeX e mult mai complex de atât, aşadar aşteptaţi-vă la un tutorial următor cu trăsături mai avansate în viitorul apropiat.

Formatare

Termenul de formatare este destul de amplu, însă în cazul de faţă trebuie să fie, deoarece această secţiune vă va ghida prin diversele tehnici de formatare a textului, paragrafelor şi paginilor. Formatarea tinde să se refere în cea mai mare măsură la lucruri legate de aspect, afişaj, lista de subiecte posibile fiind destul de eclectică: stilul de text, font, dimensiune; alinierea paragrafelor, spaţierea dintre linii, indentarea; tipuri speciale de paragrafe; structuri de tip listă; note de subsol, note de margine, etc.

Mare parte a tehnicilor de formatare sunt necesare pentru a diferenţia anumite elemente de restul textului. Este deseori necesar să scoateţi în evidenţă cuvinte cheie sau anumite expresii. O listă numerotată sau cu marcatori este de asemenea folosită ca un mod clar şi concis de a comunica o problemă importantă. Notele de subsol oferă informaţii sau clarificări suplimentare fără a întrerupe fluxul principal de text. Aşadar, din aceste motive, formatarea este foarte importantă. Totuşi, este de asemenea foarte uşor să abuzaţi de aceste facilităţi, iar un document prea bine stilizat poate arăta mai rău şi fi mai greu de înţeles decât unul fără nicio înfloritură.

Formatarea textului

Împărţirea în silabe

LaTeX împarte cuvintele în silabe oricând este necesar. Dacă algoritmul de împărţire în silabe nu găseşte punctele corecte de împărţire în silabe, puteţi remedia situaţia folosind următoarele comenzi pentru a comunica sistemului TeX excepţia. Comanda

\hyphenation{listă de cuvinte}

face cuvintele din argument să fie despărţite în silabe numai în punctele marcate de "-". Argumentul comenzii ar trebui să conţină numai cuvinte formate din litere, sau mai degrabă caractere ce sunt considerate litere de către LaTeX. Se ştie că algoritmul de împărţire în silabe nu găseşte toate punctele corecte de împărţire în silabe pentru numeroase cuvinte din vocabular. Un fişier cu excepţiile cunoscute din limba engleză este publicat periodic în revista TUGboat. (Vezi o listă recentă din 2008: http://www.tug.org/TUGboat/Articles/tb29-2/tb92hyf.pdf)

Indiciile de împărţire în silabe sunt păstrate în memorie pentru limba care este activă când se întâlneşte comanda de împărţire în silabe. Asta înseamnă că dacă plasaţi o comandă de împărţire în silabe în preambulul documentului, va influenţa împărţirea în silabe pentru limba implicită. Dacă plasaţi comanda după \begin{document} şi folosiţi un pachet pentru limba naţională de genul babel, atunci indiciile de împărţire în silabe vor fi active pentru limba activată prin intermediul pachetului. Exemplul următor permite cuvintelor "silabisire" şi "Silabisire" să fie împărţite în silabe, dar previne orice împărţire în silabe pentru "FORTRAN", "Fortran" şi "fortran". În argument nu sunt permise caractere speciale sau simboluri:

usepackage[romanian]{babel}

\hyphenation{FORTRAN Si-la-bi-si-re
}

Comanda \- inserează o cratimă în locul potrivit într-un cuvânt. Acesta devine de asemenea singurul punct de împărţire în silabe permis pentru acel cuvânt. Comanda \- este deosebit de utilă pentru cuvinte ce conţin caractere speciale (spre exemplu, cuvinte cu diacritice), întrucât LaTeX nu împarte automat în silabe cuvinte ce conţin caractere speciale.

\begin{minipage}{2in}
Cred că asta este: su\-per\-cal\-
i\-frag\-i\-lis\-tic\-ex\-pi\-
al\-i\-do\-cious
\end{minipage
}

\begin{array}{l}\mbox{Cred că asta este: supercalifragi-}\\
\mbox{listicexpialidocious}\end{array}

Acest lucru este greu de gestionat pentru multe cuvinte ce conţin o cratimă, de genul "propriu-zis", "după-amiaza". O soluţie posibilă ar fi folosirea comenzii \hyp din pachetul hyphenat. Această comandă pune o cratimă şi permite împărţirea automată în silabe a cuvintelor rezultate din cuvântul compus. Vom scrie atunci:

propriu\hyp{}zis ... după\hyp{}amiaza

Mai multe cuvinte pot fi ţinute împreună pe o linie cu comanda

\mbox{text}

Această comandă face ca argumentul să fie ţinut împreună în orice circumstanţe. De exemplu:

Numărul meu de telefon se va schimba în curând. Va fi \mbox{0116 291 2319}.

Comanda \fbox este similară cu \mbox, dar în plus conţinutul va fi încadrat într-o căsuţă vizibilă.

Pentru a evita complet împărţirea în silabe, penalizarea pentru împărţirea în silabe poate fi setată la o valoare extremă:

\hyphenpenalty=100000

Câteodată poate veţi dori să schimbaţi măsura în care LaTeX împarte în silabe modificând valoarea \tolerance=1000 şi \hyphenpenalty=1000. Trebuie să experimentaţi cu aceste valori pentru a obţine efectul dorit. O toleranţă redusă nu va tolera spaţii inegale între cuvinte, astfel că împărţirea în silabe se va realiza mai des decât cu o toleranţă înaltă.

Citate

Latex tratează ghilimelele duble stângi şi drepte ca entităţi diferite. Pentru ghilimelele simple, ' ` ' (pe tastaturile americane, acest simbol se găseşte pe tasta cu tilda, în general lângă cheia ' 1 ') reprezintă ghilimelele simple de deschidere, iar ' ' ' ghilimelele simple de închidere. Pentru a obţine ghilimele duble, pur şi simplu dublaţi simbolurile, iar Latex le va interpreta în mod corespunzător. (Deşi, puteţi folosi " pentru ghilimele duble drepte). Pe tastaturile englezeşti, ' ` ' este la stânga tastei ' 1 ' , pe care se află şi ' ¬ ', iar câteodată ' ¦ ' sau ' | '. Tasta apostrof (' ' ') este la dreapta tastei ' :/; ', pe care se mai află simbolul ' @ '.

Pentru a `cita' în Latex

LaTeX citat1.png

Pentru a ``cita'' în Latex

LaTeX citat2.png

Pentru a ``cita" în Latex

LaTeX citat2.png

Pentru a ,,cita'' în Latex

LaTeX citat3.png

``Vă rugăm să apăsaţi tasta `x'.''

LaTeX citat4.png

,,Vă rugăm să apăsaţi tasta <<x>>''.

LaTeX citat5.png

Ghilimelele simple drepte sunt folosite de asemenea ca apostrof în Latex.

Pentru ghilimele stângi aşezate în partea inferioară şi pentru stilul de citare european, trebuie să folosiţi tipul de font T1:

\usepackage[T1]{fontenc}

Diacritice

Puteţi să adăugaţi diacritice la litere scriind un metacaracter diacritic înaintea literei respective. Iată o listă a metacaracterelor diacritice.

Latex accente.png

Pentru a aşeza un diacritic pe un 'i' sau 'j', punctul deasupra acestei litere trebuie înlăturat. Acest lucru se realizează scriind \i şi \j. Dacă vreţi să vă scrieţi toate documentele într-o limbă străină şi trebuie să folosiţi anumite diacritice de mai multe ori, atunci cu ajutorul configuraţiei corecte, puteţi scrie aceste caractere direct în documente.

Recent, XeTeX a inclus posibilitatea de a scrie caractere Unicod direct în fişierul sursă .tex. Dacă folosiţi XeLaTeX, puteţi folosi direct orice diacritice Unicod combinate.

Pentru mai multe informaţii, vezi capitolul despre Internaţionalizare.

Spaţiu între cuvinte şi fraze

Pentru a obţine o margine dreaptă aranjată în output, LaTeX inserează spaţii de mărimi diferite între cuvinte. Implicit, inserează de asemenea mai mult spaţiu la sfârşitul unei fraze. Cu toate acestea, spaţiul suplimentar adăugat la sfârşitul frazelor este considerat în general demodat din punct de vedere tipografic în engleza scrisă. (Practica aceasta se întâlneşte în design-ul din secolul al XIX-lea şi în stilurile de redactare din secolul al XX-lea.) Cele mai multe programe moderne de redactare de text tratează spaţiul de la sfârşitul frazei la fel ca spaţiul dintre cuvinte. (Vezi, spre exemplu, Elementele stilului tipografic de Bringhurst.) Spaţiul adiţional de după punctele ce marchează sfârşitul unei fraze pot fi dezactivate cu comanda

\frenchspacing

care spune LaTeX să nu insereze mai mult spaţiu după un punct decât după orice alt caracter. Spaţierea franţuzească poate fi oprită mai târziu în document prin comanda \nonfrenchspacing.

Dacă un autor doreşte să continue spaţierea de tip vechi de la sfârşitul frazei, trebuie să aibă grijă că semnele de punctuaţie nu sunt interpretate greşit ca sfârşit de frază. TeX presupune că frazele se termină cu puncte, semne de întrebare sau de exclamare. Chiar dacă o literă mare este urmată de punct, acesta nu este interpretat ca sfârşit de frază, deoarece punctele de după litere mari apar în mod normal în abrevieri. Orice excepţie de la aceste prezumţii trebuie să fie specificată de autor. Un backslash în faţa unui spaţiu generează un spaţiu ce nu va fi mărit. Un caracter tilda ' ~ ' generează un spaţiu care nu poate fi mărit şi în plus împiedică apariţia unui sfârşit de linie. Comanda ' \@ ' în faţa unui punct specifică faptul că acest punct termină o frază chiar şi atunci când urmează după o literă mare. (Dacă folosiţi \frenchspacing, niciuna dintre aceste excepţii nu trebuie specificată.)

Margini nealiniate şi spaţii între cuvinte

Unele cuvinte foarte lungi, numere şi URL-uri nu pot fi împărţite în silabe în mod corespunzător şi trec dincolo de marginea din dreapta. O soluţie la această problemă este folosirea mediului sloppypar, care spune LaTeX să ajusteze mai puţin strict spaţierea dintre cuvinte. Drept urmare, unele spaţii dintre cuvinte pot fi puţin prea mari, însă cuvintele lungi vor fi plasate cum trebuie.

Acesta este un paragraf cu
un cuvânt foarte lung ABCDEFGHIJKLMNOPRST;
apoi avem încă un lucru prost
--- un număr lung 1234567890123456789.

\begin{sloppypar}
Acesta este un paragraf cu
un cuvânt foarte lung ABCDEFGHIJKLMNOPRST;
apoi avem încă un lucru prost
--- un număr lung 1234567890123456789.
\end{sloppypar
}

LaTeX sloppypar.png

Ligaturi

Unele combinaţii de litere sunt afişate nu doar separat, ci şi prin afişarea de simboluri speciale (ca "ff"), numite ligaturi. Ligaturile pot fi interzise prin inserarea {} sau, dacă asta nu merge, {\kern0pt}, între cele două litere în chestiune. Acest lucru ar putea fi necesar pentru cuvinte compuse din două cuvinte. Iată un exemplu:

\Large
Nu shelfful

ci shelf{}ful

LaTeX exemplu ligaturi.png

Unele programe nu reuşesc să caute cuvinte în documente ce conţin ligaturi (căutarea "finally" nu va găsi cuvântul "nally"). Dacă doriţi, pentru mai multă accesibilitate, pentru a dezactiva complet ligaturile pentru întregul document, puteţi folosi \DisableLigatures din pachetul microtype:

\usepackage{microtype}
\DisableLigatures{encoding = *, family = *}

Notaţi că va dezactiva doar ligaturile de genul --, ---, etc.

Dacă folosiţi XeLaTeX şi fonturi OpenType, pachetul fontspec permite dezactivarea ligaturilor standard şi activarea ligaturilor fancy swash.

Caractere slash

În mod normal, un caracter / în LaTeX nu permite caracterele următoare să fie "separate" pe liniile următoare, ceea ce creează erori "overfull" în output (în care literele se întind dincolo de marginea din dreapta). Cuvintele care folosesc caractere slash, cum ar fi "input/output" ar trebui scrise sub forma "input\slash output", care permite liniei să se "împartă" după caracterul slash (dacă este necesar). Utilizarea caracterului / în LaTeX ar trebui restrânsă la unităţi, ca în cazul "mm/year", care nu ar trebui separate pe mai multe linii.

Evidenţierea textului

Pentru a scoate în evidenţă un cuvânt sau o expresie, modul cel mai simplu este comanda \emph{text}.

Vreau să \emph{scot în evidenţă} un cuvânt.

LaTeX evidenţiere text.png

Fonturi

Vezi şi capitolul Fonturi.

În LaTeX, sunt multe căi prin care puteţi specifica şi controla fonturi, iar această secţiune este menită numai să servească ca scurtă introducere a acestui subiect.

Stiluri de fonturi

Există 3 familii principale de fonturi: roman (de exemplu, Times), sans serif (cum este Arial) şi monospace (ca, de exemplu, Courier). Puteţi de asemenea să specificaţi stiluri precum italic şi bold.

Tabelul următor prezintă comenzile de care aveţi nevoie pentru a accesa stilurile tipice de fonturi:

Comandă LaTeX Echivalent cu Stilul de output Remărci
\textnormal{…} {\normalfont …} familia de fonturi implicită pentru document acesta este fontul implicit sau normal
\emph{…} {\em …} emphasis caractere italice
\textrm{…} {\rmfamily …} familia de fonturi roman
\textsf{…} {\sffamily …} familia de fonturi sans serif
\texttt{…} {\ttfamily …} familia de fonturi teletype acesta este un font de mărime fixă sau monospace
\textup{…} {\upshape …} forme verticale la fel ca typeface normal
\textit{…} {\itshape …} forme italice
\textsl{…} {\slshape …} forme oblice versiune oblică a tipului normal typeface (similar cu, dar uşor diferit de, italice)
\textsc{…} {\scshape …} litere mari cu font de dimensiune redusă
\uppercase{…} litere mari Şi \lowercase. Sunt câteva capcane, totuşi; vezi aici.
\textbf{…} {\bfseries …} bold
\textmd{…} {\mdseries …} grosime medie font între dimensiunea normală şi aldină

Poate aţi observat absenţa underline. Deşi acesta este disponibil prin intermediul comenzii \underline{...}, textul subliniat în felul acesta nu va fi împărţit în silabe în mod corespunzător. Această funcţionalitate trebuie adăugată cu pachetul ulem. Scrieţi \usepackage{ulem} în preambul. Implicit, asta suprascrie comanda \emph, generând text subliniat şi nu italic. Puţin probabil că veţi dori aşa ceva, astfel că este de dorit să împiedicaţi pachetul ulem să preia controlul asupra comenzii \emph, chemând comanda underline dacă şi când aveţi nevoie.

  • Pentru a reface formatarea em uzuală, adăugaţi \normalem imediat după începutul mediului document. Altfel, adăugaţi această opţiune când includeţi pachetul ulem: \usepackage[normalem]{ulem}.
  • Pentru text subliniat, scrieţi \uline{...}.
  • Pentru text subliniat cu o linie ondulată, puteţi utiliza comanda \uwave{...}.
  • Pentru text tăiat de o linie (strike-out), folosiţi comanda \sout{...}.

Modificarea dimensiunii caracterelor

Pentru a aplica mărimi diferite de fonturi, urmaţi comenzile din acest tabel:

Latex sizes table.png

Notaţi că definiţiile mărimii fonturilor sunt setate de clasa document. În funcţie de stilul de document, mărimea efectivă a fontului poate diferi de cele listate mai devreme. Şi nu orice clasă de documente are mărimi unice pentru toate cele 10 comenzi de dimensionare a caracterelor.

Mărimi absolute ale caracterelor în clasele de documente article, proc, report, book şi letter
mărime 10pt (implicit) 11pt 12pt
\tiny 6.80565 7.33325 7.33325
\scriptsize 7.97224 8.50012 8.50012
\footnotesize 8.50012 9.24994 10.00002
\small 9.24994 10.00002 10.95003
\normalsize 10.00002 10.95003 11.74988
\large 11.74988 11.74988 14.09984
\Large 14.09984 14.09984 15.84985
\LARGE 15.84985 15.84985 19.02350
\huge 19.02350 19.02350 22.82086
\Huge 22.82086 22.82086 22.82086
Mărimi absolute ale caracterelor în clasele de documente memoir, amsart şi amsbook
mărime 10pt (implicit) 11pt 12pt
\tiny 7.33325 7.97224 8.50012
\scriptsize 7.97224 8.50012 9.24994
\footnotesize 8.50012 9.24994 10.00002
\small 9.24994 10.00002 10.95003
\normalsize 10.00002 10.95003 11.74988
\large 10.95003 11.74988 14.09984
\Large 11.74988 14.09984 15.84985
\LARGE 14.09984 15.84985 19.02350
\huge 15.84985 19.02350 22.82086
\Huge 19.02350 22.82086 22.82086
Mărimi absolute ale caracterelor în clasa de documente slides
mărime
\tiny 17.27505
\scriptsize 20.73755
\footnotesize 20.73755
\small 20.73755
\normalsize 24.88382
\large 29.86258
\Large 35.82510
\LARGE 43.00012
\huge 51.60014
\Huge 51.60014
Mărimi absolute ale caracterelor în clasa de documente beamer
mărime 10pt (implicit) 11pt 12pt
\tiny 5.31258 6.37509 6.37509
\scriptsize 7.43760 8.50012 8.50012
\footnotesize 8.50012 9.24994 10.00002
\small 9.24994 10.00002 10.95003
\normalsize 10.00002 10.95003 11.74988
\large 11.74988 11.74988 14.09984
\Large 14.09984 14.09984 16.24988
\LARGE 16.24988 16.24988 19.50362
\huge 19.50362 19.50362 23.39682
\Huge 23.39682 23.39682 23.39682

Ca o notă tehnică, punctele din TeX se bazează pe mărimea standard americană a punctului, pentru care 1 pt este aproximativ 0.351366666666667 mm. Mărimea standard a punctului în cele mai multe programe moderne de calculator (cunoscută sub denumirea de desktop publishing point sau PostScript point) conform căreia 1 pt este aproximativ 0.352777777777778 mm, în vreme ce conform standardului european (Didot point) 1 pt este aproximativ 0.375971510382829 mm. (Vezi: Punctul tipografic.)

Chiar dacă puteţi schimba uşor outputul fonturilor cu ajutorul acestor comenzi, e mai bine să nu folosiţi explicit comenzi de genul acesta, întrucât sunt în opoziţie cu ideea de bază din LaTeX, care constă în separarea aspectului logic şi vizual ale documentului. Asta înseamnă că dacă folosiţi aceeaşi comandă pentru schimbarea fontului în mai multe locuri pentru a afişa un tip special de informaţii, ar trebui să utilizaţi \newcommand pentru a defini un "wrapper" logic pentru comanda de schimbare a fontului.

\newcommand{\oops}[1]{\textbf{#1}}

Nu \oops{intraţi} în această cameră, este ocupată de \oops{maşini
} de origine şi cu scop necunoscute.

Nu intraţi în această cameră, este ocupată de maşini de origine şi cu scop necunoscute.

Această abordare are avantajul că puteţi decide mai târziu dacă vreţi să folosiţi o anume reprezentare vizuală a pericolului alta decât \textbf, fără a trebui să căutaţi prin document, identificând toate apariţiile \textbf şi determinând pentru fiecare dacă este folosit pentru a indica un pericol sau pentru alt motiv.

Exponent şi indice în modul text

Pentru a scrie la exponent în modul text, puteţi folosi comanda \textsuperscript{}. Asta vă permite, spre exemplu, să scrieţi "6th" sub forma "6th":

Michelangelo s-a născut la 6 Martie (March 6\textsuperscript{th}), 1475.

Principala utilizare a indicilor în mediul text este tipărirea formulelor chimice. În acest sens, un pachet foarte recomandat este mhchem. Acest pachet este uşor de utilizat şi merge cu fonturile implicite de text (în locul fonturilor matematice). Pentru a insera o formulă chimică, utilizaţi comanda \ce{} cu formula echivalentă în modul text, spre exemplu:

% În preambul, adăugaţi:
\usepackage[version=3]{mhchem}
...

% În document:
Sulfat de amoniu: \ce{(NH4)2SO4}.

Sulfat de amoniu mhchem.png


Scrierea indicilor în modul text nu este suportată numai de LaTeX; totuşi, mai multe pachete permit utilizarea comenzii \textsubscript{}. Spre exemplu, bpchem, KOMA-Script2 şi fixltx2e suportă toate această comandă. Dintre acestea, fixltx2e este poate opţiunea aproape universală de vreme ce este distribuit cu LaTeX şi nu necesită niciun pachet adiţional pentru a fi implementat.

% În preambul, adăugaţi:
\usepackage{fixltx2e}
...

% În document:
S-a constatat că înălţimea \textsubscript{mărului} este
diferită de înălţimea \textsubscript{portocalului
}.

LaTeX indice fixltx2e.png

Dacă nu încărcaţi un pachet ce suportă comanda \textsubscript{}, trebuie să folosiţi modul matematic. Acest lucru este uşor de realizat în modul text punând codul între simboluri $. În modul matematic scrierea de indici se realizează cu ajutorul unui underscore: _{}.

Spre exemplu, formula pentru apă se scrie în felul următor:

H$_2$O este formula pentru apă

\text{H}_2\text{O este formula pentru apă}

Notaţi că în modul matematic textul va apare într-un font potrivit pentru variabilele matematice. În modul matematic, pentru a genera text în stilul "roman", spre exemplu, folosiţi comanda \mathrm:

Acesta este text $\mathrm{roman\ normal,\ iar\ acesta\ }_\mathrm{indice}$

\text{Acesta este text }\mathrm{roman\ normal,\ iar\ acesta\ }_\mathrm{indice}

Notaţi folosirea comenzii \<spaţiu> pentru a insera un spaţiu în modul matematic.

În mod similar, puteţi scrie exponenţi în felul următor:

Acesta este text $\mathrm{roman\ normal,\ iar\ acesta\ }^\mathrm{exponent}$

\text{Acesta este text }\mathrm{roman\ normal,\ iar\ acesta\ }^\mathrm{exponent}

Cifre în modul text (numere "în stilul vechi")

Mulţi tipografi preferă să folosească cifre poziţionate la înălţimea literelor mici, atunci când sunt amestecate cu literele mari, când apar în tabele sau în ecuaţii, folosind cifre în modul text în altă parte. LaTeX permite această utilizare prin intermediul comenzii \oldstylenums{}:

\oldstylenums{1234567890}
LaTeX cifre stil vechi.png

Unele fonturi nu au cifre în modul text încorporate; pachetul textcomp încearcă să remedieze asta generând efectiv cifre în modul text în baza fontului curent selectat. Scrieţi \usepackage{textcomp} în preambul. textcomp vă permite de asemenea să folosiţi puncte zecimale, $, etc., în \oldstylenums{}.

O utilizare comună pentru cifrele în modul text este pentru numerele secţiunilor, paragrafelor şi paginilor. Acestea pot fi setate să folosească cifre în modul text scriind ceva cod în preambul:

\usepackage{textcomp}
 
% Includeţi totul în \AtBeginDocument{}
\AtBeginDocument
{
  % Faceţi \section{} să folosească cifre în modul text
  \let\myTheSection\thesection
  \renewcommand{\thesection}{\oldstylenums{\myTheSection}}
 
  % Faceţi \paragraph{} să folosească cifre în modul text
  \let\myTheParagraph\theparagraph
  \renewcommand{\theparagraph}{\oldstylenums{\myTheParagraph}}
 
  % Faceţi ca numerele de pagini să fie în modul text
  \let\myThePage\thepage
  \renewcommand{\thepage}{\oldstylenums{\myThePage}}
}

Dacă veţi folosi comenzi adiţionale pentru secţiuni sau paragrafe, puteţi să adaptaţi codul de mai înainte pentru a le include şi pe acestea.

Simboluri şi caractere speciale

Cratime şi alte liniuţe

LaTeX cunoaşte patru tipuri de liniuţe: cratimă (-), en dash (–), em dash (—), sau minus (−). Puteţi accesa trei dintre ele cu numere diferite de liniuţe consecutive. Al patrulea semn nu este de fapt o liniuţă, ci semnul matematic minus:

Cratimă: într-o după-amiază

En dash: paginile 13--67

Em dash: da --- sau nu?

Minus: $0$, $1$ şi $-1$

Latex liniuţe exemple.png

Denumirile acestor liniuţe sunt: '-'(-) cratimă , '--'(–) en-dash , '---'(—) em-dash şi '-'(−) minus. Ele au scopuri diferite:

Latex liniuţe.png

Utilizaţi macrocomanda \hyp{} din pachetul hyphenat în loc de cratimă dacă vreţi să despărţiţi cuvinte compuse pe mai multe linii în LaTeX.

Simbolul Euro

Când scrieţi ceva legat de bani azi, aveţi nevoie de semnul Euro. Aveţi mai multe opţiuni. Dacă fonturile pe care le utilizaţi au un simbol pentru Euro şi vreţi să-l folosiţi, mai întâi trebuie să includeţi pachetul textcomp în preambul: \usepackage{textcomp}, apoi puteţi insera simbolul Euro cu comanda \texteuro. Dacă vreţi să folosiţi versiunea oficială a simbolul Euro, atunci trebuie să includeţi pachetul eurosym cu opţiunea official în preambul: \usepackage[official]{eurosym}, apoi puteţi să inseraţi acest simbol cu comanda \euro. În cele din urmă, dacă vreţi un simbol Euro care să se potrivească cu stilul curent de font (de exemplu, bold, italic, etc.), însă fontul curent nu oferă acest simbol, puteţi din nou să includeţi pachetul eurosym, însă de data aceasta cu altă opţiune: \usepackage[gen]{eurosym} şi din nou puteţi insera simbolul Euro cu comanda \euro.

Puncte de suspensie (…)

O secvenţă de trei puncte este cunoscută sub denumirea de puncte de suspensie, folosită în general pentru a indica un text omis. Pe o maşină de scris, o virgulă sau un punct ia acelaşi spaţiu ca orice altă literă. La tipărirea cărţilor, în tipografii sau în programele de redactare de text, aceste caractere ocupă numai puţin spaţiu şi sunt aşezate foarte aproape de litera precedentă. De aceea, nu puteţi introduce punctele de suspensie tipărind pur şi simplu trei puncte, întrucât spaţierea dintre ele ar fi prea mică. În schimb, există o comandă specială pentru aceste trei puncte — \ldots:

Nu aşa ... ci aşa:\\
New York, Tokyo, Budapest, \ldots

Latex exemplu text dots.png

Şiruri de caractere predefinite

Sunt câteva comenzi foarte simple în LaTeX pentru afişarea unor şiruri de caractere speciale, predefinite:

Latex text predefinit.png

Alte simboluri

Latex dispune de foarte multe simboluri. Majoritatea acestora sunt în domeniul matematic, iar capitolele ulterioare vă vor spune cum să le accesaţi. Pentru simbolurile uzuale, utilizaţi următoarele comenzi:

Latex simboluri.png

Nemenţionată în tabelul de mai sus, tilda (~) se foloseşte în codul LaTeX pentru a produce spaţiu non-separabil. Pentru a afişa semnul tilda, scrieţi-l în cadrul unui text verbatim sau scrieţi \~{}.

Desigur, puteţi folosi şi fontul Postscript ZipfDingbats din pachetul pifont. Scrieţi în preambul: \usepackage{pifont}, iar apoi folosiţi comanda \ding{number} pentru a afişa simbolul corespunzător. Iată un tabel cu simbolurile disponibile:

Simboluri ZapfDingbats.

Formatarea paragrafelor

Modificarea formatării paragrafelor nu este deseori necesară, mai ales în cazul publicaţiilor academice. Totuşi, este bine de ştiut cum se formatează textul în elemente flotante, sau alte tipuri mai exotice de documente.

Alinierea paragrafelor

Paragrafele din Latex sunt de obicei aliniate stânga-dreapta (justified). Dacă vreţi, dintr-un motiv anume, să modificaţi alinierea implicită a unui paragraf, aveţi la dispoziţie trei medii şi comenzi Latex echivalente.

Aliniere Mediu Comandă
Aliniat la stânga flushleft \raggedright
Aliniat la dreapta flushright \raggedleft
Centrat center \centering

Tot textul dintre \begin şi \end în mediul specificat va fi aliniat în mod corespunzător. Comenzile listate mai sus sunt menite a fi utilizate în alte medii. Spre exemplu, pentru coloanele p (paragraf) în mediul tabular.

Indentarea paragrafelor

Implicit, primul paragraf după un antet urmează standardul anglo-american fără indentare. Indentarea paragrafelor următoare este determinată de un parametru denumit \parindent. Lungimea implicită pe care o are această constantă este setată de clasa documentului folosit. Puteţi modifica indentarea implicită a paragrafelor cu ajutorul comenzii \setlength:

\setlength{\parindent}{1cm}

Asta va seta indentarea implicită a paragrafelor la 1cm.

Aveţi grijă, totuşi, dacă decideţi să setaţi indentarea la zero, întrucât asta înseamnă că veţi avea nevoie de un spaţiu vertical între paragrafe pentru a le delimita. Spaţiul dintre paragrafe este controlat de parametrul \parskip, care poate fi modificat la fel ca mai devreme. Totuşi, acest parametru este utilizat şi în altă parte, cum ar fi listele, ceea ce înseamnă că puteţi face ca diverse părţi ale documentului să arate neîngrijit schimbând aceste setări. Dacă nu vreţi să aveţi indentare, dar cu un spaţiu între paragrafe, folosiţi pachetul parskip, care face asta, dar şi ajustări ale spaţierii listelor şi altor structuri care folosesc spaţierea paragrafelor, astfel încât acestea să nu fie prea diferite. Adăugaţi la preambul:

\usepackage{parskip}

Pentru a indenta liniile succesive ale unui paragraf, utilizaţi comanda TeX \hangindent. (Comportamentul implicit constă în aplicarea indentării liniilor după prima linie, care se poate schimba cu comanda \hangafter.) Iată un exemplu:

\hangindent=0.7cm Acest paragraf are o indentare suplimentară la stânga (vizibilă începând cu linia a doua a paragrafului).

Comenzile TeX \leftskip şi \rightskip adaugă spaţiu adiţional la stânga şi la dreapta fiecărei linii, permiţând formatarea paragrafelor următoare astfel încât să difere de marginile generale ale documentului. Acest spaţiu se adaugă la indentarea adăugată de \parindent şi \hangindent.

Pentru a schimba indentarea ultimei linii dintr-un paragraf, folosiţi comanda TeX \parfillskip.

Spaţiul alb din LaTeX poate fi făcut flexibil (ceea ce Lamport numeşte lungimi flexibile — rubber lengths). Asta înseamnă că valori de genul \parskip pot avea o dimensiune implicită plus o anume extindere minus o anume contracţie. Acest lucru este util pe paginile din documente complexe, în care nu orice pagină poate avea un număr exact de linii, astfel că este utilă o anumită ajustare a spaţiului vertical. Specificaţi asta printr-o comandă \setlength cum este:

\setlength{\parskip}{1cm plus4mm minus3mm}

Spaţierea liniilor

Pentru a schimba spaţiile dintre linii în tot documentul, utilizaţi comanda \linespread, explicată în secţiunea Spaţiere din capitolul LaTeX personalizat.

Pentru a modifica spaţierea liniilor în medii specifice, urmaţi paşii următori:

  1. Adăugaţi \usepackage{setspace} în preambulul documentului.
  2. Acest pachet oferă posibilitatea de a folosi următoarele medii în document:
    • doublespace - toate liniile sunt separate de spaţii duble.
    • onehalfspace - spaţierea liniilor este la 1,5 faţă de spaţierea normală.
    • singlespace - spaţiere normală a liniilor.

După ce declaraţi pachetul în preambul, utilizarea uneia dintre comenzile \singlespacing, \doublespacing, sau \onehalfspacing va specifica spaţierea liniilor pentru toate secţiunile şi paragrafele până la folosirea altei comenzi similare.

Vezi secţiunea Liste personalizate de mai jos pentru a afla cum puteţi schimba spaţierea liniilor în liste.

Paragrafe speciale

Vezi secţiunea Paragrafe speciale din capitolul Formatare avansată.

Structuri de liste

Listele apar deseori în documente, mai ales în cele academice, după cum scopul lor este adesea să prezinte informaţii într-un mod clar şi concis. Structurile de liste din LaTeX sunt pur şi simplu medii de trei tipuri: itemize, enumerate şi description.

Toate listele urmează formatul de bază:

\begin{tipul_listei}
 
  \item Primul item
  \item Al doilea item
  \item Al treilea etc \ldots
 
\end{tipul_listei}

Toate aceste trei tipuri de liste pot avea mai multe paragrafe per item: scrieţi pur şi simplu paragrafele următoare aşa cum le-aţi scrie în mod normal, cu o linie liberă între ele. Atâta vreme cât sunt conţinute în mediul de listare, vor fi indentate automat pentru a se alinia item-ului corespunzător.

Itemize

Acest mediu este pentru o listă standard cu marcatori:

\begin{itemize}
  \item Primul item
  \item Al doilea item
  \item Al treilea etc \ldots
\end{itemize
}

Latex itemize.png

Enumerate

Mediul enumerate este pentru listele numerotate, în care, în mod implicit, fiecare item este numerotat secvenţial.

\begin{enumerate}
  \item Primul item
  \item Al doilea item
  \item Al treilea etc \ldots
\end{enumerate
}

Latex enumerate.png

Description

Mediul description este puţin diferit. Puteţi specifica eticheta pentru item ca argument opţional (deşi opţional, ar părea ciudat să nu-l includeţi!). Este ideal pentru o serie de definiţii, ca în cazul unui glosar.

\begin{description}
  \item[Primul:] Primul item
  \item[Al doilea:] Al doilea item
  \item[Al treilea:] Al treilea etc \ldots
\end{description
}

Latex description.png

Câteodată s-ar putea să doriţi o descriere în care textul să înceapă pe o linie nouă. Acest lucru nu se poate face pur şi simplu cu \\. Trucul constă în utilizarea comenzii \hfill.

\begin{description}
  \item[Primul] \hfill \\
  Primul item
  \item[Al doilea] \hfill \\
  Al doilea item
  \item[Al treilea] \hfill \\
  Al treilea etc \ldots
\end{description
}

Latex descriere linie nouă.png

Liste compacte

După cum probabil aţi observat, în clasele standard de documente LaTeX, spaţierea verticală dintre itemi, ca şi spaţiul de deasupra şi de după liste, sunt mai mari decât la paragrafe: poate părea nepotrivit dacă descrierile sunt prea scurte. Dacă vreţi liste mai compacte, folosiţi pachetul mdwlist (inclus în grupul mdwtools), care oferă versiuni compacte, "stelate" ale mediilor prezentate mai devreme, cu alte cuvinte, itemize*, enumerate* şi description*. Funcţionează exact la fel, însă outputul este mai compact.

Ca o alternativă, puteţi utiliza clasa de documente memoir, cu comanda \tightlists.

Liste imbricate

Latex vă va permite să inseraţi o listă într-un item dintr-o altă listă (până la un nivel de imbricare de 4 -- dacă vă trebuie un nivel de imbricare mai mare, folosiţi pachetul easylist). Pur şi simplu începeţi mediul corespunzător în locul dorit în lista curentă. Latex va genera automat tipul de numerotare şi indentarea corespunzătoare.

\begin{enumerate}
 \item Primul item
  \begin{enumerate}
   \item item imbricat 1
   \item item imbricat 2
  \end{enumerate}
 \item Al doilea item
 \item Al treilea etc \ldots
\end{enumerate
}

Latex liste imbricate.png

Liste personalizate

Vezi secţiunea Liste personalizate din capitolul Formatare avansată.

Liste inline

Vezi secţiunea Liste inline din capitolul Formatare avansată.

Note de subsol

Notele de subsol sunt un mod foarte util de a oferi informaţii suplimentare cititorului. De obicei, reprezintă informaţii neesenţiale care pot fi aşezate la sfârşitul paginii. Asta păstrează corpul principal al textului concis.

Notele de subsol sunt uşor de folosit. Comanda de care aveţi nevoie este: \footnote{text}. Nu lăsaţi niciun spaţiu între comandă şi cuvântul în dreptul căruia vreţi să apară marcatorul notei de subsol, altfel Latex va procesa acel spaţiu, iar rezultatul nu va arăta după cum era de aşteptat.

Crearea unei note de subsol e uşor de făcut.\footnote{Un exemplu de notă de subsol.}

Latex notă subsol.png

Latex se va ocupa de redactarea notelor de subsol la sfârşitul paginii. Fiecare notă de subsol este numerotată secvenţial — proces care, după cum probabil aţi ghicit deja, este realizat automat.

Puteţi modifica marcajul notelor de subsol. Implicit, acestea sunt numerotate secvenţial (cu cifre arabe). Totuşi, fără a intra în prea multe detalii legate de mecanismele interne ale sistemului LaTeX acum, puteţi schimba acest tip de marcaj cu ajutorul următoarei comenzi (care trebuie plasată la începutul documentului, sau măcar înainte de prima comandă ce generează o notă de subsol).

\renewcommand{\thefootnote}{\arabic{footnote}} Cifre arabe, cum sunt 1, 2, 3...
\renewcommand{\thefootnote}{\roman{footnote}} Cifre romane (mici), ca i, ii, iii...
\renewcommand{\thefootnote}{\Roman{footnote}} Cifre romane (mari), precum I, II, III...
\renewcommand{\thefootnote}{\alph{footnote}} Litere mici, cum sunt a, b, c...
\renewcommand{\thefootnote}{\Alph{footnote}} Litere mari, cum ar fi A, B, C...
\renewcommand{\thefootnote}{\fnsymbol{footnote}} O secvenţă de 9 simboluri (încercaţi să vedeţi cum merge!)

Pachetul footmisc oferă multe posibilităţi de modificare a aspectului notelor de subsol. Acesta poate oferi, spre exemplu, un font diferit pentru notele de subsol.

Probleme şi soluţii uzuale

  • Notele de subsol din păcate nu merg cu tabelele, întrucât se consideră a fi o practică proastă. Puteţi depăşi această limitare prin mai multe tehnici: puteţi utiliza comanda \footnotemark[123] în tabel şi \footnotetext[123]{Salut, lume!} undeva pe pagină. Sau, puteţi adăuga \usepackage{footnote} şi \makesavenoteenv{tabular} la preambul, iar apoi puneţi mediul table într-un mediu savenotes, după \begin{savenotes}. Notaţi că ultima variantă nu merge cu pachetele color şi colortbl. Vezi această pagină FAQ pentru alte abordări.
  • Notele de subsol nu merg într-un mediu minipage (de fapt, mai multe medii nu oferă suport pentru notele de subsol). Comanda \makesavenoteenv{nume_mediu} a pachetului footnote ar putea rezolva această problemă pentru cele mai multe medii. Mediul minipage include propriile note de subsol, independent de cele ale documentului. Pachetul mpfnmark permite o mai mare flexibilitate în gestionarea acestor două seturi de note de subsol.
  • Dacă textul din nota de subsol este foarte lung, LaTeX poate împărţi nota de subsol pe mai multe pagini. Puteţi împiedica asta mărind penalitatea din LaTeX pentru o asemenea operaţie. Pentru a realiza acest lucru, inseraţi linia următoare în preambulul documentului:
\interfootnotelinepenalty=10000
  • Pentru a face mai multe referinţe la aceeaşi notă de subsol, puteţi folosi următoarea sintaxă:
Textul ce are o notă de subsol\footnote{Aceasta este nota de subsol} arată aşa. Mai târziu, textul ce face o referinţă la aceeaşi notă de subsol\footnotemark[\value{footnote}] utilizează cealaltă comandă.
Dacă vă trebuie suport din pachetul hyperref, folosiţi în schimb:
Textul ce are o notă de subsol\footnote{Aceasta este nota de subsol}\addtocounter{footnote}{-1}\addtocounter{Hfootnote}{-1} arată aşa. Mai târziu, textul ce face o referinţă la aceeaşi notă de subsol\footnotemark utilizează cealaltă comandă.
Notaţi că aceste abordări nu merg dacă sunt alte note de subsol între prima referinţă şi oricare dintre "duplicate".

Note de margine

o notă de margine

Notele de margine sunt utile în timpul procesului de editare pentru a schimba comentarii între autori. Pentru a insera o notă de margine, folosiţi comanda \marginpar{text ce va apare în notă}. Pentru formatul de pagină (layout) one-sided (simplex), textul va fi aşezat în marginea dreaptă, începând cu linia unde nota este definită. Pentru formatul de pagină faţă-verso (two-sided) (duplex), textul va fi plasat în marginea exterioară, iar în cazul formatului cu două coloane (two-column) va fi aşezat în marginea cea mai apropiată.

Pentru a schimba marginea implicită, folosiţi comanda \reversemarginpar şi atunci notele de margine vor fi atunci plasate în partea opusă, care ar trebui să fie marginea interioară pentru formatul de pagină faţă-verso.

Dacă textul transmis ca argument al comenzii marginpar depinde de marginea în care este aşezat (să zicem că include o săgeată îndreptată către text sau se referă la o direcţie, ca în "după cum se vede la stânga..."), puteţi utiliza \marginpar[left text]{text aşezat la dreapta} pentru a specifica variantele.

Pentru a insera o notă de margine într-o zonă pe care \marginpar nu o poate gestiona, cum ar fi notele de subsol sau ecuaţiile, folosiţi pachetul marginnote.

Vezi şi pachetul mparhack.


Această pagină foloseşte materiale din cartea lui Andy Roberts, Getting to grips with Latex, cu permisiunea autorului.

Formatare avansată

Paragrafe speciale

Dacă aţi citit cea mai mare parte sau toate capitolele de până acum, cel mai probabil aţi întâlnit formatele din paragrafele următoare. Deşi le-aţi mai văzut, are sens să le re-introducem aici, pentru a completa informaţiile din acest domeniu.

Text verbatim

Sunt mai multe moduri în care puteţi introduce text care nu va fi interpretat de compilator. Dacă folosiţi mediul verbatim, tot ce este între comenzile begin şi end este procesat aşa cum este. Toate spaţiile şi liniile noi sunt reproduse aşa cum sunt, iar textul este afişat într-un font corespunzător de mărime fixă. Orice comandă LaTeX va fi ignorată şi tratată ca simplu text. Această situaţie este ideală pentru codul sursă. Acest mediu a fost folosit într-un exemplu în capitolul dinainte. Iată un exemplu:

\begin{verbatim}
Mediul verbatim
  pur şi simplu reproduce orice
 caracter introdus,
inclusiv toate  s p a ţ i i l e!
\end{verbatim
}

Verbatim.png

Notă: îndată ce am intrat în mediul verbatim, singura comandă ce va fi recunoscută este \end{verbatim}. Oricare alta va fi afişată, literă cu literă (verbatim)! Dacă asta e o problemă, folosiţi în schimb pachetul alltt, ce oferă un mediu cu acelaşi nume:

\begin{alltt}
Verbatim extins cu abilitatea
de a utiliza comenzi normale. De aceea,
puteţi \emph{evidenţia} cuvintele în
acest mediu, spre exemplu.
\end{alltt
}

Alltt.png

Amintiţi-vă să adăugaţi \usepackage{alltt} în preambulul documentului ca să-l puteţi folosi! În mediul alltt, puteţi folosi comanda \normalfont pentru a reveni la fontul normal. Pentru a scrie ecuaţii în mediul alltt, puteţi folosi \( şi \) pentru a le include, în locul caracterului $.

Când folosiţi \textbf{} în mediul alltt, notaţi că fontul standard nu are tipul TT aldin. Fonturile txtt au tipul aldin: adăugaţi pur şi simplu \renewcommand{\ttdefault}{txtt} după \usepackage{alltt}.

Dacă vreţi numai să introduceţi o expresie scurtă în modul verbatim, nu trebuie să folosiţi mediul verbatim ca atare, ci doar comanda \verb:

\verb+my text+

Primul caracter ce urmează \verb este delimitatorul: aici am folosit "+", însă puteţi folosi orice caracter, cu excepţia "*" şi a spaţiului; \verb va afişa literă cu literă tot textul după primul delimitator şi până la următorul. Spre exemplu, codul:

\verb|\textbf{Salut, prietene!}|

va afişa \textbf{Salut, prietene!}, ignorând efectul pe care \textbf ar trebui să-l aibă asupra textului.

Pentru mai mult control asupra formatării, totuşi, puteţi încerca pachetul fancyvrb, care oferă un mediu Verbatim (notaţi litera mare "V"). Acesta permite trasarea unei linii care să încadreze textul verbatim, modificarea mărimii fontului şi chiar efecte tipografice în mediul Verbatim. Poate fi folosit de asemenea în conjuncţie cu pachetul fancybox şi poate adăuga referinţe la numere de linii (utile pentru grupuri de date sau de cod), putând chiar să includă fişiere externe întregi.

Tipărirea de URL-uri

Oricare dintre pachetele hyperref şi url oferă comanda \url, care afişează în mod corespunzător URL-uri, spre exemplu:

Mergi la \url{http://www.uni.edu/~numele-meu/cel-mai-bun-website.html}
pentru a vedea site-ul meu Web.

va afişa acest URL exact aşa cum este scris (similar cu comanda \verb), însă comanda \url împarte de asemenea în silabe fără a pune o cratimă (în dreptul semnelor de punctuaţie). Aceasta a fost proiectată pentru URL-uri Web, astfel că le înţelege sintaxa şi nu va împărţi niciodată în silabe un cuvânt fără semne de punctuaţie, ci doar în dreptul caracterelor slash şi a punctului. Ţineţi minte, totuşi, că spaţiile sunt interzise în URL-uri, astfel încât folosirea de spaţii în argumente \url ar putea să nu dea rezultatul dorit, la fel ca utilizarea de caractere invalide pentru URL-uri.

Când utilizaţi această comandă cu ajutorul pachetului hyperref, puteţi accesa URL-ul în documentul PDF rezultat, în vreme ce cu pachetul url, argumentul comenzii \url nu va fi legat de adresa de Web. De asemenea, când folosiţi pachetul hyperref, pentru a înlătura chenarul (linia dreptunghiulară) din jurul URL-ului, inseraţi pdfborder = {0 0 0 0} în comanda \hypersetup{} sau includeţi pachetul cu opţiunea pdfborder = {0 0 0 0}:

\usepackage[pdfborder={0 0 0 0}]{hyperref}

Mediul listing

Este o extensie a mediului verbatim pusă la dispoziţie de pachetul moreverb. Funcţionalitatea suplimentară pe care o oferă constă în adăugarea de numere de linii în text cu ajutorul comenzii: \begin{listing}[pas]{prima linie}. Argumentul obligatoriu prima linie specifică pe ce linie ar trebui să înceapă numărătoarea. Argumentul opţional pas este diferenţa dintre numerele liniilor consecutive considerate (valoarea implicită este 1, ceea ce înseamnă că fiecare linie va fi numărată).

Pentru a utiliza acest mediu, amintiţi-vă să adăugaţi \usepackage{moreverb} la preambulul documentului.

Pachetul listings

Cu ajutorul pachetului listings puteţi adăuga text neformatat ca în cazul comenzii \begin{verbatim}, însă scopul său principal este includerea de cod sursă din orice limbaj de programare în document. Dacă vreţi să includeţi pseudocod sau algoritmi, ar fi bine să vă uitaţi şi peste capitolul Algoritmi şi pseudocod.

Pentru a utiliza pachetul, trebuie să-l încărcaţi în preambul:

\usepackage{listings}

Pachetul listings suportă evidenţierea cuvintelor cheie, a tipurilor de date, etc. din majoritatea limbajelor de programare şi este foarte flexibil. Dacă vreţi doar să scrieţi cod în document, pachetul vă pune la dispoziţie mediul lstlisting:

\begin{lstlisting}
 Scrieţi codul aici...
\end{lstlisting}

O altă posibilitate, care este foarte utilă dacă aţi creat un program ce cuprinde mai multe fişiere şi încă îl mai editaţi, este să importaţi cod direct din fişierul sursă. În felul acesta, dacă modificaţi sursa, trebuie doar să recompilaţi codul LaTeX şi documentul final va fi actualizat. Comanda este:

\lstinputlisting{fişier_sursă.py}

În acest exemplu avem un fişier sursă Python, însă nu contează: puteţi include orice fişier, însă trebuie să scrieţi numele complet al fişierului (cu tot cu extensie). Acesta va fi considerat text simplu şi va fi evidenţiat potrivit setărilor curente, ceea ce înseamnă că nu recunoaşte singur limbajul de programare. Puteţi specifica limbajul când includeţi fişierul în felul următor:

\lstinputlisting[language=Python]{fişier_sursă.py}

Acest pachet oferă suport pentru următoarele limbaje de programare:

ABAP IDL Plasm
ACSL inform POV
Ada Java Prolog
Algol JVMIS Promela
Ant ksh Python
Assembler2 Lisp R
Awk Logo Reduce
bash make Rexx
Basic2 Mathematica1 RSL
C Matlab Ruby
C++ Mercury S
Caml MetaPost SAS
Clean Miranda Scilab
Cobol Mizar sh
Comal ML SHELXL
csh Modula-2 Simula
Delphi MuPAD SQL
Eiffel NASTRAN tcl
Elan Oberon-2 TeX
erlang OCL VBScript
Euphoria Octave Verilog
Fortran Oz VHDL
GCL Pascal VRML
Gnuplot Perl XML
Haskell PHP XSLT
HTML PL/I

În cazul unora dintre acestea, se oferă suport pentru mai multe dialecte. Pentru mai multe informaţii, consultaţi documentaţia inclusă în pachet (ar trebui să aibă numele listings.dvi sau listings.pdf).

Note

1 — Suportă codul din Mathematica numai dacă scrieţi în plain text format. Nu puteţi include fişiere *.NB cu \lstinputlisting{...} ca în cazul oricărui alt limbaj de programare, însă Mathematica poate exporta sub formă de sursă LaTeX stilizată.

2 — Este obligatoriu să specificaţi dialectul pentru unele limbaje (spre exemplu, language={[x86masm]Assembler}).

Puteţi modifica mai mulţi parametri ce influenţează modul de afişare a codului. Puteţi pune codul următor oriunde în document (nu contează dacă este înainte sau după \begin{document}), după cum vă este mai la îndemână. Comentariile explică fiecare comandă în parte.

\lstset{ %
language=Octave,                % alegeţi limbajul pentru cod
basicstyle=\footnotesize,       % mărimea fonturilor utilizate pentru cod
numbers=left,                   % unde să scrie numerele de linii
numberstyle=\footnotesize,      % mărimea fonturilor folosite pentru numerele de linii
stepnumber=2,                   % diferenţa dintre numerele de linii consecutive
                                % dacă este 1, fiecare linie va fi numerotată
numbersep=5pt,                  % cât de departe sunt numerele de linii faţă de cod culoarea
backgroundcolor=\color{white},  % fundalului; vă trebuie \usepackage{color} în preambul
showspaces=false,               % evidenţiază spaţiile cu underscore
showstringspaces=false,         % subliniază spaţiile din şirurile de caractere
showtabs=false,                 % arată tab-urile din şirurile de caractere cu underscore
frame=single,	                % adaugă un cadru (chenar) în jurul codului
tabsize=2,	                % setează dimensiunea implicită pentru tab la 2 spaţii
captionpos=b,                   % setează poziţia titlurilor sub figuri sau tabele
breaklines=true,                % setează separarea automată a liniilor
breakatwhitespace=false,        % se trece la linia nouă dacă sunt spaţii libere?
title=\lstname,                 % arată numele fişierelor incluse cu \lstinputlisting;
                                % încearcă să scrie o notă sau legendă în loc de titlu
escapeinside={\%*}{*)},         % dacă vreţi să adăugaţi un comentariu în cod
morekeywords={*,...}            % dacă vreţi să mai adăugaţi cuvinte cheie la setul existent
}

Linia escapeinside necesită o explicaţie suplimentară. Vă trebuie dacă vreţi să adăugaţi ceva text în cod, care să nu fie afişat. Notaţi că, implicit, comentariile ce ţin de limbajul de programare vor fi afişate; comanda escapeinside={A}{B} defineşte comentarii doar pentru pachetul listings. Întregul cod dintre şirurile de caractere "A" şi "B" va fi ignorat. În exemplul anterior, comentariile pentru Octave încep cu %, şi urmează a fi afişate în documentul final dacă nu încep cu %*, însă trebuie să vă amintiţi să "închideţi" comentariul cu altă steluţă "*".

Dacă adăugaţi paragraful dinainte, puteţi folosi comanda următoare pentru a modifica setările codului:

\lstset{language=C,caption=Text descriptiv,label=EtichetăDescriptivă}

Găsiţi mai multe informaţii în PDF-ul lui Carsten Heinz şi Brooks Moses.

Detalii şi documentaţie pentru pachetul listings puteţi găsi pe site-ul CTAN.

Pentru un scurt exemplu, vezi codul de aici.

Comentarii ce se întind pe mai multe linii

După cum aţi văzut, singurul mod în care LaTeX vă permite să adăugaţi comentarii este folosind caracterul special %, care va transforma în comentariu restul liniei. Această abordare necesită mult timp pentru implementare dacă vreţi să inseraţi comentarii foarte mari sau vreţi să comentaţi o parte a documentului, la care veţi reveni mai târziu. Cu ajutorul pachetului verbatim, scris în preambul ca de obicei:

\usepackage{verbatim}

puteţi folosi un mediu numit comment, care va comenta tot ce cuprinde. Iată un exemplu:

Acesta este încă un exemplu
\begin{comment}
destul de prostesc,
dar util
\end{comment
}
de includere a comentariilor în document.

Acesta este încă un exemplu de includere a comentariilor în document.

Notaţi că asta nu va merge în medii complexe, cum este math, de exemplu. Poate vă întrebaţi, de ce ar trebui să includ un pachet numit verbatim pentru a avea posibilitatea de a adăuga comentarii? Răspunsul este imediat: textul comentat nu este interpretat de compilator la fel ca textul verbatim, diferenţa fiind că textul verbatim este introdus în document, iar comentariul nu.

Ca o alternativă, puteţi defini o comandă \comentariu{}, adăugând în preambulul documentului:

\newcommand{\comentariu}[1]{}

Apoi, pentru a comenta un text, utilizaţi această comandă:

\comentariu{ Acesta este un comentariu lung şi care poate să se întindă pe mai multe linii, etc.  }

Pachetul rotating

Pachetul rotating vă oferă posibilitatea de a roti orice obiect cu un unghi arbitrar. Îndată ce l-aţi încărcat cu comanda standard în preambul:

\usepackage{rotating}

puteţi folosi trei medii noi:

\begin{sideways}

roteşte întregul argument cu 90 de grade în sens trigonometric (invers acelor de ceasornic). Mai mult:

\begin{turn}{30}

va roti argumentul cu 30 de grade. Puteţi da orice unghi ca argument, fie că este pozitiv sau negativ. Acesta va lăsa spaţiul necesar pentru a evita orice suprapunere de text.

\begin{rotate}{30}

este la fel ca turn, însă nu adaugă spaţiu suplimentar.

Dacă vreţi ca un element flotant să fie întors cu 90 de grade în sens trigonometric astfel încât să se rotească şi titlul sau legenda în mod corespunzător, puteţi folosi

\begin{sidewaysfigure}

sau

\begin{sidewaystable}

Notaţi, totuşi, că figurile sau tabelele rezultate vor fi aşezate pe o pagină separată.

Notă: Multe programe de vizualizare pentru DVI nu permit afişarea textului şi tabelelor rotite. Textul va fi afişat normal. Trebuie să convertiţi fişierul DVI în PDF şi să-l vizualizaţi cu un program pentru PDF-uri pentru a vedea efectele de rotire. Aveţi grijă totuşi că tipărirea acelor fişiere PDF ar putea roti pagina respectivă din nou în aceeaşi direcţie în unele situaţii. Acest comportament poate fi influenţat de configurările programului de conversie dvi2pdf. Uitaţi-vă peste manual pentru mai multe informaţii.

Acest pachet este inclus în grupul 'texlive-latex-recommended' din Ubuntu.

Citarea de text

LaTeX oferă mai multe medii pentru citarea de text, cu mici diferenţe şi menite pentru tipuri diferite de citate. Toate sunt indentate la una dintre margini, la care puteţi adăuga propriile marcaje pentru citate dacă vreţi. Mediile oferite sunt:

quote
pentru un citat scurt, sau o serie de citate mici, separate de linii libere.
quotation
pentru citate mai lungi, de un paragraf sau mai multe, întrucât indentează prima linie a fiecărui paragraf.
verse
pentru citate în care liniile libere sunt importante, ca în cazul poeziei. În cadrul acestui mediu, noi strofe sunt create cu o linie liberă, iar liniile noi dintr-o strofă sunt indicate cu ajutorul comenzii pentru o linie nouă, \\. Dacă o linie ia mai mult spaţiu pe o pagină decât mărimea normală a unei linii, atunci toate liniile următoare sunt indentate până când sunt separate explicit cu comanda \\.

Rezumate

În publicaţiile ştiinţifice, se obişnuieşte să se înceapă cu un rezumat care oferă cititorului o privire de ansamblu asupra conţinutului. LaTeX pune la dispoziţie mediul abstract în acest scop. Poate fi accesat în clasele de documente article şi report; nu este disponibil în clasa book, însă este foarte uşor să creezi versiunea proprie dacă vrei.

Liste personalizate

Personalizarea LaTeX depăşeşte domeniul începătorilor. Deşi nu este greu de realizat, deoarece începătorii sunt deja încărcaţi cu o mulţime de comenzi şi medii pe care trebuie să le înveţe, trecerea la subiecte mai avansate poate genera confuzie.

Totuşi, de vreme ce acest tutorial priveşte formatarea, voi prezenta totuşi un scurt ghid legat de personalizarea listelor. Puteţi trece peste această secţiune!

Modificarea spaţierii liniilor în liste

În mediile de listare, puteţi redefini unele variabile de lungime în LaTeX, spre exemplu:

\begin{itemize}
  \setlength{\itemsep}{1pt}
  \setlength{\parskip}{0pt}
  \setlength{\parsep}{0pt}
  \item Primul item
  \item Al doilea item
\end{itemize
}

Altfel, pentru a crea un aspect unificat în document, puteţi defini propriul mediu de enumerare:

\newenvironment{enumerare}
{\begin{enumerate}
  \setlength{\itemsep}{1pt}
  \setlength{\parskip}{0pt}
  \setlength{\parsep}{0pt}}
{\end{enumerate}
}

Modificarea listelor numerotate

Lucrul pe care utilizatorii vor să-l schimbe cel mai des la listele numerotate sunt contoarele. De aceea, pentru a merge mai departe, este necesară o scurtă introducere în domeniul contoarelor din LaTeX. Pentru orice lucru pe care LaTeX îl numără automat, cum ar fi antetele secţiunilor, figurile şi listele cu marcatori, există un contor asociat cu el care controlează numerotarea.

Sunt patru contoare individuale asociate cu listele cu marcatori, fiecare reprezentând unul din cele patru niveluri posibile de imbricare, numite: enumi, enumii, enumiii şi enumiv. Pentru a reseta oricare dintre aceste contoare în mijlocul unei enumerări simple, folosiţi \setcounter. Contorul este incrementat de comanda \item înainte de a fi afişat. Spre exemplu, pentru a reseta enumi, scrieţi:

\begin{enumerate}
  \setcounter{enumi}{4}
  \item Al cincilea element
\end{enumerate}

care va fi afişat sub forma:

5. Al cincilea element

Fiecare contor are de asemenea un format implicit care îi dictează cum este afişat oricând LaTeX are nevoie să-l afişeze. Astfel de formate sunt specificate cu ajutorul unor comenzi LaTeX interne:

Comandă Exemplu
\arabic 1, 2, 3 ...
\alph a, b, c ...
\Alph A, B, C ...
\roman i, ii, iii ...
\Roman I, II, III ...
\fnsymbol Făcut pentru note de subsol (vezi mai jos), însă afişează o secvenţă de simboluri.

Fiecare entitate pentru un contor păstrează diverse informaţii despre acesta. Pentru a ajunge la elementul numerotat, folosiţi comanda \the urmată imediat (adică fără spaţiu) de numele contorului, de exemplu, \theenumi. Aceasta este deseori denumită reprezentarea unui contor.

Pentru a modifica formatarea la un nivel dat:

\renewcommand{\reprezentare}{\formatul_comenzii{contor}}

Versiunea generică nu este clară, astfel încât câteva exemple vor clarifica lucrurile:

% Redefiniţi primul nivel
\renewcommand{\theenumi}{\Roman{enumi}}
\renewcommand{\labelenumi}{\theenumi}
 
% Redefiniţi al doilea nivel
\renewcommand{\theenumii}{\Alph{enumii}}
\renewcommand{\labelenumii}{\theenumii}

Metoda utilizată mai sus mai întâi modifică în mod explicit formatul folosit de contor. Totuşi, elementul ce controlează eticheta (label) trebuie actualizat pentru a reflecta schimbarea, lucru pe care-l face a doua linie. Un alt mod de a obţine acest rezultat ar fi:

\renewcommand{\labelenumi}{\Roman{enumi}}

Asta pur şi simplu redefineşte aspectul etichetei, ceea ce e de ajuns, presupunând că nu aveţi de gând să transmiteţi referinţe la un item specific din listă, caz în care referinţa va fi afişată în formatul anterior. Această problemă nu apare în primul exemplu.

Notaţi că puteţi adăuga şi alte simboluri, cum ar fi parantezele şi punctele, înainte şi după contor. Spre exemplu, pentru a crea o listă indexată de litere mici cu paranteze înainte şi după litere, puteţi da următoarea comandă:

\renewcommand{\labelenumi}{(\alph{enumi})}

Modificarea listelor cu marcatori

Listele cu marcatori nu sunt atât de complexe întrucât nu trebuie să numere. De aceea, pentru a le personaliza, pur şi simplu modificaţi etichetele. Acest lucru se poate face manual pentru fiecare intrare cu comanda \item[etichetă nouă], de exemplu \item[$\star$].

Etichetele listelor cu marcatori se accesează prin intermediul comenzilor \labelitemi, \labelitemii, \labelitemiii şi \labelitemiv, respectiv pentru cele patru niveluri.

Putem să modificăm aceste etichete în felul următor:

\renewcommand{\labelitemi}{\textgreater}

Exemplul de mai sus ar seta etichetele pentru primul nivel la un simbol "mai mare decât" (>). Desigur, simbolurile textuale din Latex nu sunt foarte atrăgătoare. Puteţi folosi unul dintre simbolurile ZapfDingbat, descrise în secţiunea Alte simboluri din capitolul Formatare. Sau puteţi utiliza un simbol matematic:

\renewcommand{\labelitemi}{$\star$}

Puteţi crea o listă cu marcatori, fără spaţii verticale între itemi consecutivi, în felul următor:

\begin{itemize}
  \setlength{\itemsep}{0cm}
  \setlength{\parskip}{0cm}
  \item Primul item din listă
  \item Itemul următor
\end{itemize}

Detalii ale personalizării listelor

Notaţi că este necesar ca \renewcommand să apară după instrucţiunea \begin{document}, astfel încât schimbările realizate să fie luate în considerare. Acest lucru este necesar atât pentru liste numerotate, cât şi pentru cele cu marcatori.

Liste inline

Listele inline sunt un caz special întrucât necesită utilizarea pachetului paralist, care oferă mediul inparaenum (cu o specificaţie opţională de formatare în paranteze drepte):

...
\usepackage{paralist}

\begin{document}

\textbf{\itshape Listele inline} au o
natură secvenţială, la fel ca listele numerotate,
dar sunt
\begin{inparaenum}[\itshape a\upshape)]
\item formatate în paragrafele lor;
\item de obicei etichetate cu litere; şi
\item au în general prefixul `şi' sau `sau'
 înainte de ultimul item,
\end{inparaenum
} ca în acest exemplu.
...

Latex exemplu paralist.png

Pentru a schimba stilurile contoarelor, simbolurile A, a, I, i, şi 1 pot fi utilizate în argumentul opţional pentru a produce contoare cu unul din stilurile \Alph, \alph, \Roman, \roman şi \arabic. Spre exemplu:

\begin{inparaenum}[(i)]

produce etichetele (i), (ii), (iii) ...


Această pagină foloseşte materiale din cartea lui Andy Roberts, Getting to grips with Latex, cu permisiunea autorului.

Fonturi

Pentru a putea selecta alt font decât fontul implicit din LaTeX, trebuie să includeţi câteva comenzi în preambulul documentului.

Spre exemplu:

 \usepackage[T1]{fontenc}
 \usepackage[light,math]{iwona}

Important: notaţi că asta merge numai pentru fonturi ce sunt deja instalate în LaTeX. Dacă aveţi un font ttf sau ceva asemănător, va trebui să-l convertiţi şi să-l faceţi disponibil sistemului LaTeX. Vezi secţiunea de legături externe de la sfârşitul capitolului pentru câteva resurse utile în acest sens.

Exemplu

Iată un exemplu găsit pe grupul de discuţie Google latexlovers. Exemplul demonstrează cum puteţi selecta diferite fonturi într-un document simplu.

\documentclass{book}
 
\begin{document}
 
 % fontul implicit (\familydefault = \rmdefault = Computer Modern Roman)
 Lorem ipsum dolor sit amet, consectitur adipiscing elit.
 
 \renewcommand*\rmdefault{ppl}\normalfont\upshape
 Lorem ipsum dolor sit amet, consectitur adipiscing elit. % fontul Palatino
 
 \renewcommand*\rmdefault{iwona}\normalfont\upshape
 Lorem ipsum dolor sit amet, consectitur adipiscing elit. % fontul Iwona
 
\end{document}

Output:

Latex fonturi.png

XeTeX

Dacă utilizaţi motorul XeTeX şi pachetul fontspec, veţi putea folosi orice font instalat pe calculator fără eforturi suplimentare. XeTeX permite de asemenea utilizarea tehnologiei OpenType a fonturilor moderne, spre exemplu prin specificarea de simboluri alternative şi versiuni de dimensiuni optice (simboluri care arată bine dacă sunt mărite foarte mult, spre exemplu, au marginile netede). XeTeX foloseşte Unicode în mod implicit, lucru ce poate fi util în chestiuni legate de fonturi.

Pentru a utiliza fonturile, încărcaţi pachetul fontspec în preambul şi stabiliţi fontul:

\documentclass{article}
 
\usepackage{fontspec}
\setmainfont{Arial}
 
\begin{document}
 Lorem ipsum...
\end{document}

Apoi compilaţi documentul cu XeLateX sau LuaLaTeX. Notaţi că puteţi genera numai fişiere .pdf şi vă trebuie o versiune destul de nouă de TeX (TeX Live 2009 ar trebui să meargă cu XeTeX şi Tex Live 2010 cu LuaTeX).

Site-uri utile

Fonturi TrueType (ttf)


Aranjarea în pagină

Latex şi clasa documentului în mod normal se vor îngriji de formatul paginii în locul vostru. Pentru publicaţiile academice, acest subiect nu vă va ajuta prea mult, deoarece editorii vor să păstreze controlul prezentării. Totuşi, pentru propriile documente, probabil veţi dori să schimbaţi o serie de setări: margini, orientarea paginii şi coloanele, pentru a numi doar câteva. Scopul tutorialului de faţă este să vă arate cum puteţi configura paginile.

Dimensiunile paginii

O pagină în Latex este definită de o mulţime de parametri interni. Fiecare parametru corespunde lungimii unui element al paginii, spre exemplu, \paperheight este înălţimea fizică a paginii. Iată o diagramă ce prezintă toate variabilele ce definesc o pagină:

Latex layout.svg


  1. un inch + \hoffset
  2. un inch + \voffset
  3. \oddsidemargin = 31pt
  4. \topmargin = 20pt
  5. \headheight = 12pt
  6. \headsep = 25pt
  7. \textheight = 592pt
  8. \textwidth = 390pt
  1. \marginparsep = 10pt
  2. \marginparwidth = 35pt
  3. \footskip = 30pt
  • \marginparpush = 7pt (nu se vede)
  • \hoffset = 0pt
  • \voffset = 0pt
  • \paperwidth = 597pt
  • \paperheight = 845pt

Nu iese imediat în evidenţă — întrucât nu cauzează probleme serioase — faptul că dimensiunea implicită a paginii pentru toate clasele standard de documente este US letter. Aceasta este mai scurtă cu 18 mm (aproximativ 3/4 inch), şi puţin mai lată, cu 8 mm (cam 1/4 inch), decât A4 (care este standardul în aproape tot restul lumii). După cum ziceam, nu e o problemă aşa de mare, iar cele mai multe imprimante vor tipări pagina fără probleme. Totuşi, puteţi specifica dimensiuni alternative.

\documentclass[a4paper]{article}

Exemplul de mai sus ilustrează folosirea argumentelor opţionale pentru comanda \documentclass, care va modifica dimensiunile paginii în mod corespunzător. Clasele standard de documente care fac parte din Latex sunt făcute în aşa fel încât să fie destul de generice, de aceea aveţi flexibilitatea de a specifica dimensiunea paginii. Alte clase pot avea opţiuni diferite (sau niciuna). În mod normal, clasele terţe au ceva documentaţie care să prezinte aceste opţiuni.

Cititorii obişnuiţi cu un program de procesare de cuvinte de genul 'Word' se întreabă probabil de ce textul este înconjurat de atât de mult spaţiu liber. E un bun motiv, care se reduce la lizibilitate. Deschideţi o carte şi alegeţi câteva linii la întâmplare. Număraţi caracterele de pe o linie. Pun pariu că media este în jur de 66. Unele studii au arătat că e mai uşor să citeşti text când sunt 60-70 caractere pe o linie — şi s-ar părea că 66 este numărul optim. De aceea, marginile paginii sunt setate în aşa fel încât să asigure o cât mai bună lizibilitate. De asemenea, se lasă de obicei ceva spaţiu liber în marginea interioară a paginilor pentru cazul în care documentul va fi legat.

Dacă vreţi să schimbaţi marginile documentului, puteţi proceda în mai multe feluri:

  • Folosiţi pachetul fullpage pentru margini standardizate ceva mai mici (cam cu un inch):
\usepackage{fullpage}

Pentru un efect şi mai mare, folosiţi opţiunea cm (în jur de 1,5cm):

\usepackage[cm]{fullpage}
  • Utilizaţi pachetul a4wide pentru un document cu pagini A4 şi margini ceva mai mici.
  • Folosiţi pachetul geometry. Acest pachet vă permite să specificaţi cele 4 margini fără a fi necesar să reţineţi comenzile particulare pentru modificarea dimensiunilor paginii. Se poate implementa în felul următor:
\usepackage[top=tlength, bottom=blength, left=llength, right=rlength]{geometry}
  • Editaţi variabilele individuale ce controlează dimensiunile paginii descrise mai sus cu ajutorul comenzilor \addtolength şi \setlength. Spre exemplu:
\oddsidemargin=-1cm
\setlength{\textwidth}{6.5in}
\addtolength{\voffset}{-5pt}

În plus, sunt mai multe pachete menite să rezolve problema modificării dimensiunilor paginii, care suprascriu valorile implicite ale clasei de documente. Unul din pachetele cele mai versatile în ce priveşte formatul paginii este pachetul geometry. Spre exemplu, pentru a seta dimensiunea paginii, adăugaţi următoarele la preambul:

\usepackage[a4paper]{geometry}

Pachetul geometry are multe dimensiuni predefinite de pagini, cum este a4paper sau: a0paper, a1paper, ..., a6paper, b0paper, b1paper, ..., b6paper, letterpaper, legalpaper, executivepaper.

Pentru a modifica în mod explicit dimensiunile paginii cu ajutorul pachetului geometry, puteţi folosi opţiunile 'paperwidth' şi 'paperheight'. De exemplu:

\usepackage[margin=1in, paperwidth=5.5in, paperheight=8.5in]{geometry}

Probleme legate de mărimea paginii

Dacă intenţionaţi să obţineţi un PDF la sfârşit, sunt în esenţă trei căi posibile:

TeX => PDF
TeX => DVI => PDF
TeX => DVI => PS => PDF

În general pentru acestea se folosesc următoarele comenzi:

pdflatex nume_fişier
latex nume_fişier  dvipdf nume_fişier
latex nume_fişier  dvips nume_fişier -o nume_fişier.ps  ps2pdf nume_fişier.ps nume_fişier.pdf

Ţinând cont de toate versiunile Ghostscript disponibile, modul cel mai sigur de a obţine întotdeauna dimensiunea corespunzătoare a paginii la sfârşit este să adăugaţi

\documentclass[...,a4paper,...]{...}
\special{papersize=210mm,297mm}

la fişierul sursă 'tex', -t a4 după comanda 'dvips' şi -sPAPERSIZE=a4 după 'ps2pdf'. Pentru ca 'pdflatex' să meargă cum trebuie, puteţi folosi pachetul geometry.

Dacă vreţi în schimb US Letter, înlocuiţi "210mm,297mm" cu "8.5in,11in", iar "a4" cu "letter".

Orientarea paginii

Când vorbiţi despre schimbarea orientării paginii, asta înseamnă de obicei trecerea la modul landscape, de vreme ce portrait este valoarea implicită. Vă voi prezenta două stiluri puţin diferite de schimbare a orientării.

Primul este pentru situaţiile în care vreţi ca documentul să fie landscape încă de la început. Aveţi la dispoziţie diverse pachete pentru a face asta, însă preferatul meu este geometry. Tot ce trebuie să faceţi este să includeţi pachetul, cu opţiunea landscape:

\usepackage[landscape]{geometry}

Deşi, dacă intenţionaţi să utilizaţi pachetul geometry pentru a seta dimensiunile paginii, nu scrieţi de două ori comanda \usepackage; puneţi toate opţiunile laolaltă, separate prin virgulă:

\usepackage[a4paper,landscape]{geometry}

A doua metodă se foloseşte când scrieţi un document în modul portrait, dar aveţi un conţinut, ca o diagramă mai mare sau un tabel ce ar fi afişate mai bine pe o pagină în formatul landscape. Totuşi, încă vreţi ca header-ul şi footer-ul să apară în acelaşi loc ca pe celelalte pagini.

Pachetul lscape este menit exact în acest scop. Oferă un mediu landscape, orice lucru din el fiind în esenţă rotit. Nu se schimbă nicio dimensiune efectivă a paginii. Această abordare este mai aplicabilă la cărţi sau rapoarte decât la publicaţiile academice tipice. Folosind pdflscape în loc de lscape când generaţi un document PDF, pagina va părea rotită când este vizualizat: singura pagină care este în formatul landscape va fi rotită, în vreme ce restul documentului va rămâne cu orientarea portrait.

De asemenea, pentru a face un tabel să apară corect pe o pagină landscape, plasaţi mediul tabular într-un mediu table, care este la rândul lui în cadrul unui mediu landscape, adică ar trebui să arate cam aşa:

\begin{landscape}
 \begin{table}
  \centering % opţional, probabil arată mai bine centrat pe pagină
  \begin{tabular}{....}
   .......
  \end{tabular}
 \end{table}
\end{landscape}

Stiluri de pagini

Stilurile de pagini din Latex nu se referă la dimensiunile paginii, ci la header-ul şi footer-ul curente ale unui document. Aceste headere conţin în mod tipic titlul documentului, numele sau numerele de capitol sau secţiune şi numerele paginilor.

Stiluri standard de pagini

Posibilităţile de modificare a antetelor în plain LaTeX sunt în fapt destul de limitate. Aveţi la dispoziţie două comenzi: \pagestyle{stil}, care va aplica stilul specificat la pagina curentă şi la toate paginile următoare, şi \thispagestyle{stil}, care va afecta numai pagina curentă. Stilurile posibile sunt:

empty Fără header şi footer
plain Fără header, însă footer-ul conţine numărul paginii în centru.
headings Fără footer, iar header-ul afişează informaţii legate de clasa documentului (cum ar fi numele secţiunii) şi numărul paginii în partea superioară la dreapta.
myheadings Numărul paginii este în colţul drept superior şi puteţi controla restul header-ului.

Cu myheadings, comenzile \markright (în clasele standard de documente: carte, raport şi articol) şi \markboth (numai pentru clasa carte) sunt folosite pentru a controla antetele. Următoarele comenzi plasate la începutul unui articol vor seta header-ul tuturor paginilor la "John Smith" în partea superioară la stânga, "Stiluri de pagini" centrat sus şi numărul paginii în colţul dreapta sus:

\pagestyle{myheadings}
\markright{John Smith\hfill Stiluri de pagini\hfill}

O problemă de rezolvat este că principalele comenzi de împărţire în secţiuni (\part, \chapter sau \maketitle) specifică un stil plain al paginii: \thispagestyle{plain}. Aşadar, dacă vreţi să suprimaţi toate stilurile prin inserarea \pagestyle{empty} la începutul documentului, atunci comanda de stil pentru fiecare secţiune va suprascrie regula iniţială, numai pentru acele pagini. Pentru a obţine rezultatul dorit, puteţi scrie după noile comenzi de împărţire în secţiuni \thispagestyle{empty}. Totuşi, nu puteţi regla comanda \part în felul acesta, întrucât setează stilul paginii, dar de asemenea trece la pagina următoare, astfel încât \thispagestyle{} nu se poate aplica la acea pagină. O altă abordare este să scrieţi pur şi simplu \usepackage{nopageno} în preambul. Acest pachet va face ca \pagestyle{plain} să aibă acelaşi efect ca şi \pagestyle{empty}, suprimând efectiv numerotarea paginilor când este folosită.

Personalizarea cu fancyhdr

Pentru a obţine un control mai bun asupra antetelor, puteţi folosi pachetul fancyhdr scris de Piet van Oostrum. Acesta oferă mai multe comenzi ce vă permit personalizarea liniilor header şi footer ale documentului. Pentru un ghid mai cuprinzător, autorul pachetului a scris această documentaţie.

O problemă delicată legată de personalizarea liniilor header şi footer este să includeţi în ele lucruri de genul denumirilor de secţiuni sau de capitole. LaTeX realizează acest lucru printr-o abordare în două stadii. În definiţia header-ului şi footer-ului, folosiţi comenzile \rightmark şi \leftmark pentru a reprezenta antetele secţiunii, respectiv capitolului curente. Valorile generate de aceste două comenzi sunt suprascrise oricând se procesează o comandă care generează un capitol sau o secţiune nouă. Pentru mai multă flexibilitate, comanda \chapter şi comenzile asemănătoare nu redefinesc valorile generate de \rightmark şi \leftmark. Mai sunt câteva comenzi (\chaptermark, \sectionmark, sau \subsectionmark) responsabile for redefinirea valorilor \rightmark şi \leftmark.

Dacă vreţi să schimbaţi aspectul denumirii capitolului în linia header-ului, trebuie doar să "reînnoiţi" comanda \chaptermark.

Pentru început, adăugaţi următoarele linii la preambul:

\usepackage{fancyhdr}
\setlength{\headheight}{15.2pt}
\pagestyle{fancy}

A doua linie va preveni un avertisment LaTeX. Atât header-ul, cât şi footer-ul cuprind trei elemente fiecare, în funcţie de poziţia orizontală (stângă, centrală sau dreaptă). Pentru a seta aceste valori, aveţi la dispoziţie următoarele comenzi:

\lhead[lh-even]{lh-odd} \lfoot[lf-even]{lf-odd}
\chead[ch-even]{ch-odd} \cfoot[cf-even]{cf-odd}
\rhead[rh-even]{rh-odd} \rfoot[rf-even]{rf-odd}

Din fericire, comportamentul comenzilor de mai sus este destul de intuitiv: dacă conţin cuvântul head, afectează header-ul etc, şi evident, l, c şi r înseamnă stâng (left), central, respectiv drept (right). Documentele pot fi ori cu o faţă (one-sided), ori faţă-verso (two-sided). Articolele sunt implicit cu o faţă, cărţile faţă-verso. Documentele faţă-verso fac deosebire între faţa (pagina) stângă (pară) şi dreaptă (impară), în vreme ce documentele cu o faţă nu fac asemenea diferenţieri.

Atenţie: dacă daţi un text foarte mare în două "părţi" diferite numai pentru footer sau numai pentru header, aţi putea să vedeţi text suprapus. Puteţi folosi ca argumente câteva comenzi speciale:

\thepage numărul paginii curente
\leftmark numele capitolului curent afişat sub forma "CAPITOLUL 3. ACESTA E TITLUL CAPITOLULUI"
\rightmark numele secţiunii curente afişate sub forma "1.6. ACESTA ESTE TITLUL SECŢIUNII"
\thesection numărul secţiunii curente

Notaţi că \leftmark şi \rightmark scriu numele cu litere mari, indiferent care era formatarea textului. Dacă vreţi să afişaţi numele efectiv al capitolului fără a-l scrie cu litere mari, utilizaţi următoarele comenzi:

\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}{}}

Acum \leftmark şi \rightmark vor afişa numele de capitol şi secţiune, fără număr şi fără să afecteze formatarea. Mai mult, cu comenzile următoare puteţi defini grosimea liniilor decorative atât pentru header, cât şi pentru footer:

\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}

Prima linie este pentru header, a doua pentru footer. Setarea la valoarea zero înseamnă că nu va fi afişată nicio linie.

Iată un exemplu:

\fancyhf{}
 
\lhead{Andrew Roberts}
\rhead{\today}
\rfoot{\thepage}

Este deseori necesar să anulaţi orice valori implicite sau o definiţie de stil anterioară, lucru pe care îl face prima linie din exemplul de mai sus. Comenzile sunt o interfaţă alternativă la personalizarea header-ului/footer-ului oferită de fancyhdr, şi astfel, dacă nu îi daţi niciun argument, se presupune că vreţi să resetaţi toate valorile implicite.

Rezultatul acestor comenzi va pune numele în colţul stâng superior, data curentă în colţul drept de sus şi numărul paginii curente în partea inferioară a paginii la dreapta. Chiar dacă documentul era faţă-verso, deoarece nu a fost furnizat niciun text opţional pentru paginile pare, stilul rezultat va fi folosit pentru toate paginile.

Această abordare are o deficienţă serioasă: unele pagini, cum este pagina titlu sau paginile de la începutul fiecărui capitol nu au header sau footer, însă cu codul prezentat mai devreme fiecare pagină va avea acelaşi aspect. Există un mod de a rezolva această problemă: folosiţi stilul fancyplain. Astfel, utilizaţi comanda \fancyplain{...}{...} în \lhead{...} etc.

Când LaTeX vrea să creeze o pagină cu un stil liber (empty), va insera primul argument al fancyplain, în toate celelalte cazuri va folosi al doilea argument. Aşadar, o versiune îmbunătăţită a codului dinainte ar fi:

\pagestyle{fancyplain}
 
\fancyhf{}
 
\lhead{\fancyplain{}{Andrew Roberts}}
\rhead{\fancyplain{}{\today}}
\rfoot{\fancyplain{}{\thepage}}

Are acelaşi comportament ca şi codul anterior, însă veţi obţine pagini fără header şi footer pentru titlu şi la începutul capitolelor.

În cazul paginilor faţă-verso, se obişnuieşte să oglindiţi stilul paginilor opuse, aveţi tendinţa să gândiţi în termeni de interior şi exterior. Aşadar, acelaşi exemplu ca cel de mai sus pentru paginile faţă-verso ar fi:

\lhead[Andrew Roberts]{}
\rhead[]{Andrew Roberts}
\lhead[]{\today}
\rhead[\today]{}
\lfoot[\thepage]{}
\rfoot[]{\thepage}

Asta spune efectiv că numele este în partea superioară exterioară, data curentă este în partea superioară interioară, iar numărul paginii curente este în partea de jos exterioară. Puteţi utiliza şi aici comanda fancyplain pentru documentele faţă-verso.

Ca exemplu, iată codul complet al unei configuraţii de bază pe care o puteţi utiliza pentru un document real:

\usepackage{fancyhdr}
\setlength{\headheight}{15pt}
 
\pagestyle{fancyplain}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
 
\lhead{\fancyplain{}{\thepage}}
\chead{}
\rhead{\fancyplain{}{\textit{\leftmark}}}
\lfoot{}
\cfoot{}
\rfoot{}

Notă: Dacă vreţi să folosiţi clasa articol faţă-verso (two-side), folosiţi \documentclass[twoside]{article}.

O altă abordare cu fancyhdr

Dacă vreţi stiluri diferite pentru paginile pare şi impare, mai este o cale, tot cu ajutorul fancyhdr. Începeţi din nou cu:

\fancyhf{}

Această comandă va şterge configuraţia curentă de antete, astfel încât puteţi implementa alta. Acum puteţi crea ce vreţi cu ajutorul comenzii \fancyhead pentru header şi \fancyfoot pentru footer. Acestea merg la fel, aşa că o vom explica numai pe prima. Sintaxa este:

\fancyhead[selectori]{output dorit}

Selectorii sunt următorii:

E pagină pară (even)
O pagină impară (odd)
L partea stângă (left)
C centrat
R partea dreaptă (right)

astfel încât CE se va referi la centrul paginilor pare, iar RO la partea dreaptă a paginilor impare. Aceiaşi selectori se folosesc pentru \fancyfoot. Puteţi utiliza mai mulţi selectori separaţi prin virgulă. Iată un exemplu:

\fancyhead[CE]{Numele autorului}
\fancyhead[CO]{\today}
\fancyfoot[LE,RO]{\thepage}

Asta va afişa numele autorului în centrul header-ului pe paginile pare, data curentă în centrul header-ului pe paginile impare şi numărul paginii curente în partea stângă pe paginile pare şi în dreapta footer-ului pe paginile impare.

În cele urmă, pentru ca paginile de la începutul oricărui capitol să fie cu adevărat plain, puteţi redefini stilul plain, spre exemplu, pentru a beneficia de o astfel de pagină când doriţi. Comanda de utilizat aici este \fancypagestyle{plain}{...}, iar argumentul poate conţine toate comenzile explicate mai devreme. Un exemplu în acest sens este următorul:

\fancypagestyle{plain}{ %
\fancyhf{} % înlătură toate valorile implicite
\renewcommand{\headrulewidth}{0pt} % înlătură
\renewcommand{\footrulewidth}{0pt}} % şi liniile

În sfârşit, iată codul complet al unui stil posibil pe care l-aţi putea folosi pentru un document faţă-verso:

\usepackage{fancyhdr}
\setlength{\headheight}{15pt}
 
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{#1}{}}
 
\fancyhf{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[RE]{\textit{\nouppercase{\leftmark}}}
\fancyhead[LO]{\textit{\nouppercase{\rightmark}}}
 
\fancypagestyle{plain}{ %
\fancyhf{} % înlătură toate valorile implicite
\renewcommand{\headrulewidth}{0pt} % înlătură
\renewcommand{\footrulewidth}{0pt}} % şi liniile

Pagina n din m

Unora le place să pună numărul paginii curente în contextul documentului. LaTeX oferă acces numai la numărul paginii curente. Totuşi, puteţi folosi pachetul lastpage pentru a afla numărul total de pagini, în felul următor:

\usepackage{lastpage}
...
\cfoot{\thepage\ din \pageref{LastPage}}

Notaţi literele mari. De asemenea, adăugaţi un backslash după comanda \thepage pentru a asigura un spaţiu adecvat între numărul paginii şi 'din'. Şi reţineţi, când utilizaţi referinţe, că trebuie să rulaţi comanda de compilare LaTeX încă o dată pentru a rezolva toate referinţele.

Pagini cu mai multe coloane

Se obişnuieşte ca articolele şi documentele pregătitoare ale conferinţelor să fie formatate cu două coloane de text. Cu toate acestea, astfel de publicaţii au adesea propriile clase de documente, care implementează automat acest format, fără a fi nevoie de o formatare explicită adiţională. Este foarte uşor să formatezi o pagină în felul acesta. Dacă utilizaţi o clasă standard de documente LaTeX, atunci puteţi pasa pur şi simplu argumentul opţional twocolumn clasei de documente: \documentclass[twocolumn]{article}, lucru care va da efectul dorit.

Deşi acest artificiu va da rezultatul dorit în 9 situaţii din 10, este binecunoscut faptul că această abordare are multe limitări şi că pachetul multicol este mult mai util pentru gestionarea coloanelor multiple. Această abordare prezintă mai multe avantaje:

  • Poate oferi suport pentru cel mult 10 coloane.
  • Implementează un mediu multicols, prin intermediul căruia puteţi specifica numărul de coloane într-un document.
  • În plus, acest mediu poate fi inclus în alte medii, cum este figure.
  • Multicol generează coloane echilibrate, adică de lăţime aproximativ egală.
  • Puteţi modifica liniile verticale dintre coloane.
  • Mediile coloanele pot fi uşor adaptate local sau global.

Acest mediu nu oferă suport complet pentru elementele flotante. Merge cum trebuie numai dacă folosiţi formele stelate ale comenzilor pentru aceste elemente (de exemplu, \begin{figure*}), ceea ce face elementele flotante să se extindă de-a lungul tuturor coloanelor. Acest lucru nu este deosebit de problematic, deoarece elementele flotante de aceeaşi dimensiune pot fi prea mici pentru o coloană, şi probabil că aţi dori să le extindeţi oricum.

Pentru a crea un layout tipic pentru două coloane:

\begin{multicols}{2}
  foarte mult text
\end{multicols}

Parametrul \columnseprule păstrează lăţimea liniilor verticale. Implicit, liniile sunt omise dacă acest parametru este setat la 0pt. Daţi următoarea comandă înainte de a începe acest mediu:

\setlength{\columnseprule}{1pt}

Aceasta va trasa o linie subţire de 1pt lăţime. O linie groasă nu ar arăta prea bine, cu toate acestea, aveţi libertatea să specificaţi orice lăţime doriţi. De asemenea, pentru a schimba spaţiul orizontal între coloane (valoarea implicită este setată la 10pt, care este destul de mică), trebuie să modificaţi parametrul \columnsep:

\setlength{\columnsep}{20pt}

Formatarea manuală a paginii

Ar putea să fie cazuri, mai ales în documentele foarte lungi, cum sunt cărţile, în care Latex nu va formata cum trebuie sfârşitul paginilor. Ar putea fi necesar, de aceea, să faceţi această formatare manual. Desigur, ar trebui să faceţi asta chiar la sfârşitul documentului, după ce aţi terminat de scris tot conţinutul. Latex oferă următoarele comenzi:

\newline Întrerupe linia în dreptul comenzii.
\\ Întrerupe linia în dreptul comenzii, este o versiune mai scurtă a comenzii dinainte, însă face acelaşi lucru
\\* Întrerupe linia în dreptul comenzii şi în plus împiedică trecerea la pagina următoare după întreruperea forţată a liniei curente
\linebreak[număr] Întrerupe linia în dreptul comenzii. Numărul furnizat ca argument reprezintă prioritatea comenzii în intervalul de la 0 (comanda va fi ignorată) la 4 (execută comanda oricum). LaTeX va încerca să producă cele mai bune întreruperi de linii posibile, răspunzând standardelor sale înalte. Dacă nu poate, va decide dacă va include sau nu capătul de linie în funcţie de prioritatea specificată.
\newpage Sfârşeşte pagina curentă şi începe una nouă.
\pagebreak[număr] Sfârşeşte pagina curentă în dreptul comenzii. Argumentul opţional număr setează prioritatea într-un interval de la 0 la 4.
\nopagebreak[număr] Împiedică întreruperea paginii în dreptul comenzii. Argumentul opţional număr setează prioritatea într-un interval de la 0 la 4.
\clearpage Sfârşeşte pagina curentă şi afişează orice elemente flotante în rezultat.

Văduve şi orfani

Wikipedia
Wikipedia are un articol despre:


În cărţile publicate nu este de dorit să aveţi o singură linie la începutul sau la sfârşitul unei pagini. Astfel de situaţii sunt denumite 'văduve' (widows) şi 'orfani' (orphans). În mod normal, se pot întâlni astfel de probleme în documentele LaTeX. Puteţi încerca să le rezolvaţi prin formatare manuală, însă există şi o soluţie automată.

LaTeX are un parametru pentru 'penalitate' în ce priveşte văduvele şi orfanii ('club lines' în terminologia LaTeX). În cazul unei penalităţi mai mari, LaTeX va încerca mai mult să evite văduvele şi orfanii. Puteţi încerca să măriţi aceste penalităţi punând următoarele comenzi în preambulul documentului:

\widowpenalty=300
\clubpenalty=300

Dacă asta nu vă ajută, puteţi încerca să măriţi aceste valori şi mai mult, până la un maxim de 10000. Totuşi, nu este recomandat să setaţi aceşti parametri la o valoare prea mare, deoarece o valoare de 10000 interzice văduvele şi orfanii, ceea ce ar putea avea drept urmare un comportament ciudat.

Este bine de asemenea să setaţi spaţiul dintre paragrafe:

\setlength{\parskip}{3ex plus 2ex minus 2ex}

Rezumat

Acest tutorial este destul de scurt, în mare parte datorită faptului că utilizatorii LaTeX se concentrează asupra conţinutului, lăsând în seama sistemului LaTeX (şi/sau altor publicaţii care au dezvoltat clase de documente) să decidă asupra celei mai bune prezentări. Pasul următor pentru a obţine mai mult control asupra formatului paginii este reprezentat de realizarea propriei clase de documente. Din păcate, nu este o sarcină uşoară, şi este în general mai bine să fie lăsată pe seama profesioniştilor!

Această pagină foloseşte materiale din cartea lui Andy Roberts, Getting to grips with Latex, cu permisiunea autorului.

Matematică

Una din forţele cele mai motivatoare pentru Donald Knuth când a început să dezvolte sistemul TeX iniţial a fost să creeze ceva care să permită construcţia simplă a formulelor matematice şi să arate bine în documentul final. Faptul că el a reuşit a fost cel mai probabil motivul pentru care TeX (şi mai târziu, LaTeX) a devenit atât de popular în comunitatea ştiinţifică. Indiferent de trecutul acestora, redactarea formulelor matematice este unul din punctele forte ale sistemului LaTeX. Este de asemenea un subiect vast datorită omniprezenţei notaţiilor matematice.

Dacă scrieţi un document care necesită numai câteva formule matematice simple, atunci puteţi folosi în general plain LaTeX: vă va pune la dispoziţie cele mai multe instrumente de care aveţi nevoie. Totuşi, dacă scrieţi un document ştiinţific ce conţine formule numeroase şi complicate, se recomandă să folosiţi pachetul amsmath sau mathtools (care include automat pachetul amsmath), care introduc mai multe comenzi noi, ce oferă mai multe facilităţi decât plain LaTeX. Pentru a include aceste pachete, scrieţi:

\usepackage{amsmath}

sau

\usepackage{mathtools}

în preambulul documentului.

Mediile matematice

LaTeX trebuie să ştie dinainte că textul ce urmează conţine elemente matematice. Asta deoarece LaTeX formatează notaţiile matematice diferit de textul normal. De aceea, în acest scop au fost dezvoltate medii speciale. Ele pot fi împărţite în două categorii în funcţie de modul lor de prezentare:

  • text — formulele din modul text sunt afişate in-line, adică în corpul de text în care sunt declarate. Spre exemplu, pot spune că a + a = 2a în cadrul acestei fraze.
  • displayed — formulele în modul de afişare (displayed) sunt separate de corpul principal de text.

Întrucât formulele matematice necesită medii speciale, există evident nume corespunzătoare de medii folosite în modul obişnuit. Spre deosebire de cele mai multe alte medii, totuşi, oferă câteva scurtături utile pentru a declara formulele. Tabelul următor rezumă toate acestea:

Tip Mediu Scurtătură LaTeX Scurtătură TeX
Text \begin{math}...\end{math} \(...\) $...$
Displayed \begin{displaymath}...\end{displaymath} sau

\begin{equation*}...\end{equation*}[1]

\[...\] $$...$$

Notă: Utilizarea $$...$$ ar trebui evitată, întrucât poate cauza probleme, mai ales în cazul macrocomenzilor AMS-LaTeX. În plus, dacă apare vreo problemă, s-ar putea ca mesajele de eroare să nu vă fie de niciun ajutor.

Mai există un mediu ce poate fi folosit pentru tipul displayed: equation. Diferenţa dintre acesta şi displaymath este că equation adaugă numere secvenţiale la ecuaţii.

Dacă tipăreşti textul în mod normal, se spune că eşti în modul text, în timp ce dacă scrii în unul din mediile matematice, se zice că eşti în modul matematic, care prezintă câteva diferenţe în comparaţie cu modul text:

  1. Cele mai multe spaţii şi capete de linie nu au nicio semnificaţie specială, de vreme ce toate spaţiile fie sunt derivate logic din expresii matematice, fie trebuiesc specificate cu comenzi speciale precum \quad
  2. Liniile libere nu sunt permise. Numai un paragraf per formulă.
  3. Fiecare literă este considerată numele unei variabile şi va fi tipărită ca atare. Dacă vreţi să tipăriţi text normal într-o formulă (font şi spaţiere normale), atunci trebuie să introduceţi textul folosind comenzi specifice.

Inserarea de cod matematic scris în modul "displayed" în blocuri de text

Pentru ca unii operatori, cum sunt \lim sau \sum, să fie afişaţi corect într-un mediu matematic (ca $......$), poate fi convenabil câteodată să adăugaţi comanda \displaystyle în interiorul mediului. Dacă faceţi asta, linia s-ar putea să devină mai înaltă, însă va face ca exponenţii şi indecşii să fie afişaţi corect pentru unii operatori matematici.

Simboluri

Matematica are o mulţime de simboluri! Dacă există un aspect dificil legat de matematica implementată în LaTeX, acesta este să încercaţi să reţineţi comenzile matematice. Sunt desigur un set de simboluri ce pot fi accesate direct de la tastatură:

+ - = ! / ( ) [ ] < > | ' :

Pe lângă cele listate mai sus, trebuie să daţi comenzi specifice pentru a genera simbolurile dorite. Şi mai sunt o mulţime de litere din greaca veche, simboluri pentru mulţimi şi relaţionale, săgeţi, operatori binari, etc. Spre exemplu:

\[
 \forall x \in X, \quad \exists y \leq \epsilon
\
]


\forall x \in X, \quad \exists y \leq \epsilon
 \,

Din fericire, există un program ce poate simplifica în mare măsură căutarea comenzii pentru un simbol specific. Uitaţi-vă peste Detexify în secţiunea legături externe de mai jos. De asemenea, programele cu interfaţă grafică pentru LaTeX, cum sunt TexMaker sau Kile, au meniuri şi butoane care permit utilizatorului să găsească uşor simbolurile căutate.

Litere din greaca veche

În matematică se folosesc deseori litere din greaca veche, iar acestea sunt foarte uşor de tipărit în modul matematic. Tot ce trebuie să faceţi este să scrieţi explicit denumirea literei greceşti respective în engleză după un backslash: dacă prima literă a denumirii este mică, veţi obţine litera grecească mică, iar dacă prima (şi numai prima) literă este mare, veţi obţine litera grecească mare. Notaţi că unele litere greceşti mari arată ca cele latineşti, aşa că nu sunt puse la dispoziţie de LaTeX (spre exemplu, Alpha şi Beta mari sunt pur şi simplu "A", respectiv "B"). Epsilon, theta, phi, pi, rho şi sigma mici au două versiuni diferite în LaTeX. Varianta alternativă are "var" înaintea denumirii literei:

\[
 \alpha, \beta, \gamma, \delta, \epsilon, \varepsilon,
 \zeta, \eta, \theta, \vartheta, \iota, \kappa, \lambda,
 \mu, \nu, \xi, \pi, \varpi, \rho, \varrho, \sigma, \varsigma,
 \tau, \upsilon, \phi, \varphi, \chi, \psi, \omega,
 \Gamma, \Delta, \Theta, \Phi, \Omega
\
]

\alpha, \beta, \gamma, \delta, \epsilon, \varepsilon,
 \zeta, \eta, \theta, \vartheta, \iota, \kappa, \lambda,
 \mu, \nu, \xi, \pi, \varpi, \rho, \varrho, \sigma, \varsigma,
 \tau, \upsilon, \phi, \varphi, \chi, \psi, \omega,

 \Gamma, \Delta, \Theta, \Phi, \Omega

Operatori

Un operator este o funcţie scrisă sub forma unui cuvânt, spre exemplu: funcţii trigonometrice (sin, cos, tan), logaritmi şi funcţii exponenţiale (log, exp). LaTeX are multe dintre acestea definite sub formă de comenzi:

\[
 \cos (2\theta) = \cos^2 \theta - \sin^2 \theta
\
]

\cos (2\theta) = \cos^2 \theta - \sin^2 \theta \,

Pentru anumiţi operatori de genul limitelor, indicele este aşezat sub operator:

\[
 \lim_{x \to \infty} \exp(-x) = 0
\
]

\lim_{x \to \infty} \exp(-x) = 0

Pentru operatorul modular sunt două comenzi: \bmod şi \pmod:

\[
 a \bmod b
\
]


 a \, \bmod \, b
\,

\[
 x \equiv a \pmod b
\
]


 x \equiv a \pmod b
\,

Pentru a utiliza operatori care nu sunt predefiniţi, de genul argmax, vezi Operatori personalizaţi.

Puteri şi indici

Puterile şi indicii sunt echivalente cu conceptele similare din modul text. Semnul de omisiune (^) se foloseşte pentru a scrie sub formă de exponent, iar semnul de subliniere (_) are rolul de a scrie ca indice. Dacă se ridică la putere sau se scrie sub formă de indice mai mult de un caracter, acestea ar trebui grupate cu ajutorul unor acolade: ({ şi }).

\[
 k_{n+1} = n^2 + k_n^2 - k_{n-1}
\
]


k_{n+1} = n^2 + k_n^2 - k_{n-1}
 \,

Un underscore (_) poate fi utilizat cu o bară verticală (|) pentru a denota evaluarea cu ajutorul unei notaţii de indici în matematică:

\[
 f(n) = n^5 + 4n^2 + 2 |_{n=17}
\
]


 f(n) = n^5 + 4n^2 + 2 |_{n=17}
 \,

Fracţii şi binomi

Puteţi crea o fracţie în LaTeX cu ajutorul comenzii \frac{numărător}{numitor}. De asemenea, coeficientul binomial (choose function) poate fi scris cu ajutorul comenzii \binom[1]:

\[
 \frac{n!}{k!(n-k)!} = \binom{n}{k}
\
]


\frac{n!}{k!(n-k)!} = \binom{n}{k}

Puteţi folosi de asemenea comanda \choose fără pachetul amsmath:

\[
 \frac{n!}{k!(n-k)!} = {n \choose k}
\
]


 \frac{n!}{k!(n-k)!} = {n \choose k}

Puteţi scrie fracţii în cadrul altor fracţii:

\[
 \frac{\frac{1}{x}+\frac{1}{y}}{y-z}
\
]


\frac{\frac{1}{x}+\frac{1}{y}}{y-z}

Notaţi că atunci când apare în cadrul altei fracţii, sau încorporată în text, \tfrac{a}{b}, o fracţie este în mod vizibil mai mică decât în formatul matematic de afişare (displayed). Comenzile \tfrac şi \dfrac[1] forţează utilizarea stilurilor respective (în mod similar, comenzile \tbinom şi \dbinom fac acelaşi lucru pentru coeficienţii binomiali).

Un alt mod de a scrie fracţii constă în utilizarea comenzii \over fără pachetului amsmath:

\[
 {n! \over k!(n-k)!} = {n \choose k}
\
]


 {n! \over k!(n-k)!} = {n \choose k}

Pentru fracţii relativ simple, poate fi mai estetic să folosiţi puteri şi indici:

\[
 ^3/_7
\
]


^3/_7
 \,

Dacă îi folosiţi în tot documentul, se recomandă utilizarea pachetului xfrac. Acest pachet oferă comanda \sfrac pentru a crea fracţii înclinate. Utilizare:

Pune \sfrac{1}{2} căni de zahăr, \dots
 \[
  3\times\sfrac{1}{2}=1\sfrac{1}{2}
 \
]

Pune ${}^1/_2$ căni de zahăr, \dots
 \[
  3\times{}^1/_2=1{
}^1/_2
 \
]

Latex xfrac exemplu.png

Altfel, pachetul nicefrac oferă comanda \nicefrac, a cărei utilizare este similară cu \sfrac.

Fracţii continue

Fracţiile continue ar trebui să fie scrise cu ajutorul comenzii \cfrac[1]:

\begin{equation}
  x = a_0 + \cfrac{1}{a_1
          + \cfrac{1}{a_2
          + \cfrac{1}{a_3 + a_4}}}
\end{equation
}

   x = a_0 + \cfrac{1}{a_1 
           + \cfrac{1}{a_2 
           + \cfrac{1}{a_3 + a_4}}}

Rădăcini

Comanda \sqrt creează un radical în jurul unei expresii. Aceasta acceptă un argument opţional specificat în paranteze drepte ([ şi ]) pentru a schimba gradul radicalului:

\[
\sqrt{\frac{a}{b}}
\
]


\sqrt{\frac{a}{b}}

\[
\sqrt[n
]{1+x+x^2+x^3+\ldots}
\]


\sqrt[n]{1+x+x^2+x^3+\ldots}

Unii oameni preferă să scrie radicalul ca "închizându-se" peste conţinut. Această metodă scoate în evidenţă ce este sub radical. Acest stil de redactare în mod normal nu este folosit când scrieţi la calculator, dar dacă încă mai vreţi să schimbaţi formatul radicalului, LaTeX vă oferă această posibilitate. Adăugaţi pur şi simplu codul următor în preambulul documentului:

% Definiţie nouă a radicalului:
% \sqrt este redenumit \oldsqrt
\let\oldsqrt\sqrt
% defineşte noul \sqrt în funcţie de cel vechi
\def\sqrt{\mathpalette\DHLhksqrt}
\def\DHLhksqrt#1#2{
\setbox0=\hbox{$#1\oldsqrt{#2\,}$}\dimen0=\ht0
\advance\dimen0-0.2\ht0
\setbox2=\hbox{\vrule height\ht0 depth -\dimen0}
{\box0\lower0.4pt\box2}
}

Stilul nou este la stânga, cel vechi la dreapta

Acest cod TeX mai întâi redenumeşte comanda \sqrt ca fiind \oldsqrt, apoi redefineşte \sqrt în funcţie de comanda veche, adăugând ceva în plus. Noul radical poate fi văzut în imaginea din dreapta, în comparaţie cu cel vechi. Din păcate acest cod nu merge cu un grad superior al rădăcinii: dacă încercaţi să scrieţi \sqrt[b]{a} sub forma \sqrt[b]{a} după ce aţi adăugat codul de mai sus, veţi obţine un rezultat greşit ([b] înăuntrul radicalului). Cu alte cuvinte, puteţi redefini radicalul în felul acesta numai dacă nu aveţi de gând să folosiţi argumentul opţional al comenzii în întregul document.

Sume şi integrale

Comenzile \sum şi \int inserează simbolurile pentru sumă, respectiv integrală, cu limite specificate de semnul de omisiune (^) şi underscore (_):

\[
 \sum_{i=1}^{10} t_i
\
]


\sum_{i=1}^{10} t_i 
 \,

\[
 \int_0^\infty e^{-x}\,dx
\
]


\int_0^\infty e^{-x}\,dx
 \,

Sunt multe alte comenzi "mari" ce operează într-o manieră similară:

\sum \sum \, \prod \prod \coprod \coprod
\bigoplus \bigoplus \bigotimes \bigotimes \bigodot \bigodot
\bigcup \bigcup \bigcap \bigcap \biguplus \biguplus
\bigsqcup \bigsqcup \bigvee \bigvee \bigwedge \bigwedge
\int \int \oint \oint \iint[1] \iint
\iiint[1] \iiint \iiiint[1] \iiiint \idotsint[1] \int \! \cdots \! \int

Pentru mai multe simboluri legate de integrale, inclusiv cele care nu sunt incluse de fontul implicit Computer Modern, încercaţi pachetul esint.

Comanda \substack[1] permite utilizarea \\ pentru a scrie limitele pe mai multe linii:

\[
 \sum_{\substack{
   0<i<m \\
   0<j<n
  }
}
 P(i,j)
\
]


\sum_{\overset{\scriptstyle 0<i<m} {\scriptstyle 0<j<n}} P(i,j)
 \,

Dacă vreţi ca limitele unei integrale să fie specificate deasupra şi sub simbolul integralei (ca în cazul sumei), folosiţi comanda \limits:

\[
 \int\limits_a^b
\
]


\int\limits_a^b
 \,

Totuşi, dacă vreţi ca acest stil să se aplice la TOATE integralele din document, este de preferat să specificaţi opţiunea intlimits la încărcarea pachetului amsmath:

\usepackage[intlimits]{amsmath}

Exponenţii şi indicii folosiţi în alte contexte, ca şi alţi parametri din pachetul amsmath legaţi de aceştia sunt descrişi în capitolul Matematică avansată.

Pentru integrale mai mari, puteţi utiliza declaraţii personale, sau puteţi folosi pachetul bigints[2].

Paranteze drepte, acolade şi delimitatori

În capitolul Matematică avansată se descrie cum puteţi folosi acolade în ecuaţii ce se întind pe mai multe linii.

Utilizarea delimitatorilor de genul parantezelor drepte capătă o importanţă deosebită când aveţi de-a face cu ecuaţii ceva mai complicate. Fără ei, formulele pot deveni ambigue. De asemenea, tipuri speciale de structuri matematice, cum sunt matricile, se bazează în mod tipic pe delimitatori pentru a fi cuprinse într-un tot unitar.

LaTeX vă pune la dispoziţie o serie de delimitatori:

\[
 () \, [
] \, \{\} \, || \, \|\| \,
 \langle\rangle \, \lfloor\rfloor \, \lceil\rceil
\
]


() \, [] \, \{\} \, || \, \|\| \, \langle\rangle \, \lfloor\rfloor \, \lceil\rceil
 \,

Determinarea automată a dimensiunilor

Foarte des componentele formulelor matematice vor avea dimensiuni diferite, caz în care delimitatorii ce înconjoară expresiile ar trebui să varieze în mod corespunzător. Acest lucru se poate face automat cu ajutorul comenzilor \left şi \right. Oricare dintre delimitatorii menţionaţi mai devreme poate fi folosit în combinaţie cu acestea:

\[
 \left(\frac{x^2}{y^3}\right)
\
]


\left(\frac{x^2}{y^3}\right)
 \,

Dacă este nevoie doar de un delimitator într-o parte a unei expresii, atunci în partea cealaltă trebuie să folosiţi un delimitator invizibil, denotat de un punct, după cum se vede în exemplul următor:

\[
 \left(\frac{x^2}{y^3}+\frac{x^3}{y^2}+\ldots\right.
\
]


\left(\frac{x^2}{y^3}+\frac{x^3}{y^2}+\ldots\right.
 \,

Determinarea manuală a dimensiunilor

În anumite cazuri, dimensiunea produsă automat de comenzile \left şi \right poate să nu fie cea dorită, sau poate vreţi pur şi simplu un control mai fin asupra mărimii delimitatorilor. În cazul acesta, puteţi utiliza modificatorii \big, \Big, \bigg şi \Bigg:

\[
 ( \big( \Big( \bigg( \Bigg(
\
]


( \big( \Big( \bigg( \Bigg( 
 \,

Matrici şi vectori

O matrice simplă poate fi creată cu ajutorul mediului matrix[1]: la fel ca pentru alte structuri tabelare, intrările sunt specificate de linii, coloanele fiind separate cu un ampersand (&), trecerea la o linie nouă făcându-se cu un dublu backslash (\\)

\[
 \begin{matrix}
  a & b & c \\
  d & e & f \\
  g & h & i
 \end{matrix
}
\
]


\begin{matrix}
a & b & c \\
d & e & f \\
g & h & i
\end{matrix}

Pentru a specifica alinierea coloanelor în tabel, folosiţi versiunea stelată[3]:

\[
 \begin{matrix}
  -1 & 3 \\
  2 & -4
 \end{matrix}
 =
 \begin{matrix*}[r
]
  -1 & 3 \\
  2 & -4
 \end{matrix*
}
\]


 \begin{matrix}
  -1 & 3 \\
  2 & -4
 \end{matrix}
 =
 \begin{matrix}
  -1 & \,\;\;3 \\
  \,\;\;2 & -4
 \end{matrix}

Alinierea implicită este c, însă poate fi orice tip de coloană valid în mediul array.

Totuşi, matricile sunt de obicei încadrate de delimitatori de un anume tip, şi deşi puteţi folosi comenzile \left şi \right, există multe alte medii predefinite ce includ automat delimitatori:

Mediu Delimitator Note
pmatrix[1] ( \, ) implicit centrează coloanele
pmatrix*[3] ( \, ) permite specificarea alinierii coloanelor în parametrul opţional
bmatrix[1] [ \, ] implicit centrează coloanele
bmatrix*[3] [ \, ] permite specificarea alinierii coloanelor în parametrul opţional
Bmatrix[1] \{ \, \} implicit centrează coloanele
Bmatrix*[3] \{ \, \} permite specificarea alinierii coloanelor în parametrul opţional
vmatrix[1] | \, | implicit centrează coloanele
vmatrix*[3] | \, | permite specificarea alinierii coloanelor în parametrul opţional
Vmatrix[1] \| \, \| implicit centrează coloanele
Vmatrix*[3] \| \, \| permite specificarea alinierii coloanelor în parametrul opţional

Când scrieţi matrici de dimensiuni arbitrare, se obişnuieşte să folosiţi triplete de puncte (puncte de suspensie) orizontale, verticale şi diagonale pentru a umple anumite coloane şi linii. Acestea pot fi specificate cu ajutorul comenzilor \cdots, \vdots, respectiv \ddots:

\[
 A_{m,n} =
 \begin{pmatrix}
  a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
  a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
  \vdots  & \vdots  & \ddots & \vdots  \\
  a_{m,1} & a_{m,2} & \cdots & a_{m,n}
 \end{pmatrix
}
\
]


A_{m,n} = 
\begin{pmatrix}
a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
\vdots  & \vdots  & \ddots & \vdots  \\
a_{m,1} & a_{m,2} & \cdots & a_{m,n} 
\end{pmatrix}

În unele cazuri, poate veţi dori să aveţi un control mai fin asupra alinierii la nivel de coloană, sau să inseraţi linii între coloane sau rânduri. Puteţi face asta cu ajutorul mediului array, care este în esenţă o versiune în modul matematic a mediului tabular şi care necesită specificarea în avans a coloanelor:

\[
 \begin{array}{c|c}
  1 & 2 \\
  \hline
  3 & 4
 \end{array
}
\
]


\begin{array}{c|c}
1 & 2 \\ 
\hline
3 & 4
\end{array}

Poate aţi observat că mediile din clasa matriceală AMS nu lasă destul spaţiu vertical când se folosesc împreună cu fracţii, ducând la rezultate similare cu:


 M = \begin{bmatrix}
       \frac{5}{6} & \frac{1}{6} & 0\\
       \frac{5}{6} & 0           & \frac{1}{6}\\
       0           & \frac{5}{6} & \frac{1}{6}
     \end{bmatrix}

Pentru a rezolva această problemă, adăugaţi un spaţiu vertical adiţional cu parametrul opţional al comenzii \\:

\[
 M = \begin{bmatrix}
       \frac{5}{6} & \frac{1}{6} & 0           \\[0.3em
]
       \frac{5}{6} & 0           & \frac{1}{6} \\[0.3em]
       0           & \frac{5}{6} & \frac{1}{6}
     \end{bmatrix
}
\]


 M = \begin{bmatrix}
       \frac{5}{6} & \frac{1}{6} & 0           \\[0.3em]
       \frac{5}{6} & 0           & \frac{1}{6} \\[0.3em]
       0           & \frac{5}{6} & \frac{1}{6}
     \end{bmatrix}

Dacă vă trebuie "margini" sau "indecşi" la matrice, plain TeX oferă macroul \bordermatrix:

\[
M = \bordermatrix{~ & x & y \cr
                  A & 1 & 0 \cr
                  B & 0 & 1 \cr
}
\
]

Bordermatrix.png


Matrici inserate în text

Pentru a insera o matrice mică şi a nu spori spaţierea liniei ce o conţine, folosiţi mediul smallmatrix:

O matrice inserată în text trebuie să fie mai mică
$\bigl(\begin{smallmatrix}
a&b\\ c&d
\end{smallmatrix
} \bigr)$

pentru a nu mări spaţierea unei porţiuni de text.

Latex smallmatrix.png

Adăugarea de text în ecuaţii

Mediul matematic diferă de mediul text prin reprezentarea textului. Iată un exemplu în care încercăm să reprezentăm text în mediul matematic:

\[
 50 mere \times 100 mere = foarte multe mere^2
\
]


 50 mere \times 100 mere = foarte multe mere^2
\,

Sunt două probleme demne de menţionat aici: nu sunt spaţii între cuvinte sau numere, iar literele sunt scrise cu caractere italice şi mai spaţiate decât ar fi normal. Ambele probleme sunt simple artefacte ale modului matematic, care apar în orice expresie matematică: spaţiile sunt ignorate (LaTeX spaţiază codul matematic potrivit cu propriile sale reguli) şi fiecare caracter este un element separat (astfel că nu sunt aşezate aşa de apropiat ca în modul text).

Sunt mai multe moduri în care putem adăuga text în mod corespunzător în mediul matematic. Soluţia cea mai întâlnită este să scrieţi textul ca argument al comenzii \text{...}[1] (o comandă similară este \mbox{...}, deşi aceasta generează probleme cu indicii şi are un nume mai puţin descriptiv). Haideţi să vedem ce se întâmplă când adaptăm codul ecuaţiei de mai sus în acest fel:

\[
 50 \text{mere} \times 100 \text{mere}
 = \text{foarte multe mere
}^2
\
]


 50 \text{mere} \times 100 \text{mere} = \text{foarte multe mere}^2
\,

Textul arată mai bine. Cu toate acestea, nu sunt spaţii între numere şi cuvinte. Din păcate, trebuie să adăugaţi astfel de spaţii manual. Sunt mai multe căi prin care puteţi adăuga spaţii între elementele matematice, însă de dragul simplităţii puteţi adăuga literal caracterul spaţiu în corpul de \text afectat (chiar înainte de text):

\[
 50 \text{ mere} \times 100 \text{ mere}
 = \text{foarte multe mere
}^2
\
]


 50 \text{ mere} \times 100 \text{ mere} = \text{foarte multe mere}^2
\,

Text formatat

Comanda \text este acceptabilă în cele mai multe situaţii. Totuşi, există o alternativă care oferă ceva mai multă flexibilitate. Poate vă aduceţi aminte de comenzile de formatare a fonturilor, cum sunt \textrm, \textit, \textbf, etc. Aceste comenzi formatează argumentul în mod corespunzător, spre exemplu, \textbf{text aldin}text aldin. Ele sunt la fel de valide într-un mediu matematic pentru a include text. Avantajul suplimentar aici este că vă permit un control mai bun asupra formatării fontului comparativ cu textul standard obţinut cu comanda \text.

\[
 50 \textrm{ mere} \times 100
 \textbf{ mere} = \textit{foarte multe mere
}^2
\
]


 50 \;\textrm{ mere} \times 100 \;\textbf{ mere} = \textit{foarte}\;multe\;mere^2
\,

Formatarea simbolurilor matematice

Deci putem formata text, ce ziceţi de formatarea matematicii? Sunt mai multe comenzi de formatare foarte similare cu cele pentru fonturi folosite mai devreme, cu excepţia faptului că sunt menite specific pentru textul din modul matematic[4]:

Comandă LaTeX Exemplu Descriere Utilizare
\mathnormal{} ABCDEF abcdef 123456\, fontul matematic implicit cele mai multe notaţii matematice
\mathrm{} \mathrm{ABCDEF abcdef 123456}\, fontul implicit sau normal, neînclinat unităţi de măsură, funcţii cu o lungime de un cuvânt
\mathit{} \mathit{ABCDEF abcdef 123456}\, font italic
\mathbf{} \mathbf{ABCDEF abcdef 123456}\, font aldin vectori
\mathsf{} \mathsf{ABCDEF abcdef 123456}\, Sans-serif
\mathtt{} ABCDEFabcdef123456 Font Monospace (cu lăţime fixă)
\mathcal{} \mathcal{ABCDEF abcdef 123456}\, Caligrafic (numai cu litere mari) Folosit adesea pentru scheme şi categorii
\mathfrak{}[5] \mathfrak{ABCDEF abcdef 123456}\, Fraktur Font aproape standard pentru algebre Lie
\mathbb{}[4] \mathbb{ABCDEF abcdef 123456}\, Blackboard bold Folosit pentru a denota mulţimi speciale (de exemplu, numere reale)
\mathscr{}[6] Script

Comenzile de formatare matematică pot include întreaga ecuaţie, şi nu doar elementele de text: ele formatează numai litere, numere şi literele greceşti mari, ignorând restul sintaxei matematice.

Pentru a îngroşa literele greceşti mici sau alte simboluri, folosiţi comanda \boldsymbol[1]; aceasta merge numai dacă există o versiune aldină (bold) a simbolului din fontul curent. Ca ultimă soluţie, există comanda \pmb[1] (poor mans bold): tipăreşte mai multe versiuni ale caracterului, puţin diferite unele de altele:

\[
 \boldsymbol{\beta} = (\beta_1,\beta_2,\ldots,\beta_n)
\
]


 \boldsymbol{\beta} = (\beta_1,\beta_2,\ldots,\beta_n)
\,

Pentru a modifica mărimea fonturilor în modul matematic, vezi Modificarea dimensiunii fontului.

Accente

Ce faceţi când aţi terminat simbolurile şi fonturile? Pasul următor constă în a folosi accente:

a' a'\, a'' a''\, a''' a'''\, a'''' a''''\,
\hat{a} \hat{a} \, \bar{a} \bar{a} \, \overline{aaa} \overline{aaa} \, \check{a} \check{a} \, \tilde{a} \tilde{a} \,
\grave{a} \grave{a} \, \acute{a} \acute{a} \, \breve{a} \breve{a} \, \vec{a} \vec{a} \,
\dot{a} \dot{a} \, \ddot{a} \ddot{a} \, \dddot{a}[1] \ddddot{a}[1]
\not{a} \not{a} \, \mathring{a} \widehat{AAA} \widehat{AAA} \, \widetilde{AAA}

Semnele plus şi minus

LaTeX conferă semnelor + şi − două semnificaţii posibile. Cea mai întâlnită este de operator binar. Când două elemente matematice apar în ambele părţi ale semnului, se presupune că este operator binar, şi, ca atare, alocă un anumit spaţiu în fiecare parte a semnului. Cealaltă semnificaţie este de desemnare a semnului unui număr (pozitiv sau negativ). În acest sens, în matematică se foloseşte mai mult semnul − (pentru a desemna numere negative), întrucât un număr se presupune că este pozitiv dacă nu are semn. Semnul unui număr trebuie în mod normal să apară lângă număr (fără spaţiu). Dacă puneţi un semn + sau − fără nimic înaintea lui, dar vreţi totuşi să fie tratat ca un operator binar, puteţi adăuga un caracter invizibil înaintea operatorului cu ajutorul {}. Acest lucru poate fi util dacă scrieţi formule care se întind pe mai multe linii, iar o linie nouă ar putea începe cu = sau +, spre exemplu, şi atunci puteţi rezolva unele probleme de aliniere prin adăugarea caracterului invizibil acolo unde este necesar.

Controlarea spaţierii orizontale

LaTeX este evident destul de bun la formatarea matematicii — acesta a fost unul din scopurile principale ale sistemului Tex de bază pe care l-a extins LaTeX. Totuşi, nu este întotdeauna foarte bun la interpretarea cu precizie a formulele matematice. Trebuie să facă anumite prezumţii în cazul expresiilor ambigue. Rezultatul tinde să fie o spaţiere orizontală puţin inestetică. În asemenea situaţii, outputul este încă satisfăcător, şi totuşi, orice perfecţionist va dori fără îndoială să-şi ajusteze formulele pentru a asigura o spaţiere corectă. Aceste ajustări sunt în general de mare fineţe.

Sunt şi alte situaţii în care LaTeX dă un output corespunzător, însă doriţi să mai adăugaţi ceva spaţiu, poate pentru a adăuga un anume tip de comentariu. Spre exemplu, în exemplul următor, este preferabil să vă asiguraţi că există destul spaţiu între elementele matematice şi text.

\[
  f(n) = \left\{
  \begin{array}{l l}
    n/2 & \quad \text{pentru $n$ par}\\
    -(n+1)/2 & \quad \text{pentru $n$ impar}\\
  \end{array
} \right.
\
]


f(n) =
\begin{cases}
n/2 & \quad \text{pentru } n \text{ par} \\
-(n+1)/2 & \quad \text{pentru } n \text{ impar}\\ 
\end{cases}

(Notaţi că acest exemplu poate fi exprimat mai elegant cu ajutorul mediului cases oferit de pachetul amsmath, care este descris în capitolul Matematică avansată).

LaTeX are două comenzi ce pot fi folosite oriunde în document (nu doar într-un mediu matematic) pentru a insera un anumit spaţiu orizontal. Acestea sunt \quad şi \qquad.

Un \quad este un spaţiu egal cu dimensiunea fontului curent. Astfel, dacă utilizaţi un font de 11pt, atunci spaţiul furnizat de comanda \quad va fi tot de 11pt (orizontal, desigur). Comanda \qquad dă dublul acestei valori. După cum puteţi vedea în codul din exemplul anterior, am folosit spaţii \quad pentru a separa elementele matematice de text.

Bine, să revenim la ajustarea de fineţe menţionată la începutul documentului. Un exemplu bun l-ar constitui afişarea integralei nedefinite de y în funcţie de x:

\int y\, \mathrm{d}x

Dacă vreţi să încercaţi asta în LaTeX, puteţi scrie:

\[ \int y \mathrm{d}x \]

\int y \mathrm{d}x

Totuşi, asta nu dă rezultatul corect. LaTeX nu ţine cont de spaţiul liber lăsat în cod pentru a semnifica faptul că y şi dx sunt entităţi independente. În schimb, LaTeX le grupează laolaltă. Comanda \quad ar adăuga prea mult spaţiu aici — în asemenea situaţii ne trebuie spaţii spaţii mai mici, oferite de LaTeX prin intermediul următoarelor comenzi:

Comandă Descriere Dimensiune
\, spaţiu mic 3/18 dintr-un quad
\: spaţiu mediu 4/18 dintr-un quad
\; spaţiu mare 5/18 dintr-un quad
\! spaţiu negativ -3/18 dintr-un quad

Notă: puteţi folosi mai multe comenzi împreună sau aceeaşi comandă de mai multe ori în acelaşi loc pentru a obţine mai mult spaţiu, dacă este necesar.

Aşadar, pentru a rectifica problema curentă:

\[ \int y\, \mathrm{d}x \]

\int y\, \mathrm{d}x

\[ \int y\: \mathrm{d}x \]

\int y\;\;\!\! \mathrm{d}x

\[ \int y\; \mathrm{d}x \]

\int y\; \mathrm{d}x

Spaţiul negativ poate părea nepotrivit, totuşi, n-ar fi acolo dacă nu ar avea vreun rost! Consideraţi exemplul următor:

\[
  \left(
    \begin{array}{c}
      n \\
      r
    \end{array}
  \right) = \frac{n!}{r!(n-r)!
}
\
]

\left(
   \begin{matrix}
     n \\
     r
   \end{matrix}
   \right) = \frac{n!}{r!(n-r)!}

Expresia matriceală pentru reprezentarea coeficienţilor binomiali de mai sus are prea mult spaţiu între paranteze şi conţinut. Această situaţie poate fi uşor corectată prin adăugarea de spaţii negative după paranteza stângă şi înainte de paranteza dreaptă:

\[
  \left(\!
    \begin{array}{c}
      n \\
      r
    \end{array}
  \!\right) = \frac{n!}{r!(n-r)!
}
\
]

\left(\!
   \begin{matrix}
     n \\
     r
   \end{matrix}
   \!\right) = \frac{n!}{r!(n-r)!}

În orice caz, adăugarea manuală de spaţii ar trebui evitată oricând este posibil: face codul sursă mai complex şi este împotriva principiilor de bază ale abordării What You See is What You MeanVezi ceea ce vrei să spui, specifică LaTeX. Calea cea mai bună de urmat constă în definirea unor comenzi care să aibă spaţierea dorită. Apoi, când folosiţi aceste comenzi, nu mai trebuie să adăugaţi nici un spaţiu. Mai târziu, dacă vă răzgândiţi în legătură cu lungimea spaţiului orizontal, puteţi uşor să-l schimbaţi, modificând comanda definită mai înainte. Să zicem că vreţi ca d-ul din dx-ul unei integrale să fie scris cu font roman şi să fie la o distanţă mică de restul textului. Dacă vreţi să scrieţi o integrală cum este \int x \; \mathrm{d} x, atunci puteţi defini o comandă de genul:

\newcommand{\dd}{\; \mathrm{d}}

în preambulul documentului. Am ales numele \dd pur şi simplu pentru că aminteşte de "d"-ul pe care îl scriem şi pentru că este uşor de tipărit. Astfel, codul pentru integrală devine \int x \dd x. Acum, oricând trebuie să scrieţi o integrală, este de ajuns să utilizaţi comanda \dd în loc să scrieţi "d", şi toate integralele vor avea acelaşi stil. Dacă vă răzgândiţi, trebuie doar să modificaţi definiţia din preambul, şi toate integralele vor fi modificate în mod corespunzător.

Matematică avansată: pachetul AMS Math

Pachetul de matematică de la AMS — Societatea Americană de Matematică (American Mathematical Society) oferă foarte multe facilităţi, ce creează un nivel mai înalt de abstractizare faţă de limbajul matematic LaTeX; dacă îl folosiţi, vă va face viaţa mai uşoară. Unele comenzi amsmath vor face alte comenzi plain LaTeX să pară învechite: pentru a păstra consistenţa în documentul final, ar fi bine să utilizaţi comenzi amsmath oricând este posibil. Dacă faceţi aşa, veţi obţine un output elegant fără să vă faceţi griji în legătură cu alinierea sau alte detalii, codul sursă rămânând accesibil. Dacă vreţi să utilizaţi acest pachet, trebuie să adăugaţi în preambul:

\usepackage{amsmath}

Text şi puncte în formule

amsmath defineşte de asemenea comanda \dots, care este o generalizare a comenzii existente \ldots. Puteţi folosi \dots atât în modul text, cât şi în modul matematic, iar LaTeX va înlocui comanda cu trei puncte "…", însă va decide în funcţie de context dacă va pune punctele jos (\ldots) sau centrat (\cdots).

Puncte

LaTeX vă pune la dispoziţie mai multe comenzi pentru a insera puncte în formule. Acest lucru se poate dovedi deosebit de util dacă trebuie să tipăriţi nişte matrici mari şi să omiteţi unele elemente. Mai întâi de toate, iată principalele comenzi din LaTeX legate de puncte:

Cod Output Comentariu
\dots \dots Puncte generice, de folosit în text (şi în afara formulelor). Gestionează automat spaţiile libere de dinainte şi de după puncte potrivit contextului; este o comandă de nivel mai înalt.
\ldots \ldots Outputul este similar cu cel anterior, însă nu se gestionează automat spaţiul liber; funcţionează la un nivel mai scăzut.
\cdots \cdots Aceste puncte sunt centrate faţă de înălţimea literelor. Mai există şi operatorul binar de înmulţire, \cdot, menţionat mai jos.
\vdots \vdots Puncte verticale
\ddots \ddots Puncte diagonale
\iddots Puncte diagonale inverse[7]
\hdotsfor{n} \ldots \ldots De folosit în matrici — creează o linie de puncte ce se întind n coloane.

În locul \ldots şi \cdots, ar trebui să folosiţi comenzi orientate semantic. Acestea fac posibilă adaptarea documentului la diferite convenţii în mod dinamic, în caz (spre exemplu) că trebuie să-l remiteţi unei publicaţii care insistă pe urmarea unor tradiţii în această privinţă. Tratamentul implicit pentru diversele tipuri urmează convenţiile Societăţii Americane de Matematică (American Mathematical Society).

Cod Output Comentariu
\dotsc \dotsc Pentru "puncte cu virgule".
\dotsb \dotsb Pentru "puncte cu operatori/relaţii binare".
\dotsm \dotsm Pentru "puncte de înmulţire".
\dotsi \dotsi Pentru "puncte cu integrale".
\dotso \dotso Pentru "alte puncte" (nici una din categoriile de mai sus).

Listă de simboluri matematice

Toate simbolurile matematice predefinite din pachetul \TeX\ sunt listate mai jos. Mai multe simboluri sunt disponibile din alte pachete.

Simboluri relaţionale
Simbol Script Simbol Script Simbol Script Simbol Script Simbol Script
\leq \leq \geq \geq \equiv\, \equiv \models \models \prec \prec
\succ \succ \sim \sim \perp \perp \preceq \preceq \succeq \succeq
\simeq \simeq \mid \mid \ll \ll \gg \gg \asymp \asymp
\parallel \parallel \subset \subset \supset \supset \approx \approx \bowtie \bowtie
\subseteq \subseteq \supseteq \supseteq \cong \cong \sqsubset \sqsubset \sqsupset \sqsupset
\neq\, \neq \smile \smile \sqsubseteq \sqsubseteq \sqsupseteq \sqsupseteq \doteq \doteq
\frown \frown \in \in \ni \ni \propto \propto =\, =
\vdash \vdash \dashv \dashv <\, < >\, >
Litere greceşti
Simbol Script
\Alpha\, şi \alpha\, \Alpha şi \alpha
\Beta\, şi \beta\, \Beta şi \beta
\Gamma\, şi \gamma\, \Gamma şi \gamma
\Delta\, şi \delta\, \Delta şi \delta
\Epsilon\,, \epsilon\, and \varepsilon \Epsilon, \epsilon şi \varepsilon
\Zeta\, şi \zeta\, \Zeta şi \zeta
\Eta\, şi \eta\, \Eta şi \eta
\Theta\,, \theta\, and \vartheta \Theta, \theta şi \vartheta
\Iota\, şi \iota\, \Iota şi \iota
\Kappa\, şi \kappa\, \Kappa şi \kappa
\Lambda\, şi \lambda\, \Lambda şi \lambda
\Mu\, şi \mu\, \Mu şi \mu
\Nu\, şi \nu\, \Nu şi \nu
\Xi\, şi \xi\, \Xi şi \xi
\Pi\,, \pi\, şi \varpi \Pi, \pi and \varpi
\Rho\,, \rho\, şi \varrho \Rho, \rho şi \varrho
\Sigma\,, \sigma\, şi \varsigma \Sigma, \sigma şi \varsigma
\Tau\, şi \tau\, \Tau şi \tau
\Upsilon\, şi \upsilon\, \Upsilon şi \upsilon
\Phi\,, \phi\, şi \varphi \Phi, \phi şi \varphi
\Chi\, şi \chi\, \Chi şi \chi
\Psi\, şi \psi\, \Psi şi \psi
\Omega\, şi \omega\, \Omega şi \omega
Operaţii binare
Simbol Script Simbol Script Simbol Script Simbol Script
\pm\, \pm \cap\, \cap \diamond \diamond \oplus \oplus
\mp \mp \cup \cup \bigtriangleup \bigtriangleup \ominus \ominus
\times\, \times \uplus \uplus \bigtriangledown \bigtriangledown \otimes \otimes
\div \div \sqcap \sqcap \triangleleft \triangleleft \oslash \oslash
\ast \ast \sqcup \sqcup \triangleright \triangleright \odot \odot
\star \star \vee \vee \bigcirc \bigcirc \circ \circ
\wedge \wedge \dagger\, \dagger \bullet \bullet \setminus\, \setminus
\ddagger\, \ddagger \cdot \cdot \wr \wr \amalg \amalg
Notaţii pentru mulţimi şi/sau logice
Simbol Script
\exists\, \exists
\forall\, \forall
\neg\, \neg
\in\, şi \notin\, \in şi \notin
\ni\, \ni
\land\, \land
\lor\, \lor
\rightarrow\, \rightarrow
\implies\, \implies
\iff\, \iff
\top\, \top
\bot\, \bot
\emptyset\, şi \varnothing\, \emptyset şi \varnothing
Alte simboluri
Simbol Script
\partial \partial
\infty \infty
\nabla \nabla
\hbar \hbar
\Box \Box
\aleph \aleph
\ell \ell
\imath \imath
\jmath \jmath
\Re \Re
\Im \Im


Funcţii trigonometrice
Simbol Script Simbol Script Simbol Script Simbol Script
\sin \sin \cos \cos \tan \tan \cot \cot
\arcsin \arcsin \arccos \arccos \arctan \arctan \arccot \arccot
\sinh \sinh \cosh \conh \tanh \tanh \coth \coth
\sec \sec \csc \csc


Rezumat

După cum începeţi să vedeţi, redactarea matematicii în LaTeX poate genera probleme deosebite câteodată. Cu toate acestea, întrucât LaTeX oferă aşa mult control, puteţi obţine documente matematice de calitate cu un efort relativ redus (îndată ce aveţi puţină practică, evident!). Am putea să continuăm vă analizăm la infinit matematica din LaTeX, întrucât acest subiect pare să nu aibă limite. Totuşi, după ce veţi fi citit acest tutorial, ar trebui să vă descurcaţi destul de bine.

Note

  1. 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 1,12 1,13 1,14 1,15 1,16 1,17 1,18 1,19 necesită pachetul amsmath
  2. http://hdl.handle.net/2268/6219
  3. 3,0 3,1 3,2 3,3 3,4 3,5 necesită pachetul mathtools
  4. 4,0 4,1 necesită pachetul amsfonts
  5. necesită unul din pachetele amsfonts sau amssymb
  6. necesită pachetul mathrsfs
  7. necesită pachetul mathdots

Lecturi suplimentare

x2d\

Legături externe

Matematică avansată

Această pagină prezintă trăsături mai avansate ale matematicii din LaTeX. În particular, foloseşte în mare măsură pachetul amsmath oferit de Societatea Americană de Matematică (American Mathematical Society).

Numerotarea ecuaţiilor

Mediul equation numerotează automat ecuaţiile.

\begin{equation}
 f(x)=(x+a)(x+b)
\end{equation
}

 {f(x)}=(x+a)(x+b) {\color{White} ww} (1) \,

Puteţi utiliza de asemenea comenzile \label şi \ref pentru a eticheta, respectiv a face referinţe la ecuaţii. Sau puteţi folosi comanda \eqref, însă aceasta necesită pachetul amsmath. Iată un exemplu ce vă arată cum puteţi stabili referinţe cu ajutorul comenzii \ref (are ca rezultat 1\, pentru ecuaţia 1), iar apoi cum să folosiţi \eqref din pachetul amsmath (are ca rezultat (1)\, pentru ecuaţia 1):

\begin{equation} \label{ec:o-ec}
5^2 - 5 = 20
\end{equation}

creează o referinţă la ecuaţia \ref{ec:o-ec
}.

5^2 - 5 = 20\qquad(1)

\mbox{creează o referinţă la ecuaţia 1.}\,

\begin{equation} \label{ec:erl}
a = bq + r
\end{equation}

unde \eqref{ec:erl
} este adevărată dacă $a$ şi $b$ sunt întregi, iar $b \neq c$.

a = bq + r\qquad(1)

\mbox{unde (1) este adevărată dacă }a\mbox{ şi }b\,

\mbox{sunt întregi, iar }b \neq c.

Notă: Pentru afişarea caracterelor româneşti trebuie să includeţi un pachet pentru acestea, cum ar fi inputenc cu opţiunea pentru UTF:

\usepackage[utf8x]{inputenc}

Pentru mai multe informaţii, vezi capitolul Etichete şi referinţe.

Pentru ca enumerarea să urmeze tiparul secţiunii sau subsecţiunii curente, trebuie să folosiţi pachetul amsmath sau documente din clasa AMS. Apoi scrieţi

\numberwithin{equation}{section}

în preambul pentru ca enumerarea să corespundă nivelului secţiunii sau

\numberwithin{equation}{subsection}

pentru ca enumerarea să se adapteze nivelului subsecţiunii.

\documentclass[12pt]{article}
\usepackage{amsmath}
 \numberwithin{equation}{subsection}
 \begin{document}
 \section{Prima Secţiune}

 \subsection{O subsecţiune}
 \begin{equation}
  L' = {L}{\sqrt{1-\frac{v^2}{c^2}}}
 
\end{equation}
\end{document
}

 L' = {L}{\sqrt{1-\frac{v^2}{c^2} } } {\color{White} ww} (1.1.1) \,

Dacă stilul folosit pune puncte după numere, comanda \numberwithin{equation}{subsection} în preambul va face ca numărul ecuaţiei din exemplul de mai sus să fie afişat în felul următor: (1.1.1).

Pentru numerotarea la nivelul secţiunii, puteţi folosi şi comanda

\renewcommand{\theequation}{\thesection.\arabic{equation}}

Numerotarea la nivelul subsecţiunii cu comanda

\renewcommand{\theequation}{\thesubsection.\arabic{equation}}

este echivalentă cu versiunea din exemplul anterior, cu condiţia ca această comandă să fie în preambul sau înaintea oricăror ecuaţii.

Notă: Puteţi folosi aceste ultime comenzi pentru a schimba numerotarea ecuaţiilor în interiorul documentului.

Numerotarea ecuaţiilor subordonate

Pentru a numerota ecuaţiile subordonate într-un mediu de ecuaţii numerotate, plasaţi partea documentului ce le conţine într-un mediu subequations:

\section{Prima Secţiune}
\renewcommand{\theequation}{\thesection.\arabic{equation}}
\begin{subequations}
Ecuaţiile lui Maxwell:
\begin{align}
        B'&=-\partial \times E,\\
        E'&=\partial \times B - 4\pi j,
\end{align}
\end{subequations
}

\mbox{Ecuaţiile lui Maxwell:}\,


\begin{align}
        B'&=-\partial \times E, &\quad&\mathrm{(1.1a)}\\
        E'&=\partial \times B - 4\pi j, &&\mathrm{(1.1b)}
\end{align}

Nu uitaţi că pentru afişarea caracterelor româneşti trebuie să includeţi un pachet pentru acestea, cum ar fi inputenc cu opţiunea pentru UTF:

\usepackage[utf8x]{inputenc}

Formule matematice în modul de afişare aliniate vertical

O problemă des întâlnită cu mediile de afişare (displaymath şi equation) este lipsa abilităţii de a se întinde pe mai multe linii. Deşi puteţi defini liniile individual, acestea nu vor fi aliniate.

Deasupra şi dedesubt

Comenzile \overset şi \underset[1] scriu simboluri deasupra şi dedesubtul expresiilor. Fără AMS în TeX, acelaşi rezultat al \overset poate fi obţinut cu \stackrel. Acest lucru poate fi deosebit de util pentru a crea noi relaţii binare:

\[
 A \overset{!}{=} B; A \stackrel{!}{=} B
\
]


 A \overset{!}{=} B;~~
 A \stackrel{!}{=} B
\,

sau pentru a prezenta utilizarea legii lui L'Hôpital:

\[
 \lim_{x\to 0}{\frac{e^x-1}{2x}}
 \overset{\left[\frac{0}{0}\right
]}{\underset{\mathrm{H}}{=}}
 \lim_{x\to 0}{\frac{e^x}{2}}={\frac{1}{2}
}
\]


 \lim_{x\to 0}{\frac{e^x-1}{2x} }
 \overset{\left[\frac{0}{0}\right]}{\underset{\mathrm{H} }{=} }
 \lim_{x\to 0}{\frac{e^x}{2} }={\frac{1}{2} }

Este convenabil să definim un nou operator ce va seta semnul de egalitate cu H şi fracţia:

\newcommand{\Heg}[1]{\overset{\left[#1\right]}{\underset{\mathrm{H}}{=}}}

pentru a reduce exemplul de mai sus la:

\[
 \lim_{x\to 0}{\frac{e^x-1}{2x}}
 \Heg{\frac{0}{0}}
 \lim_{x\to 0}{\frac{e^x}{2}}={\frac{1}{2}
}
\
]

Dacă vreţi să scrieţi comentarii în anumite părţi ale unei ecuaţii, comenzile \overbrace şi \underbrace pot fi mai utile, cu toate acestea, ele au o sintaxă diferită:

\[
 z = \overbrace{
   \underbrace{x}_\text{real} +
   \underbrace{iy}_\text{imaginar}
  }^\text{număr complex
}
\
]


 z = \overbrace{
   \underbrace{x}_\text{real} + 
   \underbrace{iy}_\text{imaginar}
  }^\mbox{număr complex}

Câteodată comentariile sunt mai lungi decât formula comentată, ceea ce poate genera probleme de spaţiere. Acestea nu sunt înlăturate cu comanda \mathclap[2]:

\[
 y = a + f(\underbrace{b x}_{
                    \ge 0 \text{ conform ipotezei}})
   = a + f(\underbrace{b x}_{
          \mathclap{\ge 0 \text{ conform ipotezei}}
})
\
]

Latex-mathclap-exemplu.png

Ca o alternativă, pentru a folosi paranteze drepte în loc de acolade, utilizaţi comenzile \underbracket şi \overbracket[2]:

\[
 z = \overbracket[3pt
]{
     \underbracket{x}_{\text{real}} +
     \underbracket[0.5pt][7pt]{iy}_{\text{imaginar}}
     }^{\mbox{număr complex}
}
\]

Latex-mathtools-brackets.png

Argumentele opţionale setează grosimea liniei, respectiv înălţimea parantezei drepte:

\underbracket[grosime linie][înălţime paranteză dreaptă]{argument}_{text dedesubt}

Comenzile \xleftarrow şi \xrightarrow[1] produc săgeţi care se extind pe toată lungimea textului. Din nou, sintaxa este diferită: argumentul opţional (scris cu ajutorul [ şi ]) specifică partea de sub săgeată, iar argumentul obligatoriu (între { şi }) specifică partea de deasupra săgeţii.

\[
 A \xleftarrow{\text{aşa}} B
  \xrightarrow[\text{sau aşa}
]{
} C
\]


A \xleftarrow{\mbox{aşa}} B \xrightarrow[\mbox{sau aşa}]{} C
\,

Pentru săgeţi mai extensibile, trebuie să utilizaţi pachetul mathtools:

\begin{align*}
 A \xleftrightarrow[sub]{peste} B\\
 B \xLeftarrow[sub]{peste} C\\
 C \xRightarrow[sub]{peste} D\\
 D \xLeftrightarrow[sub]{peste} E\\
 E \xhookleftarrow[sub]{peste} F\\
 F \xhookrightarrow[sub]{peste} G\\
 G \xmapsto[sub]{peste} H
\end{align*
}

LaTeX-mathtools-săgeţi.png

Pentru cârlige:

\begin{align*}
 H \xrightharpoondown[sub]{peste} I\\
 I \xrightharpoonup[sub]{peste} J\\
 J \xleftharpoondown[sub]{peste} K\\
 K \xleftharpoonup[sub]{peste} L\\
 L \xrightleftharpoons[sub]{peste} M\\
 M \xleftrightharpoons[sub]{peste} N
\end{align*
}

Latex-mathtools-cârlige.png

align şi align*

Mediile align şi align*[1] sunt folosite pentru aranjarea ecuaţiilor pe mai multe linii. La fel ca în cazul matricilor şi tabelelor, \\ specifică o linie nouă, iar & se foloseşte pentru a indica punctul în care liniile ar trebui aliniate.

Mediul align* se foloseşte la fel ca displaymath sau equation*:

\begin{align*}
 f(x) &= (x+a)(x+b) \\
 &= x^2 + (a+b)x + ab
\end{align*
}

\begin{align}
f(x) &= (x+a)(x+b) \\
&= x^2 + (a+b)x + ab
\end{align}\,

Pentru a forţa numerotarea unei linii specifice, utilizaţi comanda \tag{...} înainte de capătul de linie.

Mediul align este similar, însă numerotează automat fiecare linie, la fel ca mediul equation. Se poate face referire la liniile individuale plasând o comandă \label{...} înainte de capătul de linie. Puteţi folosi una din comenzile \nonumber sau \notag pentru a suprima numărul unei linii date:

\begin{align}
 f(x) &= x^4 + 7x^3 + 2x^2 \nonumber \\
 &\qquad {} + 10x + 12
\end{align
}

\begin{align}
f(x) &= x^4 + 7x^3 + 2x^2 \\
&\qquad {} + 10x + 12 \qquad \qquad (1)
\end{align}

Notaţi că am adăugat o anume indentare la a doua linie. De asemenea, trebuie să inserăm acolade {} înainte de semnul + întrucât altfel LaTeX nu va crea spaţierea corectă după +. Motivul pentru asta este că fără acolade, LaTeX interpretează semnul + ca pe un operator unar, în locul operatorul binar, după cum este de aşteptat.

Acolade care se întind pe mai multe linii

Mai multe caractere & pe o singură linie vor specifica mai multe coloane, fiecare dintre ele fiind aliniată corespunzător. Dacă vreţi ca o acoladă să continue pe linia următoare, faceţi următoarele:

\begin{align}
 f(x) &= \pi \left\{ x^4 + 7x^3 + 2x^2 \right.\nonumber\\
 &\qquad \left. {} + 10x + 12 \right\}
\end{align
}

\begin{align}
f(x) &= \pi \left\{ x^4 + 7x^3 + 2x^2 \right.\\
&\qquad \left. {} + 10x + 12 \right\}  \qquad \qquad (1)
\end{align}

Dimensiunile celor două acolade devin egale şi corespund mărimii tipice a simbolurilor dintre ele prin comenzile \left\{ şi \right\}. Însă deoarece aceste două comenzi apar pe linii diferite, trebuie să le echilibrăm cu comenzile \right. şi \left.. (În mod normal acestea nu sunt necesare dacă formula este pe o singură linie.) Ca o alternativă, puteţi controla manual dimensiunea acoladelor cu ajutorul comenzilor \big, \Big, \bigg, \Bigg.

Pentru a potrivi automat mărimea celor două acolade pentru o ecuaţie înaltă, utilizaţi comanda \vphantom:

\begin{align}
 A &=     \left(\int_t XXX       \right.\nonumber\\
   &\qquad \left.\vphantom{\int_t} YYY \dots \right)
\end{align
}


\begin{align}
 A &=     \left(\int_t XXX\right.\\
   &\qquad YYY \dots \biggr)\qquad\qquad \mathrm{(1)}
\end{align}

Mediul cases

Mediul cases[1] permite scrierea de funcţii pe ramuri:

\[
 u(x) =
  \begin{cases}
   \exp{x} & \text{dacă } x \geq 0 \\
   1       & \text{dacă } x < 0
  \end{cases
}
\
]


u(x) = 
\begin{cases}
\exp{x} & \mbox{dacă } x \geq 0 \\
1       & \mbox{dacă } x < 0
\end{cases}

La fel ca mai înainte, nu trebuie să aveţi grijă de definiţia sau alinierea coloanelor, LaTeX va face asta automat.

Din păcate, setează mediul matematic intern la stilul text, ducând la un astfel de rezultat:


a =
 \begin{cases}
  \int x\, dx\\
  b^2
 \end{cases}

Pentru a forţa stilul de afişare pentru ecuaţii în cadrul acestei construcţii, utilizaţi mediul dcases[2]:

\[
 a =
   \begin{dcases}
     \int x\, dx\\[10px
]
     b^2
   \end{dcases
}
\]


a =
 \begin{cases}
  \displaystyle\int x\, dx\\[10px]
  \displaystyle b^2
 \end{cases}

Deseori a doua coloană constă mai ales din text normal. Pentru a o seta la fontul roman normal al documentului, folosiţi mediul dcases*[2]:

\[
 f(x) = \begin{dcases*}
        x  & pentru $x$ par\\
        -x & pentru $x$ impar
        \end{dcases*
}
\
]


 f(x) = \begin{cases}
 x  & \text{pentru }x\text{ par}\\
 -x & \text{pentru }x\text{ impar}
 \end{cases}

Alte medii

Deşi mediile align şi align* sunt cele mai utile, sunt multe alte medii ce pot fi şi ele de interes:

Mediu Descriere Note
eqnarray şi eqnarray* Similar cu align şi align* Nerecomandat deoarece spaţierea este inconsistentă
multline şi multline*[1] Prima linie este aliniată la stânga, ultima linie este aliniată la dreapta Numărul ecuaţiei este aliniat vertical cu prima linie, nefiind centrat ca în cazul altor medii.
gather şi gather*[1] Ecuaţii consecutive fără aliniere
flalign şi flalign*[1] Similar cu align, însă aliniază la stânga prima coloană a ecuaţiei şi la dreapta ultima coloană
alignat şi alignat*[1] Ia un argument ce specifică numărul de coloane. Permite controlul explicit al spaţiului orizontal dintre ecuaţii Puteţi calcula numărul de coloane numărând caracterele & de pe o linie, la care adăugaţi 1, iar rezultatul îl împărţiţi la 2

Sunt şi câteva medii ce nu reprezintă medii matematice prin ele însele, dat care pot fi utilizate pentru a construi structuri mai elaborate:

Mediu matematic Descriere Note
gathered[1] Permite strângerea laolaltă a mai multor ecuaţii, care urmează să fie aşezate una sub alta şi care vor primi un singur număr de ecuaţie
split[1] Similar cu align*, însă folosit într-un alt mediu matematic de afişare
aligned[1] Similar cu align, însă folosit într-un alt mediu matematic de afişare
alignedat[1] Similar cu alignat, şi la fel ca el, ia un argument adiţional ce specifică numărul de coloane de setat pentru ecuaţii

Spre exemplu:

\begin{equation}
 \left.\begin{aligned}
        B'&=-\partial \times E,\\
        E'&=\partial \times B - 4\pi j,
       \end{aligned}
 \right\}
 \qquad \text{Ecuaţiile lui Maxwell}
\end{equation
}


\left.\begin{align}
        B'&=-\partial \times E,\\
        E'&=\partial \times B - 4\pi j,
\end{align}\right\}\quad\mbox{Ecuaţiile lui Maxwell}\qquad\mathrm{(1.1)}

\begin{alignat}{2}
 \sigma_1 &= x + y  &\quad \sigma_2 &= \frac{x}{y} \\[10px]    
 \sigma_1' &= \frac{\partial x + y}{\partial x} & \sigma_2'
    &= \frac{\partial \frac{x}{y}}{\partial x}
\end{alignat
}

\begin{align}
 \sigma_1 &= x + y  &\sigma_2 &= \frac{x}{y}  &\qquad&\qquad&(1)   \\[10px]	
 \sigma_1' &= \frac{\partial x + y}{\partial x} & \sigma_2' &= \frac{\partial \frac{x}{y}}{\partial x} &&&(2)
\end{align}

Ecuaţii indentate

Pentru a indenta o ecuaţie, puteţi seta parametrul fleqn în clasa documentului, iar apoi să specificaţi o anumită valoare pentru variabila \mathindent:

\documentclass[a4paper,fleqn]{report}
\usepackage{amsmath}
\setlength{\mathindent}{1cm}
\begin{document}
\noindent Formula lui Euler:
\begin{equation*}
 e^{ix} = \cos{x} + i \sin{x}
\end{equation*}
\noindent Această formulă e foarte importantă.
\end{document
}

Latex ecuaţii indentate.png

Sfârşitul de pagină în medii matematice

Pentru a sugera sistemului LaTeX să treacă la pagina următoare într-unul din mediile amsmath, puteţi folosi comanda \displaybreak înaintea unui capăt de linie. La fel ca în cazul \pagebreak, \displaybreak poate lua un argument opţional între 0 şi 4, care denotă nivelul de dezirabilitate de a trece la pagina următoare în acea situaţie dată. Valoarea 0 înseamnă "se permite trecerea la pagina următoare aici", 4 forţează sfârşitul de pagină. Nici un argument înseamnă valoarea 4.

Ca o alternativă, puteţi activa sfârşitul de linie automat în mediile matematice cu comanda\allowdisplaybreaks. Şi aceasta are un argument opţional, care denotă în ce măsură se permite trecerea la pagina următoare în ecuaţii. În mod similar, 1 înseamnă "se permite sfârşitul de pagină, însă în general se evită", iar 4 înseamnă "treci la pagina următoare când doreşti". Puteţi împiedica sfârşitul paginii după o linie dată cu ajutorul comenzii \\*.

LaTeX va insera un sfârşit de pagină într-o ecuaţie lungă (cu mediul align, de exemplu) dacă adaugă ceva text în plus cu comanda \intertext{text}, fără alte comenzi.

Un caz specific de utilizare poate arăta în felul următor:

\begin{align*}
 &\vdots\\
 &=12+7 \int_0^2
  \left(
    -\frac{1}{4}\left(e^{-4t_1}+e^{4t_1-8}\right)
  \right)\,dt_1\displaybreak[3]\\
 &= 12-\frac{7}{4}\int_0^2 e^{-4t_1}+e^{4t_1-8
}\,dt_1\\
 &\vdots %
\end{align*}

LaTeX-displaybreak-in-math.png

Ecuaţii cuprinse într-un cadru

Pentru o singură ecuaţie, cu eticheta în afara căsuţei, utilizaţi comanda \boxed{}:

\begin{equation}
 \boxed{x^2+y^2 = z^2}
\end{equation
}

LaTeX-boxed-equation.png

Dacă vreţi ca întreaga linie sau mai multe ecuaţii să fie încadrate, folosiţi un mediu minipage într-o căsuţă \fbox{}:

\fbox{
 \addtolength{\linewidth}{-2\fboxsep
}%
 \addtolength{\linewidth}{-2\fboxrule}%
 \begin{minipage}{\linewidth}
  \begin{equation}
   x^2+y^2=z^2
 
\end{equation}
 \end{minipage}
}

LaTeX-boxed-formula-minipage.png

Operatori personalizaţi

Deşi LaTeX pune la dispoziţie mulţi operatori de uz comun, câteodată veţi avea nevoie să creaţi unul nou, spre exemplu pentru a scrie operatorul argmax. Comenzile \operatorname şi \operatorname*[1] afişează astfel de operatori, versiunea cu stea * setează opţiunea cu underscore dedesubt, ca pentru operatorul \lim:

\[
 \operatorname{arg\,max}_a f(a)
 = \operatorname*{arg\,max
}_b f(b)
\
]

\operatorname{arg\,max}_a f(a) = \underset{b}\operatorname{arg\,max} f(b)

Totuşi, dacă operatorul este des folosit, este de preferat ca noul operator să fie încorporat în sistemul LaTeX, pentru documentul curent. Comenzile \DeclareMathOperator şi \DeclareMathOperator*[1] sunt specificate în preambulul documentului:

\DeclareMathOperator*{\argmax}{arg\,max}

Asta defineşte o nouă comandă, ce poate fi folosită în corpul documentului:

\[
 \argmax_c f(c)
\
]

\underset{c}{\operatorname{arg\,max}} f(c)

Formatare avansată

Limite

Există anumite setări implicite pentru plasarea indicilor şi exponenţilor. Spre exemplu, limitele pentru operatorul lim se aşează de obicei sub simbol, în felul următor:

\begin{equation}
  \lim_{a\to \infty} \tfrac{1}{a}
\end{equation
}

\lim_{a\to \infty} \tfrac{1}{a}

Pentru a modifica acest comportament implicit, utilizaţi operatorul \nolimits:

\begin{equation}
  \lim\nolimits_{a\to \infty} \tfrac{1}{a}
\end{equation
}

\lim\nolimits_{a\to \infty} \tfrac{1}{a}

Un operator lim în text (în cadrul $...$) va plasa limitele pe lateral. Dacă vreţi ca argumentul comenzii _ să fie plasat sub limită, folosiţi comanda \limits, plasată imediat după operator:

$\lim\limits_{a\to \infty} \tfrac{1}{a}$

\lim\limits_{a\to \infty} \tfrac{1}{a}

În mod asemănător, puteţi aşeza indicii care de obicei sunt plasaţi lateral:

\begin{equation}
  \int_a^b x^2
\end{equation
}

\int_a^b x^2

deasupra şi dedesubtul unui simbol:

\begin{equation}
  \int\limits_a^b x^2
\end{equation
}

\int\limits_a^b x^2

Pentru a seta aşezarea implicită laterală pentru toate cazurile unui simbol de însumare (în modul de afişare), adăugaţi opţiunea nosumlimits pachetului amsmath. Pentru a schimba aşezarea implicită a limitelor intervalului pentru integrale adăugaţi parametrul intlimits la opţiuni şi nonamelimits pentru a modifica plasarea implicită pentru operatorii named, de genul det, min, lim, etc.

Indici şi exponenţi

Deşi puteţi aşeza caractere pe poziţie de indici sau de exponenţi în cazul simbolurilor de genul sumelor cu comanda prezentată mai devreme \nolimits:

\begin{equation}
  \sum\nolimits' C_n
\end{equation
}

\sum\nolimits' C_n

este imposibil să le îmbinaţi cu utilizarea tipică a acestor simboluri:

\begin{equation}
  \sum_{n=1}\nolimits' C_n
\end{equation
}

\sum_{n=1}\nolimits' C_n

Pentru a adăuga atât apostroful, cât şi limita la un simbol, trebuie să utilizaţi comanda \sideset:

\begin{equation}
  \sideset{}{'}\sum_{n=1}C_n
\end{equation
}

\sideset{}{'}\sum_{n=1}C_n

Este foarte flexibilă, spre example, poate pune litere în fiecare colţ al simbolului sumei:

\begin{equation}
  \sideset{_a^b}{_c^d}\sum
\end{equation
}

\sideset{_a^b}{_c^d}\sum

Dacă vreţi să faceţi asta pentru un simbol arbitrar, puteţi folosi comanda \fourIdx din pachetul fouridx:

\begin{equation}
  \fourIdx{a}{b}{c}{d}{\left(\dfrac{x}{y}\right)}
\end{equation
}

Latex fourIdx.png

Indici pe mai multe linii

Pentru a produce indici care se pot întinde pe mai multe linii, utilizaţi comanda \substack:

\begin{equation}
  \prod_{\substack{
            1\le i \le n\\
            1\le j \le m}}
     M_{i,j}
\end{equation
}

\prod_{1 \le i \le n \atop 1 \le j \le m \ } M_{i,j}

Text în modul matematic de afişare aliniat

Pentru a adăuga explicaţii scurte în mediile matematice, folosiţi comanda \intertext:

\begin{minipage}{3in}
 \begin{align*}
  \intertext{Dacă}
   A &= \sigma_1+\sigma_2\\
   B &= \rho_1+\rho_2\\
  \intertext{atunci}
   C(x) &= e^{Ax^2+\pi}+B
 \end{align*}
\end{minipage
}

Latex intertext.png

Notaţi că utilizarea acestei comenzi nu schimbă alinierea, aşa cum ar face mai multe medii align intercalate.

Modificarea dimensiunii fontului

Se pot ivi unele situaţii în care să preferaţi un control mai mare asupra dimensiunii fontului pentru formule matematice. Spre exemplu, mediile matematice în modul text —$...$ sau \(...\) — afişează implicit o fracţie simplă (\frac) în felul următor: \textstyle \frac{a}{b}. Într-o asemenea situaţie, ar fi de preferat ca fracţia să fie mai mare, ca în modul de afişare —$$...$$ sau \[...\], dar să-şi păstreze poziţia pe linia curentă: \displaystyle \frac{a}{b} .

O abordare simplă constă în utilizarea unor dimensiuni predefinite pentru elementele matematice:

Comandă Descriere
\displaystyle Dimensiunea ecuaţiilor în modul de afişare
\textstyle Dimensiunea ecuaţiilor în modul text
\scriptstyle Mărimea primului indice sau exponent
\scriptscriptstyle Mărimea indicelui sau exponentului următor

Un exemplu clasic în acest sens îl constituie fracţiile continue (deşi e mai bine să folosiţi comanda \cfrac[1] descrisă în capitolul Matematică):

\begin{equation}
  x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}
\end{equation
}

x = a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a_3 + a_4}}}

După cum vedeţi, pe măsură ce fracţiile continuă, devin mai mici (aici au atins limita \scriptstyle). Dacă vreţi ca dimensiunea să rămână consistentă, puteţi declara stilul de afişare pentru fiecare fracţie în parte:

\begin{equation}
  x = a_0 + \frac{1}{\displaystyle a_1
          + \frac{1}{\displaystyle a_2
          + \frac{1}{\displaystyle a_3 + a_4}}}
\end{equation
}

   x = a_0 + \frac{1}{\displaystyle a_1 
           + \frac{1}{\displaystyle a_2 
           + \frac{1}{\displaystyle a_3 + a_4}}}

O altă abordare constă în utilizarea comenzii \DeclareMathSizes pentru a selecta dimensiunile preferate. Puteţi redefini doar dimensiunile \displaystyle, \textstyle, \scriptstyle. Un posibil dezavantaj este că această comandă setează valorile globale, întrucât poate fi folosită numai în preambulul documentului.

Totuşi, este foarte uşor de folosit: \DeclareMathSizes{df}{da}{dt}{ds}, unde df înseamnă dimensiunea implicită a fontului (pentru documentul curent), da este dimensiunea în modul de afişare (\displaystyle), dt dimensiunea în modul text (\textstyle), iar ds dimensiunea corespunzătoare modului \scriptstyle. Valorile furnizate se consideră a fi date în puncte (pt).

Notă: modificările valorilor globale au loc numai dacă valoarea primului argument corespunde dimensiunii textului din documentul curent. Se obişnuieşte de aceea ca în preambul să fie mai multe declaraţii de genul acesta, în eventualitatea că se va modifica dimensiunea fontului implicit. Spre exemplu:

\DeclareMathSizes{10}{18}{12}{8}   % Pentru text de mărime 10
\DeclareMathSizes{11}{19}{13}{9}   % Pentru dimensiunea 11 a textului
\DeclareMathSizes{12}{20}{14}{10}  % Pentru text de mărime 12pt

Note

  1. 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 1,12 1,13 1,14 necesită pachetul amsmath
  2. 2,0 2,1 2,2 2,3 necesită pachetul mathtools

Teoreme

Prin "teoremă" înţelegem orice tip de enunţ etichetat pe care vrem să-l vedem ca fiind separat de restul textului şi care să aibă numere secvenţiale. Această abordare se foloseşte în mod obişnuit pentru teoreme matematice, însă poate fi utilizată pentru orice. LaTeX oferă o comandă care facilitează definirea oricărui enunţ în genul unei teoreme.

Teoreme de bază

Mai întâi, includeţi pachetul amsthm:

\usepackage{amsthm}

Modul cel mai uşor de a defini o teoremă este să scrieţi:

\newtheorem{nume}{Output generat}

în preambul. Primul argument este numele pe care îl veţi folosi în document pentru a face referire la teoremă, iar al doilea argument este outputul generat de LaTeX la fiecare utilizare a teoremei. Spre exemplu:

\newtheorem{o-def}{Definiţie}

va defini mediul def; dacă îl folosiţi în felul următor:

\begin{o-def}
Iată o definiţie nouă
\end{o-def}

va arăta aşa:

Definiţie 1. Iată o definiţie nouă

separată prin linii libere de restul textului.

Numerotarea teoremelor

Adesea numerele teoremelor sunt determinate de secţiune, spre exemplu "Theorem 2.3" se referă la a treia teoremă din a doua secţiune a documentului. În cazul de faţă, specificaţi teorema după cum urmează:

\newtheorem{nume}{Output generat}[numără după]

unde numără după specifică nivelul de împărţire în secţiuni (secţiunea/subsecţiunea/etc.) la care numerotarea are loc.

Implicit, fiecare teoremă are propriul contor. Totuşi, se obişnuieşte ca tipuri similare de teoreme (de exemplu, teoreme, leme şi corolarii) să folosească în comun un contor. În acest caz, definiţi teoremele următoare astfel:

\newtheorem{nume}[contor]{Output generat}

unde contor este numele contorului de utilizat. De obicei, acesta va fi numele teoremei principale.

Puteţi de asemenea să creaţi un mediu pentru teoreme care nu este numerotat cu ajutorul comenzii newtheorem*[1]. Spre exemplu,

\newtheorem*{o-def}{Definiţie}

defineşte mediul o-def, care va genera definiţii fără numerotare.

Demonstraţii

Mediul proof[1] poate fi folosit pentru a adăuga demonstraţia unei teoreme. Utilizarea de bază este:

\begin{proof}
 Demonstraţia mea
\end{proof}

Nu face decât să adauge Proof cu caractere italice la începutul textului dat ca argument şi un pătrat gol pe dinăuntru, simbolul (Q.E.D, cunoscut şi sub denumirea de lespede (tombstone)) la sfârşit. Dacă scrieţi în altă limbă decât engleza, folosiţi pachetul babel cu argumentul corespunzător şi cuvântul Proof afişat va fi tradus în această limbă; oricum, în codul sursă, numele mediului rămâne proof.

Dacă vreţi să denumiţi explicit demonstraţia, includeţi numele în paranteze drepte:

\begin{proof}[Demonstraţia unei teoreme importante]
 Iată demonstraţia mea importantă
\end{proof}

Dacă ultima linie a demonstraţiei este în modul matematic de afişare, atunci simbolul Q.E.D. va apare pe o linie liberă următoare. Pentru a pune simbolul Q.E.D. la sfârşitul ultimei linii, folosiţi comanda \qedhere:

\begin{proof}
 Iată demonstraţia mea:
 \[
 a^2 + b^2 = c^2 \qedhere
 \]
\end{proof}

Metoda de mai sus nu merge cu mediul deprecated (care nu mai este în uz, urmând a fi eliminat într-o versiune viitoare de LaTeX) eqnarray*. Iată o posibilă soluţie:

\begin{proof}
 Iată demonstraţia mea:
 \begin{eqnarray*}
  a^2 + b^2 = c^2
 \end{eqnarray*}
 \vspace{-1.4cm}\[\qedhere\]
\end{proof}

Pentru a folosi un alt simbol Q.E.D., redefiniţi comanda \qedsymbol. Pentru a ascunde apariţia simbolului Q.E.D., redefiniţi-l să nu fie nimic:

\renewcommand{\qedsymbol}{}

Stiluri de teoreme

Acestea adaugă posibilitatea de a schimba outputul mediilor definite de \newtheorem cu ajutorul comenzii \theoremstyle[1] în preambul:

\theoremstyle{denumire_stil}

Argumentul este stilul pe care vreţi să-l folosiţi. Toate teoremele definite mai târziu vor folosi acest stil. Iată o listă cu stilurile predefinite:

denumire_stil Descriere
plain Folosit pentru teoreme, leme, propoziţii, etc. (stilul implicit)
definition Utilizat pentru definiţii şi exemple
remark Folosit pentru remarce şi note

Stiluri personalizate

Pentru a defini propriul stil, folosiţi comanda \newtheoremstyle[1]:

\newtheoremstyle{denumire stil}% numele stilului folosit
  {spaţiu înainte}% spaţiu liber deasupra teoremei, de exemplu: 3pt
  {spaţiu după}% spaţiu liber sub teoremă, de exemplu: 3pt
  {font corp}% fontul din corpul teoremei
  {indentare}% implicit fără indentare
  {font antet}% fontul pentru antet
  {punctuaţie după antet}% punctuaţia dintre antet şi corp
  {spaţiu după antet}% spaţiu după antetul teoremei; " " = spaţiu normal dintre cuvinte
  {antet}% antet specificat manual

(Orice argumente lăsate libere vor lua valorile implicite). Iată un exemplu de specificaţii pentru antet:

{\thmname{\textbf{#1}}\thmnumber{ \textbf{#2}}\thmnote{ (#3)}}

Exemplul complet:

\documentclass[a4paper,12pt]{article}
 
\usepackage[utf8x]{inputenc} % pentru caractere Unicode
\usepackage{amsthm}
\usepackage[pdfborder={0 0 0},colorlinks=true,linkcolor=blue]{hyperref}
 
\newtheoremstyle{plain}
 {3pt} % spaţiu liber înaintea teoremei
 {3pt} % spaţiu liber după teoremă
 {\itshape} % fontul din corpul teoremei
 {\parindent} % indentare
 {\rmfamily} % fontul pentru antet
 {:} % punctuaţia dintre antet şi corp
 {.5em} % spaţiu după antetul teoremei
 {\thmname{\textbf{#1}}\thmnumber{ \textbf{#2}}\thmnote{ (#3)}} % antet
\newtheorem{defn}{Definiţia}
 
\begin{document}
 
\begin{defn}[Topologie]
\href{http://ro.wikipedia.org/wiki/Topologie}{Topologia} este o ramură a matematicii,
mai precis o extensie a geometriei care studiază deformările spațiului prin
transformări continue.
\end{defn}
 
\end{document}

(Argumentul definiţiei, în cazul de faţă Topologie, este întotdeauna opţional, însă nu va apare implicit, dacă nu-l specificaţi ca mai sus în specificaţia antetului).

Output:

Latex stil teoremă.png

Conflicte

Mediul pentru teoreme (theorem) intră în conflict cu alte medii, spre exemplu cu wrapfigure. O soluţie posibilă constă în redefinirea teoremei, spre exemplu în modul următor:

% Ajustează spaţiile verticale din LaTeX
\def\smallskip{\vskip\smallskipamount}
\def\medskip{\vskip\medskipamount}
\def\bigskip{\vskip\bigskipamount}
 
% Teoremă cu aspect personalizat
\newcounter{thm}[section]
\renewcommand{\thethm}{\thesection.\arabic{thm}}
\def\claim#1{\par\medskip\noindent\refstepcounter{thm}\hbox{\bf
\arabic{chapter}.\arabic{section}.\arabic{thm}. #1.}
\it\ % \ignorespaces
}
\def\endclaim{\par\medskip}
\newenvironment{thm}{\claim}{\endclaim}

În acest caz, teorema arată în felul următor:

\documentclass[a4paper,12pt]{book}
 
\usepackage[utf8x]{inputenc} % pentru caractere Unicode
...
\renewcommand{\chaptername}{Capitolul}
 
\begin{document}
 
 \chapter{Matematică}
 
 \section{Teoreme}
 
 \begin{thm}{Teoremă de probabilitate}\label{prob} 
  Lasă să se întâmple.
  Apoi vei afla.
 \end{thm}
 
\end{document}
Latex teoremă personalizată.png

Note

  1. 1,0 1,1 1,2 1,3 necesită pachetul amsthm

Legături externe

Etichete şi referinţe

Introducere

Un alt avantaj al sistemului LaTeX este acela că puteţi crea cu uşurinţă referinţe la aproape orice este numerotat (secţiuni, figuri, formule), iar LaTeX va avea grijă de numerotarea referinţelor, actualizând aceste date când este necesar. Comenzile utilizate nu depind de obiectele la care faceţi trimiteri, aceste comenzi fiind:

\label{marker}
dai obiectului la care vrei să creezi referinţe un marker, un fel de nume.
\ref{marker}
poţi face trimiteri la obiectul marcat mai devreme. Această comandă afişează numărul care a fost atribuit obiectului.
\pageref{marker}
Tipăreşte numărul paginii pe care se găseşte obiectul.

LaTeX va determina automat numerotarea corectă pentru obiectele din document; markerul folosit pentru a eticheta obiectul nu va apare nicăieri în document. Apoi LaTeX va înlocui şirul de caractere "\ref{marker}" cu numărul corespunzător ce a fost atribuit obiectului. Dacă faceţi trimiteri la un marker care nu există, LaTeX va compila cu succes documentul, dar va da un avertisment (referinţe nedefinite):

LaTeX Warning: There were undefined references.

şi va înlocui "\ref{marker necunoscut}" cu "??" (astfel că va fi uşor de găsit în document).

După cum probabil aţi ghicit deja, este un proces care se defăşoară în două faze: mai întâi, compilatorul trebuie să memoreze etichetele cu numărul corespunzător de folosit pentru trimiteri, apoi trebuie să înlocuiască \ref cu acest număr. De aceea, când utilizaţi referinţe, trebuie să compilaţi documentul de două ori pentru a vedea outputul corespunzător. Dacă compilaţi documentul numai o dată, LaTeX va folosi informaţiile mai vechi colectate la compilările anterioare (care pot fi învechite), însă compilatorul vă va informa, afişând pe ecran la sfârşitul compilării:

LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.

(Avertisment LaTeX: Eticheta(ele) se poate să se fi schimbat. Recompilaţi pentru a actualiza referinţele.)

Cu ajutorul comenzii \pageref{} puteţi ajuta cititorul să găsească obiectul la care s-a făcut trimitere, oferind şi numărul paginii unde poate fi găsit. Puteţi scrie ceva de genul:

Vezi figura~\ref{fig:test} de pe pagina~\pageref{fig:test}.

Deoarece poţi utiliza exact aceleaşi comenzi pentru a face trimiteri la aproape orice, s-ar putea să fii puţin confuzionat după ce ai introdus o mulţime de referinţe. Se obişnuieşte în rândul utilizatorilor LaTeX să se adauge câteva litere la etichetă pentru a descrie obiectul la care se fac trimiteri. Iată un exemplu:

cap: capitol
sec: secţiune
fig: figură
tab: tabel
ec: ecuaţie
cod: afişare de cod

Urmând această convenţie, eticheta unei figuri va arăta aşa: \label{fig:figură}, etc. Nu sunteţi obligaţi să utilizaţi acest tip de prefixe. Puteţi folosi orice şir de caractere ca argument al comenzii \label{...}, însă aceste prefixe devin tot mai utile pe măsură ce documentul creşte în dimensiune.

O altă sugestie: încercaţi să evitaţi să folosiţi numere în etichete. E mai bine să descrieţi obiectul. În felul acesta, dacă schimbaţi ordinea obiectelor, nu va trebui să redenumiţi toate etichetele şi referinţele acestora.

Dacă vreţi să vedeţi marcatorii utilizaţi şi în documentul de ieşire, puteţi folosi pachetul showkeys; acesta poate fi foarte util în faza de dezvoltare a documentului. Pentru mai multe informaţii, vezi capitolul Pachete.

Exemple

Iată câteva exemple concrete, însă veţi observa că sunt asemănătoare, întrucât utilizează aceleaşi comenzi.

Secţiuni

\section{Salutări}
\label{sec:salut}
 
Salut!
 
\section{Referinţe}
 
Am salutat în secţiunea \ref{sec:salut}.
Latex exemplu referinţă secţiune.png

Puteţi plasa eticheta oriunde în secţiune; oricum, pentru a evita confuzia, este mai bine să o aşezaţi imediat după începutul secţiunii. Notaţi că markerul începe cu sec:, după cum s-a sugerat mai devreme. Se face apoi referire la etichetă într-o secţiune diferită.

Imagini

Puteţi face referire la o imagine prin inserarea ei în mediul flotant figure.

\begin{figure}
 \centering
 \includegraphics[width=0.5\textwidth]{pescarus}
 \caption{Prim-plan al unui pescăruş}
 \label{pescarus}
\end{figure}
Figura \ref{pescarus} prezintă o fotografie a unui pescăruş.
Latex exemplu referinţă figură.png

Când se declară o etichetă într-un mediu ce gestionează elemente flotante, comanda \ref{...} va returna numărul figurii/tabelului respective, însă trebuie să apară după titlu (caption). Când se declară în afara mediului, va returna numărul secţiunii. Pentru a fi complet sigură, eticheta oricărei imagini sau tabel poate fi introdusă în comanda \caption{}, ca în:

\caption{Prim-plan al unui pescăruş\label{pescarus}}

Vezi capitolul Elemente flotante, figuri şi note pentru mai multe informaţii despre figure şi alte medii similare.

Corectarea etichetelor greşite

Comanda \label trebuie să apară după (sau înăuntrul) \caption. Altfel, va selecta numărul secţiunii sau listei curente în locul celui dorit.

\begin{figure}
  \begin{center}
    \includegraphics[width=0.5\textwidth]{pescarus}
    \caption{Prim-plan al unui pescăruş} \label{fig:pescarus} 
  \end{center}
\end{figure}

Probleme cu linkuri la tabele şi figuri gestionate de hyperref

În cazul în care folosiţi pachetul hyperref pentru a crea un PDF, linkurile la tabele sau figuri vor indica spre titlul tabelului sau figurii, care este întotdeauna aşezat sub tabelul sau figura respective[1]. De aceea, tabelul sau figura nu vor fi vizibile, dacă sunt situate deasupra pointerului şi trebuie să derulaţi pagina în sus pentru a le vedea. Dacă vreţi ca linkul să indice spre partea superioară a imaginii, puteţi folosi pachetul hypcap:

\usepackage[all]{hypcap}

Aveţi grijă să includeţi acest pachet după ce includeţi pachetul hyperref, care altfel ar trebui să fie încărcat ultimul.

Formule

Iată un exemplu ce prezintă cum puteţi crea referinţe la formule:

\begin{minipage}{0.5\textwidth}
 \begin{equation} \label{ec:rezolv}
  x^2 - 5 x + 6 = 0
 \end{equation}
 
 \begin{equation}
  x_1 = \frac{5 + \sqrt{25 - 4 \times 6}}{2} = 3
 \end{equation}
 
 \begin{equation}
  x_2 = \frac{5 - \sqrt{25 - 4 \times 6}}{2} = 2
 \end{equation}
 
 \medskip
 
 şi am rezolvat ecuaţia \ref{ec:rezolv}.
\end{minipage}
Latex exemplu referinţă matematică.png

După cum vedeţi, eticheta este aşezată puţin după începutul modului matematic. Pentru a face o referinţă la formulă, trebuie să folosiţi un mediu care adună numere. De cele mai multe ori, veţi utiliza mediul equation; asta este cea mai bună alegere pentru formule scrise pe o linie, fie că folosiţi pachetul amsmath sau nu. Notaţi de asemenea prefixul ec: din etichetă.

eqref

Pachetul amsmath adaugă o comandă nouă pentru referenţierea formulelor: \eqref{}. Merge exact la fel ca \ref{}, însă adaugă paranteze drepte astfel încât, în loc să tipărească un număr simplu ca 5, va tipări (5). Acest lucru poate fi util prin evidenţierea diferenţelor dintre formule şi alte lucruri, fără a fi necesar să repetaţi cuvântul "formula" înaintea oricărei referinţe. Outputul său poate fi modificat după cum doriţi; pentru mai multe informaţii, vezi documentaţia pachetului amsmath.

numberwithin

Pachetul amsmath adaugă comanda \numberwithin{contor1}{contor2} ce înlocuieşte argumentul simplu contor1 cu unul mai sofisticat contor2.contor1. Spre exemplu, \numberwithin{equation}{section} în preambul va adăuga numărul secţiunii înaintea tuturor numerelor ecuaţiilor.

Pachetul varioref

Pachetul varioref introduce o comandă nouă, numită \vref{}. Această comandă este utilizată exact ca \ref, însă are un output diferit conform contextului. Dacă obiectul la care trebuie creată referinţa este pe aceeaşi pagină, merge exact la fel ca \ref; dacă obiectul este îndepărtat, va afişa ceva în genul "5 pe pagina 25", adică adaugă automat numărul paginii. Dacă obiectul este apropiat, poate utiliza automat fraze mai rafinate, cum ar fi "pe pagina următoare" sau "pe pagina impară", conform cu contextul şi clasa documentului.

Această comandă trebuie utilizată cu mare atenţie. Generează mai mult de un cuvânt, astfel că se poate întâmpla ca outputul său să fie afişat pe două pagini diferite. În acest caz, algoritmul poate fi confuzionat şi cauza apariţia unei bucle. Haideţi să vedem un exemplu. Etichetaţi un obiect pe pagina 23, iar outputul comenzii \vref este între paginile 23 şi 24. Dacă ar fi pe pagina 23, ar fi afişat la fel ca în cazul comenzii de bază ref, dacă s-ar situa pe pagina 24, ar fi tipărit sub forma "pe pagina anterioară", însă dacă este pe amândouă, ar putea determina apariţia unor erori ciudate la compilare, care ar putea fi foarte greu de rezolvat. Puteţi să credeţi că acest lucru se întâmplă numai foarte rar; din păcate, dacă scrieţi un document lung, puteţi avea sute de referinţe, astfel că situaţii de genul acesta au şanse să apară. O cale de a evita problemele acestea în timpul dezvoltării este să folosiţi comanda standard ref tot timpul şi să o convertiţi la vref când documentul este aproape de versiunea finală, iar apoi să faceţi ajustări pentru a rezolva eventualele probleme.

Pachetul hyperref şi \autoref{}

Pachetul hyperref introduce încă o comandă utilă: \autoref{}. Această comandă creează o referinţă cu text adiţional corespunzător tipului trimiterii, toate constituind o hiperlegătură (hyperlink). Spre exemplu, comanda \autoref{sec:intro} ar crea un hyperlink la comanda \label{sec:intro}, oriunde ar fi. Presupunând că această etichetă indică spre o secţiune, hyperlinkul ar conţine textul "section 3.4", sau ceva similar (lista completă a denumirilor implicite poate fi consultată aici). Notaţi că, deşi există o comandă \autoref* ce produce un prefix fără link (util dacă eticheta este pe aceeaşi pagină cu referinţa), nu există o comandă \Autoref care să producă versiuni care încep cu litere mari (utile, spre exemplu, la începutul frazelor); însă de vreme ce scrierea cu litere mari sau denumirile autoref au fost alese de autorul pachetului, puteţi modifica textul prefixului prin redefinirea \tipautorefname la prefixul dorit, ca în:

\def\sectionautorefname{Section}

Această truc de redenumire poate fi folosit, desigur, şi în alte scopuri.

  • Dacă doriţi să aveţi o referinţă cu un hyperlink, însă nu doriţi textul predefinit oferit de comanda \autoref{}, puteţi realiza acest lucru cu o comandă de genul \hyperref[sec:intro]{Anexă~\ref*{sec:intro}}. Notaţi că puteţi dezactiva crearea de hyperlinkuri în hyperref, iar apoi utiliza aceste comenzi pentru a genera text automat.
  • Reţineţi că eticheta (\label) trebuie plasată într-un mediu cu un contor, cum este un tabel sau o figură. Altfel, nu doar că numărul va face referire la secţiunea curentă, după cum a fost menţionat mai devreme, dar de asemenea numele se va referi la mediul anterior cu un contor. Spre exemplu, dacă puneţi o etichetă după ce se termină codul pentru o figură, eticheta tot va spune "figura n", unde 'n' este numărul secţiunii curente.

Pachetul hyperref şi \nameref{}

Pachetul hyperref include automat şi pachetul nameref, precum şi o comandă cu acelaşi nume din pachet. Este similară cu \autoref{}, însă inserează un text corespunzător numelui secţiunii, de exemplu:

\section{Prima secţiune} \label{marker}
\section{A doua secţiune}
În secţiunea \nameref{marker} am definit...

Pachetul hyperref şi \phantomsection

Când definiţi o etichetă (\label) în afara unei figuri, tabel, sau altor obiecte flotante, eticheta indică secţiunea curentă. În unele cazuri, acest comportament nu este ce aţi dori şi aţi prefera ca linkul generat să indice către linia unde este definită eticheta. Asta se poate face cu comanda \phantomsection, ca în exemplul următor:

% Linkul indică spre linia de mai jos
\phantomsection
\label{eticheta}

Referinţe

  1. http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/README

Indexare

O trăsătură utilă în multe cărţi, indexul este o listă alfabetică de cuvinte şi expresii cu numerele paginilor din carte unde se găsesc. LaTeX suportă crearea de indici cu ajutorul pachetului makeidx şi programul makeindex, denumit în unele sisteme makeidx.

Utilizarea makeidx

Pentru a activa indexarea în LaTeX, trebuie mai întâi să încărcaţi pachetul makeidx în preambul:

\usepackage{makeidx}

şi să activaţi comenzile speciale de indexare punând comanda

\makeindex

în preambulul fişierului de intrare. Aceste lucruri trebuie făcute în preambul, întrucât în felul acesta permit sistemului LaTeX să creeze fişierele necesare pentru indexare. Pentru a spune LaTeX ce să indexeze, utilizaţi comanda

\index{cheie}

unde cheie este intrarea din index, care nu apare în documentul final. Introduceţi comenzile de indexare în locul din text către care vreţi să se facă trimitere în index, identificat prin cheie. Spre exemplu, textul

Pentru a rezolva diverse probleme în fizică, poate fi indicat
să exprimaţi orice funcţie arbitrară continuă pe porţiuni ca o
serie Fourier compusă din funcţii multiple sinus şi cosinus.

poate fi rescris sub forma

Pentru a rezolva diverse probleme în fizică, poate fi indicat
să exprimaţi orice funcţie arbitrară continuă pe porţiuni ca o
serie Fourier\index{serie Fourier} compusă din funcţii multiple sinus şi cosinus.

pentru a crea o intrare numită 'serie Fourier' cu o referinţă la pagina ţintă. Mai multe utilizări ale comenzii \index cu aceeaşi cheie pe pagini diferite vor adăuga aceste pagini ţintă la aceeaşi intrare în index.

Pentru a afişa indexul în document, folosiţi comanda

\printindex

Se obişnuieşte ca aceasta să se plaseze la sfârşitul documentului. Formatul implicit al indexului este cu două coloane.

Pachetul showidx care face parte din sistemul LaTeX afişează toate intrările din index în partea stângă a textului. Acest lucru este foarte util pentru corectarea unui document şi verificarea indexului.

Compilarea indexului

Când fişierul de intrare este procesat de LaTeX, fiecare comandă \index scrie o intrare corespunzătoare în index, împreună cu numărul paginii curente, într-un fişier special. Fişierul are acelaşi nume ca şi fişierul de intrare LaTeX, însă cu altă extensie (.idx). Acest fişier .idx poate fi apoi procesat cu programul makeindex. Scrieţi în linia de comandă:

makeindex nume_fişier

Notaţi că nume_fişier se scrie fără extensie: programul va căuta fişierul nume_fişier.idx. Puteţi pasa direct fişierul nume_fişier.idx programului ca argument. Programul makeindex generează un index sortat cu acelaşi nume de bază, însă de data aceasta cu extensia .ind. Dacă fişierul de intrare LaTeX este procesat din nou, acest index sortat este inclus în document în punctul unde LaTeX întâlneşte comanda \printindex.

Indexul creat de LaTeX cu opţiunile implicite poate să nu arate aşa cum doriţi. Puteţi personaliza aspectul indexului cu un set de fişiere de stil ce însoţesc programul makeindex, aflate de obicei undeva în structura de directoare a sistemului TeX, în general în subdirectorul makeindex. Pentru a transmite makeindex să folosească un anumit fişier de stil, rulaţi programul cu opţiunea:

 makeindex -s <fişier de stil> nume_fişier

Dacă folosiţi un program cu grafică pentru a compila fişierele sursă LaTeX şi cu indexul, s-ar putea să trebuiască să setaţi opţiunile acestuia. Iată câteva sfaturi legate de configuraţie pentru programele tipice:

Setările MakeIndex în WinEdit

Să zicem că vreţi să adaugaţi un fişier de stil pentru index numit simplu_idx.ist

  • Texify/PDFTexify: Options→Execution Modes→Accessories→PDFTeXify, adăugaţi la Switches: --mkidx-option="-s simplu_idx.ist"
  • Doar MakeIndex: Options->Execution Modes→Accessories→MakeIndex, adăugaţi în linia de comandă: -s simplu_idx.ist

Indexare complexă

Iată câteva exemple de intrări \index:

Exemplu Intrare în index Comentariu
\index{Salut} Salut, 1 Intrare simplă
\index{Salut!Petre}   Petre, 3 Subelement al intrării 'Salut'
\index{Sam@\textsl{Sam}} Sam, 2 Intrare formatată
\index{Lin@\textbf{Lin}} Lin, 7 La fel ca mai sus
\index{Jenny|textbf} Jenny, 3 Număr formatat al paginii
\index{Joe|textit} Joe, 5 Tot ca mai sus
\index{ecole@\'ecole} école, 4 Accente
\index{Petre|see{Salut}} Petre, see Salut Trimiteri
\index{Jen|seealso{Jenny}} Jen, see also Jenny Ca mai sus

Subelemente ale intrărilor

Dacă o anumită intrare are subsecţiuni, acestea pot fi marcate cu !. Spre exemplu,

\index{codificări!input!cp850}

creează o intrare în index, unde 'cp850' face parte din categoria 'input' (care face parte la rândul ei din categoria 'codificări'). Acestea sunt denumite subsubintrări şi subintrări în terminologia makeidx.

Controlul sortării

Pentru a determina cum urmează să se sorteze indexul după o cheie, plasaţi o valoare ce va fi folosită pentru sortare înaintea cheii, cu @ ca separator. Acest lucru este util dacă există un mod de formatare sau matematic, aşa că un exemplu ar putea fi

\index{F@$\vec{F}$}

astfel încât intrarea din index va arăta în felul următor: '\vec{F}', dar va fi sortată ca 'F'.

Schimbarea stilului pentru numărul paginii

Pentru a schimba formatarea numărului unei pagini, adăugaţi un | şi numele unei comenzi ce realizează formatarea. Această comandă ar trebui să accepte doar un argument.

Spre exemplu, dacă la pagina 3 a unei cărţi scrieţi 'buldogi' şi comanda

\index{buldog}

iar la pagina 10 din aceeaşi carte vreţi să afişaţi secţiunea principală despre buldogi cu un număr aldin al numărului paginii, daţi comanda

\index{buldog|textbf}

Asta va apare în index sub forma

buldog, 3, 10

Dacă utilizaţi programul texindy în loc de makeindex, intrările clasificate vor fi şi ele sortate, astfel încât toate intrările aldine vor fi aşezate înaintea tuturor celorlalte în mod implicit.

Pagini multiple

Pentru a face o indexare pe mai multe pagini, adăugaţi |( şi |) la sfârşitul comenzii \index, ca în

\index{Mecanică cuantică!Istorie|(}
În 1901, Max Planck a lansat teoria radiaţiei dependente de energia cuantificată.
Deşi asta a explicat catastrofa ultravioletă în spectrul radiaţiei
corpului negru, a avut consecinţe mult mai importante la începutul mecanicii cuantice.
...
\index{Mecanică cuantică!Istorie|)
}

Intrarea din index pentru subelementul 'Istorie' va fi intervalul paginilor dintre cele două comenzi \index.

Utilizarea unor caractere speciale

Pentru a plasa valori cu !, @, sau | în comanda \index, trebuie să citaţi aceste caractere folosind ghilimele (") şi puteţi afişa " doar citând ghilimelele: o cheie pentru " ar fi \index{""}.

Această regulă nu merge pentru \", astfel că pentru a pune ä în index, încă mai puteţi folosi \index{a@\"{a}}.

Avertismente

Comanda \index poate afecta aranjarea în pagină dacă nu este folosită cu atenţie. Iată un exemplu:

Un cuvânt \index{cuvânt}. Spre deosebire
de cuvânt\index{cuvânt
}. Notaţi poziţia
punctului ce marchează sfârşitul frazei.

Un cuvânt . Spre deosebire de cuvânt. Notaţi poziţia punctului ce marchează sfârşitul frazei.

Listă de abrevieri

Puteţi face o listă de abrevieri cu ajutorul pachetului nomencl. Ar putea să vă intereseze şi pachetul glossaries descris în capitolul Glosar.

Pentru a activa trăsătura de clasificare (nomenclature) din LaTeX, scrieţi în preambul:

\usepackage[opţiuni]{nomencl}
\makenomenclature

Daţi comanda \nomenclature[prefix]{simbol}{descriere} pentru fiecare simbol pe care vreţi să-l includeţi în lista de clasificări. Locul cel mai bun pentru această comandă este imediat după ce introduceţi simbolul prima dată. Scrieţi \printnomenclature în locul în care vreţi să apară lista de clasificări.

Rulaţi comanda de compilare LaTeX de două ori, apoi

makeindex nume_fişier.nlo -s nomencl.ist -o nume_fişier.nls

iar apoi rulaţi comanda LaTeX încă o dată.

Indecşi multipli

Dacă vă trebuie mai mulţi indecşi, puteţi utiliza pachetul multind.

Acest pachet oferă aceleaşi comenzi ca şi makeidx, însă acum trebuie de asemenea să pasaţi un nume ca prim argument al fiecărei comenzi.

\usepackage{multind}
\makeindex{cărţi}
\makeindex{autori}
...
\index{cărţi}{O carte de indexat}
\index{autori}{Pune acest autor în index}
...
\printindex{cărţi}{Indexul cărţilor}
\printindex{autori}{Indexul autorilor
}

Adăugarea indexului la Cuprins

Implicit, indexul nu este afişat la Cuprins, aşadar trebuie să-l adăugaţi manual.

Pentru a adăuga indexul sub forma unui capitol, folosiţi această comandă:

\clearpage
\addcontentsline{toc}{chapter}{Index}
\printindex

Dacă utilizaţi clasa carte (book), probabil veţi dori ca indexul să înceapă pe o pagină impară. Pentru a obţine acest efect, folosiţi comanda \cleardoublepage.

Indecşi internaţionali

Dacă vreţi să sortaţi intrările ce au caractere internaţionale (cum sunt ő, ą, ó, ç, etc.), veţi observa că sortarea "nu este tocmai potrivită". În cele mai multe cazuri, caracterele sunt tratate ca nişte caractere speciale şi sfârşesc prin a fi în acelaşi grup cu @, ¶ sau µ. În cele mai multe limbi ce folosesc alfabetul Latin, acest comportament nu este cel corect.

Generarea indexului

Din păcate, versiunile curente ale xindy şi hyperref sunt incompatibile. Când utilizaţi modificatorii textbf sau textit, texindy va tipări un mesaj de eroare:unknown cross-reference-class `hyperindexformat'! (ignored) şi va adăuga paginile la index. O soluţie posibilă este descrisă pe pagina de discuţie.

Pentru a genera un fişier cu un index internaţional, trebuie să folosiţi texindy în locul makeindex.

xindy este un sistem de indexare mult mai extensibil şi mai robust decât makeindex.

Spre exemplu, nu trebuie să scrieţi:

\index{Lin@\textbf{Lin}}

pentru a obţine intrarea Lin după LAN şi înainte de LZA, în schimb, e suficient să scrieţi

\index{\textbf{Lin}}

Însă ce e mult mai important, poate sorta în mod corespunzător fişierele de indexare în numeroase limbi, nu doar engleză.

Din păcate, generarea de indecşi gata de utilizat de către sistemul LaTeX cu ajutorul xindy este ceva mai complicat decât cu makeindex.

Mai întâi, trebuie să ştim în ce tip de codificare (encoding) a fost salvat fişierul .tex. În cele mai multe cazuri, acesta va fi UTF-8 sau ISO-8859-1, deşi dacă locuiţi, spre exemplu, în Polonia, ar putea fi ISO-8859-2 sau CP-1250. Verificaţi parametrul pachetului inputenc.

Apoi, trebuie să ştim care limbă este predominant utilizată în document. xindy poate sorta nativ indecşi în albaneză, olandeză, ebraică, latină, norvegiană, slovacă, bielorusă, engleză, georgiană, maghiară, letonă, poloneză, slovenă, vietnameză, bulgară, esperanto, germană, islandeză, lituaniană, portugheză, spaniolă, croată, estonă, greacă, italiană, română, sorabă, suedeză, cehă, finlandeză, romă, klingoniană, macedoneană, rusă, turcă, daneză, franceză, hausă, curdă, mongolă, sârbă şi ucraineană.

Nu ştiu dacă alte limbi au probleme similare, însă cu limba poloneză, facă fişierul .tex este salvat în formatul UTF-8, fişierul .ind produs de texindy va fi codificat cu ISO-8859-2 dacă utilizaţi doar opţiunea -L polish. Deşi nu este o problemă pentru intrări ce conţin litere poloneze, de vreme ce LaTeX codifică intern toate literele în plain ASCII, constituie o problemă pentru literele cu accente de la începutul cuvintelor. La crearea de noi grupuri de intrări în index, dacă aveţi, spre exemplu, o intrare "średnia", veţi obţine un "Ś" codificat în ISO-8859-2 în fişierul de ieşire .ind. LaTeX nu agreează ca o parte a fişierului să fie scrisă în UTF-8 şi altă parte în IS-8859-2. Soluţia evidentă (adăugarea -C utf8) nu merge, texindy se opreşte cu eroarea

ERROR: Could not find file "tex/inputenc/utf8.xdy"

Pentru a rezolva această problemă, trebuie să încărcaţi stilul de definiţie pentru antete cu -M switch:

-M lang/polish/utf8

La sfârşit trebuie să rulăm o comandă de genul:

texindy -L polish -M lang/polish/utf8 nume_fişier.idx

xindy în Kile

Pentru a utiliza programul texindy în locul makeindex în Kile, trebuie fie să redefiniţi programul ajutător MakeIndex în Settings → Configure Kile... → Tools → Build, fie să definiţi noul program şi să redefiniţi alte programe auxiliare să-l folosească.

Definiţia xindy ar trebui să arate cam aşa:

General:
 Comandă: texindy
 Opţiuni: -L polish -M lang/polish/utf8 -I latex '%S.idx'
Avansat:
 Tip: Run Outside of Kile
 Clasă: Compile
 Extensia sursei: idx
 Extensia fişierului de ieşire: ind
 Fişierul de ieşire: <empty>
 Director relativ: <empty>
 Stare: Editor
Menu:
 Adaugă program auxiliar la meniul Build: Compile
 Icoană: imaginea preferată

Glosar

Multe documente tehnice folosesc termeni sau acronime necunoscuţi populaţiei generale. Se obişnuieşte să adăugaţi glosare în care explicaţi aceste cuvinte.

Pachetul glossaries a fost creat pentru a ajuta utilizatorii să întocmească glosare. Oferă suport pentru mai multe glosare în acelaşi document, acronime şi simboluri.

Înlocuieşte pachetul glossary şi poate fi folosit în locul pachetului nomencl.

Utilizarea pachetului glossaries

Pentru a activa utilizarea pachetului glossaries, trebuie să-l încărcaţi, scriind în preambulul documentului:

\usepackage{glossaries}

Dacă veţi folosi programul xindy (recomandat) în locul makeindex, trebuie să specificaţi opţiunea xindy:

\usepackage[xindy]{glossaries}

Pentru ca glosarul să apară în Cuprins, trebuie să adăugaţi şi opţiunea toc:

\usepackage[toc]{glossaries}

Indexul glosarului nu va fi generat până când nu adăugaţi următoarea comandă în preambulul documentului:

\makeglossaries

Notaţi că linkurile din glosarul generat nu vor fi "accesabile" decât dacă includeţi acest pachet "după" hyperref.

Definirea intrărilor din glosar

Pentru a utiliza o intrare din glosar trebuie mai întâi s-o definiţi. Sunt mai multe moduri în care puteţi defini o intrare, în funcţie de ce definiţi şi cum urmează să fie folosită intrarea.

Notaţi că o intrare definită nu va fi inclusă în glosarul afişat decât dacă este utilizată în document. Acest lucru vă permite să creaţi un glosar de termeni generali pe care puteţi să-l includeţi cu comanda \include în toate documentele.

Definirea de termeni

Pentru a defini un termen în glosar, folosiţi macrocomanda \newglossaryentry:

\newglossaryentry{<etichetă>}{<setări>}

Eticheta reprezintă un identificator unic pentru o intrare din glosar, iar setările sunt perechi cheie=valoare separate prin virgulă, utilizate la definirea unei intrări.

Spre exemplu, pentru a defini o intrare denumită calculator:

\newglossaryentry{calculator}
{
  name=calculator,
  description={este o maşină programabilă ce primeşte input,
               păstrează şi manipulează date, şi generează
               output într-un format util}
}

Exemplul de mai sus defineşte o intrare cu aceeaşi etichetă şi denumire. Acestea pot să difere, ca în exemplul următor:

\newglossaryentry{naiive}
{
  name=na\"{\i}ve,
  description={este un cuvânt englezesc împrumutat din franceză (adjectiv,
               formă a lui naïf) şi care înseamnă să ai sau să manifeşti
               o lipsă de experienţă, înţelegere sau rafinament}
}

Când definiţi termeni, trebuie să vă amintiţi că vor fi sortaţi cu makeindex sau xindy. Deşi xindy are încorporate mai multe cunoştinţe despre LaTeX, omite macrocomenzi din LaTeX, cum este (\"{\i}), sortând astfel incorect exemplul de mai sus sub forma nave. makeindex nu va merge mult mai bine, întrucât nu înţelege macrourile TeX, astfel că va interpreta cuvântul exact după cum a fost definit, punându-l în clasa simbolurilor, înaintea cuvintelor ce încep cu naa. De aceea trebuie să extindem exemplul nostru pentru a specifica cum să sortăm cuvântul ce reprezintă denumirea intrării în index:

\newglossaryentry{naiive}
{
  name=na\"{\i}ve,
  description={este un cuvânt englezesc împrumutat din franceză (adjectiv,
               formă a lui naïf) şi care înseamnă să ai sau să manifeşti
               o lipsă de experienţă, înţelegere sau rafinament},
  sort=naive
}

Puteţi să specificaţi şi forme de plural, dacă acestea nu se formează adăugând "s" (vom învăţa cum să le utilizăm în secţiunea următoare):

\newglossaryentry{Linux}
{
  name=Linux,
  description={este un termen generic ce semnifică familia sistemelor
               de operare de tip UNIX şi care folosesc kernelul Linux},
  plural=Linuces
}

Definirea de simboluri

Intrările definite pot fi şi simboluri:

\newglossaryentry{pi}
{
  name={\ensuremath{\pi}},
  description={raportul dintre circumferinţa cercului şi
               diametru},
  sort=pi
}

Puteţi de asemenea să definiţi atât un nume, cât şi un simbol:

\newglossaryentry{nr real}
{
  name={număr real},
  description={include atât numere raţionale, cum sunt $42$ şi
               $\frac{-23}{129}$, cât şi numere iraţionale,
               cum ar fi $\pi$ şi radical din 2; sau puteţi
               specifica un număr real printr-o reprezentare
               cu un număr infinit de zecimale, cum este
               $2.4871773339\ldots$, în care cifrele continuă
               cumva; sau numerele reale pot fi considerate
               puncte pe o linie cu numere infinit de lungă},
  symbol={\ensuremath{\mathbb{R}}}
}

Notaţi că nu toate stilurile de glosare afişează simbolurile definite. Pentru a afişa număr real ca trimitere la intrarea din glosar nr real, trebuie să includeţi în preambulul documentului:

\PrerenderUnicode{ă}

Definirea de acronime

Acronimele definite pot fi puse în liste separate dacă folosiţi opţiunea acronym pentru pachetul glossaries:

\usepackage[acronym]{glossaries}

Pentru a defini un nou acronim, utilizaţi macroul \newacronym:

\newacronym{<etichetă>}{<abreviere>}{<text>}

unde eticheta identifică în mod unic acronimul, abrevierea este forma prescurtată a acronimului, iar textul reprezintă forma extinsă a acronimului. Spre exemplu:

\newacronym{lvm}{LVM}{Logical Volume Manager}

Utilizarea termenilor definiţi

După ce aţi definit un termen, puteţi să-l folosiţi într-un document. Sunt mai multe comenzi ce se pot aplica la termenii din glosar.

Referinţe generale

O referinţă generală se foloseşte cu comanda \gls. Dacă, spre exemplu, aveţi intrări în glosar definite ca mai sus, puteţi să le folosiţi în felul următor:

Oamenii naivi (\textit{\Gls{naiive} people}) nu au  
auzit de sisteme de operare alternative pentru
\gls{calculator}: \glspl{Linux
}, BSD şi GNU/Hurd.

Oamenii naivi (Naïve people) nu au auzit de sisteme de operare alternative pentru calculator: Linuces, BSD şi GNU/Hurd.

Descrierea comenzilor utilizate în exemplul de mai sus:

\gls{<etichetă>}

Această comandă tipăreşte termenul asociat cu eticheta pasată ca argument. Dacă aţi încărcat pachetul hyperref înainte de glossaries, va lega de asemenea termenul de intrarea din glosar.

\glspl{<etichetă>}

Această comandă afişează pluralul termenului definit, altfel are acelaşi efect ca şi gls.

\Gls{<etichetă>}

Această comandă afişează forma de singular a termenului, primul caracter fiind scris cu literă mare.

\Glspl{<etichetă>}

Această comandă scrie forma de plural, primul caracter al termenului fiind scris cu literă mare.

Trimiterile la acronime

Acronimele se comportă puţin diferit de ceilalţi termeni din glosar. La început, utilizarea comenzii \gls va afişa textul întreg, urmat de abrevierea între paranteze.

\gls{lvm}

Logical Volume Manager (LVM)

Utilizările ulterioare vor afişa numai forma prescurtată.

\gls{lvm}

LVM

Pentru a reseta prima utilizare a acronimului, folosiţi comanda:

\glsreset{<etichetă>}

sau, dacă vreţi să resetaţi prima utilizare pentru toate acronimele:

\glsresetall

Afişarea glosarului

Pentru a afişa lista sortată de termeni, trebuie să daţi comanda:

\printglossaries

în locul în care vreţi să fie afişate glosarul şi lista de acronime în document.

Apoi trebuie să urmaţi trei paşi:

  1. Compilaţi codul sursă LaTeX, generând în felul acesta fişierele utilizate de makeglossaries.
  2. Realizaţi indexarea/sortarea. Modul recomandat constă în utilizarea makeglossaries (un script ce rulează programele xindy sau makeindex în funcţie de opţiunile setate pentru document, cu setările corecte de codificare şi limbaj):
    makeglossaries fişier
    
  3. Compilaţi din nou fişierul LaTeX pentru a obţine documentul cu intrările din glosar.

Dacă intrările folosite sunt legate de altele (unele intrări sunt legate de alte intrări prin intermediul comenzii \gls), va trebui să treceţi prin punctele 1 şi 2 de două ori, cinci paşi în total: 1, 2, 1, 2, 3.

Referinţe

Algoritmi şi pseudocod

LaTeX are o serie de pachete ce pot ajuta la formatarea algoritmilor, codului şi "pseudocodului". Aceste pachete oferă îmbunătăţiri stilistice pentru un stil uniform (typewriter), astfel încât construcţii de genul buclelor sau structurilor de decizie sunt separate vizual de restul textului.

Redactarea algoritmilor

Formatarea cu ajutorul pachetului algorithmic

Mediul algorithmic oferă un număr de structuri populare pentru modele de algoritmi. Comanda \begin{algorithmic} poate lua ca argument opţional un întreg pozitiv, care, dacă este prezent, va face ca numerotarea liniilor să apară la multipli ai acelui întreg. Spre exemplu, \begin{algorithmic}[5] va intra în mediul algorithmic şi va numerota fiecare a cincea linie.

Iată un exemplu de redactare a unui algoritm elementar cu ajutorul pachetului algorithmic (amintiţi-vă să adăugaţi declaraţia \usepackage{algorithmic} în preambulul documentului):

\begin{algorithmic}
\IF {$i\geq maxval$} 
        \STATE $i\gets 0$
\ELSE
        \IF {$i+k\leq maxval$}
                \STATE $i\gets i+k$
        \ENDIF
\ENDIF 
\end{algorithmic}

Fişierul sursă LaTeX poate fi scris într-un format familiar programatorilor astfel încât să fie uşor de citit. Asta nu va afecta, totuşi, aspectul final al documentului.

Latex-algorithmic-if-else.png

Pachetul algorithmic oferă mai multe structuri, detaliate mai jos.

Declaraţii pe o singură linie

\STATE <text>
O declaraţie simplă, spre exemplu, pentru setarea unei variabile. De exemplu:
\begin{algorithmic}
\STATE i=0
\end{algorithmic}

va produce
i = 0

Declaraţii if

Există trei forme ale acestei structuri:

\IF{<condiţie>} <text> \ENDIF
\IF{<condiţie>} <text> \ELSE <text> \ENDIF
\IF{<condiţie>} <text> \ELSIF{<condiţie>} <text> \ELSE <text> \ENDIF

A treia formă acceptă oricâte ramuri \ELSIF{} este necesar.

Bucle for

Sunt două forme posibile:

\FOR{<condiţie>} <text> \ENDFOR
\FORALL{<condiţie>} <text> \ENDFOR

O buclă "for" tradiţională. Metoda iteraţiei este de obicei descrisă în primul argument, de exemplu:

\FOR{$i = 1$ \TO 10} 
\STATE $i \gets i + 1$
\ENDFOR

Bucle while

\WHILE{<condiţie>} <text> \ENDWHILE

Repetă până la îndeplinirea unei condiţii

\REPEAT <text> \UNTIL{<condiţie>}

Bucle infinite

\LOOP <text> \ENDLOOP

Precondiţie

\REQUIRE <text>

Postcondiţie

\ENSURE <text>

Returnarea de variabile

\RETURN <text>

Tipărirea variabilelor

\PRINT <text>
Este inclusă aici deoarece este utilizată atât de des încât se consideră a fi o operaţie de sine stătătoare.

Comentarii

\COMMENT{<text>}

Notaţi că nu puteţi folosi \COMMENT ca prima declaraţie a oricărei structuri închise, de genul \IF..\ENDIF, \FOR..\ENDFOR, \FORALL..\ENDFORALL, \WHILE..\ENDWHILE şi \begin{algorithmic}..\end{algorithmic}. Se va raporta o eroare de genul "Something's wrong--perhaps a missing \item" (care nu prea are sens). Sunt două soluţii posibile:

  1. Folosiţi \STATE \COMMENT{<text>}.
  2. Utilizaţi argumente opţionale în aceste structuri închise. Spre exemplu, \WHILE[<comentariu-text>]{<condiţie>}. Pentru a folosi comenzi matematice în textul din comentarii, înlocuiţi $..$ cu \ensuremath{..}

Compatibilitatea cu hyperref

Din cauza unei erori de programare, pachetul algorithmic nu este compatibil cu hyperref. O soluţie ar fi pachetul algorithmic-fix. Copiaţi codul găsit pe pagina Web indicată mai devreme într-un fişier numit algorithmic-fix.sty şi includeţi-l cu \usepackage{algorithmic,algorithmic-fix}. Totuşi, dacă acest truc eşuează, încercaţi \usepackage{hyperref} înainte de \usepackage{algorithmic}. În cazul acesta, s-ar putea să nu mai aveţi defel nevoie de algorithmic-fix.sty.

Redenumiri: algoritm în procedură, necesită/asigură (require/ensure) în input/output

\floatname{algorithm}{Procedură}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}

Mediul algorithm

Este deseori util ca algoritmul produs de algorithmic să fie "mutat" în punctul optim al documentului pentru a evita împărţirea lui pe pagini separate. Mediul algorithm are grijă de asta şi de alte câteva lucruri. Includeţi-l adăugând
\usepackage{algorithm} în preambulul documentului. Acest mediu se foloseşte în felul următor:

\begin{algorithm}
 \caption{<titlul algoritmului>}
 \label{<eticheta pentru trimiterile ulterioare din document>}
 \begin{algorithmic}
  <mediul algorithmic>
 \end{algorithmic}
\end{algorithm}

Numerotarea algoritmilor

Sistemul implicit de numerotare pentru pachetul algorithm constă în numărarea secvenţială a algoritmilor. Acest lucru în general nu este de dorit, mai ales în documente mari, în care numerotarea după capitole este mai potrivită. Numărarea algoritmilor poate fi influenţată de furnizarea numelui părţii din document în care se recomandă a se face numerotarea. Valorile legale pentru această opţiune sunt: parte, capitol, secţiune, subsecţiune, subsubsecţiune sau nimic (implicit). Spre exemplu:

\usepackage[chapter]{algorithm}

Lista algoritmilor

Când folosiţi figuri sau tabele, puteţi adăuga o listă a acestora aproape de Cuprins; pachetul algorithm oferă o comandă similară. Daţi comanda

\listofalgorithms

oriunde în document, iar LaTeX va tipări o listă a mediilor "algorithm" din document, cu pagina şi titlul corespunzătoare.

Un exemplu din manual

Acesta este un exemplu luat din manual (manualul oficial, p.7)

\begin{algorithm}                      % începutul mediului 'algorithm'
\caption{Calculaţi $y = x^n$}          % titlul algoritmului
\label{alg1}                           % etichetă pentru comenzile \ref{} ulterioare
\begin{algorithmic}                    % începutul mediului 'algorithmic'
\REQUIRE $n \geq 0 \vee x \neq 0$
\ENSURE $y = x^n$
\STATE $y \Leftarrow 1$
\IF{$n < 0$}
\STATE $X \Leftarrow 1 / x$
\STATE $N \Leftarrow -n$
\ELSE
\STATE $X \Leftarrow x$
\STATE $N \Leftarrow n$
\ENDIF
\WHILE{$N \neq 0$}
\IF{$N$ is even}
\STATE $X \Leftarrow X \times X$
\STATE $N \Leftarrow N / 2$
\ELSE[$N$ is odd]
\STATE $y \Leftarrow y \times X$
\STATE $N \Leftarrow N - 1$
\ENDIF
\ENDWHILE
\end{algorithmic}
\end{algorithm}


Vezi mai multe informaţii despre toate comenzile posibile la pagina proiectului
http://developer.berlios.de/docman/?group_id=3442
Manualul oficial este situat pe pagina
http://developer.berlios.de/docman/display_doc.php?docid=800&group_id=3442


Formatarea cu pachetul program

Pachetul program oferă macrouri pentru tipărirea algoritmilor. Fiecare linie este setată în modul matematic, astfel că întreaga indentare şi spaţiere se face automat. Notaţia |nume_variabilă| poate fi utilizată în textul normal, expresii matematice sau programe pentru a indica un nume de variabilă. Scrieţi \origbar pentru o obţine un simbol normal | într-un program. Comenzile \A, \B, \P, \Q, \R, \S, \T şi \Z scriu litera aldină corespunzătoare, următorul obiect fiind scris la indice (spre exemplu, \S1 devine {\bf S$_1$} etc). Derivatele merg normal, de exemplu \S''.

Iată un exemplu de redactare a unui algoritm de bază cu ajutorul pachetului program (amintiţi-vă să adăugaţi declaraţia \usepackage{program} în preambulul documentului):

\begin{program}
\mbox{O procedură rapidă de ridicare la putere:}
\BEGIN %
  \FOR i:=1 \TO 10 \STEP 1 \DO
     |expt|(2,i); \\ |newline|() \OD %
\rcomment{Acest text va fi aliniat la dreapta}
\WHERE
\PROC |expt|(x,n) \BODY
          z:=1;
          \DO \IF n=0 \THEN \EXIT \FI;
             \DO \IF |odd|(n) \THEN \EXIT \FI;
\COMMENT{Acesta este un comentariu};
                n:=n/2; x:=x*x \OD;
             \{ n>0 \};
             n:=n-1; z:=z*x \OD;
          |print|(z) \ENDPROC
\END
\end{program}

Latex pachetul program.png

Comenzile \( şi \) sunt redefinite pentru a scrie un algoritm într-o minipagină, astfel ca un algoritm să poată apare sub forma unei singure căsuţe într-o formulă. Spre exemplu, pentru a declara că un sistem particular de acţiune este echivalent unei bucle WHILE, puteţi scrie:

\[
\( \ACTIONS A:
        A \EQ \IF \B{} \THEN \S{}; \CALL A
                       \ELSE \CALL Z \FI \QE
   \ENDACTIONS \)
\EQT
\( \WHILE \B{} \DO \S{} \OD \)
\]

Structurile condiţionale şi buclele lui Dijkstra:

\begin{program}
\IF x = 1 \AR y:=y+1
\BAR x = 2 \AR y:=y^2
\utdots
\BAR x = n \AR y:=\displaystyle\sum_{i=1}^n y_i \FI
 
\DO 2 \origbar x \AND x>0 \AR x:= x/2
\BAR \NOT 2 \origbar x    \AR x:= \modbar{x+3} \OD
\end{program}

Bucle cu ieşiri multiple:

\begin{program} 
\DO \DO \IF \B1 \THEN \EXIT \FI;
        \S1;
        \IF \B2 \THEN \EXIT(2) \FI \OD;
    \IF \B1 \THEN \EXIT \FI \OD
\end{program}

Un exemplu de inginerie inversă (reverse engineering), generarea codului sursă din executabil.

Iată programul iniţial:

\begin{program} 
 \VAR \seq{m := 0, p := 0, |last| := `` ''}; 
 \ACTIONS |prog|: 
|prog| \ACTIONEQ %
    \seq{|line| := `` '', m := 0, i := 1};
    \CALL |inhere| \ENDACTION
l \ACTIONEQ %
    i := i+1; 
    \IF (i=(n+1)) \THEN \CALL |alldone| \FI ; 
    m := 1; 
    \IF |item|[i] \neq |last|
        \THEN |write|(|line|); |line| := `` ''; m := 0;
              \CALL |inhere| \FI ; 
    \CALL |more| \ENDACTION
|inhere| \ACTIONEQ %
    p := |number|[i]; |line| := |item|[i];
    |line| := |line| \concat `` '' \concat p;
    \CALL |more| \ENDACTION
|more| \ACTIONEQ %
    \IF (m=1) \THEN p := |number|[i];
    |line| := |line| \concat ``, '' \concat p \FI ; 
    |last| := |item|[i]; 
    \CALL l  \ENDACTION  
|alldone| \ACTIONEQ |write|(|line|); \CALL Z \ENDACTION \ENDACTIONS \END 
\end{program}

Iar aici este versiunea transformată şi corectată:

\begin{program} 
\seq{|line| := `` '', i := 1};
\WHILE i \neq n+1 \DO 
  |line| := |item|[i] \concat `` '' \concat |number|[i]; 
  i := i+1; 
  \WHILE i \neq n+1 \AND |item|[i] = |item|[i-1] \DO 
    |line| := |line| \concat ``, '' \concat |number|[i]);
    i := i+1 \OD ; 
  |write|(|line|) \OD 
\end{program}

Pachetul oferă o macrocomandă pentru afişarea unei mulţimi, de genul: \set{x \in N | x > 0}.

Liniile pot fi numerotate prin setarea \NumberProgramstrue şi dezactivarea numerotării cu \NumberProgramsfalse

Formatarea codului sursă cu pachetul listings

(Vezi pagina de referinţă a pachetului listings pentru mai multe informaţii.)

Puteţi găsi un manual de referinţă complet la adresa http://tug.ctan.org/tex-archive/macros/latex/contrib/listings/listings.pdf

Iată un exemplu de bază pentru cod din limbajul de programare Pascal:

\documentclass{article}
\usepackage{listings}    % includeţi pachetul listings
\begin{document}
\lstset{language=Pascal} % setaţi limbajul (puteţi seta limbajul pentru fiecare bloc de cod)
% începutul unui bloc de cod:
\begin{lstlisting}[frame=single]
for i:=maxint to 0 do
begin
{ do nothing }
end;
Write(Case sensitive or insensitive);
Write(Pascal keywords: for, while, if, else, and, etc.);
\end{lstlisting}
 
\end{document}

Latex cod Pascal.png

Referinţe

Scrisori

Câteodată lucrurile simple dau mai multă bătaie de cap. Totuşi, nu trebuie neapărat să fie aşa datorită existenţei unor formate evoluate, user-friendly. Din fericire, LaTeX facilitează redactarea scrisorilor, cu un efort minim.

Clasa letter

Pentru a întocmi scrisori, folosiţi clasa standard de documente letter.

Puteţi pune mai multe scrisori într-un fişier LaTeX — începeţi fiecare scrisoare cu \begin{letter}{recipient} şi încheiaţi-o cu \end{letter}. Puteţi lăsa recipientul liber. Fiecare scrisoare constă din patru părţi:

  1. partea introductivă (ca \opening{Stimate Domnule, sau Stimată Doamnă,} sau \opening{Dragă Kate,}
  2. corpul principal — scris ca de obicei în LaTeX
  3. încheierea (de exemplu \closing{Cu stimă,}
    LaTeX va lăsa ceva spaţiu după încheiere pentru semnătura scrisă de mână; apoi va pune prenumele şi numele de familie, dacă le-aţi declarat.
  4. elemente adiţionale: post scriptum, cine va primi o copie a scrisorii (cccarbon copy) şi o listă a documentelor asociate (enclosures).

Dacă vreţi să vă apară în scrisoare numele, adresa şi numărul de telefon, trebuie să le declaraţi înainte sub formă de semnătură, adresă şi telefon.

Scrisoarea rezultată va arăta în felul următor:

O scrisoare

Iată codul pentru acest exemplu:

\documentclass[a4paper,12pt]{letter}
 
\usepackage[utf8x]{inputenc} % pentru caractere Unicode
 
\signature{Joe Bloggs}
\address{21 Bridge Street \\ Smallville \\ Dunwich DU3 4WE}
\begin{document}
 
\begin{letter}{Director \\ Doe \& Co \\ 35 Anthony Road
\\ Newport \\ Ipswich IP3 5RT}
\opening{Stimate Domnule sau Doamnă,}
 
Vă scriu în legătură cu proiectul Wikipedia (http://www.wikipedia.org/), un efort
de a construi o enciclopedie multilingvă completă într-o manieră în întregime
deschisă, pentru a cere permisiunea de a vă utiliza materialul cu copyright.
 
% Comanda \ldots produce puncte într-o manieră ce nu va afecta
% redactarea documentului.
\ldots 
 
Acestea fiind spuse, permiteţi-mi să vă reiterez că materialul va fi folosit
în scopul nobil de a oferi o colecţie gratuită de cunoştinţe pentru toată lumea;
evident, doar dacă sunteţi de acord. Dacă aşa stau lucrurile, puteţi vă rog să
completaţi formularul ataşat şi să mi-l trimiteţi înapoi? Vom aprecia foarte mult
lucrul acesta.
 
Vă mulţumesc pentru timpul şi consideraţia acordate.
 
Aştept cu nerăbdare răspunsul dvs.
 
\closing{Cu stimă,}
\ps{P.S. Puteţi găsi textul întreg al licenţei GFDL la adresa
 
http://www.gnu.org/copyleft/fdl.html.}
\encl{Formular de acordare a permisiunii pentru copyright}
 
\end{letter}
 
\end{document}

Plicuri

Iată un plic relativ simplu, ce foloseşte pachetul geometry întrucât simplifică în mare măsură sarcina de rearanjare a elementelor de pe pagină (şi a paginii înseşi).

% envelope.tex
\documentclass[a4paper,12pt]{letter}
 
\usepackage[utf8x]{inputenc} % pentru caractere Unicode
\usepackage[left=1in,top=0.15in,papersize={4.125in,9.5in},landscape,twoside=false]{geometry}
 
\setlength\parskip{0pt}
\pagestyle{empty}
 
\begin{document}
 
DIN PARTEA-NUME
 
DIN PARTEA-ADRESĂ
 
DIN PARTEA-ORAŞ,ŢARĂ
 
\vspace{1.0in}\large
\setlength\parindent{3.6in}
 
CĂTRE-NUME
 
CĂTRE-ADRESĂ
 
CĂTRE-ORAŞ,ŢARĂ
 
\end{document}
Un plic redactat în modul landscape.

Acest format va avea grijă de spaţiere, însă nu de modul efectiv în care va fi tipărit documentul, care depinde în cele din urmă de programul folosit la tipărire şi de imprimantă. La urma urmei, imprimante diferite au mecanisme diferite de stocare şi prelucrare a datelor pentru plicuri sau coperţi. Puteţi folosi următoarele comenzi pentru a tipări un document:

$ pdflatex plic.tex
$ pdf2ps plic.pdf
$ lpr -o landscape plic.ps

Sau puteţi folosi direct comanda latex pentru output DVI.

Pe prima linie, comanda dvips converteşte fişierul .dvi produs de latex într-un .ps (PostScript). Pe a doua linie, fişierul PostScript este trimis imprimantei.

$ latex plic.tex && dvips -t unknown -T 9.5in,4.125in plic.dvi
$ lpr -o landscape plic.ps

După cum veţi constata, comanda pdflatex creează un fişier cu dimensiunile corecte ale paginii, spre deosebire de dvips, în ciuda celor spuse de manualul pachetului geometry. Totuşi, acest lucru nu va merge decât dacă setările imprimantei pe care o folosiţi sunt ajustate la stilul corect al paginii. Aceste setări depind de filtrul imprimantei şi de prezenţa driverelor CUPS, dacă ţineţi morţiş să listaţi cu comanda lpr.

Plicuri cu fereastră

O alternativă la afişarea separată a adreselor de pe plicuri constă în utilizarea clasei letter din pachetul KOMA. Aceasta oferă suport pentru trăsături adiţionale, de genul paginilor îndoite şi plasarea corectă a adresei în cazul plicurilor cu fereastră. Cu clasa de documente scrlttr2 din pachetul KOMA, codul scrisorii de mai devreme devine:

% koma_plic.tex
\documentclass[a4paper,12pt]{scrlttr2}
\usepackage{lmodern}
\usepackage[utf8x]{inputenc} % pentru caractere Unicode
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{url}
 
\setkomavar{fromname}{Joe Bloggs}
\setkomavar{fromaddress}{21 Bridge Street \\ Smallville \\ Dunwich DU3 4WE}
\setkomavar{fromphone}{0123 45679}
 
\begin{document}
 
\begin{letter}{Director \\ Doe \& Co \\ 35 Anthony Road
\\ Newport \\ Ipswich IP3 5RT}
 
\KOMAoptions{fromphone=true,fromfax=false}
\setkomavar{subject}{Wikipedia}
\setkomavar{customer}{2342}
\opening{Stimate Domnule sau Doamnă,}
 
Vă scriu în legătură cu proiectul Wikipedia (\url{http://www.wikipedia.org/}),
un efort de a construi o enciclopedie multilingvă completă într-o manieră
în întregime deschisă, pentru a cere permisiunea de a vă utiliza materialul
cu copyright.
 
% Comanda \ldots produce puncte într-o manieră ce nu va afecta
% redactarea documentului.
\ldots 
 
Acestea fiind spuse, permiteţi-mi să vă reiterez că materialul va fi folosit
în scopul nobil de a oferi o colecţie gratuită de cunoştinţe pentru toată lumea;
evident, doar dacă sunteţi de acord. Dacă aşa stau lucrurile, puteţi vă rog să
completaţi formularul ataşat şi să mi-l trimiteţi înapoi? Vom aprecia foarte mult
lucrul acesta.
 
Vă mulţumesc pentru timpul şi consideraţia acordate.
 
Aştept cu nerăbdare răspunsul dvs.
 
\closing{Cu stimă,}
\ps{P.S. Puteţi găsi textul întreg al licenţei GFDL la adresa
 
\url{http://www.gnu.org/copyleft/fdl.html}.}
\encl{Formular de acordare a permisiunii pentru copyright}
 
\end{letter}
 
\end{document}

Rezultatul este generat prin intermediul comenzii

$ pdflatex koma_plic
O scrisoare cu pagini pliate pentru plicuri standardizate cu fereastră.

Plierea paginilor fişierului koma_plic.pdf potrivit liniilor de pliere va face ca rezultatul standardizat să poată fi cuprins în formatele DIN C6/5, DL, C4, C5 sau C6.

Pe lângă valorile implicite, pachetul KOMA include definiţii de formate predefinite pentru diverse standarde de scrisori suedeze şi japoneze.

Referinţă: comenzile letter.cls

Comandă Descriere
\name{}
\signature{}
\address{}
\location{}
\telephone{}
\makelabels
\stopbreaks
\startbreaks
\opening{}
\closing{}
\cc{} Începe o căsuţă parbox introdusă cu comanda \ccname:
\encl{} Începe o căsuţă parbox introdusă cu comanda \enclname:
\ps Începe un nou paragraf, în mod normal la încheierea scrisorii
\stopletter (empty)
\returnaddress (empty)
\startlabels
\mlabel{}{}
\descriptionlabel{}
\ccname "cc"
\enclname "encl"
\pagename "Pagină"
\headtoname "Către"
\today Dată în format long


Mediu Descriere
letter{} Vezi articolul principal
description
verse
quotation
quote

Surse

Importarea de imagini

Strict vorbind, LaTeX nu poate gestiona imaginile direct: pentru a introduce elemente grafice în documente, LaTeX creează o căsuţă cu aceeaşi dimensiune ca imaginea pe care vreţi s-o includeţi şi încorporează imaginea, fără a face alte procesări. Asta înseamnă că va trebui să aveţi grijă ca imaginile să fie în formatul corespunzător pentru a putea fi incluse. Asta nu e o problemă prea mare întrucât LaTeX suportă cele mai cunoscute formate de imagini.

Pachetul graphicx

După cum am spus mai devreme, LaTeX nu poate gestiona imaginile direct, aşadar vom folosi facilităţi adiţionale: trebuie să încărcăm pachetul graphicx în preambulul documentului:

\usepackage{graphicx}

Acest pachet acceptă ca argument driverul extern de utilizat pentru gestionarea imaginilor; totuşi, ultima versiune a acestui pachet se ocupă de toate aspectele, schimbând driverul în funcţie de compilatorul folosit, astfel că nu trebuie să vă ocupaţi personal de aceste lucruri. Şi totuşi, presupunând că vreţi să înţelegeţi mai bine cum merge, iată opţiunile posibile pe care le puteţi pasa pachetului:

  • dvips (implicit dacă compilaţi cu comanda latex), dacă faceţi compilarea cu latex pentru a obţine un DVI şi vreţi să vizualizaţi documentul cu un program pentru DVI sau PS.
  • dvipdfm, dacă compilaţi cu latex pentru a obţine un DVI, pe care intenţionaţi apoi să-l convertiţi într-un PDF cu comanda dvipdfm, putând vizualiza documentul cu orice program pentru PDF.
  • pdftex (implicit dacă realizaţi compilarea cu pdflatex), dacă compilaţi cu pdftex pentru a obţine un PDF pe care îl puteţi vedea cu un program de vizualizare pentru PDF-uri.

Din nou, nu trebuie să pasaţi nicio opţiune pachetului, întrucât setările implicite sunt destul de bune în cele mai multe cazuri.

În multe privinţe, importarea imaginilor în document folosind sistemul LaTeX este destul de simplă, îndată ce aveţi imaginile în formatul corespunzător! De aceea, mă tem că pentru cei mai mulţi utilizatori, efortul cel mai mare va fi convertirea fişierelor grafice. În continuare vom vedea ce formate pot avea imaginile pe care le puteţi include, iar apoi vom vedea cum puteţi face asta.

Opţiunile documentului

Pachetele graphics şi graphicx recunosc opţiunile "draft" şi "final" date în comanda \documentclass[...]{...} la începutul fişierului. Opţiunea "draft" va împiedica includerea imaginii în fişierul de ieşire şi va înlocui conţinutul cu numele fişierului ce conţine imaginea. Opţiunea "final" va face ca imaginea să fie inclusă în fişierul de ieşire. Valoarea implicită este "draft".

Formate suportate de imagini

După cum am explicat mai devreme, formatele de imagini pe care le vom putea folosi depind de driverul utilizat de graphicx, însă, de vreme ce driverul este ales în mod automat în funcţie de compilator, formatele permise de imagini vor depinde de compilatorul folosit.

Compilarea cu latex

Singurul format pe care îl puteţi include când compilaţi cu comanda latex este Encapsulated PostScript (EPS).

Formatul EPS a fost definit de firma Adobe Systems pentru a facilita importarea de către aplicaţii a elementelor grafice bazate pe formatul PostScript în documente. Deoarece un fişier EPS declară dimensiunea imaginii, facilitează sistemelor de genul LaTeX aranjarea textului şi graficii. EPS este un format vectorial — asta înseamnă că poate avea o calitate foarte mare dacă este creat în mod corespunzător cu programe de grafică vectorială. Putem stoca de asemenea imagini bit-map în format EPS, însă vor necesita foarte mult spaţiu pe disc.

Multe pachete cu programe grafice au abilitatea de a salva imagini în format EPS (extensia e în mod normal .eps). Iată câteva exemple de programe ce pot genera fişiere EPS:

  • Tipărirea sub forma unui fişier EPS:
    • În Windows, PDFCreator este un program open source ce poate crea atât fişiere PDF, cât şi EPS. Instalează o imprimantă virtuală care poate fi accesată din alte programe ce au o intrare "print..." în meniu (practic orice program).
  • Crearea şi convertirea elementelor de grafică vectorială:
    • Programele comerciale de grafică vectorială, de genul Adobe Illustrator, CorelDRAW şi FreeHand pot citi şi scrie fişiere EPS. Totuşi, aceste produse sunt limitate la platformele Windows şi Mac OS.
    • Inkscape poate salva fişiere în formatul vectorial EPS şi rulează pe platforme multiple. Inkscape nu poate deschide fişiere EPS direct; totuşi, cu programul utilitar epstopdf puteţi converti EPS în PDF, iar Inkscape poate importa PDF-uri. Începând cu versiunea 0.48, Inkscape are o opţiune specială de output PDF+LaTeX (şi EPS/PS). Vezi site-ul Inkscape.
    • Dia este un program utilitar cross platform pentru diagrame, ce poate exporta EPS-uri.
  • Crearea şi convertirea elementelor grafice bazate doar pe raster în EPS:
    • GIMP are o interfaţă grafică şi este multi-platform.
    • Pentru linia de comandă:
    • Aceste trei programe operează cam la fel, şi pot face conversii între cele mai multe formate grafice. Sam2p este totuşi cel mai recent dintre ele şi pare să ofere cea mai bună calitate, dar şi să dea cele mai mici fişiere de ieşire.
      • imgtops. Un mic program utilitar pentru grafică.
  • Crearea de reprezentări grafice vectoriale de calitate pentru publicaţii:
    • Gnuplot, ce produce grafică ştiinţifică din 1986.
    • R, figuri statistice şi ştiinţifice.
    • Generic Mapping Tools (GMT), care generează hărţi şi o serie de reprezentări grafice foarte personalizabile.
    • Gnumeric, ce generează foi de calcul, poate exporta SVG, EPS, PDF.
    • matplotlib, bibliotecă pentru reprezentări grafice, scrisă în Python, ce poate exporta în formate PDF şi EPS.

Trebuie să apelaţi la câteva trucuri pentru a putea importa alte formate decât EPS în documentele DVI, însă acestea sunt foarte complicate. Pe de altă parte, convertirea oricărei imagini în format EPS este foarte simplă, astfel că nu are rost să le luăm în considerare aici.

Compilarea cu pdflatex

Dacă compilaţi cu pdflatex pentru a produce un PDF, aveţi mai multe opţiuni. Nu puteţi insera fişiere EPS. Puteţi insera:

  • JPG, folosit foarte mult pe Internet, camere digitale, etc. Reprezintă cea are bună alegere dacă vreţi să inseraţi fotografii.
  • PNG, un format foarte comun (chiar dacă nu în aşa măsură ca JPG); este un format fără pierderi la dezarhivare (lossless) şi reprezintă cea mai bună alegere pentru diagrame (dacă nu aţi reuşit să generaţi o versiune vectorială) şi instantanee ale ecranului ('screenshots').
  • PDF, foarte mult folosit pentru documente, însă poate fi utilizat şi pentru a stoca imagini. Suportă atât imagini vectoriale, cât şi imagini bit-map, însă nu se recomandă pentru ultimele, de vreme ce JPG sau PNG oferă acelaşi rezultat folosind mai puţin spaţiu pe disc.
  • Formate vectoriale, ce pot fi folosite cu Inkscape. Există instrucţiuni legate de cum puteţi salva imaginile vectoriale în format PDF înţeles de LaTeX şi puteţi face sistemul LaTeX să gestioneze automat stilurile şi dimensiunile textului din imagini.

JPG şi PNG sunt suportate de orice program de procesare de imagini, astfel că puteţi să folosiţi formatul preferat. Dacă vreţi să creaţi PDF-uri vectoriale de calitate înaltă pe care să le încorporaţi în documentul final PDF, puteţi utiliza programul Inkscape: acesta oferă suport pentru numeroase formate vectoriale, astfel că poate face conversii dintr-un format în altul. De asemenea, puteţi crea imaginile direct cu Inkscape. Dacă vreţi să realizaţi reprezentări grafice matematice, Gnuplot poate salva datele în orice format.

Notaţi că fişierele EPS nu pot fi folosite cu comanda pdflatex, totuşi pot fi convertite în format PDF cu ajutorul programului utilitar epstopdf, inclus în majoritatea distribuţiilor LaTeX. Acesta poate fi chemată automat de LaTeX folosind pachetul epstopdf. În Windows, puteţi converti mai multe fişiere scriind următoarea linie într-un fişier batch (un fişier text cu extensia .BAT) situat în acelaşi director cu imaginile:

for %%f in (*.eps) do epstopdf %%f

şi care poate fi rulat din linia de comandă. Dacă epstopdf produce pagini întregi, în care sunt incluse undeva imaginile, utilizaţi

$ epstopdf --gsopt=-dEPSCrop foo.eps

sau încercaţi programul utilitar ps2pdf

$ ps2pdf -dEPSCrop foo.eps

pentru a obţine documentul final PDF.

Imaginile pot fi salvate în diverse formate în scopuri diferite. Spre exemplu, un director poate conţine un fişier "diagram.pdf" pentru tipărirea la rezoluţie înaltă, în timp ce "diagram.png" poate fi folosit pentru previzualizarea pe monitor. Puteţi specifica imaginea de utilizat de programul pdflatex prin intermediul următoarei comenzi plasate în preambulul documentului:

\DeclareGraphicsExtensions{.pdf,.png,.jpg}

care specifică fişierele ce vor fi incluse în document, dacă există fişiere cu acelaşi nume de bază, însă cu extensii diferite.

Includerea imaginilor

Acum că am văzut ce formate putem include şi cum putem gestiona aceste formate, este timpul să învăţăm cum le putem include în document. După ce aţi încărcat pachetul graphicx în preambul, puteţi include imagini cu comanda \includegraphics, a cărei sintaxă se prezintă după cum urmează:

\includegraphics[atr1=val1, atr2=val2, ..., atr_n=val_n]{nume_imagine}

După cum sper că ştiţi deja, argumentele din paranteze drepte sunt opţionale, în vreme ce argumentele din acolade sunt obligatorii. Argumentul din acolade este numele imaginii. Scrieţi fişierul cu imaginea fără extensie. În felul acesta, compilatorul LaTeX va căuta formatele suportate de imagini din acel director şi-l va alege pe cel mai bun (EPS dacă outputul este DVI; JPEG, PNG sau PDF dacă outputul este PDF). Varietatea atributelor posibile ce pot fi setate este destul de mare, astfel că le descriem în continuare numai pe cele mai cunoscute:

width=xx Specifică lăţimea dorită a imaginii importate la xx. Notă: raportul dintre lăţime şi înălţime se va menţine numai dacă specificaţi doar una dintre dimensiuni.
height=xx Specifică înălţimea dorită a imaginii importate la xx.
keepaspectratio Acesta poate fi setat la valorile adevărat (true) sau fals (false). La valoarea adevărat, va redimensiona imaginea după lăţime şi înălţime, însă nu va distorsiona imaginea, astfel că nu se vor depăşi nici lăţimea, nici înălţimea.
scale=xx Redimensionează imaginea cu factorul de scară dorit. De exemplu, 0,5 va reduce la jumătate dimensiunile imaginii, în vreme ce o valoare de 2 le va dubla.
angle=xx Această opţiune poate roti imaginea cu xx grade (în sens trigonometric, invers acelor de ceasornic).
trim=l b r t Această opţiune va decupa imaginea importată după l la stânga (left), b din partea inferioară (bottom), r de la dreapta (right) şi t din partea superioară (top), unde l, b, r şi t sunt lungimi.
clip Pentru ca opţiunea trim să meargă, trebuie să setaţi clip=true.
page=x Dacă fişierul ce conţine imaginea este un PDF cu mai multe pagini, acest parametru vă permite să utilizaţi o altă pagină decât prima.

Pentru a folosi mai mult decât o opţiune la un moment dat, separaţi opţiunile prin virgule. Ordinea opţiunilor contează. Spre exemplu, mai întâi ar trebui să rotiţi imaginea (cu un unghi), iar apoi să-i specificaţi lăţimea.

Imaginile incluse vor fi inserate doar acolo unde scrieţi codul, iar compilatorul le va trata ca pe nişte "căsuţe mari". După cum vom vedea într-un capitol ulterior, asta va genera un output de slabă calitate, astfel că ar fi mai bine să plasaţi imaginile în obiectele flotante.

Exemple

OK, a venit timpul să vedeţi graphicx în acţiune. Iată câteva exemple:

\includegraphics{chick}

Această comandă importă pur şi simplu imaginea, fără altă procesare suplimentară. Totuşi, este foarte mare (aşadar n-o voi afişa aici!). Deci, să-i reducem dimensiunile:

\includegraphics[scale=0.5]{chick}
Chick1.png

Dimensiunile imaginii au fost reduse la jumătate. Dacă vreţi să fiţi mai specifici şi să daţi lungimi efective dimensiunilor imaginii, puteţi proceda în felul următor:

\includegraphics[width=2.5cm]{chick}
Chick2.png

Puteţi specifica scara şi în raport cu lăţimea liniei din mediul local (\linewidth), cu lăţimea textului de pe o pagină (\textwidth) sau cu înălţimea textului de pe pagină (\textheight) (iamginile nu sunt afişate):

\includegraphics[width=0.5\linewidth]{chick}
 
\includegraphics[width=0.75\textwidth]{chick}
 
\includegraphics[height=0.75\textheight]{chick}

Pentru a face o rotaţie (am redus de asemenea dimensiunile imaginii):

\includegraphics[scale=0.5, angle=180]{chick}
Chick3.png

Şi în sfârşit, iată un exemplu de decupare a imaginii dacă vreţi să evidenţiaţi o anumită zonă a acesteia:

% ordinea parametrilor opţiunii de decupare (''trim''): stânga jos dreapta sus
\includegraphics[trim = 10mm 80mm 20mm 5mm, clip, width=3cm]{chick}
Chick4.png

Observaţi prezenţa opţiunii clip, fără de care nu se poate efectua operaţia de decupare.

După cum probabil aţi observat, denumirea fişierului ce conţine imaginea este dată întotdeauna fără extensie: LaTeX va avea grijă să obţină versiunea corespunzătoare din directorul curent. Consideraţi situaţia următoare: aţi adăugat câteva imagini în format JPG documentului şi l-aţi compilat cu succes pentru a obţine un format de ieşire PDF. Acum îl compilaţi pentru a obţine un DVI, rulaţi comanda latex şi obţineţi o mulţime de erori... întrucât aţi uitat să includeţi în director versiunile EPS ale imaginilor pe care vreţi să le inseraţi. La începutul acestei cărţi, am spus că aceeaşi sursă LaTeX poate fi compilată atât în format DVI, cât şi PDF fără nicio modificare. Acest lucru este adevărat, atâta vreme cât nu utilizaţi anumite pachete, iar graphicx este unul dintre acestea. În orice caz, încă puteţi folosi ambele compilatoare şi cu documente ce includ imagini, atâta timp cât vă amintiţi să furnizaţi imaginile în ambele formate (EPS şi unul dintre JPG, PNG şi PDF).

Margini

Puteţi crea margini în jurul unei imagini în LaTeX cu ajutorul comenzii fbox:

\setlength\fboxsep{0pt}
\setlength\fboxrule{0.5pt}
\fbox{\includegraphics{chick}}

Puteţi controla spaţiul liber dintre margini şi imagine cu comanda \setlength\fboxsep{0pt}, în cazul de faţă valoarea 0pt înseamnă lipsa unui asemenea spaţiu liber, astfel încât marginile vor fi plasate strâns în jurul imaginii. Puteţi controla grosimea marginilor cu comanda \setlength\fboxrule{0.5pt}.

Stocarea imaginilor

Există o cale să transmiteţi sistemului LaTeX unde să caute după imagini: spre exemplu, poate fi util să stocaţi imaginile într-un singur loc pentru a putea fi utilizate în mai multe documente. Răspunsul îl constituie comanda \graphicspath, care are un argument ce dă calea unui director adiţional în care vreţi ca sistemul LaTeX să caute imagini când un fişier foloseşte comanda \includegraphics. Iată câteva exemple (/ de la sfârşit este necesar):

\graphicspath{{c:\imagini~1\camera}}
\graphicspath{{c:/imagini~1/camera/}} *
\graphicspath{{/var/lib/imagini/}}
\graphicspath{{./imagini/}}
\graphicspath{{dir_imagini/}{alt_dir/}{al_treilea_folder/}}
\graphicspath{{imagini//}}

* merge în Windows XP.

Vă rugăm consultaţi http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.pdf. Ultima comandă caută recursiv fişierele datorită semnului dublu slash "//". În exemplul prezentat, aveţi un director numit "imagini" în acelaşi director cu fişierul .tex principal (adresă relativă). În maniera aceasta, puteţi crea un arbore de directoare în cadrul acestuia ce ar putea de exemplu să faciliteze sortarea/găsirea/editarea unui număr mare de fişiere ce conţin imagini. Reţineţi că această abordare poate acapara foarte multe resurse.

După cum aţi observat, în primul exemplu am utilizat o formă "sigură" (MS-DOS) a unui folder de imagini din Windows, întrucât, după cum ştiţi, e o idee proastă să folosiţi nume de directoare ce conţin spaţii. Utilizând căi absolute, \graphicspath face fişierele mai puţin portabile, în timp ce dacă folosiţi căi relative (ca în ultimul exemplu), nu ar trebui să aveţi vreo problemă de portabilitate, însă reţineţi să nu utilizaţi spaţii în denumirile de fişiere. Ca o alternativă, dacă utilizaţi comanda pdflatex pentru compilare, puteţi folosi pachetul grffile, care vă va permite să utilizaţi spaţii în denumirile fişierelor.

Imagini ca figuri

Există multe scenarii în care aţi putea dori să însoţiţi o imagine cu un titlu sau o legendă şi poate cu nişte referinţe. Acest lucru se poate face cu ajutorul mediului figure. Codul următor prezintă minimul necesar pentru a utiliza o imagine ca pe o figură.

\begin{figure}[htb]
\includegraphics{imagine.png}
\end{figure}

Codul de mai sus este relativ simplu şi nu oferă multă funcţionalitate. Codul ce urmează prezintă o utilizare mai extinsă a mediului figure, care este aproape universal utilizat, oferind un titlu sau o legendă şi o etichetă, centrând imaginea şi reducând dimensiunile la 80% din lăţimea textului.

\begin{figure}[htb]
\begin{center}
\leavevmode
\includegraphics[width=0.8\textwidth]{imagine.png}
\end{center}
\caption{O imagine incredibilă}
\label{fig:imagine_incredibilă}
\end{figure}

Mediul figure nu se foloseşte exclusiv pentru imagini. Puteţi găsi mai multe informaţii despre acest mediu şi utilizarea sa în capitolul Elemente flotante, figuri şi note.

Text în jurul imaginilor

Text poate de asemenea să fie pus în jurul imaginilor. (Acest lucru este deosebit de util dacă includeţi imagini înalte.)

% secţiune de import
\usepackage{wrapfig}
 
% secţiune de conţinut
\begin{wrapfigure}{r}{8cm} % "l" pentru stânga (''left'') sau
% "r" pentru dreapta (''right'') paginii, 8cm este lăţimea figurii
\centering
\includegraphics[height=80mm]{imagine.jpg}
\caption{Titlul imaginii}
\label{img}
\end{wrapfigure}

Includerea de pagini întregi din PDF-uri

Există un pachet special pentru asta: pdfpages. Acesta permite inserarea de pagini întregi aşa cum sunt şi a mai multor pagini pe o pagină din documentul de ieşire (de exemplu, 2x3). Vezi mai multe informaţii în această documentaţie.

Crearea de elemente grafice vectoriale

TikZ/PGF

Mai multe informaţii introductive despre TikZ puteţi găsi în capitolul Crearea de imagini.

Puteţi realiza direct imagini cu comenzi TeX, folosind pachetul tikz: http://ftp.dante.de/tex-archive/help/Catalogue/entries/pgf.html Acesta include foarte multă documentaţie şi numeroase exemple.

% Necesită includerea \usepackage{tikz} în preambul
\begin{figure}
  \centering
  \begin{tikzpicture}
    \draw[thick,rounded corners=8pt] 
(0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0) -- (0,2) -- (2,2) -- (0,0) -- (2,0);
  \end{tikzpicture}
  \caption{Titlul figurii}
  \label{fig:test}
\end{figure}

Puteţi găsi o colecţie amplă de exemple la adresa: http://www.texample.net/tikz/

Puteţi găsi pachete bazate pe TikZ (de exemplu pentru trasarea circuitelor electrice) la această adresă: http://ftp.dante.de/tex-archive/help/Catalogue/bytopic.html#pgftikzsection

Xfig

Puteţi realiza grafică vectorială cu ajutorul programului Xfig (vezi capitolul Instalare), care poate fi exportată în formate potrivite pentru LaTeX. În Xfig, îndată ce aţi salvat imaginea sub forma unui fişier test.fig, trebuie să-l exportaţi cu ajutorul meniului File > Export din fereastra principală a Xfig, iar apoi să selectaţi "Combined PS/Latex (both parts)" din lista de limbaje. Dacă nu schimbaţi alte setări, în acelaşi director cu test.fig vor fi create două alte fişiere, şi anume: test.pstex_t şi test.pstex. Puteţi plasa atunci figura într-un document LaTeX:

\begin{figure}
  \centering
  \input{./xfig/test.pstex_t}
  \caption{Titlul figurii}
  \label{fig:test}
\end{figure}

ipe

Editorul extensibil de imagini Ipe este un program gratuit pentru grafică vectorială ce creează figuri în formate PDF şi EPS. Spre deosebire de Xfig, Ipe reprezintă fonturile LaTeX la dimensiunea lor corectă pe ecran, ceea ce facilitează plasarea de etichete textuale la locul potrivit. Ipe are de asemenea numeroase moduri de apucare (snapping) — spre exemplu, apucare de puncte, linii sau intersecţii), folosite pentru construcţii geometrice.

Inkscape

Încă un program pentru crearea de grafică vectorială, disponibil la adresa http://www.inkscape.org/. Merge cu fişiere Scalable Vector Graphics (SVG), deşi poate exporta în multe alte formate, ce pot fi incluse în fişiere LaTeX, de genul EPS şi PDF. Începând cu versiunea 0.48, există opţiunea de output combinat PDF/EPS/PS+LaTeX, ca în cazul programului XFig.

Editarea imaginilor EPS

După cum a fost descris mai sus, puteţi importa conţinut grafic în LaTeX din programe externe sub formă de fişiere EPS. Însă câteodată veţi dori să editaţi sau să retuşaţi aceste fişiere grafice. Un fişier EPS poate fi editat cu orice editor de texte, de vreme ce este scris în format ASCII. Într-un editor de texte, puteţi realiza operaţii simple, de genul înlocuirii şirurilor de caractere sau mutării şi copierii acestora, însă orice lucru mai complex este greu de realizat.

Pentru a edita cum trebuie un fişier EPS, îl puteţi converti într-un format editabil cu ajutorul programului pstoedit. Spre exemplu, pentru a obţine un fişier editabil din formatul Xfig, daţi următoarea comandă:

$ pstoedit -f fig input.eps output.fig

Iar pentru a obţine un fişier SVG pentru Inkscape, scrieţi în terminal:

$ pstoedit -f plot-svg input.eps output.svg

Câteodată programul pstoedit nu reuşeşte să creeze formatul ţintă (spre exemplu, când fişierul EPS conţine informaţii ce pot fi decupate). O cale mai robustă de editare a fişierelor EPS constă în convertirea mai întâi a fişierului în PDF, urmată de importarea PDF-ului rezultat în Inkscape. Inkscape foloseşte biblioteca numită Cairo, care face o transformare de calitate ridicată a figurii EPS iniţiale:

$ epstopdf input.eps
$ inkscape input.pdf

Când toate cele de mai sus eşuează, puteţi simplifica fişierul EPS înainte de a încerca alte conversii, cu ajutorul programului eps2eps (vezi şi secţiunea următoare):

$ eps2eps input.eps input-e2.eps

Asta va converti toate fonturile în formate dinainte de generarea imaginilor, lucru care este de dorit când propuneţi manuscrise pentru publicare. Totuşi, ca dezavantaj, fonturile NU sunt convertite în linii, ci în hărţi de biţi, ceea ce reduce calitatea fonturilor.

Convertirea EPS color în tonuri de gri

Câteodată figurile EPS color trebuie convertite în figuri alb-negru sau cu tonuri de gri (grayscale) pentru a corespunde cerinţelor de publicare. Asta se poate face cu programele eps2eps din pachetul Ghostscript şi pscol:

$ eps2eps input.eps input-e2.eps
$ pscol -0gray input-e2.eps input-gray.eps

Crearea de imagini

În capitolul anterior, aţi învăţat că puteţi importa sau lega elemente grafice în LaTeX, cum ar fi imaginile create în alt program sau luate din altă parte. În capitolul de faţă, veţi învăţa să creaţi sau să includeţi imagini direct într-un document LaTeX. Elementele grafice sunt marcate folosind comenzi similare celor pentru tipărirea de text aldin sau pentru formulele matematice, după cum se vede în exemplul următor:

\begin{displaymath}
    \xymatrix{ \bullet \ar[r] \ar@{.>}[r] & \bullet }
\end{displaymath}

Sunt mai multe pachete care oferă suport pentru crearea de imagini direct în LaTeX, între care menţionăm picture, xy-Pic şi PGF/TikZ, descrise în secţiunile următoare.

Rezumat

Mediul picture permite realizarea de imagini direct în LaTeX. Pe de o parte, există restricţii foarte severe, de vreme ce pantele segmentelor de linii, ca şi razele cercurilor sunt limitate la intervale reduse de valori. Pe de altă parte, mediul picture din LaTeX2e oferă comanda \qbezier, cu "q" de la quadratic (pătratic). Multe curbe utilizate frecvent, de genul cercurilor, elipselor şi catenelor pot fi aproximate în mod satisfăcător cu ajutorul curbelor pătratice Bézier, deşi asta poate necesita un efort matematic deosebit. Dacă folosiţi un limbaj de programare ca Java să generaţi grupuri \qbezier de fişiere de intrare LaTeX, mediul picture devine foarte versat.

Deşi realizarea imaginilor direct în LaTeX are serioase limitări şi este deseori greoaie, există totuşi motive pentru a prefera această abordare. Documentele produse în felul acesta sunt "mici" în ce priveşte dimensiunea fizică în octeţi şi nu au alte fişiere grafice asociate.

Pachete de genul epic, eepic sau pstricks îmbunătăţesc mediul picture iniţial şi sporesc în mare măsură facilităţile grafice oferite de LaTeX.

Deşi primele două pachete doar îmbunătăţesc mediul picture, pachetul pstricks are propriul mediu grafic, pspicture. Avantajul oferit de pstricks constă în faptul că acest pachet foloseşte din plin posibilităţile PostScript. Din păcate, prezintă o deficienţă serioasă: nu merge cu pdflatex. Ca atare, pentru a genera un PDF dintr-o sursă TeX trebuie să faceţi transformările TeX→DVI→PDF, pierzând hyperlinkurile, metadatele şi trăsăturile microtipografice păstrate de pdflatex. În plus, numeroase pachete au fost scrise pentru scopuri specifice. Unul dintre ele este xy-pic, descris la sfârşitul acestui capitol. Foarte multe dintre aceste pachete sunt descrise detaliat în cartea The LaTeX Graphics Companion (a nu se confunda cu The LaTeX Companion).

Poate programul grafic cel mai util pentru LaTeX este MetaPost, perechea programului METAFONT al lui Donald E. Knuth. MetaPost are limbajul de programare matematică foarte sofisticat şi cuprinzător METAFONT. Spre deosebire de METAFONT însă, care generează hărţi de biţi, MetaPost generează fişiere încapsulate PostScript, care pot fi importate în LaTeX. Pentru o introducere, vezi A User's Manual for MetaPost. Puteţi găsi o dezbatere foarte amplă a strategiilor LaTeX şi TEX legate de grafică (şi fonturi) în lucrarea TEX Unbound.

Ultimul dar evident nu cel din urmă este sistemul PGF/TikZ. În vreme ce sistemele anterioare (picture, epic, pstricks sau metapost) se axează pe cum se desenează, TikZ pune accentul în principal pe ce se desenează. Se poate spune că TikZ este pentru grafica din LaTeX ceea ce LaTeX este pentru redactarea digitală de documente. Se recomandă să-l folosiţi dacă distribuţia LaTeX îl include.

Mediul picture

Comenzi de bază

În orice distribuţie LaTeX aveţi la dispoziţie un mediu picture, fără a trebui să încărcaţi un pachet extern. Acest mediu este creat cu una din următoarele două comenzi:

\begin{picture}(x, y) ... \end{picture}

sau

\begin{picture}(x, y)(x0, y0) ... \end{picture}

Numerele x, y, x0, y0 sunt valori (lungimi) în unităţi de \unitlength, care se poate reseta oricând (însă nu într-un mediu picture) cu o comandă de genul

\setlength{\unitlength}{1.2cm}

Valoarea implicită a \unitlength este 1pt. Prima pereche opţională, (x, y), face rezervarea, în cadrul documentului, a spaţiului dreptunghiular pentru imagini. A doua pereche opţională, (x_0, y_0), atribuie coordonate arbitrare colţului stâng inferior al dreptunghiului rezervat.

Cele mai multe comenzi de desenare au una din formele:

\put(x, y){obiect}

sau

\multiput(x, y)(dx, dy){n}{obiect}

Curbele Bézier reprezintă o excepţie. Acestea sunt trasate cu comanda:

\qbezier(x1, y1)(x2, y2)(x3, y3)

Segmente de linii

Puteţi trasa segmente de linii cu comanda:

\put(x, y){\line(x1, y1){lungime}}

Comanda \line are două argumente:

  1. un vector pentru direcţie şi
  2. o lungime.

Componentele vectorului de direcţie se limitează la întregii (−6, −5, ... , 5, 6) şi trebuie să fie prime între ele (singurul divizor comun 1). Figura de mai jos ilustrează toate cele 25 valori posibile din primul cvadrant. Lungimea depinde de \unitlength. Argumentul de lungime reprezintă coordonata verticală în cazul unui segment de linie verticală, şi coordonata orizontală în toate celelalte cazuri.

\setlength{\unitlength}{5cm}
\begin{picture}(1,1)
\put(0,0){\line(0,1){1}}
\put(0,0){\line(1,0){1}}
\put(0,0){\line(1,1){1}}
\put(0,0){\line(1,2){.5}}
\put(0,0){\line(1,3){.3333}}
\put(0,0){\line(1,4){.25}}
\put(0,0){\line(1,5){.2}}
\put(0,0){\line(1,6){.1667}}
\put(0,0){\line(2,1){1}}
\put(0,0){\line(2,3){.6667}}
\put(0,0){\line(2,5){.4}}
\put(0,0){\line(3,1){1}}
\put(0,0){\line(3,2){1}}
\put(0,0){\line(3,4){.75}}
\put(0,0){\line(3,5){.6}}
\put(0,0){\line(4,1){1}}
\put(0,0){\line(4,3){1}}
\put(0,0){\line(4,5){.8}}
\put(0,0){\line(5,1){1}}
\put(0,0){\line(5,2){1}}
\put(0,0){\line(5,3){1}}
\put(0,0){\line(5,4){1}}
\put(0,0){\line(5,6){.8333}}
\put(0,0){\line(6,1){1}}
\put(0,0){\line(6,5){1}}
\end{picture}
Latex example line segments.png

Săgeţi

Puteţi trasa săgeţi cu comanda

\put(x, y){\vector(x1, y1){lungime}}

Pentru săgeţi, componentele vectorului de direcţie sunt chiar şi mai restrânse decât pentru segmentele de linii, şi anume la întregii (−4, −3, ... , 3, 4). Componentele trebuie să fie de asemenea prime între ele (niciun alt divizor comun în afara lui 1). Notaţi efectul comenzii \thicklines asupra celor două săgeţi orientate în direcţia stânga sus.

\setlength{\unitlength}{0.75mm}
\begin{picture}(60,40)
\put(30,20){\vector(1,0){30}}
\put(30,20){\vector(4,1){20}}
\put(30,20){\vector(3,1){25}}
\put(30,20){\vector(2,1){30}}
\put(30,20){\vector(1,2){10}}
\thicklines
\put(30,20){\vector(-4,1){30}}
\put(30,20){\vector(-1,4){5}}
\thinlines
\put(30,20){\vector(-1,-1){5}}
\put(30,20){\vector(-1,-4){5}}
\end{picture}
Latex example arrows.png

Cercuri

Comanda

\put(x, y){\circle{diametru}}

desenează un cerc cu centrul (x, y) şi diametrul (nu raza) specificat de diametru. Mediul picture permite diametre numai până la aproximativ 14mm, şi chiar şi sub această limită, nu toate diametrele sunt posibile. Comanda \circle* produce discuri (cercuri pline). La fel ca în cazul segmentelor de linii, probabil va trebui să apelaţi la pachete adiţionale, cum sunt eepic sau pstricks.

\setlength{\unitlength}{1mm}
\begin{picture}(60, 40)
\put(20,30){\circle{1}}
\put(20,30){\circle{2}}
\put(20,30){\circle{4}}
\put(20,30){\circle{8}}
\put(20,30){\circle{16}}
\put(20,30){\circle{32}}
\put(40,30){\circle{1}}
\put(40,30){\circle{2}}
\put(40,30){\circle{3}}
\put(40,30){\circle{4}}
\put(40,30){\circle{5}}
\put(40,30){\circle{6}}
\put(40,30){\circle{7}}
\put(40,30){\circle{8}}
\put(40,30){\circle{9}}
\put(40,30){\circle{10}}
\put(40,30){\circle{11}}
\put(40,30){\circle{12}}
\put(40,30){\circle{13}}
\put(40,30){\circle{14}}
\put(15,10){\circle*{1}}
\put(20,10){\circle*{2}}
\put(25,10){\circle*{3}}
\put(30,10){\circle*{4}}
\put(35,10){\circle*{5}}
\end{picture}
Latex example circles.png

Mai aveţi o posibilitate în mediul picture. Dacă nu vă daţi la o parte de la realizarea calculelor necesare (sau dacă le lăsaţi în seama unui program), puteţi realiza cercuri şi elipse arbitrar de mari trasând curbe Bézier pătratice (câte o curbă pentru un sfert de cerc, de exemplu). Vezi Grafica în LaTeX2e pentru exemple şi fişiere sursă Java.

Text şi formule

După cum arată exemplul următor, puteţi scrie text şi formule în acest mediu cu comanda \put în modul obişnuit:

\setlength{\unitlength}{0.8cm}
\begin{picture}(6,5)
\thicklines
\put(1,0.5){\line(2,1){3}}
\put(4,2){\line(-2,1){2}}
\put(2,3){\line(-2,-5){1}}
\put(0.7,0.3){$A$}
\put(4.05,1.9){$B$}
\put(1.7,2.95){$C$}
\put(3.1,2.5){$a$}
\put(1.3,1.7){$b$}
\put(2.5,1.05){$c$}
\put(0.3,4){$F=
\sqrt{s(s-a)(s-b)(s-c)}$}
\put(3.5,0.4){$\displaystyle
s:=\frac{a+b+c}{2}$}
\end{picture}
Latex example text formulas.png

\multiput şi \linethickness

Comanda

\multiput(x, y)(dx, dy ){n}{obiect}

are 4 argumente: punctul de pornire, vectorul de translaţie de la un obiect la următorul, numărul de obiecte şi obiectul de desenat. Comanda \linethickness se aplică la segmente orizontale şi verticale de linii, însă nu la segmente oblice de linii, nici la cercuri. Se aplică, totuşi, la curbe pătratice Bézier!

\setlength{\unitlength}{2mm}
\begin{picture}(30,20)
\linethickness{0.075mm}
\multiput(0,0)(1,0){26}%
{\line(0,1){20}}
\multiput(0,0)(0,1){21}%
{\line(1,0){25}}
\linethickness{0.15mm}
\multiput(0,0)(5,0){6}%
{\line(0,1){20}}
\multiput(0,0)(0,5){5}%
{\line(1,0){25}}
\linethickness{0.3mm}
\multiput(5,0)(10,0){2}%
{\line(0,1){20}}
\multiput(0,5)(0,10){2}%
{\line(1,0){25}}
\end{picture}
Latex example multiput.png

Ovale

Comanda

\put(x, y){\oval(l, î)}

sau

 
\put(x, y){\oval(l, î)[poziţie]}

produce un oval centrat în (x, y) de lăţime l şi înălţime î. Parametrii opţionali de poziţie t, b, l, r se referă la partea de sus ("top"), partea de jos ("bottom"), stângă ("left") şi dreaptă ("right") şi pot fi combinaţi, după cum ilustrează exemplul. Puteţi controla grosimea liniei cu două tipuri de comenzi: \linethickness{lungime} pe de o parte şi \thinlines şi \thicklines pe de alta. În vreme ce \linethickness{lungime} se aplică numai la linii orizontale şi verticale (şi la curbe pătratice Bézier), \thinlines şi \thicklines se aplică şi la segmente oblice de linii, ca şi la cercuri şi ovale.

\setlength{\unitlength}{0.75cm}
\begin{picture}(6,4)
\linethickness{0.075mm}
\multiput(0,0)(1,0){7}%
{\line(0,1){4}}
\multiput(0,0)(0,1){5}%
{\line(1,0){6}}
\thicklines
\put(2,3){\oval(3,1.8)}
\thinlines
\put(3,2){\oval(3,1.8)}
\thicklines
\put(2,1){\oval(3,1.8)[tl]}
\put(4,1){\oval(3,1.8)[b]}
\put(4,3){\oval(3,1.8)[r]}
\put(3,1.5){\oval(1.8,0.4)}
\end{picture}
Latex example ovals.png

Utilizarea mai multor căsuţe predefinite pentru imagini

O căsuţă pentru imagini poate fi declarată cu comanda

\newsavebox{nume}

apoi definită cu

\savebox{nume}(lăţime,înălţime)[poziţie]{conţinut}

şi în cele din urmă trasată oricât de des doriţi cu

 
\put(x, y){\usebox{nume}}

Parametrul opţional de poziţie are efectul de a defini "punctul de susţinere" pentru căsuţa salvată (savebox). În exemplul de mai jos este setată la "bl", lucru care aşază punctul de susţinere în colţul stâng inferior al căsuţei generate. Ceilalţi specificatori de poziţie sunt partea superioară (top) şi dreaptă (right).

Argumentul nume se referă la o structură de stocare LaTeX şi de aceea este de natura unei comenzi (ceea ce explică caracterele backslash din exemplul de faţă). Imaginile cuprinse în căsuţe pot fi imbricate (incluse una în alta): în exemplul nostru, \foldera se foloseşte în definiţia \folderb. Trebuia să utilizăm comanda \oval aici întrucât comanda \line nu merge dacă segmentul este mai mic de aproximativ 3 mm.

\setlength{\unitlength}{0.5mm}
\begin{picture}(120,168)
\newsavebox{\foldera}
\savebox{\foldera}
  (40,32)[bl]{% definiţie
  \multiput(0,0)(0,28){2}
    {\line(1,0){40}}
  \multiput(0,0)(40,0){2}
    {\line(0,1){28}}
  \put(1,28){\oval(2,2)[tl]}
  \put(1,29){\line(1,0){5}}
  \put(9,29){\oval(6,6)[tl]}
  \put(9,32){\line(1,0){8}}
  \put(17,29){\oval(6,6)[tr]}
  \put(20,29){\line(1,0){19}}
  \put(39,28){\oval(2,2)[tr]}
}
 
\newsavebox{\folderb}
\savebox{\folderb}
  (40,32)[l]{% definiţie
  \put(0,14){\line(1,0){8}}
  \put(8,0){\usebox{\foldera}}
}
 
\put(34,26){\line(0,1){102}}
\put(14,128){\usebox{\foldera}}
\multiput(34,86)(0,-37){3}
{\usebox{\folderb}}
\end{picture}
Latex example multiple pics.png

Curbe pătratice Bézier

Comanda

\qbezier(x1, y1)(x, y)(x2, y2)

trasează o curbă pătratică Bézier, unde P_1 = (x_1, y_1), P_2 = (x_2, y_2) sunt capetele intervalului, iar S = (x, y) punctul de control intermediar. Pantele corespunzătoare, m_1 şi m_2, se pot obţine din ecuaţiile


\begin{cases}
x= \frac{m_2 x_2 - m_1 x_1  - (y_2 - y_1)}{m_2 - m_1} \\
y= y_i + m_i (x - x_i); \quad ( i=1,2 )
\end{cases}

Vezi Grafica în LaTeX2e pentru un program Java care generează linia de comandă \qbezier necesară.

\setlength{\unitlength}{0.8cm}
\begin{picture}(6,4)
\linethickness{0.075mm}
\multiput(0,0)(1,0){7}
{\line(0,1){4}}
\multiput(0,0)(0,1){5}
{\line(1,0){6}}
\thicklines
\put(0.5,0.5){\line(1,5){0.5}}
\put(1,3){\line(4,1){2}}
\qbezier(0.5,0.5)(1,3)(3,3.5)
\thinlines
\put(2.5,2){\line(2,-1){3}}
\put(5.5,0.5){\line(-1,5){0.5}}
\linethickness{1mm}
\qbezier(2.5,2)(5.5,0.5)(5,3)
\thinlines
\qbezier(4,2)(4,3)(3,3)
\qbezier(3,3)(2,3)(2,2)
\qbezier(2,2)(2,1)(3,1)
\qbezier(3,1)(4,1)(4,2)
\end{picture}
Latex example bezier.png

După cum arată acest exemplu, împărţirea unui cerc în 4 curbe pătratice Bézier nu este suficientă. Aveţi nevoie de cel puţin 8. Figura prezintă din nou efectul comenzii \linethickness asupra liniilor orizontale şi verticale, precum şi al comenzilor \thinlines şi \thicklines asupra segmentelor oblice de linii. Exemplul de mai sus evidenţiază de asemenea că ambele tipuri de comenzi afectează curbele pătratice Bézier, fiecare comandă suprascriind (anulând) pe cele dinainte.

Catene

\setlength{\unitlength}{1cm}
\begin{picture}(4.3,3.6)(-2.5,-0.25)
\put(-2,0){\vector(1,0){4.4}}
\put(2.45,-.05){$x$}
\put(0,0){\vector(0,1){3.2}}
\put(0,3.35){\makebox(0,0){$y$}}
\qbezier(0.0,0.0)(1.2384,0.0)
(2.0,2.7622)
\qbezier(0.0,0.0)(-1.2384,0.0)
(-2.0,2.7622)
\linethickness{.075mm}
\multiput(-2,0)(1,0){5}
{\line(0,1){3}}
\multiput(-2,0)(0,1){4}
{\line(1,0){4}}
\linethickness{.2mm}
\put( .3,.12763){\line(1,0){.4}}
\put(.5,-.07237){\line(0,1){.4}}
\put(-.7,.12763){\line(1,0){.4}}
\put(-.5,-.07237){\line(0,1){.4}}
\put(.8,.54308){\line(1,0){.4}}
\put(1,.34308){\line(0,1){.4}}
\put(-1.2,.54308){\line(1,0){.4}}
\put(-1,.34308){\line(0,1){.4}}
\put(1.3,1.35241){\line(1,0){.4}}
\put(1.5,1.15241){\line(0,1){.4}}
\put(-1.7,1.35241){\line(1,0){.4}}
\put(-1.5,1.15241){\line(0,1){.4}}
\put(-2.5,-0.25){\circle*{0.2}}
\end{picture}
Latex example catenary.png

În această figură, fiecare jumătate simetrică a catenei y= \cosh x - 1 este aproximată printr-o curbă pătratică Bézier. Jumătatea dreaptă a curbei se termină în punctul (2, 2.7622), panta având aici valoarea m = 3.6269. Folosind din nou ecuaţiile de la curbele Bézier, putem calcula punctele intermediare de control. Acestea sunt (1.2384, 0) şi (−1.2384, 0). Cruciuliţele indică punctele catenei reale. Eroarea abia se observă, fiind mai mică de un procent. Acest exemplu evidenţiază folosirea argumentului opţional al comenzii \begin{picture}. Imaginea este definită în coordonate "matematice" convenabile, în timp prin comanda

\begin{picture}(4.3,3.6)(-2.5,-0.25)

colţul stâng inferior (marcat de discul negru) primeşte coordonatele (−2.5,−0.25).

Trasarea graficelor

\setlength{\unitlength}{0.8cm}
\begin{picture}(6,4)(-3,-2)
\put(-2.5,0){\vector(1,0){5}}
\put(2.7,-0.1){$\chi$}
\put(0,-1.5){\vector(0,1){3}}
\multiput(-2.5,1)(0.4,0){13}
{\line(1,0){0.2}}
\multiput(-2.5,-1)(0.4,0){13}
{\line(1,0){0.2}}
\put(0.2,1.4)
{$\beta=v/c=\tanh\chi$}
\qbezier(0,0)(0.8853,0.8853)
(2,0.9640)
\qbezier(0,0)(-0.8853,-0.8853)
(-2,-0.9640)
\put(-3,-2){\circle*{0.2}}
\end{picture}
Latex example rapidity.png

Punctele de control ale celor două curbe Bézier au fost calculate cu formulele menţionate mai sus la secţiunea Curbe pătratice Bézier. Ramura pozitivă este determinată de P_1 = (0, 0), m_1 = 1 şi P_2 = (2, \tanh 2), m_2 = 1/ \cosh^2 2. Din nou, imaginea este definită în coordonate matematice convenabile, iar colţul stâng inferior primeşte coordonatele matematice (−3,−2) (discul negru).

Mediul picture şi gnuplot

Pachetul de reprezentare grafică ştiinţifică gnuplot are posibilitatea de a genera direct datele într-un mediu LaTeX picture. Este deseori mult mai convenabil să faceţi graficul direct în LaTeX, deoarece asta vă scuteşte de gestionarea potenţial problematică a fişierelor PostScript. Reprezentarea grafică de date ştiinţifice (sau, într-adevăr, figuri matematice) în felul acesta vă oferă un control mult mai mare, şi desigur facilităţi de redactare, decât vă oferă alte mijloace (de genul PostScript). Puteţi adăuga apoi astfel de imagini la un document cu o comandă \include{}.

Notă: gnuplot este un program de calculator foarte util ce oferă o serie de comenzi. O descriere exhaustivă a gnuplot depăşeşte sfera acestei cărţi.

Xy-pic

xy este un pachet special pentru trasarea de diagrame. Pentru a-l folosi, adăugaţi linia următoare la preambulul documentului:

\usepackage[all]{xy}

unde "all" (tot) semnifică faptul că vreţi să încărcaţi un set standard amplu de funcţii din Xy-pic, potrivite pentru dezvoltarea tipurilor de diagrame discutate aici.

Diagramele Xy-pic se reprezintă în cea mai mare parte pe o pânză matriceală, în care fiecare element al diagramei este aşezat într-un slot din matrice:

\begin{displaymath}
    \xymatrix{A & B \\
              C & D }
\end{displaymath}
Latex example xypics basic.png

Comanda \xymatrix trebuie folosită în modul matematic. Aici, am specificat două linii şi două coloane. Pentru a face din această matrice o diagramă, adăugăm săgeţi orientate cu ajutorul comenzii \ar.

\begin{displaymath}
    \xymatrix{ A \ar[r] & B \ar[d] \\
               D \ar[u] & C \ar[l] }
\end{displaymath}
Latex example xypics arrows 1.png

Comanda pentru săgeată (arrow) este aşezată în celula de origine pentru săgeată. Argumentele sunt reprezentate de direcţia pe care ar trebui s-o urmeze săgeata: sus (up), jos (down), dreapta (right) şi stânga (left).

\begin{displaymath}
    \xymatrix{
        A \ar[d] \ar[dr] \ar[r] & B \\
        D                       & C }
\end{displaymath}
Latex example xypics arrows 2.png

Pentru a trasa diagonale, folosiţi mai mult de o direcţie. De fapt, puteţi repeta direcţiile pentru a face săgeţi mai mari.

\begin{displaymath}
    \xymatrix{
        A \ar[d] \ar[dr] \ar[drr] &   &   \\
        B                         & C & D }
\end{displaymath}
Latex example xypics arrows 3.png

Puteţi trasa diagrame şi mai interesante prin adăugarea unor etichete săgeţilor. Pentru a face asta, folosiţi operatorii obişnuiţi de scriere la exponent şi la indice.

\begin{displaymath}
    \xymatrix{
        A \ar[r]^f \ar[d]_g & B \ar[d]^{g'} \\
        D \ar[r]_{f'}       & C }
\end{displaymath}
Latex example xypics arrows labels.png

După cum am arătat, utilizaţi aceşti operatori ca în modul matematic. Singura diferenţă este aceea că la exponent înseamnă "deasupra săgeţii", iar la indice înseamnă "sub săgeată". Există şi un al treilea operator, bara verticală: | Aceasta face ca textul să fie aşezat în interiorul săgeţii.

\begin{displaymath}
    \xymatrix{
        A \ar[r]|f \ar[d]|g & B \ar[d]|{g'} \\
        D \ar[r]|{f'}       & C }
\end{displaymath}
Latex example xypics inarrow labels.png

Pentru a desena o săgeată cu o gaură în ea, scrieţi \ar[...]|\hole. În unele situaţii, este important să faceţi deosebire între diferite tipuri de săgeţi. Puteţi face asta etichetându-le, sau schimbându-le înfăţişarea:

\shorthandoff{"}
\begin{displaymath}
    \xymatrix{
        \bullet\ar@{->}[rr]     && \bullet\\
        \bullet\ar@{.<}[rr]     && \bullet\\
        \bullet\ar@{~)}[rr]     && \bullet\\
        \bullet\ar@{=(}[rr]     && \bullet\\
        \bullet\ar@{~/}[rr]     && \bullet\\
        \bullet\ar@{^{(}->}[rr] && \bullet\\
        \bullet\ar@2{->}[rr]    && \bullet\\
        \bullet\ar@3{->}[rr]    && \bullet\\
        \bullet\ar@{=+}[rr]     && \bullet }
\end{displaymath}
\shorthandon{"}
Latex example xypics arrow list.png

Observaţi diferenţa dintre următoarele două diagrame:

\begin{displaymath}
    \xymatrix{ \bullet \ar[r] \ar@{.>}[r] & \bullet }
\end{displaymath}
Latex example xypics standard arrow.png
\begin{displaymath}
    \xymatrix{
        \bullet \ar@/^/[r]
        \ar@/_/@{.>}[r] &
        \bullet }
\end{displaymath}
Latex example xypics curved arrow.png

Modificatorii dintre slash-uri definesc modul de trasare a curbelor. Xy-pic oferă multe căi prin care puteţi influenţa trasarea curbelor; pentru mai multe informaţii, vezi documentaţia Xy-pic.

Dacă vreţi o introducere mai cuprinzătoare, consultaţi pagina Xy-pic, ce conţine linkuri către multe alte tutoriale, ca şi documentaţie de referinţă.

PGF/TikZ

O soluţie foarte bună şi poate cea mai bună o constituie PGF/TikZ. TikZ poate produce imagini portabile în formate PDF şi PostScript. Puteţi realiza imaginile direct cu comenzi TeX folosind pachetul tikz. Acesta este însoţit de o foarte bună documentaţie şi numeroase exemple.

\usepackage{tikz} % în preambul
...
\begin{figure}
  \centering
  \begin{tikzpicture}
    \draw[thick,rounded corners=8pt] 
(0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0) -- (0,2) -- (2,2) -- (0,0) -- (2,0);
  \end{tikzpicture}
  \caption{Titlul figurii}
  \label{fig:test}
\end{figure}

Găsiţi foarte multe exemple aici: http://www.texample.net/tikz/

Puteţi găsi şi alte pachete bazate pe TikZ (spre exemplu, pentru trasarea de circuite electrice) aici: http://ftp.dante.de/tex-archive/help/Catalogue/bytopic.html#pgftikzsection

Alternative

În multe cazuri, mai ales pentru diagrame mai avansate, poate fi mai uşor să faceţi graficul folosind programe externe de grafică vectorială, iar apoi să importaţi fişierul în document (vezi LaTeX/Importarea de imagini). Cu toate acestea, cele mai multe programe nu oferă suport pentru fonturile şi notaţiile matematice din LaTeX, ceea ce poate duce la realizarea unor imagini urâte şi inconsistente. Sunt mai multe soluţii la această problemă.

Soluţia cea mai simplă constă în folosirea mediului picture, după care puteţi utiliza comanda "put" pentru a insera un fişier grafic în imagine, alături de orice alt element LaTeX dorit. Spre exemplu:


\setlength{\unitlength}{0.8cm}
\begin{picture}(6,5)
\put(3.5,0.4){$\displaystyle
s:=\frac{a+b+c}{2}$}
\put(1,1){\includegraphics[width=2cm,height=2cm]{imagine.eps}}
\end{picture}

O altă soluţie o constituie utilizarea textext, un plug-in pentru Inkscape, care permite inserarea de mici obiecte LaTeX în imagini .svg. Aceste imagini pot fi apoi salvate în format .eps (sau .pdf) şi importate după aceea în documentul LaTeX propriu-zis.

Încă o soluţie este oferită de lpic, care permite realizarea de adnotări TeX la imaginile importate.

Elemente flotante, figuri şi note

Într-un capitol anterior, am prezentat importarea de imagini. Totuşi, doar să ai o imagine prinsă între paragrafe nu arată profesional. Pentru început, vrem să putem adăuga titluri şi să facem trimiteri. Ne trebuie un mod de a defini figurile. Ar fi bine de asemenea dacă LaTeX ar putea aplica principii similare cu cele aplicate la aranjarea textului ca să arate cât mai bine, şi la aranjarea imaginilor. Aici intră în joc elementele flotante.

Elemente flotante

Elementele flotante (mobile în pagină) sunt containere pentru lucrurile dintr-un document ce nu pot fi separate pe mai multe pagini. LaTeX recunoaşte implicit elementele flotante "tabel" şi "figură", însă puteţi defini astfel de elemente noi (vezi Elemente flotante personalizate mai jos). Elementele flotante sunt menite pentru obiectele ce nu încap pe pagina curentă, dar şi să vă ajute când nu vreţi să aşezaţi obiectul în acel loc chiar atunci.

Elementele flotante nu fac parte din fluxul normal de text, reprezentând entităţi separate, poziţionate într-o parte precizată a paginii: sus (top), la mijloc (middle), jos(bottom), la stânga (left), la dreapta (right), sau oriunde doriţi. Ele au întotdeauna un titlu ce le descrie şi sunt întotdeauna numerotate astfel încât să se poată face trimitere la ele din altă parte. LaTeX încadrează automat tabelele şi figurile în elemente flotante, în funcţie de cât spaţiu liber a rămas pe pagină în momentul procesării acestora. Dacă nu e destul loc pe pagina curentă, elementul flotant este mutat la începutul paginii următoare. Puteţi schimba asta mutând definiţia tabelului sau figurii mai sus sau mai jos pe pagină, sau prin ajustarea unor parametri ce controlează încadrarea automată a elementelor flotante.

Autorii pun câteodată mai multe elemente flotante unul după altul, ceea ce ridică problema aranjării lor în pagină astfel încât să lase loc şi pentru text. În cazul acesta, LaTeX le pune la un loc şi le afişează împreună dacă se poate, sau le lasă la sfârşitul capitolului ca semn de avertizare. Trebuie să aveţi grijă să le aranjaţi în pagină şi să le dimensionaţi în cadrul textului astfel încât să nu pună în umbră subiectul de bază dezbătut în text, dar nici să nu afecteze aspectul vizual şi redactarea paginilor.


Figuri

Pentru a crea o figură ce conţine elemente flotante, folosiţi mediul figure.

\begin{figure}[specificatori de poziţionare]
... conţinutul figurii ...
\end{figure}

Secţiunea anterioară a precizat cum puteţi folosi elemente flotante pentru a permite sistemului Latex să gestioneze automat figurile, menţinând în acelaşi timp cea mai bună prezentare posibilă. Cu toate acestea, sunt situaţii în care aţi dori un aspect diferit, un exemplu tipic fiind reprezentat de poziţionarea figurilor. Parametrul specificatori de poziţionare există ca un compromis, iar scopul său este să dea autorului un grad mai mare de control asupra locului în care sunt aşezate elementele flotante.

Specificator Permisiune
h Aşază elementul flotant aici (here), adică aproximativ în acelaşi loc în care apare în textul sursă (totuşi, nu exact în acelaşi loc)
t La începutul (top) paginii.
b La sfârşitul (bottom) paginii.
p Aranjează o pagină specială numai pentru elementele flotante.
! Suprascrie parametrii interni folosiţi de LaTeX la determinarea poziţiilor "bune" pentru elementele flotante.
H Aşază elementul flotant exact în locul din codul sursă LaTeX. Acest lucru necesită utilizarea pachetului float,[1], scriind \usepackage{float} în preambul. Acesta este întrucâtva echivalent cu h!.

Ce este de făcut cu aceste permisiuni de poziţionare este să precizaţi care dintre opţiuni vreţi să fie puse la dispoziţia sistemului LaTeX. Acestea sunt doar posibilităţi, iar Latex va decide când prelucrează documentul care dintre specificatorii pe care i-aţi furnizat sunt cei mai potriviţi.

Utilizaţi comanda \listoffigures pentru a adăuga o listă de figuri la începutul documentului. Pentru a modifica numele utilizat în titlu din Figure în Exemplu, folosiţi \renewcommand{\figurename}{Exemplu} în conţinutul figurii.

Figuri cu margini

Puteţi trasa o margine fină în jurul tuturor figurilor. Pentru asta, trebuie să scrieţi o dată la începutul documentului:

\usepackage{float}
\floatstyle{boxed} 
\restylefloat{figure}

Marginea nu va include titlul.

Tabele

Deşi am vorbit deja despre tabele, am discutat numai despre sintaxa lor internă. Mediul tabular pe care l-am folosit la tabele nu este un element flotant în mod implicit. De aceea, pentru a încadra tabelele în elemente flotante, introduceţi mediul tabular într-un mediu table:

\begin{table}
  \begin{tabular}{...}
  ... date din tabel ...
  \end{tabular}
\end{table}

Poate vi se pare puţin exagerat, dat astfel de distincţii sunt necesare, întrucât poate că nu veţi dori ca toate tabelele să fie tratate ca elemente flotante.

Utilizaţi comanda \listoftables pentru a adăuga o listă de tabele la începutul documentului.

Titluri

E bine să adăugaţi întotdeauna un titlu la orice figură sau tabel. Din fericire, acest lucru este foarte uşor de făcut în LaTeX. Tot ce trebuie să faceţi este să utilizaţi comanda \caption{text} în mediul flotant. Datorită tratării consistente a structurii logice, LaTeX va ţine seama implicit de numerotarea figurilor, astfel că nu va trebui să includeţi numărul figurii în textul titlului.

Titlul se aşază în mod tradiţional sub elementul flotant. Totuşi, depinde de utilizator să scrie comanda pentru titlu după conţinutul acestuia (dar în cadrul mediului). Dacă daţi această comandă mai devreme, atunci titlul va apare înaintea elementului flotant. Încercaţi exemplul următor pentru a observa acest efect:

\documentclass[a4paper,12pt]{article}
 
\usepackage[utf8x]{inputenc}
\usepackage{graphicx}
 
\renewcommand{\figurename}{Figura}
\renewcommand{\tablename}{Tabelul}
 
\begin{document}
 
\begin{figure}[h!]
  \caption{Imaginea unui pescăruş}
  \centering
    \includegraphics[width=0.5\textwidth]{pesc}
\end{figure}
 
\begin{figure}[h!]
  \centering
    \reflectbox{\includegraphics[width=0.5\textwidth]{pesc}}
  \caption{Imaginea în oglindă a imaginii inţiale!}
\end{figure}
 
\begin{table}[h!]
  \begin{center}
    \begin{tabular}{| l c r |}
    \hline
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9 \\
    \hline
    \end{tabular}
  \end{center}
  \caption{Un tabel simplu}
\end{table}
 
Observaţi că tabelele şi figurile
au contoare independente.
 
\end{document}
Latex titlu exemplu.png

Comanda \reflectbox{...} roteşte orizontal la 180 de grade conţinutul imaginii.

Liste de figuri şi tabele

Puteţi lista titlurile de figuri şi tabele la începutul unei lucrări sau unui raport într-o secţiune cu "Lista de tabele" sau "Lista de figuri" folosind comenzile \listoftables, respectiv \listoffigures. În aceste liste vor apare titlul, numărul fiecărei figuri sau tabel şi numărul paginii pe care apar.

Comanda \caption are şi ea un parametru opţional, \caption[scurt]{lung}, folosit pentru Lista de tabele şi Lista de figuri. În general, descrierea scurta este menită pentru afişarea titlului, iar descrierea lungă va fi afişată lângă figură sau tabel. Acest lucru este deosebit de util dacă titlul este lung, iar în afişarea figurii/tabelului se doreşte numai o scurtă descriere "de un rând". Iată un exemplu al acestei utilizări:

\documentclass[12pt]{article}
 
\usepackage[utf8x]{inputenc}
\usepackage{graphicx}
 
\renewcommand{\figurename}{Figura}
\renewcommand{\listfigurename}{Lista de figuri}
 
\begin{document}
 
\listoffigures
 
\section{Introducere}
 
\begin{figure}[hb]
  \centering
  \includegraphics[width=4in]{geko}
  \caption[Imagine de aproape a unui \textit{Hemidactylus}]
  {Imagine de aproape a unui \textit{Hemidactylus}, care face
   parte din specia de şopârle geko. Este pe locul doi între cele
   mai numeroase sub-specii din această familie.}
\end{figure}
 
\end{document}
Latex titlu figură cu intrare lof.png

Titluri laterale

Este de dorit câteodată să puneţi un titlu la stânga sau la dreapta unui element flotant. Puteţi folosi pachetul sidecap pentru a plasa un titlu în stânga sau dreapta unei figuri sau tabel. Exemplul de mai jos prezintă un asemenea caz pentru o figură, folosind un mediu SCfigure în locul figure.

\documentclass{article}
 
\usepackage[pdftex]{graphicx}
\usepackage{sidecap}
 
\begin{document}
 
\begin{SCfigure}
  \centering
  \includegraphics[width=0.5\textwidth]{girafa}
  \caption
  {Girafa (\textit{Giraffa camelo\-par\-dalis}) este un mamifer
   african paricopitat, cea mai înaltă dintre speciile de
   animale care trăiesc pe uscat. Masculii au înălţimea între
   4,8 şi 5,5 metri şi o greutate medie de 1360 kilograme.
   Un exemplar record a atins 5,87 metri înălţime şi o greutate
   de 2000 kilograme. Femelele sunt ceva mai mici şi cântăresc
   de asemenea ceva mai puţin decât masculii.
  }
\end{SCfigure}
 
\end{document}

Latex exemplu sidecap.png

Etichete şi referinţe

Etichetele şi referinţele merg cam la fel ca în cazul general — vezi capitolul Etichete şi referinţe pentru mai multe informaţii.

Avertisment: Dacă vreţi să etichetaţi o figură ca să puteţi face trimiteri la ea mai târziu, trebuie să adăugaţi eticheta după titlu (înăuntru pare să meargă pentru LaTeX2e), însă în mediul elementului flotant. Dacă o declaraţi în afară, eticheta va da numărul secţiunii. Dacă eticheta ia din greşeală numărul secţiunii sau listei în locul numărului figurii, puneţi eticheta în titlu pentru a asigura o numerotare corectă.

Text în jurul figurilor

Deşi în mod normal nu este cazul în lucrările academice, un autor poate prefera ca unele elemente flotante să nu întrerupă fluxul textului, ci să permită aranjarea textului în jurul lor. (Evident, acest efect arată decent numai când figura respectivă este semnificativ mai îngustă decât textul.)

O notă de avertizare: încadrarea figurilor în LaTeX va necesita multe ajustări manuale ale documentului. Aveţi la dispoziţie mai multe pachete în acest sens, însă niciunul din ele nu merge perfect. Înainte de a vă hotărî să includeţi figuri încadrate de text în document, aveţi grijă să analizaţi toate opţiunile. Spre exemplu, puteţi folosi un layout cu două coloane pentru documentele pe care le scrieţi şi să nu faceţi nicio încadrare de text.

Oricum, ne vom uita peste opţiunile pachetului wrapfig. (Notă: wrapfig poată să nu intre în pachetele implicite instalate odată cu LaTeX; s-ar putea să trebuiască să instalaţi manual anumite pachete.)

Pentru a folosi pachetul wrapfig, trebuie să adăugaţi mai întâi în preambul:

\usepackage{wrapfig}

Asta vă dă apoi acces la:

\begin{wrapfigure}[înălţime_linie]{aliniere}{lăţime}

Alinierea poate fi în mod normal l pentru stânga (left) sau r pentru dreapta (right). Opţiunile l sau r forţează figura să înceapă exact în locul specificat (şi pot determina întinderea ei pe pagini separate), în vreme ce opţiunile L sau R permit figurii să se mişte, trecând pe pagina următoare dacă nu mai este loc suficient pe pagina curentă. Dacă aţi definit documentul ca fiind de tip twosided, alinierea poate fi de asemenea i pentru înăuntru (inside) sau o pentru în afară (outside), ca şi I sau O. Lăţimea este, desigur, lăţimea figurii. Iată un exemplu:

\documentclass[a4paper,12pt]{article}
 
\usepackage[utf8x]{inputenc} % pentru caractere Unicode
\usepackage{graphicx} % pentru \includegraphics
\usepackage{wrapfig} % pentru mediul wrapfigure
 
\renewcommand{\figurename}{Figura}
 
\begin{document}
 Pescăruşii sunt păsări din familia Laridae.
 Ei se înrudesc cel mai mult cu rândunicile de mare
 (familia Sternidae), pinguinii şi forfecarii, şi
 mai puţin cu păsările de baltă (cu picioare lungi).
 Cei mai mulţi pescăruşi aparţin clasei Larus.
 
 \begin{wrapfigure}{r}{0.5\textwidth}
  \begin{center}
    \includegraphics[width=0.48\textwidth]{pesc}
  \end{center}
  \caption{Un pescăruş}
 \end{wrapfigure}
 
 Ei sunt în general păsări medii şi mari, gri sau albe,
 adesea cu urme negre pe cap sau pe aripi. Ele au un cioc
 puternic şi încovoiat şi picioare palmate.
 
 Cei mai mulţi pescăruşi, îndeo\-sebi cei din specia Larus,
 sunt carnivore ce-şi fac cuibul pe uscat. Ele se hrănesc
 cu alte animale vii sau moarte. Între acestea se numără
 crabii şi peştii mai mici. Cu excepţia păsărilor din clasa
 Rissa, pescăruşii sunt în mod tipic păsări de coastă sau
 de uscat, aventurându-se rareori pe mare. Speciilor mai
 mari le trebuie patru ani pentru a ajunge la viaţa adultă,
 însă doi ani sunt de ajuns pentru pescăruşii mai mici.
 
 Pescăruşii, îndeosebi speciile mai mari, sunt păsări foarte
 inteligente şi inventive, demonstrând metode complexe de
 comunicare şi având o structură socială foarte bine
 dezvoltată. Anumite specii, de exemplu, pescăruşul-albăstrui
 (Larus argentatus), au demonstrat un comportament de
 utilizare de unelte. Multe specii de pescăruşi au învăţat
 să trăiască alături de oameni şi s-au dezvoltat în zonele
 locuite de om. Altele se bazează pe cleptoparazitism pentru
 a-şi procura hrana (iau hrana de la alte animale).
\end{document}
Latex exemplu wrapfig.png

Notaţi că am specificat o mărime atât pentru mediul wrapfigure, cât şi pentru imaginea inclusă. Acestea au fost date în funcţie de lăţimea textului din pagină: este întotdeauna mai bine să utilizaţi mărimi relative în LaTeX, să lăsaţi LaTeX să facă munca pentru voi! "Cadrul" este puţin mai mare decât imaginea, astfel încât compilatorul nu va da niciun mesaj ciudat de avertizare şi veţi avea puţin spaţiu alb între imagine şi textul din jur. Puteţi modifica aceste valori pentru a obţine un rezultat mai bun, însă dacă nu ţineţi imaginea mai mică decât "cadrul", veţi vedea cum imaginea se suprapune peste text, iar acesta probabil nu este efectul pe care îl aşteptaţi!

Puteţi folosi de asemenea pachetul wrapfig împreună cu elemente flotante proprii create cu ajutorul pachetului float. Vezi secţiunea Elemente flotante personalizate de mai jos.

Sfat pentru figurile cu prea mult spaţiu liber

Se poate întâmpla să generaţi figuri ce au prea mult (sau prea puţin) spaţiu liber deasupra sau după ele. În asemenea cazuri, puteţi utiliza pur şi simplu argumentul opţional [lineheight]. Acesta specifică înălţimea figurii ca număr de linii de text.

O altă posibilitate constă în adăugarea de spaţiu în elementul flotant cu ajutorul comenzii \vspace{...}. Argumentul este mărimea spaţiului pe care vreţi să-l adăugaţi. Puteţi folosi orice unitate doriţi, inclusiv pt, mm, in, etc. Dacă daţi un argument negativ, va adăuga un spaţiu negativ, înlăturând în felul acesta ceva din spaţiul liber. Să considerăm exemplul dinainte, la care doar adăugăm spaţii verticale negative pentru a reduce spaţiul ocupat de figură:

\documentclass[a4paper,12pt]{article}
 
\usepackage[utf8x]{inputenc} % pentru caractere Unicode
\usepackage{graphicx} % pentru \includegraphics
\usepackage{wrapfig} % pentru mediul wrapfigure
 
\renewcommand{\figurename}{Figura}
 
\begin{document}
 Pescăruşii sunt păsări din familia Laridae.
 Ei se înrudesc cel mai mult cu rândunicile de mare
 (familia Sternidae), pinguinii şi forfecarii, şi
 mai puţin cu păsările de baltă (cu picioare lungi).
 Cei mai mulţi pescăruşi aparţin clasei Larus.
 
 \begin{wrapfigure}{r}{0.5\textwidth}
  \vspace{-30pt}
  \begin{center}
    \includegraphics[width=0.48\textwidth]{pesc}
  \end{center}
  \vspace{-20pt}
  \caption{Un pescăruş}
  \vspace{-10pt}
 \end{wrapfigure}
 
 Ei sunt în general păsări medii şi mari, gri sau albe,
 adesea cu urme negre pe cap sau pe aripi. Ele au un cioc
 puternic şi încovoiat şi picioare palmate.
 
 Cei mai mulţi pescăruşi, îndeo\-sebi cei din specia Larus,
 sunt carnivore ce-şi fac cuibul pe uscat. Ele se hrănesc
 cu alte animale vii sau moarte. Între acestea se numără
 crabii şi peştii mai mici. Cu excepţia păsărilor din clasa
 Rissa, pescăruşii sunt în mod tipic păsări de coastă sau
 de uscat, aventurându-se rareori pe mare. Speciilor mai
 mari le trebuie patru ani pentru a ajunge la viaţa adultă,
 însă doi ani sunt de ajuns pentru pescăruşii mai mici.
 
 Pescăruşii, îndeosebi speciile mai mari, sunt păsări foarte
 inteligente şi inventive, demonstrând metode complexe de
 comunicare şi având o structură socială foarte bine
 dezvoltată. Anumite specii, de exemplu, pescăruşul-albăstrui
 (Larus argentatus), au demonstrat un comportament de
 utilizare de unelte. Multe specii de pescăruşi au învăţat
 să trăiască alături de oameni şi s-au dezvoltat în zonele
 locuite de om. Altele se bazează pe cleptoparazitism pentru
 a-şi procura hrana (iau hrana de la alte animale).
\end{document}
Latex exemplu wrapfig vspace.png

Puteţi modifica spaţierea după cum doriţi, în funcţie de aspectul imaginii rezultate. În general însă, cel mai bine este să nu adăugaţi niciun spaţiu suplimentar: lăsaţi sistemul LaTeX să facă munca de formatare!

Ca o alternativă, puteţi folosi pachetul picins în locul wrapfigure, care produce o versiune corectă fără spaţiul liber în plus şi fără vreo ajustare manuală.

Mai este o alternativă la wrapfig: pachetul floatflt [2] — pentru documentaţie vezi [3].

Subelemente flotante

O extensie utilă o constituie pachetul subfig [4], care foloseşte subelemente flotante în cadrul unui singur element flotant. Acestea dau posibilitatea autorului să realizeze subfiguri în cadrul figurilor, sau subtabele în cadrul tabelelor flotante. Subelementele flotante pot avea propriul titlu, ca şi un titlu global opţional. Un exemplu va ilustra cel mai bine utilizarea acestui pachet:

\usepackage{subfig}
...
 \begin{figure}
  \centering
  \subfloat[Un pescăruş]{\label{fig:pesc}\includegraphics[width=0.3\textwidth]{pesc}}\
  \subfloat[Un tigru]{\label{fig:tigru}\includegraphics[width=0.3\textwidth]{tigru}}\
  \subfloat[Un şoarece]{\label{fig:soar}\includegraphics[width=0.3\textwidth]{soar}}
  \caption{Imagini de animale}
  \label{fig:animale}
 \end{figure}
Latex exemplu subfig.png

Observaţi că mediul figure este setat ca de obicei. Puteţi folosi şi un mediu table pentru subtabele. Pentru fiecare subelement flotant, trebuie să utilizaţi:

\subfloat[subtitlu]{ ... figură sau tabel ... }

Dacă intenţionaţi să faceţi trimiteri la oricare dintre subelementele flotante, vedeţi unde este inserată eticheta; comanda \caption va furniza titlul global.

Pachetul subfig va aranja figurile sau tabelele unul lângă altul, cu condiţia să încapă în pagină, altfel, va muta automat o parte din aceste subelemente flotante (mobile) mai jos. Acest efect poate fi realizat explicit, punând comanda pentru linie nouă (\\) înaintea figurii pe care vreţi să o mutaţi pe linia următoare.

Spaţierea orizontală dintre figuri poate fi controlată prin mai multe comenzi, care sunt plasate între comenzile \subfloat{}:

  • Orice spaţiu liber (cum sunt spaţii, ENTER, taburi) vor da un spaţiu
  • Spaţii matematice: \qquad, \quad, \; şi \,
  • Spaţiu generic: \hspace{lungime}
  • Comanda \ (backslash urmat de spaţiu, tab sau ENTER)

Figuri de lăţimea paginii în documente cu două coloane

Dacă scrieţi un document cu două coloane (adică aţi început documentul cu ceva de genul \documentclass[twocolumn]{article}), poate aţi observat că nu puteţi folosi elemente flotante mai late decât o coloană (cu notaţiile din LaTeX: 0.5\textwidth), altfel imaginea se va suprapune peste text. Dacă trebuie neapărat să folosiţi elemente de genul acesta, singura soluţie constă în utilizarea variantelor "stelate" ale mediilor flotante: {figure*} şi {table*}. Versiunile "stelate" merg exact la fel ca cele standard, însă vor avea lăţimea paginii, deci nu veţi vedea nicio suprapunere.

Partea proastă a acestor medii este că pot fi aşezate numai la începutul paginii sau pe propria pagină. Dacă încercaţi să le specificaţi poziţia folosind modificatori de genul b sau h, aceştia vor fi ignoraţi. Adăugaţi \usepackage{stfloats} în preambul pentru a atenua această problemă, cel puţin în ce priveşte aşezarea elementelor flotante la capătul paginii, utilizând specificatorul opţional [b]. Valorile implicite sunt [tbp]. Totuşi, opţiunea h tot nu merge.

Pentru a împiedica figurile să fie amestecate cu omoloagele lor "ne-stelate", ar trebui să folosiţi pachetul fixltx2e [2] (adăugaţi \usepackage{fixltx2e} în preambul).

Elemente flotante personalizate

Dacă tabelele şi figurile nu sunt adecvate pentru nevoile voastre, aveţi întotdeauna la dispoziţie opţiunea de a crea mediile proprii! Exemple în acest sens ar fi codul sursă sau hărţile. Pentru un exemplu de program pentru elemente flotante, puteţi crea un element flotant denumit program. Pachetul float vă poate ajuta să faceţi asta. Toate comenzile pentru setarea noului element flotant trebuie plasate în preambul, şi nu în document.

  1. Adăugaţi \usepackage{float} în preambulul documentului.
  2. Declaraţi noul element flotant folosind comanda: \newfloat{tip}{aşezare}{extensie}[contor exterior], unde:
    • tip — noul nume pe care vreţi să-l daţi elementului flotant, în cazul de faţă, 'program'.
    • aşezare — t, b, p sau h (după cum a fost descris mai devreme în secţiunea Figuri), unde literele enumeră aşezările permise.
    • extensie — extensia numelui de fişier pentru un fişier auxiliar pentru lista de figuri (sau ceva asemănător). Latex scrie titlurile figurilor în acest fişier.
    • contor exterior — prezenţa acestui parametru indică faptul că un contor asociat cu noul element flotant ar trebui să depindă de contorul exterior, spre exemplu 'capitol'.
  3. Numele implicit ce apare la începutul titlului este tipul. Dacă vreţi să-l modificaţi, utilizaţi comanda \floatname{tip}{nume_element_flotant}.
  4. Puteţi schimba stilul elementului flotant cu comanda \floatstyle{stil} (Afectează toate comenzile \newfloat ulterioare, de aceea trebuie dată înain