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

LaTeX/Noțiuni elementare

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/Erori și avertismente

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}


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 coloane, trebuie să fie întotdeauna "&" 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}

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ă

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}$

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}$

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 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 \]

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 \]

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 \]

Pentru anumiți operatori de genul limitelor, indicele este așezat sub operator:

\[ \lim_{x \to \infty} \exp(-x) = 0 \]

Pentru operatorul modular sunt două comenzi: \bmod și \pmod:

\[ a \bmod 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} \]

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} \]

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} \]

Puteți folosi de asemenea comanda \choose fără pachetul amsmath:

\[ \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} \]

Notați că atunci când apare în cadrul altei fracții, sau încorporată în text, , 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} \]

Pentru fracții relativ simple, poate fi mai estetic să folosiți puteri și indici:

\[ ^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}

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[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 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 \]

\[ \int_0^\infty e^{-x}\,dx \]

Sunt multe alte comenzi "mari" ce operează într-o manieră similară:

\sum \prod \coprod
\bigoplus \bigotimes \bigodot
\bigcup \bigcap \biguplus
\bigsqcup \bigvee \bigwedge
\int \oint \iint[1]
\iiint[1] \iiiint[1] \idotsint[1]

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) \]

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 \]

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 \]

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) \]

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. \]

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( \]

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} \]

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*} \]

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} \]

Î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} \]

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:

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} \]

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 \]

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 \]

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 \]

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 \]

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{} fontul matematic implicit cele mai multe notații matematice
\mathrm{} fontul implicit sau normal, neînclinat unități de măsură, funcții cu o lungime de un cuvânt
\mathit{} font italic
\mathbf{} font aldin vectori
\mathsf{} Sans-serif
\mathtt{} ABCDEFabcdef123456 Font Monospace (cu lățime fixă)
\mathcal{} Caligrafic (numai cu litere mari) Folosit adesea pentru scheme și categorii
\mathfrak{}[5] Fraktur Font aproape standard pentru algebre Lie
\mathbb{}[4] 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) \]

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''''
\hat{a} \bar{a} \overline{aaa} \check{a} \tilde{a}
\grave{a} \acute{a} \breve{a} \vec{a}
\dot{a} \ddot{a} \dddot{a}[1] \ddddot{a}[1]
\not{a} \mathring{a} \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. \]

(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:

Dacă vreți să încercați asta în LaTeX, puteți scrie:

\[ \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 \]

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)!} \]

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)!} \]

Î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 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 Outputul este similar cu cel anterior, însă nu se gestionează automat spațiul liber; funcționează la un nivel mai scăzut.
\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 Puncte verticale
\ddots Puncte diagonale
\iddots Puncte diagonale inverse[7]
\hdotsfor{n} 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 Pentru "puncte cu virgule".
\dotsb Pentru "puncte cu operatori/relații binare".
\dotsm Pentru "puncte de înmulțire".
\dotsi Pentru "puncte cu integrale".
\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 \geq \equiv \models \prec
\succ \sim \perp \preceq \succeq
\simeq \mid \ll \gg \asymp
\parallel \subset \supset \approx \bowtie
\subseteq \supseteq \cong \sqsubset \sqsupset
\neq \smile \sqsubseteq \sqsupseteq \doteq
\frown \in \ni \propto =
\vdash \dashv < >
Litere grecești
Simbol Script
și \Alpha și \alpha
și \Beta și \beta
și \Gamma și \gamma
și \Delta și \delta
, and \Epsilon, \epsilon și \varepsilon
și \Zeta și \zeta
și \Eta și \eta
, and \Theta, \theta și \vartheta
și \Iota și \iota
și \Kappa și \kappa
și \Lambda și \lambda
și \Mu și \mu
și \Nu și \nu
și \Xi și \xi
, și \Pi, \pi and \varpi
, și \Rho, \rho și \varrho
, și \Sigma, \sigma și \varsigma
și \Tau și \tau
și \Upsilon și \upsilon
, și \Phi, \phi și \varphi
și \Chi și \chi
și \Psi și \psi
și \Omega și \omega
Operații binare
Simbol Script Simbol Script Simbol Script Simbol Script
\pm \cap \diamond \oplus
\mp \cup \bigtriangleup \ominus
\times \uplus \bigtriangledown \otimes
\div \sqcap \triangleleft \oslash
\ast \sqcup \triangleright \odot
\star \vee \bigcirc \circ
\wedge \dagger \bullet \setminus
\ddagger \cdot \wr \amalg
Notații pentru mulțimi și/sau logice
Simbol Script
\exists
\forall
\neg
și \in și \notin
\ni
\land
\lor
\rightarrow
\implies
\iff
\top
\bot
și \emptyset și \varnothing
Alte simboluri
Simbol Script
\partial
\infty
\nabla
\hbar
\Box
\aleph
\ell
\imath
\jmath
\Re
\Im


Funcții trigonometrice
Simbol Script Simbol Script Simbol Script Simbol Script
\sin \cos \tan \cot
\arcsin \arccos \arctan \arccot
\sinh \conh \tanh \coth
\sec \csc


Format:Clear

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 Eroare la citare: Invalid <ref> tag; name "mathtools" defined multiple times with different content Eroare la citare: Invalid <ref> tag; name "mathtools" defined multiple times with different content Eroare la citare: Invalid <ref> tag; name "mathtools" defined multiple times with different content Eroare la citare: Invalid <ref> tag; name "mathtools" defined multiple times with different content Eroare la citare: Invalid <ref> tag; name "mathtools" defined multiple times with different content
  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}

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 pentru ecuația 1), iar apoi cum să folosiți \eqref din pachetul amsmath (are ca rezultat 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}.


\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$.



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}

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}

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 \]

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}} \]

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} \]

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 \]

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*}

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}

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}

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}

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} \]

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:

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} \]

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*} \]

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}

\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}

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) \]

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) \]

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}

Pentru a modifica acest comportament implicit, utilizați operatorul \nolimits:

\begin{equation} \lim\nolimits_{a\to \infty} \tfrac{1}{a} \end{equation}

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}$

Î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}

deasupra și dedesubtul unui simbol:

\begin{equation} \int\limits_a^b x^2 \end{equation}

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}

este imposibil să le îmbinați cu utilizarea tipică a acestor simboluri:

\begin{equation} \sum_{n=1}\nolimits' C_n \end{equation}

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}

Este foarte flexibilă, spre example, poate pune litere în fiecare colț al simbolului sumei:

\begin{equation} \sideset{_a^b}{_c^d}\sum \end{equation}

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}

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: . Î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ă: .

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}

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}

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

LaTeX/Etichete și referințe

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: '', 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/Algoritmi și pseudocod

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}

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}

Ș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}

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ă, , face rezervarea, în cadrul documentului, a spațiului dreptunghiular pentru imagini. A doua pereche opțională, , 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}{