Μετάβαση στο περιεχόμενο
Topos Uranos

Περίληψη

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

Μαθησιακοί στόχοι

  1. Να περιγράφει τη σειρά των περιεχομένων της ενότητας και να εξηγεί τι προσφέρει κάθε μάθημα στο επόμενο.
  2. Να αναγνωρίζει τις προαπαιτούμενες γνώσεις που υποθέτει η ενότητα και να προετοιμάζει τον υπολογιστή γι’ αυτήν, ιδίως την εμφάνιση των επεκτάσεων των αρχείων.
  3. Να εξηγεί, με ένα παράδειγμα, γιατί ένα έγγραφο LaTeX μπορεί να μην παραγάγει αποτέλεσμα και γιατί το σφάλμα δεν επισημαίνεται πάντα εκεί όπου βρίσκεται.
  4. Να αναγνωρίζει σε άλλους επιστημονικούς κλάδους και στις επόμενες ενότητες τον κύκλο γραφής, μεταγλώττισης και διόρθωσης που οικοδομεί η ενότητα.

Αρχική αξιολόγηση

Πριν διατρέξουμε την ενότητα, αξίζει να μετρήσουμε το σημείο εκκίνησης. Η αξιολόγηση αυτή είναι αυτοαξιολόγηση: δεν βαθμολογείται, και μοναδικός σκοπός της είναι να προσανατολίσει τη μελέτη. Οι οκτώ ερωτήσεις της αφορούν, ανά δύο και με τη σειρά, τα τέσσερα μαθήματα της ενότητας· όποιος δεν έχει χρησιμοποιήσει ποτέ LaTeX δεν πρέπει να περιμένει να τις απαντήσει σωστά, και αυτό δεν έχει σημασία: κάθε απάντηση, σωστή ή λανθασμένη, εξηγεί το ζήτημα και κατονομάζει το μάθημα που το πραγματεύεται. Οι ίδιες δεξιότητες μετρώνται ξανά στο τέλος, στο μάθημα της σύνθεσης· επειδή αυτή είναι η πρώτη ενότητα του κύκλου, δεν υπάρχουν ερωτήσεις για προηγούμενες ενότητες.

Αρχική αξιολόγηση

Πριν ξεκινήσεις την ενότητα, μέτρησε το σημείο εκκίνησής σου. Είναι μια σύντομη αυτοαξιολόγηση: δεν βαθμολογείται και το αποτέλεσμα αποθηκεύεται μόνο στον περιηγητή σου.

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

  2. Ερώτηση 2Τι τυπώνει η γραμμή Πέρασε το 70% των φοιτητών. γραμμένη ως έχει στο σώμα ενός εγγράφου;

  3. Ερώτηση 3Ο φάκελος μιας διατριβής περιέχει τα diatrivi.tex, diatrivi.aux, diatrivi.log, diatrivi.toc, diatrivi.pdf και chartis.png, ένα σχήμα που περιλαμβάνει η διατριβή. Ένα άλλο μέλος της συγγραφικής ομάδας θα μεταγλωττίσει τη διατριβή στον δικό του υπολογιστή. Ποιο είναι το ελάχιστο που πρέπει να λάβει;

  4. Ερώτηση 4Ένας φοιτητής διορθώνει τον πηγαίο κώδικα και μεταγλωττίζει, αλλά το PDF που βλέπει στο πρόγραμμα προβολής δεν αλλάζει. Το αρχείο καταγραφής τελειώνει με τη γραμμή Fatal error occurred, no output PDF file produced!. Ποιο PDF βλέπει;

  5. Ερώτηση 5Στο σώμα ενός εγγράφου, μετά από αρκετές παραγράφους, ο συγγραφέας γράφει \usepackage{amsmath}. Τι συμβαίνει κατά τη μεταγλώττιση;

  6. Ερώτηση 6Στο σώμα ενός εγγράφου εμφανίζεται, γραμμένη ως έχει, η πρόταση Αποθηκεύστε το αρχείο ως teliki_anafora.tex. Τι συμβαίνει κατά τη μεταγλώττιση;

  7. Ερώτηση 7Το αρχείο καταγραφής μιας μεταγλώττισης περιέχει το σφάλμα ! Undefined control sequence. και, από κάτω, τη γραμμή l.7 \sectoin. Τι δείχνει;

  8. Ερώτηση 8Η μεταγλώττιση παράγει το PDF, αλλά το αρχείο καταγραφής περιέχει τη γραμμή Overfull \hbox (3.21451pt too wide) in paragraph at lines 20--24. Τι σημαίνει;

Τα περιεχόμενα της ενότητας

Η ενότητα αυτή υπηρετεί τον πρώτο από τους στόχους του κύκλου, την παραγωγή και τη μεταγλώττιση εγγράφων με διάγνωση και διόρθωση των σφαλμάτων τους, και είναι η προϋπόθεση όλων των άλλων: η στοιχειοθεσία κειμένων σε πολλές γλώσσες και γραφές, η δόμηση μεγάλων εγγράφων, η γραφή μαθηματικών και λογικής, η παρουσίαση πινάκων και σχημάτων, η διαχείριση της βιβλιογραφίας και η επιλογή της κατάλληλης κλάσης για κάθε ακαδημαϊκό είδος προϋποθέτουν ότι ο κύκλος γραφής, μεταγλώττισης και διόρθωσης δεν παρουσιάζει πια δυσκολία. Στόχος της είναι όποιος δεν έχει χρησιμοποιήσει ποτέ LaTeX να μπορεί, όταν την ολοκληρώσει, να γράψει ένα σύντομο έγγραφο από ένα κενό αρχείο, να το μεταγλωττίσει με το LuaLaTeX στο Texmaker ή στο Overleaf και, όταν δεν μεταγλωττίζεται, να βρει και να διορθώσει μόνος του την αιτία. Τα τέσσερα μαθήματά της σχηματίζουν μια αλυσίδα όπου το καθένα στηρίζεται στα προηγούμενα.

  1. Τι είναι το LaTeX. Εξηγεί την τυπογραφική στοιχειοθεσία, συγκρίνει τη γλώσσα σήμανσης με τον επεξεργαστή κειμένου, αφηγείται την προέλευση του TeX και του LaTeX και την αρχή τους να χωρίζουν το περιεχόμενο από τη μορφή, αιτιολογεί την επιλογή του LuaLaTeX και δείχνει πώς ένας πηγαίος κώδικας γίνεται PDF. Καθορίζει το λεξιλόγιο όλης της ενότητας: πηγαίος κώδικας, μηχανή, μεταγλώττιση, προοίμιο, σώμα και αρχείο καταγραφής.
  2. Το περιβάλλον εργασίας. Εγκαθιστά όσα περιέγραψε το πρώτο μάθημα: μια διανομή του TeX, με τον διαχειριστή πακέτων της, και τον επεξεργαστή Texmaker, ρυθμισμένο να μεταγλωττίζει με το LuaLaTeX και να αποθηκεύει σε UTF-8· παρουσιάζει το Overleaf ως εναλλακτική λύση στο πρόγραμμα περιήγησης και εξηγεί ποια αρχεία αφήνει η μεταγλώττιση και ποια διατηρούνται. Τελειώνει με δύο δοκιμαστικά έγγραφα που επαληθεύουν την εγκατάσταση.
  3. Ανατομία ενός εγγράφου. Αναλύει τον πηγαίο κώδικα στα κομμάτια του: το προοίμιο και το σώμα, τις εντολές με τα ορίσματά τους, τις ομάδες που περιορίζουν την εμβέλεια των δηλώσεων, τα περιβάλλοντα, τους δέκα δεσμευμένους χαρακτήρες, τα σχόλια, τα πακέτα και την κλάση. Χάρη σε αυτό, το ελάχιστο έγγραφο του πρώτου μαθήματος παύει να είναι συνταγή και γίνεται μια δομή που κατανοείται κομμάτι προς κομμάτι.
  4. Μεταγλώττιση και διόρθωση σφαλμάτων. Διδάσκει την ανάγνωση του αρχείου καταγραφής: τη διάκριση των σφαλμάτων από τις προειδοποιήσεις, τον εντοπισμό κάθε σφάλματος στον πηγαίο κώδικα, την αναγνώριση των συχνότερων μηνυμάτων και την απομόνωση της αιτίας όταν το μήνυμα δεν αρκεί. Συνενώνει τα προηγούμενα, επειδή σχεδόν κάθε σφάλμα είναι παράβαση ενός κανόνα της ανατομίας του πηγαίου κώδικα, και η διάγνωσή του στηρίζεται στο περιβάλλον εργασίας.

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

Τι θεωρείται γνωστό

Η ενότητα ξεκινά σχεδόν από το μηδέν. Δεν υποθέτει ότι έχετε χρησιμοποιήσει LaTeX, ούτε ότι ξέρετε προγραμματισμό, ούτε γνώσεις μαθηματικών· ούτε υποθέτει γνώση αγγλικών, αν και τα μηνύματα της μηχανής είναι σε αυτή τη γλώσσα, επειδή ο κύκλος εξηγεί καθένα από όσα παρουσιάζει. Υποθέτει μόνο τη συνήθη χρήση ενός υπολογιστή: τη δημιουργία ενός φακέλου, την αποθήκευση ενός αρχείου με ορισμένο όνομα και σε ορισμένο φάκελο, την ανεύρεσή του αργότερα, την αντιγραφή, μετακίνηση και διαγραφή αρχείων και την εγκατάσταση ενός προγράμματος, ή αλλιώς τη διάθεση ενός προγράμματος περιήγησης και ενός λογαριασμού στο Overleaf.

Από αυτό έπεται μία μόνο προκαταρκτική προετοιμασία, που καλό είναι να γίνει πριν από το μάθημα για το περιβάλλον εργασίας. Ένα όνομα αρχείου αποτελείται από μια βάση και μια επέκταση, το τμήμα μετά την τελευταία τελεία: στο anafora.tex, βάση είναι το anafora και επέκταση το tex. Όμως η Εξερεύνηση αρχείων των Windows και το Finder του macOS κρύβουν από προεπιλογή τις γνωστές επεκτάσεις, έτσι ώστε τα anafora.tex και anafora.pdf να εμφανίζονται και τα δύο ως anafora, και τα βοηθητικά αρχεία της μεταγλώττισης, που διακρίνονται μόνο από την επέκτασή τους, να γίνονται αδιάκριτα. Επομένως, καλό είναι να ενεργοποιηθεί η επιλογή που εμφανίζει τις επεκτάσεις: στα Windows, στο μενού Προβολή της Εξερεύνησης αρχείων· στο macOS, στις ρυθμίσεις για προχωρημένους του Finder. Στο Linux, οι διαχειριστές αρχείων τις εμφανίζουν από προεπιλογή.

Το πρόβλημα που λύνει η ενότητα

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

ΠαράδειγμαΈνα άγκιστρο που λείπει

Ο πηγαίος κώδικας που ακολουθεί είναι ένα πλήρες έγγραφο: δηλώνει την κλάση, φορτώνει τα πακέτα, αποθηκεύει τον τίτλο, τον συγγραφέα και μια κενή ημερομηνία, και στοιχειοθετεί δύο ενότητες· η γραμμή \babelfont{rm}{Noto Serif} επιλέγει μια γραμματοσειρά με ελληνικά γράμματα, που η προεπιλεγμένη (Latin Modern) δεν περιέχει. Μεταγλωττισμένος με το LuaLaTeX, παράγει αυτό το αποτέλεσμα.

Κώδικας LaTeX
\documentclass{article}\usepackage{fontspec}\usepackage[greek]{babel}\babelfont{rm}{Noto Serif}\title{Έκθεση ανάγνωσης}\author{Ελένη Παπαδοπούλου}\date{}​\begin{document}\maketitle\section{Το ερώτημα}Το κείμενο εξετάζει μια \emph{υπόθεση} για το 40\% των περιπτώσεων.​\section{Η απάντηση}Η απάντηση στηρίζεται στην προηγούμενη ενότητα.\end{document}
Αποτέλεσμα
Αποτέλεσμα

Αν στη δωδέκατη γραμμή παραλειφθεί το άγκιστρο που κλείνει το όρισμα της \emph, η μηχανή δεν παράγει κανένα PDF, και το αρχείο καταγραφής περιέχει, μεταξύ άλλων, αυτές τις γραμμές.

Αρχείο καταγραφής μεταγλώττισης
Runaway argument?{υπόθεση για το 40\% των περιπτώσεων. \par \ETC.! File ended while scanning use of \emph ....!  ==> Fatal error occurred, no output PDF file produced!

Το σφάλμα δεν επισημαίνεται στη δωδέκατη γραμμή, αλλά στο τέλος του αρχείου: η μηχανή συνέχισε να διαβάζει το όρισμα της \emph μέσα από την παράγραφο, την επόμενη ενότητα και το \end{document}, ώσπου τελείωσε το αρχείο. Όμως το αρχείο καταγραφής δίνει το στοιχείο που λείπει: η γραμμή που ακολουθεί το «Runaway argument?» αναπαράγει το ανεξέλεγκτο όρισμα από την αρχή του, και η αρχή αυτή, το άγκιστρο πριν από την «υπόθεση», είναι ακριβώς η θέση του σφάλματος. Αυτή την ανάγνωση του αρχείου καταγραφής διδάσκει το μάθημα για τη μεταγλώττιση και τη διόρθωση σφαλμάτων· γιατί ένα άγκιστρο που δεν έκλεισε παρασύρει ό,τι ακολουθεί το διδάσκει το μάθημα για την ανατομία ενός εγγράφου.

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

Η ενότητα στους επιστημονικούς κλάδους

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

Γι’ αυτό, όσα διδάσκει η ενότητα χρησιμοποιούνται στους άλλους κύκλους μαθημάτων του ιστότοπου. Οι εργασίες και οι σημειώσεις της Αριστοτελικής λογικής ή των Βασικών αρχών της μηχανικής μπορούν να γράφονται σε LaTeX από την πρώτη εβδομάδα· στην Ανάλυση δεδομένων με R, τα αποτελέσματα μιας ανάλυσης ενσωματώνονται σε ένα στοιχειοθετημένο έγγραφο· και στον Προγραμματισμό σε C++ I ο κύκλος είναι κατ’ ουσίαν ο ίδιος: γράφεται ένας πηγαίος κώδικας, ένας μεταγλωττιστής τον διαβάζει, και τα μηνύματά του, που παραπέμπουν σε αριθμούς γραμμών, διαβάζονται με τη μέθοδο που διδάσκει αυτή η ενότητα.

Πού οδηγεί

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