Αντιμετώπιση σφαλμάτων
Αυτό το μάθημα παρουσιάζει μερικά κοινά σφάλματα σε έγγραφα 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, με μια αλλαγή γραμμής να επισημαίνει το σημείο στο οποίο είχε φτάσει το TeX. Η μη καθορισμένη εντολή είναι η λέξη που διαβάστηκε τελευταία, η τελευταία λέξη πριν από την αλλαγή γραμμής, εδώ η
\textbold. Μετά την αλλαγή γραμμής υπάρχουν τα υπόλοιπα στοιχεία{hmmm}που ενδεχομένως έχουν διαβαστεί ως παράμετροι αλλά δεν έχουν χρησιμοποιηθεί ακόμη από το TeX. - Γενικά, μπορεί να υπάρχουν μερικές επιπλέον γραμμές σε αυτό το σημείο, που δείχνουν περισσότερα συμφραζόμενα του μηνύματος σφάλματος,
Η τελευταία γραμμή ξεκινάει με
l.ακολουθούμενη από έναν αριθμό γραμμής, και στη συνέχεια τη γραμμή στο αρχείο του κώδικα όπου ανιχνεύτηκε το σφάλμα.- Η τελευταία γραμμή είναι ένα
?. Εάν χρησιμοποιείτε το TeX διαδραστικά (σε τερματικό), είναι δυνατή η εισαγωγή εντολών στο TeX σε αυτό το σημείο, αλλά οι περισσότεροι επεξεργαστές και διαδικτυακά συστήματα εκτελούν το TeX σε μια λειτουργία που δεν σταματά σε σφάλματα αλλά τα προσπερνάει και προσπαθεί να επεξεργαστεί το υπόλοιπο του εγγράφου. Πληκτρολογώνταςsστο σημείο αυτό θα δώσετε εντολή στο TeX να συνεχίσει σε αυτή τη λειτουργία αν εργάζεστε διαδραστικά.
Σημειώστε εδώ ότι το 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.
Όμως η διόρθωση είναι απλή, δεν επιτρέπονται κενές γραμμές μέσα σε μαθηματικά περιβάλλοντα και πρέπει να διαγραφούν.
Ασκήσεις
Δοκιμάστε να διορθώσετε τα σφάλματα στα παρεχόμενα παραδείγματα.
Φτιάξτε μικρά έγγραφα με διαφορετικά σφάλματα και παρατηρήστε τη μορφή των μηνυμάτων σφάλματος.