> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/el/se-vathos-arthra/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md).

# Πώς λειτουργεί το \expandafter: Το TeX χρησιμοποιεί προσωρινούς καταλόγους διακριτικών

[Μέρος 1](/latex/el/se-vathos-arthra/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md) [Μέρος 2](/latex/el/se-vathos-arthra/22-how-does-expandafter-work-the-meaning-of-expansion.md) [Μέρος 3](/latex/el/se-vathos-arthra/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md) [Μέρος 4](/latex/el/se-vathos-arthra/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md) [Μέρος 5](/latex/el/se-vathos-arthra/17-how-does-expandafter-work-a-detailed-macro-case-study.md) [Μέρος 6](/latex/el/se-vathos-arthra/18-how-does-expandafter-work-a-detailed-study-of-consecutive-expandafter-commands.md)

## Επέκταση και εσωτερικές λίστες διακριτικών

Μέχρι στιγμής έχουμε εξερευνήσει τα διακριτικά, τις λίστες διακριτικών και τις βασικές αρχές πίσω από την έννοια της επέκτασης του TeX. Σε αυτή την ενότητα θα χρησιμοποιήσουμε την πρωτογενή εντολή TeX `\jobname` για να εισαγάγουμε μια σημαντική πτυχή της επεξεργασίας επέκτασης: τη χρήση από το TeX *προσωρινών λιστών διακριτικών*—οι οποίες αποτελούν μια *θεμελιώδη* πλευρά του πώς `\expandafter` λειτουργεί, όπως θα δούμε αργότερα σε αυτή τη σειρά άρθρων.

`\jobname` είναι μια επεκτάσιμη πρωτογενής εντολή του TeX, της οποίας η επέκταση δημιουργεί μια σειρά από διακριτικά χαρακτήρων που αντιπροσωπεύουν το όνομα του κύριου αρχείου εισόδου `.tex` αρχείου. Για παράδειγμα, ας υποθέσουμε ότι είχαμε το ακόλουθο κείμενο ως μέρος ενός `.tex` αρχείο με όνομα `mycode.tex`:

```
    Το όνομα του αρχείου μου είναι \jobname .tex %Σημειώστε το κενό μετά το \jobname
```

Αυτό θα στοιχειοθετούνταν ως

```
    Το όνομα του αρχείου μου είναι mycode.tex
```

Όταν χρησιμοποιούμε την `\jobname` εντολή, οι παραγόμενοι στοιχειοθετημένοι χαρακτήρες δεν διαβάζονται από το φυσικό σας `.tex` αρχείο, οπότε από πού προέρχονται: πού αποθηκεύει/διαβάζει το TeX αυτά τα διακριτικά; Αόρατα για τον χρήστη (δηλαδή, βαθιά μέσα στο ίδιο το TeX) η διαδικασία επέκτασης για το `\jobname` δημιουργεί μια προσωρινή λίστα διακριτικών κατασκευασμένη από τη σειρά χαρακτήρων-διακριτικών που αντιπροσωπεύουν το όνομα του αρχείου σας. Μόλις το `\jobname` έχει δημιουργήσει αυτή τη λίστα διακριτικών, το TeX «στρέφει προσωρινά το βλέμμα του» μακριά από την τρέχουσα πηγή εισόδου του (εδώ, το `.tex` αρχείο) για να διαβάσει διακριτικά (χαρακτήρες-διακριτικά) από εκείνη την προσωρινή λίστα διακριτικών. Όταν το TeX χρειάζεται ένα ακόμη διακριτικό εισόδου, θα διαβάσει το επόμενο διακριτικό του από εκείνη την εσωτερική λίστα και συνεχίζει να το κάνει μέχρι να φτάσει στο τέλος της λίστας· σε εκείνο το σημείο το TeX συνεχίζει να διαβάζει διακριτικά από την προηγούμενη πηγή εισόδου του η οποία, εδώ, θα ήταν κείμενο που διαβάστηκε από το `.tex` αρχείο εισόδου.

Όπως φαίνεται στο ακόλουθο διάγραμμα, το TeX συνεχίζει να διαβάζει το `.tex` αρχείο εισόδου στην ακριβή θέση όπου σταμάτησε μετά την επεξεργασία του `\jobname`—αφού διάβασε τον χαρακτήρα κενού αλλά πριν διαβάσει τον χαρακτήρα «.» . Η τελεία (.) στην πράξη περιμένει να διαβαστεί από το buffer εισόδου του TeX—μια μικρή περιοχή της μνήμης του TeX σχεδιασμένη να συγκρατεί μια γραμμή κειμένου που διαβάστηκε από το `.tex` αρχείο—το TeX διαβάζει και επεξεργάζεται το `.tex` αρχείο σας μία γραμμή τη φορά, δεν διαβάζει ολόκληρο το αρχείο στη μνήμη.

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

![Πώς το TeX επεκτείνει το \jobname](/files/e457747b9177dd07dec84d3a953b0a0c09c984d8)

Αναφερόμενοι ξανά στη συζήτησή μας για την επέκταση, μπορούμε να παρατηρήσουμε ότι η επέκταση του `\jobname` είχε ως αποτέλεσμα το `\jobname` διακριτικό της εντολής να *αφαιρεθεί* αφαιρεθεί από την είσοδο και *αντικατασταθεί* να αντικατασταθεί με διακριτικά που προκύπτουν από την επέκταση: η προσωρινή λίστα διακριτικών που δημιουργήθηκε για να κρατήσει το όνομα του `.tex` αρχείο.

Οι επεκτάσιμες εντολές (όπως `\jobname`) δεν είναι τα μόνα πρωτογενή στοιχεία του TeX που «κρυφά» δημιουργούν και χρησιμοποιούν λίστες διακριτικών για να επιτύχουν το αποτέλεσμά τους. Για παράδειγμα, οι εντολές `\uppercase` και `\lowercase` δημιουργούν και οι δύο εσωτερικές λίστες διακριτικών για να αλλάξουν την πεζοκεφαλαία των ορισμάτων τους. Μόλις ολοκληρωθεί η εργασία αλλαγής πεζών/κεφαλαίων, το TeX στρέφεται να διαβάσει χαρακτήρες-διακριτικά από τις λίστες διακριτικών που δημιουργήθηκαν από αυτές τις εντολές. Οι λίστες διακριτικών είναι ο μόνος μηχανισμός «αποθήκευσης δεδομένων διακριτικών» του TeX—πέρα από την εγγραφή δεδομένων σε ένα φυσικό αρχείο δίσκου.

### Πηγές διακριτικών: το TeX είναι μάστορας στο ζογκλερικό

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

Ας υποθέσουμε ότι θέλουμε μια απλή μακροεντολή που στοιχειοθετεί το όνομα του `.tex` αρχείο:

```
    \def\myfile{Το όνομα του αρχείου μου είναι \jobname .tex}
```

Αργότερα, σε κάποιο σημείο του `.tex` αρχείου μας καλούμε τη μακροεντολή `\myfile`: προσωρινά, το TeX μεταβαίνει από τη δημιουργία/ανάγνωση διακριτικών μέσω του κειμένου στο κείμενό σας (`.tex`) αρχείο στην ανάγνωση διακριτικών από τον `\myfile` ορισμό (λίστα διακριτικών) που είναι αποθηκευμένος στη μνήμη του. Όταν το TeX εκτελεί τη `\myfile` μακροεντολή (επεξεργάζεται τα διακριτικά της) θα εντοπίσει ένα διακριτικό που αντιπροσωπεύει την `\jobname` εντολή, της οποίας η επέκταση δημιουργεί μια ακόμη, προσωρινή, λίστα διακριτικών από την οποία το TeX πρέπει να διαβάσει διακριτικά. Ακόμη και σε αυτό το απλό σενάριο το TeX πρέπει να διαχειριστεί τρεις πηγές εισόδου:

1. το `.tex` αρχείο κειμένου που περιέχει τη `\myfile` μακροεντολή·
2. τη λίστα διακριτικών που αποθηκεύει τον ορισμό της `\myfile` μακροεντολή·
3. μια λίστα διακριτικών που δημιουργήθηκε από την `\jobname` εντολή μέσα στη `\myfile` μακροεντολή.

Καθώς το TeX επεξεργάζεται ένα έγγραφο, αλλάζει συνεχώς μεταξύ πηγών εισόδου: φυσικών αρχείων και λιστών διακριτικών, οπότε πώς το κρατάει αυτό το TeX; Η απάντηση είναι ότι, εσωτερικά, οι μηχανές TeX διατηρούν μια λεγόμενη [στοίβα εισόδου](https://en.wikipedia.org/wiki/Stack_\(abstract_data_type\)) η οποία λειτουργεί σαν ένα είδος «μνήμης» που επιτρέπει στο TeX να θυμάται τι έκανε (από πού διάβαζε) καθώς εναλλάσσεται μεταξύ πηγών εισόδου.

Χωρίς να μπούμε υπερβολικά στις λεπτομέρειες, ο εσωτερικός κώδικας μέσα στις μηχανές TeX χρησιμοποιεί μια καθολική μεταβλητή που ονομάζεται `curinput` (τρέχουσα είσοδος) η οποία, μεταξύ άλλων, λέει στο TeX αν αυτή τη στιγμή διαβάζει από ένα φυσικό αρχείο ή από μια λίστα διακριτικών. `curinput` επίσης δείχνει στο TeX τη θέση (στην τρέχουσα λίστα διακριτικών ή στο buffer κειμένου της) από όπου θα πάρει το επόμενο διακριτικό. Αν το TeX διαβάζει από μια λίστα διακριτικών `curinput` επίσης καταγράφει ποιος τύπος λίστας διακριτικών επεξεργάζεται—π.χ. τη λίστα διακριτικών που αποθηκεύεται ως μακροεντολή ή αν εκείνα τα διακριτικά προέκυψαν από διαφορετική πηγή.

Όταν χρειάζεται, η `curinput` μεταβλητή θα αλλάξει ώστε να δείχνει σε μια νέα πηγή εισόδου και η τρέχουσα «κατάσταση εισόδου» του TeX (πηγή και θέση) θα αποθηκευτεί στη στοίβα εισόδου ώστε το TeX να μπορεί αργότερα να επιστρέψει σε εκείνη την ακριβή θέση (θέση σε ένα `.tex` αρχείο ή το επόμενο διακριτικό σε μια λίστα διακριτικών). Μόλις εξαντληθεί εκείνη η νέα πηγή εισόδου (π.χ. δεν υπάρχουν άλλα διακριτικά στη λίστα διακριτικών ή φτάσει το τέλος ενός αρχείου) αφαιρείται από τη στοίβα και το `curinput` ενημερώνεται ώστε να διασφαλίσει ότι το TeX επιστρέφει στη λήψη διακριτικών από την προηγούμενη πηγή.

## Εμβαθύνοντας περισσότερο (προαιρετική ανάγνωση)

Οι ακόλουθες ενότητες παρέχουν πρόσθετες πληροφορίες υπόβαθρου για τους αναγνώστες που απολαμβάνουν τις λεπτομέρειες.

### Πραγματικές λίστες διακριτικών

Το ακόλουθο γραφικό δημιουργήθηκε χρησιμοποιώντας την προσαρμοσμένη έκδοση του Overleaf του TeX του Knuth, η οποία παρέχει πρόσβαση στα εσωτερικά δεδομένα και τις δομές δεδομένων του TeX. Αυτή η απεικόνιση μιας λίστας διακριτικών βασίζεται στην απλοποιημένη έκδοση που παρουσιάστηκε παραπάνω και περιλαμβάνει πρόσθετα δεδομένα, όπως την εμφάνιση των χαρακτήρων που δημιουργούνται από `\jobname` έχουν κωδικό κατηγορίας 12, όχι τον συνήθη κωδικό κατηγορίας 11. Σε αυτό το διάγραμμα ο όρος «κόμβος» είναι απλώς το όνομα που δίνεται σε μια μονάδα μνήμης που χρησιμοποιείται από το TeX.

![Μέσα σε μια λίστα διακριτικών του TeX](/files/24426cb7c3b855401930ea7a9a2793bc8e0c4ca6)

### Πώς το TeX διαβάζει και επεξεργάζεται το \jobname

Επίσης, για λόγους πληρότητας, εδώ είναι μια επισκόπηση των «νοητικών διεργασιών» του TeX καθώς ανιχνεύει `\jobname` στο αρχείο εισόδου μας `.tex` αρχείο. Σε αυτό το γραφικό βλέπουμε πώς το TeX ανιχνεύει έναν χαρακτήρα διαφυγής (`\` με κωδικό κατηγορίας 0), επεξεργάζεται τη συμβολοσειρά χαρακτήρων `jobname`, δημιουργεί ένα διακριτικό και αναζητά τη σημασία της `\jobname` εντολής, όπου το TeX θα ανακαλύψει ότι έχει έναν κωδικό εντολής > 100, πράγμα που δείχνει ότι είναι επεκτάσιμη εντολή.

![Πώς το TeX σαρώνει και επεξεργάζεται το \jobname](/files/dcb8a637047a93f30b361c490ed07f01158ffdf9)

[Μέρος 1](/latex/el/se-vathos-arthra/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md) [Μέρος 2](/latex/el/se-vathos-arthra/22-how-does-expandafter-work-the-meaning-of-expansion.md) [Μέρος 3](/latex/el/se-vathos-arthra/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md) [Μέρος 4](/latex/el/se-vathos-arthra/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md) [Μέρος 5](/latex/el/se-vathos-arthra/17-how-does-expandafter-work-a-detailed-macro-case-study.md) [Μέρος 6](/latex/el/se-vathos-arthra/18-how-does-expandafter-work-a-detailed-study-of-consecutive-expandafter-commands.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/el/se-vathos-arthra/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
