Μάθημα 15

Αντιμετώπιση σφαλμάτων

Αυτό το μάθημα παρουσιάζει μερικά κοινά σφάλματα σε έγγραφα LaTeX, τι σημαίνουν και πώς να τα ξεπεράσετε.

Σε αντίθεση με έναν τυπικό επεξεργαστή κειμένου, το LaTeX απαιτεί μία ακολουθία σταδίων Επεξεργασίας/Τρεξίματος/Προβολής, η οποία είναι πιο κοντά στη διαδικασία που ακολουθείται με τους μεταγλωττιστές γλωσσών προγραμματισμού. Όπως και στον προγραμματισμό, οι χρήστες μπορεί να κάνουν σφάλματα στην είσοδό τους και έτσι χρειάζεται να ασχοληθούν με τα μηνύματα σφάλματος που αναφέρονται από το σύστημα.

Κοινά σφάλματα

Αυτή η σελίδα δίνει παραδείγματα αρκετών κοινών σφαλμάτων. Κάθε παράδειγμα σφάλματος συνοδεύεται από συζήτηση σχετικά με τη μορφή του μηνύματος σφάλματος.

Θα είναι διδακτικό να δοκιμάσετε τα παραδείγματα αλλά και να χρησιμοποιήσετε τις δυνατότητες επεξεργασίας για να προσπαθήσετε να διορθώσετε τα έγγραφα και να δοκιμάσετε ότι μπορείτε να επιλύσετε τα σφάλματα.

Το pdflatex δεν βρέθηκε

Ένα κοινό πρώτο σφάλμα που βλέπουν οι χρήστες όταν ξεκινούν είναι:

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

σε Windows, ή

bash: pdflatex: command not found

σε Linux.

Αυτό δεν είναι σφάλμα του TeX αλλά του λειτουργικού συστήματος, και λέει ότι το TeX δεν είναι εγκατεστημένο ή δεν βρέθηκε. Ένα κοινό λάθος είναι να εγκαταστήσετε έναν επεξεργαστή όπως το TeXworks ή το TeXShop αλλά χωρίς να εγκαταστήσετε ένα σύστημα TeX όπως το TeX Live ή το MiKTeX.

Ανατομία ενός μηνύματος σφάλματος του TeX

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

\newcommand\mycommand{\textbold{hmmm}}

\begin{document}

My command is used here \mycommand.

\end{document}

Αυτό παράγει ένα μήνυμα πολλαπλών γραμμών στο αρχείο καταγραφής.

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

Σημειώστε εδώ ότι το TeX δεν βλέπει το σφάλμα στο σημείο που γίνεται ο ορισμός, και στην πραγματικότητα, αν το \mycommand είναι ορισμένο αλλά δεν χρησιμοποιηθεί, δεν θα προκύψει κανένα σφάλμα. Έτσι, αν και το σφάλμα αναφέρεται στη γραμμή 8, το «πραγματικό» σφάλμα είναι στον ορισμό στη γραμμή 4, οπότε είναι σημαντικό να δείτε ολόκληρο το μήνυμα σφάλματος.

Προσοχή: ορισμένοι επεξεργαστές εμφανίζουν «περιλήψεις» μίας γραμμής του αρχείου καταγραφής σφαλμάτων. Αυτό μπορεί να είναι ιδιαίτερα παραπλανητικό αν εμφανίζεται ως

line 8: undefined command: ...\mycommand

καθώς φαίνεται σαν η εντολή \mycommand να μην είναι ορισμένη.

Άγκιστρα που δεν ταιριάζουν

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

\usepackage[leqno}{amsmath}

\begin{document}

\end{document}

Εδώ το σφάλμα είναι ένα } που χρησιμοποιείται για να κλείσει το προαιρετικό όρισμα, και το οποίο δεν έχει αντίστοιχο {. Αυτό οδηγεί σε αποτυχία την ανάλυση του κώδικα από το LaTeX και λαμβάνετε ένα εσωτερικό και όχι πολύ χρήσιμο σφάλμα:

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

Αν και η περιγραφή του σφάλματος δεν είναι χρήσιμη, οι επόμενες δύο γραμμές δείχνουν με ακρίβεια τη θέση του σφάλματος με τη χρήση της αλλαγής γραμμής που δείχνει πόσο είχε διαβάσει το TeX:

l.4 \usepackage[leqno}
                      {amsmath}

Αρχεία που λείπουν

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

\usepackage{amsmathz}

\begin{document}

\end{document}

Αυτό προκαλεί το σφάλμα

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

Σημείωση: το ίδιο σφάλμα μπορεί να προκληθεί από δύο διαφορετικές αιτίες: από ένα απλό ορθογραφικό λάθος, όπως εδώ, το οποίο μπορεί να διορθωθεί εισάγοντας το σωστό όνομα του πακέτου, ή επειδή το αρχείο όντως δεν υπάρχει και πρέπει να εγκατασταθεί στο σύστημά μας.

Κενές γραμμές σε μαθηματικά περιβάλλοντα

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

\begin{document}

Some text
\begin{equation}

  1=2

\end{equation}

\end{document}

Αυτό παράγει το ελαφρώς παράξενο σφάλμα

! Missing $ inserted.

Όμως η διόρθωση είναι απλή, δεν επιτρέπονται κενές γραμμές μέσα σε μαθηματικά περιβάλλοντα και πρέπει να διαγραφούν.

Ασκήσεις

Δοκιμάστε να διορθώσετε τα σφάλματα στα παρεχόμενα παραδείγματα.

Φτιάξτε μικρά έγγραφα με διαφορετικά σφάλματα και παρατηρήστε τη μορφή των μηνυμάτων σφάλματος.