LaTeX (carte)/Erori și avertismente
LaTeX descrie ce formatează ce măsură ce prelucrează textul, iar dacă întâlnește ceva ce nu înțelege sau nu poate să facă, va afișa un mesaj de eroare spunând ce nu e bine. Poate de asemenea să afișeze avertismente pentru probleme mai puțin grave.
Nu intrați în panică dacă vedeți mesaje de eroare: se întâmplă adesea să scrieți greșit comenzi, să uitați acolade, să scrieți un slash în loc de backslash, sau să folosiți un caracter special din greșeală. Erorile sunt ușor de observat și de corectat în editorul pe care-l folosiți, iar apoi puteți compila din nou fișierul cu LaTeX pentru a vedea dacă ați corectat totul. Câteva dintre erorile cele mai întâlnite sunt descrise în secțiunile următoare.
Mesaje de eroare
modificareFormatul unui mesaj de eroare este întotdeauna același. Mesajele de eroare încep cu un semn de exclamație la începutul liniei și fac o descriere a erorii, urmată de o altă linie ce începe cu numărul liniei unde apare eroarea în documentul sursă LaTeX. Iată un exemplu în care utilizatorul a scris greșit comanda \tableofcontents
:
! Undefined control sequence. l.6 \tableofcotnetns
Când LaTeX găsește o eroare, afișează mesajul corespunzător și se oprește. Trebuie să apăsați una din următoarele taste pentru a continua:
Tasta | Semnificație |
---|---|
x | Oprește imediat și ieși (exit) din program. |
q | Continuă fără a ține cont de erori (în liniște - quietly). |
e | Oprește programul, însă re-poziționează textul în editorul meu favorit în punctul unde a fost semnalată eroarea (Merge numai dacă folosiți un editor cu care LaTeX poate comunica). |
h | Încearcă să oferi mai multe indicații (ajutor - help). |
i | (urmat de o corecție) înseamnă introdu corectura în locul erorii și continuă (Aceasta este numai o corectură temporară pentru a continua procesarea fișierului. Tot va trebui să corectați greșeala în editor). |
r | rulează în mod non-stop. Ignoră erorile, dacă numărul lor nu trece de o limită prestabilită (100 erori). |
Unele sisteme (Emacs de exemplu) rulează LaTeX cu opțiunea "nonstop" pornită, astfel că va procesa întotdeauna textul până la sfârșitul fișierului, indiferent ce erori apar, sau până când se atinge limita implicită.
Avertismente
modificareAvertismentele nu încep cu semnul exclamării: sunt doar comentarii făcute de LaTeX despre lucruri pe care poate ar fi bine să vă uitați, cum ar fi linii prea lungi sau prea scurte (deseori cauzate de o împărțire în silabe neobișnuită, de exemplu), pagini prea lungi sau prea scurte și alte amănunte tipografice (dintre care pe cele mai multe în general le ignorați). Spre deosebire de alte sisteme, care încearcă să ascundă nepotrivirea în text (de obicei fără succes) modificând spațiile dintre cuvinte, LaTeX consideră că autorul sau editorul ar trebui să ia decizia corespunzătoare. Deși cu siguranță puteți seta parametrii LaTeX astfel încât spațierea să fie permisă în limite foarte largi ca să nu apară vreodată un avertisment legat de linii sau pagini inestetice, cel mai probabil doar veți amâna apariția problemelor până când cititorii și publicațiile vor începe să se plângă.
Exemple
modificareNumai câteva erori mai întâlnite sunt menționate aici: cele mai probabile pentru începători. Dacă găsiți alt mesaj de eroare decât cele prezentate aici și nu e clar ce aveți de făcut, cereți ajutor.
Cele mai multe mesaje de eroare sunt auto-explicative, însă rețineți că locul în care LaTeX detectează și raportează o eroare poate fi după locul în care eroarea apare de fapt în fișier. Spre exemplu, dacă uitați să închideți o acoladă ce cuprindea, să zicem, caractere italice, LaTeX nu va raporta eroarea până când nu se întâmplă alt lucru care nu s-ar putea întâmpla până la acolada de închidere (care ar putea fi la sfârșitul documentului!). Unele erori nu pot fi corectate decât de utilizatorii care pot citi și înțelege cum ar trebui să arate sau ce sens ar trebui să aibă textul scris din document.
Nou veniții ar trebui să-și amintească să se uite peste lista cu caractere speciale: un număr foarte mare de erori atunci când învățați LaTeX se datorează scrierii accidentale a unui caracter special când de fapt nu doriți asta. Această tendință dispare după câteva zile de practică, după ce v-ați obișnuit cu ele.
Prea multe acolade de închidere }
modificare! Too many }'s. l.6 \date Decembrie 2004}
Motivul pentru care LaTeX consideră că sunt prea multe acolade de închidere } aici este că lipsește acolada de deschidere după secvența de control \date
și înainte de cuvântul Decembrie, astfel că acolada de închidere apare în plus cu una (după cum și este!). De fapt, sunt și alte lucruri care pot să urmeze comenzii \date
pe lângă o dată între acolade, așa că LaTeX nu poate ghici că ați omis acolada de deschidere până când nu găsește una de închidere!
Secvență de control nedefinită
modificare! Undefined control sequence. l.6 \dtae {December 2004}
În acest exemplu, LaTeX se plânge că nu are o astfel de comandă ("control sequence" - secvență de control) numită \dtae. Evident a fost scrisă greșit, însă numai un utilizator poate vedea asta: tot ce știe LaTeX e că \dtae nu este o comandă pe care o cunoaște: este nedefinită. Greșelile de ortografie sunt cauzele cele mai întâlnite de erori. Dacă editorul pe care-l folosiți are meniuri ce vă permit inserarea de comenzi și medii LaTeX cunoscute, folosiți-le!
Nu e în modul matematic
modificare! Missing $ inserted
Un caracter ce poate să apară numai în modul matematic a fost inserat într-un text obișnuit. Fie treceți în modul matematic prin \begin{math}...\end{math}
, fie folosiți 'modul matematic rapid': \ensuremath{formule, ecuații, etc.}
. Formulele matematice mai pot fi scrise între $mate$
sau \(mate\)
, ca și pe o singură linie cu $$mate$$
sau \[mate\]
.
Argumente incomplete (Runaway argument)
modificareDacă avem o secvență de cod LaTeX de genul următor:
|
LaTeX va semnala următoarea eroare:
Runaway argument? ! Paragraph ended before \date was complete. <to be read again> \par l.8
În cazul acestei erori, acolada de închidere a fost omisă din formatul datei. Este opusul erorii cu prea multe acolade de închidere } și are ca rezultat faptul că \maketitle
încearcă să formateze titlul paginii în vreme ce LaTeX încă așteaptă informații despre dată!
Căsuță orizontală prea mică (Underfull hbox)
modificareUnderfull \hbox (badness 1394) in paragraph at lines 28--30 [][]\LY1/brm/b/n/10 Bull, RJ: \LY1/brm/m/n/10 Ac-count-ing in Busi- [94]
Acesta este un avertisment că LaTeX nu poate extinde textul (spațiile dintre cuvinte) îndeajuns ca să cuprindă linia (nu este de ajuns text pentru a umple linia), fără să extindă spațierea dincolo de limita maximă permisă în mod curent. Indicele de depășire a spațierii maxime permise (badness) (0-10,000) indică cât de severă este aceasta (aici puteți ignora un exces de 1394). Avertismentul transmite liniile fișierului pe care le formata când a găsit problema, iar numărul din paranteze drepte este numărul paginii pe care se găsesc în fișierul de ieșire liniile respective. Codul separat de bare (slash) reprezintă tipul, stilul de font și mărimea acestuia de pe acele linii. Ignorați-le pe moment.
Acest avertisment apare de asemenea când terminați un paragraf (sau altă structură) cu \\
(sfârșit de linie). Un paragraf se termină cu o linie liberă sau cu comanda \par
. Așadar, nu puneți \\
urmat de o linie liberă sau \par
. LaTeX emite un avertisment aici întrucât se așteaptă ca să urmeze o nouă linie (care face parte din același paragraf) după \\
.
Căsuță orizontală prea mare (Overfull hbox)
modificare[101] Overfull \hbox (9.11617pt too wide) in paragraph at lines 860--861 []\LY1/brm/m/n/10 Windows, \LY1/brm/m/it/10 see \LY1/brm/m/n/10 X Win-
Acest avertisment spune că există o problemă cu împărțirea în silabe sau cu alinierea stânga-dreapta: mutarea ultimului cuvânt de pe linia curentă pe linia următoare ar face spațiile de pe linia curentă mai mari decât limită curentă permisă; păstrarea cuvântului pe această linie ar face spațiile mai mici decât limita curentă permisă pentru asta, astfel încât cuvântul este lăsat pe acea linie, însă cu spațiul minim permis între cuvinte, lucru care face ca linia curentă să treacă dincolo de marginea din dreapta.
Avertismentul este dat în așa fel încât să puteți găsi ușor linia sau liniile din codul sursă ce au cauzat problema (în cazul nostru: 860-861) și să o rezolvați. Linia din acest exemplu este mai lungă cu ceva mai mult de 9pt. Locul ales pentru despărțirea în silabe care minimizează eroarea este prezentat la sfârșitul liniei (Win-). Numerele de linii și pagini sunt la fel ca mai înainte (pentru căsuța orizontală prea mică). În cazul de față, 9pt este prea mult pentru a fi ignorat (peste 3mm), fiind necesară o corecție manuală (cum ar fi o schimbare a împărțirii în silabe), sau trebuie schimbate setările de spațiere sau dimensiunea liniilor.
Dacă cuvântul "overfull" include un slash, ca în "input/output
", acesta ar trebui formatat în mod corespunzător: "input\slash output
". Utilizarea comenzii \slash
are același efect ca și folosirea caracterului "/
", cu excepția faptului că poate forma sfârșitul liniei (cuvintele care urmează vor apare la începutul liniei următoare). Caracterul "/
" se folosește în mod uzual în cadrul grupurilor unitare, ca în "lună/an
", care nu ar trebui separate pe mai multe linii.
Pachet lipsă
modificare! LaTeX Error: File `paralisy.sty' not found. Type X to quit or <RETURN> to proceed, or enter new name. (Default extension: sty) Enter file name:
Când folosiți comanda \usepackage pentru a cere sistemului LaTeX să includă un anumit pachet, va căuta un fișier cu numele specificat urmat de extensia .sty. În cazul de față, utilizatorul a scris greșit denumirea pachetului paralist, lucru care este ușor de corectat. Cu toate acestea, dacă ați scris numele corect, însă pachetul nu este instalat pe calculator, va trebui să-l luați de pe net și să-l instalați înainte de a continua. Dacă nu vreți să afectați setările globale de instalare de pe calculator, puteți să descărcați de pe Internet fișierul .sty necesar și să-l puneți în același director cu documentul pe care îl compilați.
Avertisment al pachetului Babel: Nu s-au încărcat formatele de împărțire în silabe pentru limba X
modificareDeși acesta este un avertisment al pachetului Babel și nu al sistemului LaTeX, această eroare este foarte întâlnită și poate genera unele probleme ciudate legate de împărțirea în silabe a cuvintelor în documente. Regulile greșite de împărțire în silabe pot face documentul să arate neîngrijit.
Package babel Warning: No hyphenation patterns were loaded for (babel) the language `Latin' (babel) I will use the patterns loaded for \language=0 instead.
Acest lucru se poate întâmpla după utilizarea comenzii (vezi LaTeX/Internaționalizare):
\usepackage[latin]{babel}
Soluția nu este dificilă: instalați pachetul cu limba dorită în Distribuția LaTeX. Puteți opta pentru instalarea pachetului multilingv ml.sty.