> 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/perissotera-themata/23-how-tex-macros-actually-work-part-5.md).

# Πώς λειτουργούν πραγματικά οι μακροεντολές TeX: Μέρος 5

[Μέρος 1](/latex/el/perissotera-themata/19-how-tex-macros-actually-work-part-1.md) [Μέρος 2](/latex/el/perissotera-themata/20-how-tex-macros-actually-work-part-2.md) [Μέρος 3](/latex/el/perissotera-themata/21-how-tex-macros-actually-work-part-3.md) [Μέρος 4](/latex/el/perissotera-themata/22-how-tex-macros-actually-work-part-4.md) [Μέρος 5](/latex/el/perissotera-themata/23-how-tex-macros-actually-work-part-5.md) [Μέρος 6](/latex/el/perissotera-themata/24-how-tex-macros-actually-work-part-6.md)

## Εισαγωγή και επισκόπηση

Στο Μέρος 4 εξετάσαμε ορισμένες βασικές ιδιότητες των μακροεντολών TeX ως προετοιμασία για τα επόμενα δύο άρθρα, όπου ρίχνουμε μια προσεκτική ματιά στους υποκείμενους μηχανισμούς των μακροεντολών TeX: τις εξειδικευμένες λίστες tokens. Σε αυτά τα δύο τελευταία άρθρα χρησιμοποιούμε διαγράμματα, που ονομάζονται λίστες κόμβων, τα οποία προετοιμάστηκαν από δεδομένα που δημιουργήθηκαν με μια ειδικά τροποποιημένη έκδοση του αρχικού λογισμικού TeX του Knuth — αυτές οι τροποποιήσεις σχεδιάστηκαν ώστε να προσπελάσουν τις εσωτερικές δομές δεδομένων του TeX, οι οποίες κανονικά είναι απρόσιτες για τον χρήστη. Με το να «συνδεθούμε» με τις εσωτερικές ρουτίνες επεξεργασίας και εκτέλεσης μακροεντολών του TeX, κατέστη δυνατό να εξαχθούν γραφικά δεδομένα, τα οποία επιτρέπουν μια πιο λεπτομερή και ακριβή συζήτηση της συμπεριφοράς επεξεργασίας μακροεντολών του TeX. Το Overleaf ελπίζει ότι αυτά τα διαγράμματα θα βοηθήσουν τους αναγνώστες να αποκτήσουν καλύτερη κατανόηση του πώς πραγματικά λειτουργούν οι μακροεντολές TeX.

### Πιθανή πρόσθετη ανάγνωση υποβάθρου

Το Overleaf έχει ήδη δημοσιεύσει δύο άρθρα σχετικά με τα tokens, τα οποία παρέχουν πρόσθετες πληροφορίες υποβάθρου για τα tokens του TeX και τις λίστες tokens του TeX. Αφιερώστε χρόνο για να τα δείτε αν χρειάζεται να καλύψετε τυχόν κενά στην κατανόησή σας και να αξιοποιήσετε στο έπακρο τα Μέρη 5 και 6 αυτής της σειράς.

* [Τι είναι ένα «TeX token»;](/latex/el/se-vathos-arthra/53-what-is-a-tex-token.md)
* [Τι είναι μια λίστα tokens του TeX;](/latex/el/se-vathos-arthra/54-what-is-a-tex-token-list.md)

## Οι μακροεντολές ως λίστες tokens

Όταν το TeX εντοπίζει μια εντολή δημιουργίας μακροεντολής (`\def`, `\edef`, `\gdef` ή `\xdef`) μέσα στη ροή εισόδου, ενεργοποιεί μια διαδικασία που μετατρέπει και τα δύο τμήματα `<parameter text><replacement text>` του ορισμού της μακροεντολής μας σε μία μακριά λίστα tokens — αλλά μια πολύ συγκεκριμένου τύπου λίστα tokens.

Οι λίστες tokens για μακροεντολές είναι ελαφρώς διαφορετικές από άλλες λίστες tokens που χρησιμοποιούνται μέσα στο TeX, επειδή περιέχουν «ειδικές» τιμές tokens που μόνο διαδικασίες εσωτερικές του ίδιου του TeX μπορούν να δημιουργήσουν/παράγουν: αυτά τα ειδικά tokens δεν μπορούν να δημιουργηθούν άμεσα από καμία εντολή που μπορείτε να συμπεριλάβετε στο αρχείο .tex σας. Το TeX δημιουργεί και χρησιμοποιεί αυτές τις «ειδικές» τιμές tokens για να βοηθήσει στην επεξεργασία της κλήσης της μακροεντολής σας, όπως θα εξετάσουμε και θα εξηγήσουμε παρακάτω.

### Λίγα λόγια για το πώς αποθηκεύονται οι λίστες tokens: κόμβοι

Για να αποθηκεύσει μια λίστα tokens (ακέραιες τιμές), το TeX χρησιμοποιεί μια δομή δεδομένων που ονομάζεται [συνδεδεμένη λίστα](https://en.wikipedia.org/wiki/Linked_list), η οποία, στην περίπτωση του TeX, αποτελείται από μια λίστα των λεγόμενων *κόμβων*. Μπορείτε να φανταστείτε έναν κόμβο ως ένα μικρό πακέτο μνήμης υπολογιστή που μπορεί να χρησιμοποιηθεί για την αποθήκευση ενός συνόλου στοιχείων δεδομένων. Για να αποθηκευτεί μια μακροεντολή, αυτοί οι κόμβοι συνδέονται μεταξύ τους σαν αλυσίδα, όπου κάθε κόμβος (σύνδεσμος στην αλυσίδα) μπορεί να αποθηκεύει αρκετές πληροφορίες — συμπεριλαμβανομένης μιας τιμής token και της διεύθυνσης μνήμης του επόμενου κόμβου στη λίστα. Για περισσότερες πληροφορίες, μπορείτε να διαβάσετε το άρθρο [Τι είναι μια λίστα tokens του TeX](/latex/el/se-vathos-arthra/54-what-is-a-tex-token-list.md) αλλά το ακόλουθο διάγραμμα συνοψίζει τα βασικά χαρακτηριστικά μιας μακροεντολής αποθηκευμένης ως λίστα tokens:

![Διάγραμμα μιας μακροεντολής TeX ως λίστας tokens αποθηκευμένης ως συνδεδεμένης λίστας κόμβων](/files/a430f2dd69eb4041e8399d399bb02cfe34ff1421)

### Υπενθύμιση: τα 4 μέρη ενός ορισμού μακροεντολής

Όπως συζητήθηκε στο Μέρος 4, η δομή κάθε μακροεντολής μπορεί να γραφτεί ως:

```
<TeX macro primitive><macro name><parameter text>{<replacement text>}
```

όπου:

* `<TeX macro primitive>` = ένα από `\def`, `\edef`, `\gdef` ή `\xdef`;
* `<macro name>`= το όνομα της μακροεντολής σας, όπως `\foo`;
* `<parameter text>` μπορεί να είναι «null» (να μην υπάρχει) ή μπορεί να είναι μια συμβολοσειρά από tokens οριοθέτη και tokens παραμέτρων μακροεντολής·
* `<replacement text>` είναι το πραγματικό σώμα της μακροεντολής σας: το τμήμα που «εκτελείται» όταν καλείτε τη μακροεντολή.

**ΣΗΜΕΙΩΣΗ**: (Όπως επίσης παρατηρήθηκε στο Μέρος 4) καθ’ όλη τη συζήτηση υποθέτουμε ότι `<macro name>` θα ακολουθείται από έναν χαρακτήρα κενού με κωδικό κατηγορίας 10 ώστε να λειτουργεί ως οριοθέτης για να τερματίσει το `<macro name>`. Εμείς *δεν έχουμε* δείξει ρητά αυτόν τον χαρακτήρα κενού στο κείμενο/τη συζήτησή μας, αλλά υποθέτουμε ότι υπάρχει. Αυστηρά μιλώντας, θα έπρεπε να τον αναπαραστήσουμε κάπως έτσι:

```
<TeX macro primitive><macro name><space><parameter text>{<replacement text>}
```

Ωστόσο, θα παραλείψουμε τη ρητή συμπερίληψη ενός `<space>` χαρακτήρα και θα υποθέσουμε έμμεσα την παρουσία του.

**ΣΗΜΕΙΩΣΗ**: Οι χαρακτήρες `{` και `}` *δεν* γίνονται μέρος της λίστας tokens της μακροεντολής: ο σκοπός τους είναι απλώς να λένε στον σαρωτή εισόδου του TeX (ο οποίος δημιουργεί tokens) πού `<replacement text>` ξεκινά και σταματά.

Όταν το TeX ορίζει μια μακροεντολή, τα τμήματα `<parameter text><replacement text>` μετατρέπονται σε μία μακριά, συνεχόμενη λίστα tokens — ο συνολικός αριθμός των tokens σε αυτήν τη λίστα εξαρτάται από την πολυπλοκότητα της μακροεντολής. Όπως έχουμε δει, το τμήμα έχει τον συγκεκριμένο σκοπό να λειτουργεί ως «πρότυπο token» ή «σχέδιο» που χρησιμοποιεί το TeX για να ξεχωρίσει τα tokens που αποτελούν τα ορίσματα (τιμές) που θα χρησιμοποιηθούν με την πραγματική μακροεντολή: δηλαδή, τα tokens που θα τροφοδοτηθούν στο `<replacement text>`.

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

```
\def\foo A#1\fake{123 #1}
```

Για τη μακροεντολή μας, `\foo`

* `<parameter text>` = `A#1\fake`
* `<replacement text>` = `123 #1`

Αν και αυτό το παράδειγμα είναι μια απλή μακροεντολή, περιέχει όλα τα χαρακτηριστικά που χρειαζόμαστε για να εξερευνήσουμε.

Όπως σημειώθηκε, το TeX θα μετατρέψει `<parameter text><replacement text>` σε μία μακριά λίστα tokens, την οποία μπορείτε να δείτε στο παρακάτω διάγραμμα. Στο παράδειγμά μας, τα tokens που σχηματίζονται από `A#1\fake{123 #1}` έχουν μετατραπεί σε μια συνεχόμενη ακολουθία tokens αποθηκευμένη σε μια λίστα tokens (ως συνδεδεμένη λίστα κόμβων).

## Γραφικό που δείχνει μια πραγματική λίστα tokens μακροεντολής

Το ακόλουθο διάγραμμα, που δείχνει πώς η μακροεντολή `\def\foo A#1\fake{123 #1}` αποθηκεύεται, χρησιμοποιεί πραγματικά δεδομένα από μέσα σε μια μηχανή TeX. Δημιουργήθηκε χρησιμοποιώντας μια [προσαρμοσμένη έκδοση του TeX του Knuth](/latex/el/se-vathos-arthra/01-a-new-series-of-articles-tex-tokens-and-related-concepts-but-why-and-how.md#how-can-you-study-tex-tokens3f) που τροποποιήθηκε με πρόσθετο κώδικα ώστε να παρεμβάλλεται στις κλήσεις μακροεντολών, να εξετάζει τα εσωτερικά δεδομένα του TeX και να τα εξάγει σε μορφή κατάλληλη για επεξεργασία με τη χρήση ενός ανοιχτού κώδικα προγράμματος γραφικών που ονομάζεται [Graphviz](https://www.graphviz.org/).

Μπορείτε να κατεβάσετε το ακόλουθο γραφικό ως [αρχείο PDF](https://assets.ctfassets.net/nrgyaltdicpt/N6gT757eXCxRV3FtdPPga/7ce120dc05ed05962bb911ff1124734b/annotatednodelist-plain.pdf) (675 KB) ή [αρχείο SVG](https://images.ctfassets.net/nrgyaltdicpt/4PkmtHDhO8KF892ZDWuLHP/2c9c8385c6948fd122b228c5c780a3a6/annotatednodelist-plain.svg) (1,8 MB).

![Διάγραμμα μιας σχολιασμένης λίστας tokens του TeX](/files/879b0ed2819f4f40eb16d99be5ebb4807ebb955a)

#### Κατανόηση των κόμβων

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

![Η σημασία του επόμενου κόμβου και του τρέχοντος κόμβου](/files/46ba5b9ac179f1925b826f41f3a3d78491a7fa6a)

#### Επιστροφή στο παράδειγμα

Στο διάγραμμα κόμβων, η λίστα tokens που σχηματίζεται από `A#1\fake{123 #1}` περιέχει αρκετά «ειδικά tokens» που εισήχθησαν στην αρχή αυτού του άρθρου. Επιπλέον, η λίστα κόμβων που αναπαριστά τη μακροεντολή μας ξεκινά με έναν «ειδικό πρώτο κόμβο»: θα εξερευνήσουμε τι είναι αυτά και τι κάνουν.

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

![Ένας κόμβος μετρητή αναφορών είναι ο πρώτος σε μια λίστα tokens](/files/785e25f218d56b9da67aa672e6d201d5a8bd8d92)

Το πρώτο token του `<parameter text>` αποθηκεύεται στον κόμβο που ακολουθεί αμέσως μετά τον μετρητή αναφορών: μπορείτε να δείτε ότι είναι ένα token που αντιπροσωπεύει το γράμμα `Ένα` με κωδικό κατηγορίας 11. Από τις συζητήσεις στα Μέρη 2 και 3 γνωρίζουμε ότι ένα token χαρακτήρα υπολογίζεται χρησιμοποιώντας

$$\text{token value}=256\times \text{category code} + \text{character code}$$

το οποίο, για ένα γράμμα `Ένα` με κωδικό κατηγορίας 11, είναι

$$\text{token value}=256\times 11 + 65$$

δίνοντας την τιμή 2881, όπως φαίνεται στον κόμβο.

#### Η «εντολή» \fake που χρησιμοποιείται στο \foo

Μέσα στον ορισμό της μακροεντολής μας `\def\foo A#1\fake{123 #1}` ένας από τους οριοθέτες είναι ένα *μη ορισμένο* εντολή `\fake` το οποίο αποθηκεύεται μέσα στη λίστα tokens ως μέρος του `<parameter text>` τμήματος. Όπως βλέπετε, μέσα στη συνολική λίστα tokens της μακροεντολής `\fake` υπάρχει ένα token του οποίου η τιμή είναι `19491`—μια ακέραια τιμή υπολογισμένη από το TeX χρησιμοποιώντας τον τύπο που συζητήθηκε στο Μέρος 3. Όταν το TeX επιχειρεί να εκτελέσει `\foo` θα περιμένει να βρει το `\fake` token τιμής στο τέλος του `<parameter text>` τμήματος. Το TeX *δεν θα* προσπαθήσει να εκτελέσει την `\fake` εντολή επειδή ο ρόλος της είναι απλώς να παρέχει μια μορφή «στίξης» μέσα στο `<parameter text>` «πρότυπο token».

![Χρήση ενός token εντολής ως οριοθέτη μακροεντολής](/files/61bdb5fd6e4fa5c3994d2033f36f9ac402b0c116)

#### Ειδικά tokens στη λίστα tokens

**Το token «τέλος αντιστοίχισης»**

Όταν καλεί μια μακροεντολή, η πρώτη εργασία του TeX είναι να σαρώσει τη μακροεντολή όπως πληκτρολογήθηκε από τον χρήστη και να συγκρίνει τα tokens που υπάρχουν στο `<parameter text>` τμήμα του χρήστη με τα tokens που περιέχονται στο πρότυπο `<parameter text>` που είναι αποθηκευμένο στη μνήμη (και δημιουργήθηκε τη στιγμή που ορίστηκε η μακροεντολή). Επειδή ο πλήρης ορισμός της μακροεντολής, που κατασκευάζεται από `<parameter text><replacement text>` αποθηκεύεται ως μία μακριά, συνεχόμενη λίστα tokens, το TeX χρειάζεται να ξέρει πού, μέσα σε αυτήν τη λίστα tokens, `<parameter text>` *σταματά* και πού `<replacement text>` *ξεκινά*. Για να το πετύχει αυτό, όταν το TeX ορίζει τη μακροεντολή (χτίζοντας τη λίστα tokens) θα εισαγάγει ένα ειδικό token τερματισμού που ονομάζεται **τέλος αντιστοίχισης** token ως το τελευταίο token στο σύνολο των tokens που παράγονται από `<parameter text>`. Το **τέλος αντιστοίχισης** token δεν μπορεί να παραχθεί από εντολές του χρήστη· μόνο το ίδιο το TeX μπορεί να το δημιουργήσει, επομένως το TeX είναι βέβαιο ότι θα εντοπίσει το τέλος του `<parameter text>`.

![Εμφάνιση του token τέλος αντιστοίχισης σε μια λίστα tokens του TeX](/files/017bceeadb1bd9b5fbe29b9b6978e8e1386cc8a8)

Εδώ, μπορούμε να δούμε ότι το πρώτο token που ακολουθεί μετά το **τέλος αντιστοίχισης** είναι ένα token που αντιπροσωπεύει το ψηφίο `1` με κωδικό κατηγορίας 12. Αυτό αναμένεται, επειδή το `<replacement text>` για τη μακροεντολή μας `\foo` είναι `123 #1`—δηλαδή, ξεκινά με το token που αντιπροσωπεύει το ψηφίο `1` (με κωδικό κατηγορίας 12).

Από τη συζήτηση στα Μέρη 2 και 3 γνωρίζουμε ότι ένα token χαρακτήρα υπολογίζεται χρησιμοποιώντας

$$\text{token value}=256\times \text{category code} + \text{character code}$$

το οποίο, για ένα ψηφίο `1` με κωδικό κατηγορίας 12, είναι

$$\text{token value}=256\times 12 + 49$$

δίνοντας την τιμή token 3121, όπως φαίνεται στον κόμβο.

**tokens «παραμέτρου αντιστοίχισης»**

Όταν το TeX αποθηκεύει τον ορισμό της μακροεντολής, μετατρέπει οποιαδήποτε tokens παραμέτρων (`#1`, `#2`… `#9`) μέσα `<parameter text>` σε ένα λεγόμενο **παράμετρο αντιστοίχισης** token. Αυτά τα tokens λένε στο TeX ότι χρειάζεται να αρχίσει να αναζητά tokens, μέσα στην κλήση της μακροεντολής από τον χρήστη, που αποτελούν τα ορίσματα της μακροεντολής.

![Εμφάνιση του token παραμέτρου αντιστοίχισης σε μια λίστα tokens του TeX](/files/747450f3fe143e28c1ef1dbbfd9ae86c9b49ec2b)

### Ειδικά tokens στη λίστα tokens

#### tokens «παραμέτρου εξόδου»

Όταν το TeX έχει επεξεργαστεί τα πάντα και είναι έτοιμο να εκτελέσει πραγματικά (να επεκτείνει) τη μακροεντολή, τα **παράμετροι εξόδου** tokens υποδεικνύουν στο TeX τις θέσεις μέσα στο `<replacement text>` στις οποίες χρειάζεται να εισαγάγει τα tokens που αντιπροσωπεύουν τα ορίσματα που δόθηκαν από τον χρήστη όταν κλήθηκε η μακροεντολή. Στην ουσία, «Σε αυτή τη θέση, εισαγάγετε τα tokens που αντιπροσωπεύουν το n-οστό όρισμα του χρήστη, όπου n=1...9».

Μέσα στο `<replacement text>` τμήμα της αποθηκευμένης λίστας tokens του ορισμού της μακροεντολής θα υπάρχει ένα **παράμετροι εξόδου** token που αντιστοιχεί σε κάθε `#1`, `#2`... `#9` παράμετρο που υπάρχει στον αρχικό ορισμό.

![Εμφάνιση του token παραμέτρου εξόδου σε μια λίστα tokens του TeX](/files/c78895cd86396d6264188ce9ef30ccdc8fe541a7)

Αν δούμε τον ορισμό μας της `\foo` (`\def\foo A#1\fake{123 #1}`) βλέπουμε ότι υπάρχει μόνο 1 παράμετρος μακροεντολής (`#1`) στο `<parameter text>` (`A#1\fake`) και στη συνέχεια εμφανίζεται μόνο 1 παράμετρος μακροεντολής (`#1`) εμφανίζεται στο `<replacement text>` (`123 #1`): αυτό έχει ως αποτέλεσμα να υπάρχει μόνο 1 **παράμετροι εξόδου** token παρόν στη λίστα tokens που αναπαριστά το `<replacement text>`.

Προσέξτε τα ακόλουθα στη λίστα κόμβων που αναπαριστά το `\foo`του `<replacement text>`:

* το token αμέσως πριν από το **παράμετροι εξόδου** token αντιπροσωπεύει έναν χαρακτήρα κενού (κωδικός κατηγορίας 10, κωδικός χαρακτήρα 32) επειδή υπάρχει ένα κενό μεταξύ του `123` και της παραμέτρου της μακροεντολής (`#1`) στον αρχικό ορισμό του `\foo`;
* το **παράμετροι εξόδου** είναι το τελευταίο token στη λίστα: το **επόμενος κόμβος** έχει μια ειδική τιμή «null» (που σημαίνει «κενό») η οποία χρησιμοποιείται για να τερματίσει τη λίστα: δεν υπάρχουν άλλοι κόμβοι μετά το **παράμετροι εξόδου** επειδή είναι το τελικό token, υποδεικνύοντας το τέλος του `<replacement text>` και έτσι το τέλος του ορισμού της μακροεντολής.

## Μέρος 6

Στο Μέρος 6 χρησιμοποιούμε ορισμένα λεπτομερή γραφικά για να εξηγήσουμε και να εξερευνήσουμε το ακριβές νόημα της επέκτασης μακροεντολών και τις συνέπειες της δημιουργίας tokens από το TeX για τα ορίσματα των μακροεντολών πριν τα τροφοδοτήσει στο `<replacement text>`.

[Μέρος 1](/latex/el/perissotera-themata/19-how-tex-macros-actually-work-part-1.md) [Μέρος 2](/latex/el/perissotera-themata/20-how-tex-macros-actually-work-part-2.md) [Μέρος 3](/latex/el/perissotera-themata/21-how-tex-macros-actually-work-part-3.md) [Μέρος 4](/latex/el/perissotera-themata/22-how-tex-macros-actually-work-part-4.md) [Μέρος 5](/latex/el/perissotera-themata/23-how-tex-macros-actually-work-part-5.md) [Μέρος 6](/latex/el/perissotera-themata/24-how-tex-macros-actually-work-part-6.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/perissotera-themata/23-how-tex-macros-actually-work-part-5.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.
