Pamoka 15

Klaidų taisymas

Ši pamoka supažindina su keletu dažnų klaidų, pasitaikančių LaTeX dokumentuose, ką reiškia klaidų pranešimai ir kaip su jais dirbti.

Skirtingai nuo įprastų dokumentų ruošimo sistemų, LaTeX turi redagavimo/paleidimo/peržiūros ciklą, labiau būdingą darbui su programavimo kalbų kompiliatoriais, ir, kaip ir programavime, vartotojai gali klysti koduodami, todėl jiems reikia žinoti, ką reiškia sistemos klaidų pranešimai.

Dažnos klaidos

Šiame puslapyje pateikiame kelių įprastų klaidų pavyzdžius. Prie kiekvieno pavyzdžio aptariame klaidos pranešimo formą.

Bus naudinga ne tik išbandyti pavyzdžius, bet ir bandyti taisyti dokumentus, panaudojant redagavimo galimybę, ir taip pasitikrinti savo sugebėjimus ištaisyti klaidas.

pdflatex not found

Dažna pirmoji klaida, kurią žmonės mato paleisdami:

'pdflatex' is not recognized as an internal or external command,
operable program or batch file.

Windows sistemoje ar

bash: pdflatex: command not found

Linux sistemoje.

Tai ne TeX, bet operacinės sistemos pranešimas, sakantis, kad TeX yra neįdiegtas arba nerastas. Dažna klaida yra įdiegti redaktorius, pvz., TeXworks ar TeXShop, neįdiegus TeX sistemos, tokios kaip TeX Live ar MiKTeX.

TeX klaidų pranešimų anatomija

\documentclass{article}
\usepackage[T1]{fontenc}

\newcommand\mycommand{\textbold{hmmm}}

\begin{document}

My command is used here \mycommand.

\end{document}

Šis pavyzdys sukuria kelių eilučių pranešimą .log faile (žurnale):

! Undefined control sequence.
\mycommand ->\textbold 
                       {hmmm}
l.8 My command is used here \mycommand
                                      .
? 

Pastebėkime, kad TeX nemato klaidos apibrėžimo vietoje; ir iš tikrųjų, jei \mycommand yra apibrėžta, bet nepanaudota, jokia klaida nebus aptikta. Taigi, nors apie klaidą pranešama 8-toje eilutėje, „tikroji“ klaida yra apibrėžime iš 4-tos eilutės, todėl svarbu pamatyti visą klaidos pranešimą.

Turėkite omenyje, kad kai kurie redaktoriai klaidų žurnale rodo tik vieną santraukos eilutę. Tai gali klaidinti, ypač jei ji atrodo kaip

line 8: undefined command: ...\mycommand

iš ko galima daryti išvadą, kad \mycommand neapibrėžta.

Nesuporuoti skliaustai

\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage[leqno}{amsmath}

\begin{document}

\end{document}

Čia klaida yra nesuporuotas }, panaudotas neprivalomam argumentui nutraukti. Šis skliaustas sutrikdo LaTeX parinkčių analizę, ir jūs gaunate vidinės klaidos ne per daug naudingą pranešimą:

! Argument of \@fileswith@ptions has an extra }.

Nors klaidos aprašymas nenaudingas, kitos dvi eilutės tiksliai parodo klaidos vietą eilutės lūžiu, kuris žymi vietą iki kurios TeX perskaitė įvestį:

l.4 \usepackage[leqno}
                      {amsmath}

Trūkstami failai

\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage{amsmathz}

\begin{document}

\end{document}

Šis pavyzdys sukelia klaidą

! LaTeX Error: File `amsmathz.sty' not found.

Pastaba: tokią klaidą gali sukelti dvi skirtingos priežastys: paprasta spausdinimo klaida, kaip čia, kuri gali būti ištaisyta, pakeičiant paketo pavadinimą, arba tai, kad failo tikrai nėra ir jį reikia įdiegti naudojamoje sistemoje.

Tuščios eilutės išskirtoje matematikoje

\documentclass{article}
\usepackage[T1]{fontenc}

\begin{document}

Some text
\begin{equation}

  1=2

\end{equation}

\end{document}

Šis pavyzdys sukelia kiek paslaptingą klaidą:

! Missing $ inserted.

nors pataisymas yra paprastas: tuščios eilutės neleidžiamos matematinėse aplinkose ir turėtų būti ištrintos.

Pratimai

Bandykite ištaisyti pateiktų pavyzdžių klaidas.

Sukurkite mažus dokumentus su skirtingomis klaidomis ir atkreipkite dėmesį į klaidų pranešimų formą.