> 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/19-how-does-expandafter-work-an-introduction-to-tex-tokens.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)

## Υπόβαθρο για \expandafter: Τοκενς TeX και λίστες τοκενς

Ως πρώτο βήμα προς την κατανόηση του πώς `\expandafter` λειτουργεί πραγματικά, θα ρίξουμε μια ματιά σε δύο συστατικά του TeX που είναι θεμελιώδη για τη λειτουργία του `\expandafter`: τα τοκενς TeX (ακέραιοι αριθμοί) και οι λίστες τοκενς (λίστες ακεραίων). Οι αναγνώστες που θα ήθελαν να εξερευνήσουν αυτά τα θέματα πολύ πιο αναλυτικά ίσως ενδιαφέρονται να διαβάσουν τα ακόλουθα άρθρα που δημοσιεύτηκαν από το Overleaf:

* [Τι είναι ένα token TeX;](/latex/el/se-vathos-arthra/53-what-is-a-tex-token.md)
* [Τι είναι μια λίστα token TeX;](/latex/el/se-vathos-arthra/54-what-is-a-tex-token-list.md)-[Πώς λειτουργούν πραγματικά οι μακροεντολές TeX;](/latex/el/perissotera-themata/01-a-six-part-series-how-do-tex-macros-actually-work.md)

### Από πού προήλθαν τα δεδομένα των token;

Σε όλο αυτό το άρθρο χρησιμοποιούμε πραγματικές τιμές token που υπολογίστηκαν από το TeX—δεδομένα που συνήθως δεν είναι προσβάσιμα στους χρήστες. Για τους αναγνώστες που είναι περίεργοι να μάθουν πώς αποκτήθηκαν αυτά τα δεδομένα τιμών token, το Overleaf διαθέτει προσαρμοσμένες εκδόσεις αρκετών μηχανών TeX, τις οποίες χρησιμοποιούμε για έρευνα. Αυτές οι μηχανές έχουν τροποποιηθεί ώστε να εξάγουν πληροφορίες σχετικά με τις εσωτερικές διαδικασίες επεξεργασίας του TeX—βοηθώντας να παρασχεθεί επιπλέον υπόβαθρο για ορισμένα από τα άρθρα που παράγουμε. Δείχνοντας/συζητώντας αριθμητικές τιμές token, στόχος μας είναι να συμπεριλάβουμε λεπτομέρειες που, ελπίζουμε, βοηθούν τους αναγνώστες να κατανοήσουν καλύτερα τα «token TeX», κάνοντας αυτή τη σημαντική έννοια να φαίνεται λίγο λιγότερο αδιαφανής.

## Τα token του TeX 101 (και έννοιες της επέκτασης)

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

## Πώς το TeX υπολογίζει τις τιμές token

Εδώ εξετάζουμε υπολογισμούς token που χρησιμοποιούνται στο αρχικό TeX του Knuth, στο e-TeX και στο pdfTeX· για άλλες μηχανές TeX, ιδιαίτερα το XeTeX και το LuaTeX, οι υπολογισμοί token πρέπει να είναι ελαφρώς διαφορετικοί ώστε να ληφθεί υπόψη η χρήση Unicode, αλλά οι μέθοδοι υπολογισμού είναι παρόμοιες με αυτές που περιγράφονται παρακάτω.

### Tokens χαρακτήρων (μη ενεργοί χαρακτήρες)

Ο υπολογισμός των τιμών token για μη ενεργούς χαρακτήρες είναι απλός:

$$\text{character token} = 256\times \text{(category code)} + \text{character (ASCII) code}$$

**Παράδειγμα**: Το γράμμα A με [κωδικό κατηγορίας](/latex/el/perissotera-themata/43-table-of-tex-category-codes.md) 11, ο κωδικός χαρακτήρα 65 αναπαρίσταται από το TeX ως η τιμή token χαρακτήρα $$256\times 11 + 65 = 2881$$.

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

### Tokens εντολών

Η επεξεργασία εισόδου και η δημιουργία token του TeX αναγνωρίζουν δύο τύπους εντολών:

* εντολές που κατασκευάζονται από έναν ή περισσότερους χαρακτήρες που έχουν κωδικό κατηγορίας 11·
* εντολές μονού χαρακτήρα όπου ο κωδικός κατηγορίας του χαρακτήρα δεν είναι 11: όπως `\$` ή `\#`.

Και στις δύο περιπτώσεις, το TeX εξαιρεί το αρχικό `\` χαρακτήρα και χρησιμοποιεί τον κωδικό χαρακτήρα κάθε υπόλοιπου χαρακτήρα για να υπολογίσει έναν ακέραιο τον οποίο το TeX ονομάζει `curcs` (**cur**rent **c**ontrol **s**ακολουθίας). Στη συνέχεια το TeX χρησιμοποιεί την τιμή του `curcs` για να υπολογίσει μια τιμή token για την εντολή.

#### Εντολές που αποτελούνται από χαρακτήρες με κωδικό κατηγορίας 11

Ας υποθέσουμε ότι η εντολή μας (χωρίς το αρχικό `\` χαρακτήρα) αποτελείται από μια ακολουθία χαρακτήρων: $$\mathrm{C\_1C\_2C\_3...C\_N}$$ όπου $$\mathrm{C}\_i$$ είναι ο κωδικός χαρακτήρα κάθε χαρακτήρα—π.χ., ο κωδικός χαρακτήρα του A είναι 65. Το TeX χρησιμοποιεί όλους τους κωδικούς χαρακτήρων $$\mathrm{C}\_i$$ για να υπολογίσει τον ακέραιο `curcs` (χρησιμοποιώντας μια [συνάρτηση κατακερματισμού](https://en.wikipedia.org/wiki/Hash_function)). Μόλις το TeX υπολογίσει την τιμή του `curcs` απλώς προσθέτει 4095 σε αυτή την τιμή, για να δώσει την τιμή token:

$$\text{command token} = \text{curcs + 4095}$$

Σημειώστε ότι η μεταβλητή `curcs` παίζει έναν εξαιρετικά σημαντικό ρόλο στις εσωτερικές δραστηριότητες επεξεργασίας του TeX.

#### Εντολές μονού χαρακτήρα

Τα token που αναπαριστούν εντολές όπως `\$`, `\#` κ.λπ. υπόκεινται σε έναν ελαφρώς διαφορετικό υπολογισμό: ο ακέραιος `curcs` υπολογίζεται πλέον με τον απλούστερο τρόπο:

$$\text{curcs} = 257 + \text{character (ASCII) code}$$

Για παράδειγμα, με `\$`, $$\text{curcs}=257 + 36 = 293$$. Το TeX προσθέτει ξανά 4095 σε αυτή την τιμή (χρησιμοποιώντας $$\text{command token} = \text{curcs} + 4095$$) με αποτέλεσμα `\$` να έχει τιμή token $$293 + 4095 = 4388$$.

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

**Σημείωση**: ο ακέραιος `curcs` δεν υπολογίζεται για τα token χαρακτήρων: ορίζεται πάντα στο 0 όταν το TeX δημιουργεί ή χειρίζεται token χαρακτήρων.

#### Tokens ενεργών χαρακτήρων

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

Ο μηχανισμός ενεργού χαρακτήρα επιτρέπει στο TeX να δημιουργεί ουσιαστικά μακροεντολές μονού χαρακτήρα που μπορείτε να χρησιμοποιείτε *χωρίς* χωρίς να χρειάζεται να προηγείτε τον ενεργό χαρακτήρα με χαρακτήρα διαφυγής (συνήθως `\`): ο μεμονωμένος χαρακτήρας θα ενεργοποιήσει τη μακρο-συμπεριφορά του. Το κλασικό παράδειγμα είναι ο χαρακτήρας tilde (\~) που το TeX/LaTeX χρησιμοποιούν για μη διακοπτόμενα κενά, ο οποίος μπορεί να οριστεί/ενεργοποιηθεί ως εξής:

```
\catcode`~=13 % αποδίδει τον κωδικό κατηγορίας 13 στο ~
\def~{\penalty100000\ } % ορίστε το ~ να λειτουργεί ως μακροεντολή
```

Όταν το TeX στη συνέχεια διαβάσει έναν `~` χαρακτήρα, θα ανιχνεύσει ότι ο κωδικός κατηγορίας του είναι 13 και θα τον επεξεργαστεί ως «μίνι μακροεντολή». Για να υπολογίσει ένα token που αναπαριστά έναν ενεργό χαρακτήρα, το TeX εφαρμόζει μια ακόμη παραλλαγή για τον υπολογισμό `curcs`:

$$\begin{align\*} \text{curcs} &= \text{character code} + 1\ \text{active character token} &= \text{curcs} + 4095\ \end{align\*}$$

Για παράδειγμα, ο χαρακτήρας \~ έχει κωδικό χαρακτήρα 126, πράγμα που σημαίνει ότι η αναπαράσταση της τιμής token του ενεργού χαρακτήρα υπολογίζεται ως εξής:

$$\begin{align\*} \text{curcs} &= 126 + 1\ \text{active character token} &= 127 + 4095\ &=4222\ \end{align\*}$$

Σημειώστε ότι, όπως και οι εντολές, τα token που αναπαριστούν ενεργούς χαρακτήρες είναι > 4095.

### Συνέπειες/σημειώσεις

* Οποιοδήποτε token του οποίου η τιμή υπερβαίνει το 4095 αναγνωρίζεται αμέσως ως token εντολής—άρα το TeX μπορεί πολύ εύκολα να ανιχνεύσει αν ένα συγκεκριμένο token αναπαριστά έναν χαρακτήρα ή μια εντολή.
* Για οποιαδήποτε τιμή token, το TeX μπορεί, όταν χρειάζεται, να «αποσυσκευάσει» αυτό το token για να αποκαλύψει τον χαρακτήρα (και τον κωδικό κατηγορίας του), ή την εντολή, που υπήρχε αρχικά στο `.tex` αρχείο σας, αποθηκευμένη σε έναν ορισμό μακροεντολής ή περιεχόμενη σε κάποια άλλη λίστα token.
* Το «ενδιάμεσο» μέγεθος που ονομάζεται `curcs`—το οποίο το TeX χρησιμοποιεί για να υπολογίζει τιμές token εντολής—παίζει σημαντικό ρόλο στην επεξεργασία χαμηλού επιπέδου του TeX. `curcs` λειτουργεί ως «τιμή δείκτη» που το TeX χρησιμοποιεί για την αποθήκευση/αναζήτηση της τρέχουσας σημασίας μιας εντολής. Δεδομένου οποιουδήποτε token εντολής, $$\mathrm{T}$$, το TeX απλώς αφαιρεί το 4095 για να αποκτήσει πρόσβαση στην τιμή του `curcs`: $$\text{curcs} = \mathrm{T}-4095$$

Παρεμπιπτόντως, το TeX αποθηκεύει τη συμβολοσειρά χαρακτήρων αναγνώσιμη από άνθρωπο από την οποία παράγεται ένα token εντολής—αυτό είναι απαραίτητο για την αναφορά σφαλμάτων και για άλλες εντολές όπως `\string` της οποίας η επέκταση είναι η αναγνώσιμη από άνθρωπο εκδοχή μιας τιμής token. Ωστόσο, αυτές οι συμβολοσειρές χαρακτήρων αναγνώσιμες από άνθρωπο που αποθηκεύονται μέσα στο TeX χρησιμοποιούνται/εξάγονται μόνο όταν ζητηθούν: για κάθε άλλη επεξεργασία χρησιμοποιείται η ακέραιη τιμή του token.

## Ρίχνοντας μια ματιά σε μερικά πραγματικά token

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

```
\def\hello{Greetings, from \TeX. \hskip 10pt}
```

Για τη `\hello` μακροεντολή, το TeX χρησιμοποιεί τους χαρακτήρες `h`, `e`, `l`, `l`, `o` για να υπολογίσει μια τιμή 3745 για το `curcs`; στη συνέχεια το TeX προσθέτει 4095 για να δημιουργήσει μια τιμή token $$3745 + 4095 = 7840$$ (για το TeX του Knuth, το e-TeX ή το pdfTeX).

Αφού δημιουργήσει ένα token για να αναπαριστά `\hello`, το `\def` εντολή προκαλεί το TeX να διαβάσει τα επόμενα token και να τα χρησιμοποιήσει για να δημιουργήσει μια λίστα token η οποία αποθηκεύεται ως ο *ορισμός* της `\hello` εντολής. Αυτός ο αποθηκευμένος ορισμός (λίστα token) μπορεί στη συνέχεια να ανακτηθεί κάθε φορά που λέτε στο TeX να χρησιμοποιήσει την `\hello` εντολή.

Ο ακόλουθος πίνακας παραθέτει τις πραγματικές τιμές token που δημιουργούνται για κάθε στοιχείο (χαρακτήρα, μακροεντολή ή πρωτόγονο) που περιέχεται στη `\hello` ορισμό της μακροεντολής—αυτή η λίστα token (ακέραιοι) είναι αυτό που το TeX αποθηκεύει στη μνήμη του (ως δομή δεδομένων γνωστή ως [συνδεδεμένη λίστα](https://en.wikipedia.org/wiki/Linked_list)). Οι αναγνώστες που επιθυμούν να κατανοήσουν τις λίστες token πιο αναλυτικά παραπέμπονται στο άρθρο του Overleaf [Τι είναι μια λίστα token TeX;](/latex/el/se-vathos-arthra/54-what-is-a-tex-token-list.md)

|                    |                                |
| ------------------ | ------------------------------ |
| **Τιμή token TeX** | **Αντιπροσωπευόμενο στοιχείο** |
| 2887               | G                              |
| 2930               | r                              |
| 2917               | e                              |
| 2917               | e                              |
| 2932               | t                              |
| 2921               | i                              |
| 2926               | n                              |
| 2919               | g                              |
| 2931               | s                              |
| 3116               | ,                              |
| 2592               |                                |
| 2918               | f                              |
| 2930               | r                              |
| 2927               | o                              |
| 2925               | m                              |
| 2592               |                                |
| 5235               | \TeX                           |
| 3118               | .                              |
| 2592               |                                |
| 7943               | \hskip                         |
| 3121               | 1                              |
| 3120               | 0                              |
| 2928               | p                              |
| 2932               | t                              |

Στη λίστα token παραπάνω, οι χαρακτήρες έχουν κωδικούς κατηγορίας 10, 11 ή 12. Για παράδειγμα:

* οι χαρακτήρες έχουν κωδικό κατηγορίας 10 και κωδικό χαρακτήρα 32, δίνοντας τιμή token $$256\times 10 + 32 = 2592$$
* `,` και `.` έχουν κωδικό κατηγορίας 12 και κωδικούς χαρακτήρων 44 και 46 αντίστοιχα, δίνοντας token:
* token για `,` $$= 256 \times 12 + 44 = 3116$$
* token για `.` $$= 256\times 12+ 46 = 3118$$

Κάθε φορά που το TeX στη συνέχεια συναντά την τιμή token 7840 (που αναπαριστά `\hello`) μπορεί, αν χρειάζεται, να «αποσυσκευάσει» αυτό το token για να εξαγάγει `curcs` μέσω του απλού υπολογισμού $$\text{curcs} = \text{token value} - 4095$$ (βλ. παραπάνω). Χρησιμοποιώντας την τιμή του `curcs` το TeX μπορεί να συμβουλευτεί τους εσωτερικούς πίνακες δεδομένων του για να καθορίσει ότι το token εντολής 7840 αναπαριστά μια εντολή μακροεντολής. Επιπλέον, και πάλι μέσω `curcs`, το TeX μπορεί επίσης να αναζητήσει και να ανακτήσει τον αποθηκευμένο ορισμό του `\hello`.

Όταν το TeX χρειάζεται να επεξεργαστεί πλήρως το token 7840, δηλαδή να εκτελέσει τη `\hello` μακροεντολή, δεν χρειάζεται πλέον το token 7840: αυτό το token έχει *επιτελέσει τον σκοπό του*—δηλαδή ενεργοποίησε το TeX να εκτελέσει τη μακροεντολή `\hello`. Το TeX μπορεί τώρα να απορρίψει το token 7840 και να ανακτήσει τα token που αναπαριστούν τον ορισμό (λίστα token) που είναι αποθηκευμένη στη μνήμη. Στην πράξη, η `\hello` εντολή μακροεντολής (token 7840) έχει *αφαιρεθεί* από την τρέχουσα πηγή εισόδου του TeX και *αντικατασταθεί* με token που περιέχονται στον ορισμό της `\hello`. Αυτό που μόλις περιγράψαμε είναι μια μορφή *επέκτασης token*.

Το `\TeX` εντολής (η τιμή token 5235 που παρατίθεται παραπάνω) που χρησιμοποιείται μέσα στο `\hello` είναι επίσης μια μακροεντολή κατασκευασμένη από περισσότερα token—οπότε ο ορισμός της αποθηκεύεται επίσης ως λίστα token:

|                    |                                |
| ------------------ | ------------------------------ |
| **Τιμή token TeX** | **Αντιπροσωπευόμενο στοιχείο** |
| 2900               | T                              |
| 19598              | \\\kern                        |
| 3117               | -                              |
| 3118               | .                              |
| 3121               | 1                              |
| 3126               | 6                              |
| 3126               | 6                              |
| 3127               | 7                              |
| 2917               | e                              |
| 2925               | m                              |
| 19597              | \lower                         |
| 3118               | .                              |
| 3125               | 5                              |
| 2917               | e                              |
| 2936               | x                              |
| 6175               | \hbox                          |
| 379                | {                              |
| 2885               | E                              |
| 637                | }                              |
| 19598              | \\\kern                        |
| 3117               | -                              |
| 3118               | .                              |
| 3121               | 1                              |
| 3122               | 2                              |
| 3125               | 5                              |
| 2917               | e                              |
| 2925               | m                              |
| 2904               | X                              |

Αν αντικαθιστούσαμε την `\hello` εντολή με την πλήρη λίστα token από την οποία είναι κατασκευασμένη, συμπεριλαμβανομένης της `\TeX` μακροεντολής, θα ήταν μια αρκετά μεγάλη λίστα—δηλαδή, αν επίσης *επεκτείναμε* το `\TeX` μακροεντολή θα βλέπαμε:

![Μια λίστα token αποθηκευμένη σε μια μακροεντολή TeX](/files/c2785732faa7a6cb9b323729feb1145aebcf29a6)

Ουσιαστικά, η μοναδική τιμή token 7840 (για `\hello`) θα παρήγαγε, όταν επεκταθεί πλήρως, συνολικά 51 token (ακέραιους) που αναπαριστούν χαρακτήρες και πρωτόγονες εντολές. Στην ακόλουθη λίστα ο χαρακτήρας ή η εντολή που αναπαρίσταται από κάθε token περικλείεται σε παρενθέσεις “(...)”—αυτά δεν αποθηκεύονται άμεσα στις λίστες token του TeX και εμφανίζονται για να βοηθήσουν τον αναγνώστη:

```
2887 (G), 2930 (r), 2917 (e), 2917 (e), 2932 (t), 2921 (i), 2926 (n), 2919 (g), 2931 (s), 3116 (,), 2592 (<space>), 2918 (f), 2930 (r), 2927 (o), 2925 (m), 2592 (<space>),  2900 (T), 19598 (\kern), 3117 (-), 3118 (.), 3121 (1), 3126 (6), 3126 (6), 3127 (7), 2917 (e), 2925 (m), 19597 (\lower), 3118 (.), 3125 (5), 2917 (e), 2936 (x), 6175 (\hbox), 379 ({), 2885 (E), 637 (}), 19598 (\kern), 3117 (-), 3118 (.), 3121 (1), 3122 (2), 3125 (5), 2917 (e), 2925 (m), 2904 (X), 3118 (.), 2592 (<space>), 7943 (\hskip), 3121 (1), 3120 (0), 2928 (p), 2932 (t)
```

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

## Διαβάστε τα token τώρα και αποθηκεύστε τα για αργότερα

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

Έχουμε ήδη δει παραδείγματα λιστών token—οι `\hello` και `\TeX` μακροεντολές που παρατίθενται παραπάνω: οι ορισμοί αυτών των μακροεντολών αποθηκεύονται στη μνήμη του TeX ως λίστες token. Το TeX θα επεξεργαστεί (θα ενεργοποιήσει) τέτοιες λίστες token μόνο όταν αποφασίσετε να καλέσετε αυτές τις μακροεντολές. Να θυμάστε επίσης ότι κάθε token (ακέραιη τιμή) κωδικοποιεί επαρκείς πληροφορίες ώστε το TeX να μπορεί εύκολα να καταλάβει αν κάθε token που είναι αποθηκευμένο σε έναν ορισμό μακροεντολής αναπαριστά έναν χαρακτήρα ή μια εντολή.

### Αποθήκευση token με καταχωρητές token

Ένα ακόμη παράδειγμα αποθήκευσης token είναι η ρητή δημιουργία λιστών token που αποθηκεύονται σε λεγόμενους *καταχωρητές token*: ειδικούς εσωτερικούς χώρους αποθήκευσης που παρέχει το TeX στους χρήστες για να αποθηκεύουν λίστες token. Το πρωτόγονο TeX `\toksdef` είναι ένας τρόπος χρήσης καταχωρητών token· για παράδειγμα, για να χρησιμοποιήσετε τον καταχωρητή token `100` και να αναφερθείτε σε αυτόν χρησιμοποιώντας την εντολή `\mylist`:

```
        \toksdef\mylist=100
        \mylist={some \TeX{} tokens here}
```

`\mylist` είναι, στην πράξη, απλώς ένα όνομα που αποδίδετε σε μια λίστα token αποθηκευμένη στη θέση καταχωρητή `100`. Παρόμοια με έναν ορισμό μακροεντολής, `\mylist` περιέχει την ακόλουθη λίστα token:

|                    |                                |
| ------------------ | ------------------------------ |
| **Τιμή token TeX** | **Αντιπροσωπευόμενο στοιχείο** |
| 2931               | s                              |
| 2927               | o                              |
| 2925               | m                              |
| 2917               | e                              |
| 2592               |                                |
| 5235               | \TeX                           |
| 379                | {                              |
| 637                | }                              |
| 2592               |                                |
| 2932               | t                              |
| 2927               | o                              |
| 2923               | k                              |
| 2917               | e                              |
| 2926               | n                              |
| 2931               | s                              |
| 2592               |                                |
| 2920               | h                              |
| 2917               | e                              |
| 2930               | r                              |
| 2917               | e                              |

**Σημείωση**: για να τερματίσει τη `\TeX` μακροεντολή και να την εμποδίσει να απορροφήσει τον επόμενο `<space>` χαρακτήρα χρησιμοποιήσαμε ένα ζεύγος αγκυλών `{}` αμέσως μετά από `\TeX`—τα token για `{` (379) και `}` (637) αποθηκεύονται στη λίστα token. Μια άλλη επιλογή είναι να χρησιμοποιηθεί ένα token «control space» `\<space>` το οποίο θα εμφανιζόταν στη λίστα token όπως φαίνεται παρακάτω (με έντονη γραφή):

|                    |                                |
| ------------------ | ------------------------------ |
| **Τιμή token TeX** | **Αντιπροσωπευόμενο στοιχείο** |
| 2931               | s                              |
| 2927               | o                              |
| 2925               | m                              |
| 2917               | e                              |
| 2592               |                                |
| 5235               | \TeX                           |
| **4384**           | **\\**                         |
| 2932               | t                              |
| 2927               | o                              |
| 2923               | k                              |
| 2917               | e                              |
| 2926               | n                              |
| 2931               | s                              |
| 2592               |                                |
| 2920               | h                              |
| 2917               | e                              |
| 2930               | r                              |
| 2917               | e                              |

Σημειώστε ότι το `<space>` ο χαρακτήρας αναπαρίσταται ως ένα *token χαρακτήρα* με τιμή $$256\times 10 + 32 = 2592$$ αλλά `\﻿<space>` θεωρείται ως ένα μονοχαρακτηρικό *token εντολής* (τιμή 4384), η οποία υπολογίζεται χρησιμοποιώντας τους παραπάνω τύπους:

\begin{align\*} \text{curcs} & = 257 + \text{character (ASCII) code}\\\ & = 257 + 32\\\ &=289\\\ \text{command token for} \left<\text{\\\space}\right> & = \text{curcs + 4095}\\\ & = 289+4095\\\ &=4384\\\ \end{align\*}

Ουσιαστικά `\mylist={some \TeX{} tokens here}` λέει στο TeX: παρακαλώ σάρωσε το αρχείο εισόδου μου για να μετατρέψεις τους ακόλουθους χαρακτήρες/εντολές σε token και αποθήκευσέ τα για χρήση αργότερα. Το TeX θα υπακούσει και θα αποθηκεύσει αυτά τα token σε μια θέση μνήμης στην οποία μπορείτε να έχετε πρόσβαση γράφοντας `\the\mylist`, δίνοντας εντολή στο TeX να εισαγάγει ένα αντίγραφο των token που περιέχονται στον καταχωρητή token `\mylist`. Οι μηχανές TeX περιλαμβάνουν έναν αριθμό πρωτόγονων εντολών που δημιουργούν και αποθηκεύουν ρητά λίστες token—όπως `\everyjob`, `\everypar`, `\mark`, και πολλές άλλες.

[Μέρος 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/19-how-does-expandafter-work-an-introduction-to-tex-tokens.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.
