> 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/basi-gnoseon/033-cross-referencing-with-the-xr-package-in-overleaf.md).

# Διασταυρούμενες αναφορές με το πακέτο xr στο Overleaf

## Επισκόπηση

Η [`xr` πακέτο](https://ctan.org/pkg/xr?lang=en) σας επιτρέπει να δημιουργείτε διασταυρούμενες παραπομπές σε εξισώσεις, σχήματα, πίνακες κ.λπ. που περιέχονται σε εξωτερικά έγγραφα LaTeX, υπό την προϋπόθεση ότι τα έγγραφα αυτά είναι *αυτοτελή.* Ένα αυτοτελές έγγραφο LaTeX είναι εκείνο που μπορεί να μεταγλωττιστεί επειδή περιέχει ένα `\documentclass{...}` δήλωση και το `\begin{document}`...`\end{document}` δομικό στοιχείο.

### Σύνοψη χρήσης

1. Γράψτε `\usepackage{xr}` στον πρόλογο του αρχείου LaTeX που χρειάζεται να κάνει διασταυρούμενες παραπομπές σε περιεχόμενο που βρίσκεται σε εξωτερικά αρχεία LaTeX.
2. Χρησιμοποιήστε την `xr` εντολή του πακέτου `\externaldocument{filename}` για να καθορίσετε το/τα εξωτερικό/ά έγγραφο/α του/των οποίου/ων το περιεχόμενο θέλετε να παραπέμψετε διασταυρωμένα.

Η `xr` Το πακέτο λειτουργεί χρησιμοποιώντας ετικέτες διασταυρούμενης παραπομπής που περιέχονται στα `.aux` αρχεία που παράγονται όταν μεταγλωττίζονται τα εξωτερικά έγγραφα LaTeX.

### Πώς λειτουργούν οι διασταυρούμενες παραπομπές (μια σύντομη σύνοψη)

Για να κάνετε διασταυρούμενη παραπομπή σε ένα στοιχείο σε ένα έγγραφο LaTeX, πρέπει να:

1. Δώστε του ένα μοναδικό αναγνωριστικό, `some_string`, χρησιμοποιώντας το `\label` εντολή:

```latex
\label{some_string}
```

3. Στη θέση όπου θέλετε να αναφερθείτε σε αυτό το στοιχείο, πρέπει να γράψετε

```latex
\ref{some_string}
```

Πολύ συνοπτικά, το LaTeX διαχειρίζεται τις διασταυρούμενες παραπομπές γράφοντας δεδομένα σε ένα αρχείο με όνομα `filename.aux` όπου `filename` είναι το όνομα του κύριου `.tex` αρχείου που μεταγλωττίζεται.

Για να λειτουργήσει η διαδικασία, το έγγραφο LaTeX πρέπει να μεταγλωττιστεί τουλάχιστον δύο φορές: η πρώτη μεταγλώττιση *παράγει* τα δεδομένα αναφοράς—γράφοντάς τα στο `filename.aux`. Κατά τη δεύτερη μεταγλώττιση, το LaTeX *διαβάζει* `filename.aux` για να επιλύσει τις παραπομπές, παρέχοντας δεδομένα για να αντικαταστήσει τις εμφανίσεις του `\ref{some_string}`.

* Για περισσότερες λεπτομέρειες σχετικά με τις διασταυρούμενες παραπομπές, δείτε το άρθρο του Overleaf [Διασταυρούμενη παραπομπή σε ενότητες, εξισώσεις και πλωτά στοιχεία](/latex/el/domi-eggrafoy/03-cross-referencing-sections-equations-and-floats.md).

## Έργα όπου το πακέτο xr δεν απαιτείται

Μεγάλα έργα LaTeX, όπως βιβλία ή μεγάλες αναφορές, συχνά χωρίζονται σε μια σειρά από μικρότερα `.tex` αρχεία, ένα ανά κεφάλαιο, με το αρχείο `.tex` προστίθεται στο κύριο έγγραφο LaTeX χρησιμοποιώντας `\input` ή `\include`. Συνήθως, αυτά τα κεφάλαια δεν είναι αυτοτελή: δεν μπορείτε να μεταγλωττίσετε μεμονωμένα κεφάλαια επειδή δεν περιέχουν ένα `\documentclass{...}` δήλωση ή το `\begin{document}...\end{document}` δομικό στοιχείο. Αυτά τα κεφάλαια προορίζονται για *ένταξη* σε ένα «περιέκτη» έγγραφο το οποίο *μπορεί να* μεταγλωττιστεί. Σε αυτές τις περιπτώσεις, οι διασταυρούμενες παραπομπές σε στοιχεία του εγγράφου—μέσα σε οποιοδήποτε μεμονωμένο αρχείο κεφαλαίου—μπορούν να γίνουν κανονικά: δεν χρειάζεται να χρησιμοποιήσετε το `xr` πακέτο.

Για να εξερευνήσετε ένα παράδειγμα ενός μεγάλου έργου μπορείτε να [ανοίξετε αυτό το παράδειγμα στο Overleaf.](https://www.overleaf.com/project/new/template/20618?id=70769185\&templateName=Managing+a+large+project+on+Overleaf\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## Παράδειγμα έργου όπου απαιτείται το πακέτο xr

Ας υποθέσουμε ότι έχετε ένα σύνολο αυτοτελών εγγράφων LaTeX, όπως μια συλλογή από N άρθρα: `article1.tex`, `article2.tex` ... `articleN.tex`. Καθένα από αυτά τα άρθρα μπορεί να μεταγλωττιστεί ξεχωριστά και είναι πιθανό να έχουν γραφτεί χρησιμοποιώντας διάφορες κλάσεις εγγράφου, πακέτα κ.λπ.

Τώρα φανταστείτε ότι θέλετε να χρησιμοποιήσετε το LaTeX για να γράψετε μια επισκόπηση ή σύνοψη αυτών των άρθρων—θα ονομάσουμε το αρχείο μας `summary.tex`. Η σύνοψή μας πρέπει να παραπέμπει σε ενότητες, σχήματα, πίνακες, εξισώσεις κ.λπ. που περιέχονται μέσα σε εκείνα τα μεμονωμένα, αυτοτελή, N άρθρα. Πώς μπορούμε να το κάνουμε αυτό;

Η `xr` Το πακέτο σας επιτρέπει να το κάνετε αυτό: επιτρέπει στο `summary.tex` να χρησιμοποιεί ετικέτες αναφοράς που δημιουργούνται από οποιοδήποτε από τα αυτοτελή `article*.tex` αρχεία.

### Σημείωση για τα αρχεία .aux

* Σημείωση: εδώ χρησιμοποιούμε έναν α`*`στερίσκο ( ) ως σύμβολο κράτησης θέσης για οποιονδήποτε αριθμό από το 1 έως το N.

Η μεταγλώττιση οποιουδήποτε από τα αυτοτελή αρχεία `article1.tex`, `article2.tex` ... `articleN.tex` προκαλεί το LaTeX να δημιουργήσει ένα αντίστοιχο `article*.aux` (\*\*`aux`(\*\*βοηθητικό) αρχείο το οποίο, μεταξύ άλλων στοιχείων, περιέχει δεδομένα ετικετών που απαιτούνται για τη δημιουργία διασταυρούμενων παραπομπών.

Αν οποιοδήποτε από τα `article*.tex` αρχεία επεξεργαστεί—για παράδειγμα, για να αλλάξετε, να προσθέσετε ή να αφαιρέσετε ετικέτες (`\label{...}`)—το αντίστοιχο `article*.tex` αρχείο(α) πρέπει να μεταγλωττιστεί εκ νέου για να ενημερωθεί το σχετικό `article*.aux` αρχείο(-α) του έργου σας.

Η ανίχνευση αλλαγών στο `article*.tex`, και η εκ νέου μεταγλώττισή τους στη συνέχεια, μπορεί να αυτοματοποιηθεί στο Overleaf χρησιμοποιώντας ένα κατάλληλο `latexmkrc` αρχείο.

## Πώς να χρησιμοποιήσετε το xr στο Overleaf

Θα χρησιμοποιήσουμε μια απλοποιημένη εκδοχή του παραδείγματος με τα πολλαπλά άρθρα μας· συγκεκριμένα, δείχνουμε πώς να αυτοματοποιήσετε τη διαδικασία μεταγλώττισης `latexmkrc` αρχείο [που παρέχονται στο Overleaf από τον John Collins](#code-for-latexmkrc) ([συντηρητή του `latexmk`](https://ctan.org/pkg/latexmk?lang=en)).

### Αρχεία που χρησιμοποιούνται στο παράδειγμά μας

Το παράδειγμά μας χρησιμοποιεί τα ακόλουθα αρχεία:

* `**summary.tex**`: αυτό είναι το έγγραφο επισκόπησής μας. Το χρειαζόμαστε για να παραπέμπει σε περιεχόμενο που περιέχεται στο `article1.tex`, όπως σχήματα και ενότητες.
  * `summary.tex` φορτώνει το `xr` πακέτο και χρησιμοποιεί το `\externaldocument{article1}` για να καθορίσει ότι τα δεδομένα αναφοράς από το `article1.aux` πρέπει να χρησιμοποιηθούν.
* `**article1.tex**`: ένα μόνο αυτοτελές άρθρο που περιέχει εσωτερικές διασταυρούμενες παραπομπές. Η μεταγλώττιση `article1.tex` παράγει δεδομένα διασταυρούμενων παραπομπών που περιέχονται στο αρχείο `article1.aux`.
  * Ένα εξωτερικό αρχείο όπως το `article1.tex` που μπορεί να έχει γραφτεί από κάποιον άλλον—για να το χρησιμοποιήσετε «ως έχει», δηλαδή χωρίς τροποποιήσεις.
* `**latexmkrc**`: περιέχει κώδικα (Perl) για την αυτοματοποίηση της επαναμεταγλώττισης του `article1.tex` λόγω οποιωνδήποτε αλλαγών γίνονται σε αυτό—για να δημιουργηθεί ένα ενημερωμένο `article1.aux` αρχείο.
  * Το δικό μας `latexmkrc` αρχείο ήταν [που παρέχονται στο Overleaf από τον John Collins](#code-for-latexmkrc) ([συντηρητή του `latexmk`](https://ctan.org/pkg/latexmk?lang=en)).

### Σχετικά με την εντολή \externaldocument

Η `xr` Το πακέτο παρέχει την`\externaldocument` εντολή, η οποία έχει τη γενική μορφή

```latex
\externaldocument[prefix]{external_file}
```

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

Για παράδειγμα, αν το κύριο `.tex` αρχείο `summary.tex` και το εξωτερικό αρχείο, `article1.tex` περιέχουν και τα δύο την ετικέτα `\label{eq:1}` τότε έχουμε σύγκρουση ονόματος ετικέτας. Αυτή η σύγκρουση μπορεί να αποφευχθεί γράφοντας

```latex
\externaldocument[art1-]{article1}
```

οπότε όλες οι ετικέτες που δημιουργούνται κατά τη μεταγλώττιση του `article1.tex` έχουν ως πρόθεμα το `art1-`. Τώρα μπορείτε να αποκτήσετε πρόσβαση στο `\label{eq:1}`, που περιέχεται στο `article1.tex`, γράφοντας `\ref{art1-eq:1}` σε `summary.tex`.

### Τα αρχεία

#### article1.tex

Ο ακόλουθος κώδικας μπορεί να ανοίξει στο Overleaf χρησιμοποιώντας τον σύνδεσμο κάτω από την καταχώριση.

```latex
\documentclass{article}
\title{Αυτό είναι το \texttt{article1.tex}}
\begin{document}
\section{Εισαγωγή}
\label{introduction}

Αυτό είναι ένα αυτοτελές \LaTeX{} έγγραφο με
παραπομπές που θέλουμε να χρησιμοποιήσουμε στο \texttt{summary.tex}.

\subsection{Μαθηματικές παραπομπές}
\label{mathrefs}
Όπως αναφέρεται στην ενότητα \ref{introduction},
σε διαφορετικά στοιχεία μπορεί να γίνει παραπομπή μέσα σε
ένα έγγραφο.

\subsection{Δυναμοσειρές}
\label{powers}

\begin{equation}
\label{eq:1}
\sum_{i=0}^{\infty} a_i x^i
\end{equation}

Η εξίσωση \ref{eq:1} είναι μια τυπική δυναμοσειρά.
\end{document}
```

[Άνοιγμα `article1.tex` στο Overleaf](https://www.overleaf.com/docs?engine=%5B%5B%3ATemplate%3AEngine%5D%5D}\&snip_name\[]=readme.txt\&snip\[]=A+project+created+from+the+Overleaf+wiki\&snip_name\[]=article1.tex\&main_document=article1.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Ctitle%7BThis+is+%5Ctexttt%7Barticle1.tex%7D%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csection%7BIntroduction%7D%0A%5Clabel%7Bintroduction%7D%0A%0AThis+is+a+standalone+%5CLaTeX%7B%7D+document+with%0Areferences+we+want+to+use+in+%5Ctexttt%7Bsummary.tex%7D.%0A%0A%5Csubsection%7BMath+references%7D%0A%5Clabel%7Bmathrefs%7D%0AAs+mentioned+in+section+%5Cref%7Bintroduction%7D%2C+%0Adifferent+elements+can+be+referenced+within%0Aa+document.%0A%0A%5Csubsection%7BPowers+series%7D%0A%5Clabel%7Bpowers%7D%0A%0A%5Cbegin%7Bequation%7D%0A%5Clabel%7Beq%3A1%7D%0A%5Csum_%7Bi%3D0%7D%5E%7B%5Cinfty%7D+a_i+x%5Ei%0A%5Cend%7Bequation%7D%0A%0AEquation+%5Cref%7Beq%3A1%7D+is+a+typical+power+series.%0A%5Cend%7Bdocument)

Μεταγλώττιση `article1.tex` παράγει το ακόλουθο αποτέλεσμα:

![Έξοδος που παράχθηκε από τη μεταγλώττιση του αρχείου article1.tex στο Overleaf](/files/b04666344928750f0937041fd05abc2d922ed09d)

#### summary.tex

Ακολουθεί η αρχική μας `summary.tex` αρχείο *πριν* έχουμε καθορίσει ποιο εξωτερικό έγγραφο θέλουμε να παραπέμψουμε. Για λόγους απλότητας, `summary.tex` δεν περιέχει κανένα `\label` εντολές επειδή δεν υπάρχουν εσωτερικές διασταυρούμενες παραπομπές. Όλες οι `\ref` εντολές αναφέρονται σε ετικέτες που δημιουργούνται από τις `\label` εντολές που περιέχονται στο `article1.tex`.

```latex
\documentclass{article}
\usepackage{xr}
\title{Αυτό είναι το \texttt{summary.tex}}
\begin{document}
Στο αρχείο \texttt{article1.tex}, η εισαγωγή είναι η ενότητα \ref{introduction}. Στο αρχείο αυτό, υπάρχουν δύο υποενότητες: \ref{mathrefs} και \ref{powers}. Στην υποενότητα \ref{powers}, η εξίσωση \ref{eq:1} δείχνει μια δυναμοσειρά.
\end{document}
```

[Ανοίξτε αυτό το *ελλιπές* `summary.tex` στο Overleaf](https://www.overleaf.com/docs?engine=%5B%5B%3ATemplate%3AEngine%5D%5D}\&snip_name\[]=readme.txt\&snip\[]=A+project+created+from+the+Overleaf+wiki\&snip_name\[]=summary.tex\&main_document=summary.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bxr%7D%0A%5Ctitle%7BThis+is+%5Ctexttt%7Bsummary.tex%7D%7D%0A%5Cbegin%7Bdocument%7D%0AIn+the+file+%5Ctexttt%7Barticle1.tex%7D%2C+the+introduction+is+section+%5Cref%7Bintroduction%7D.++In+that+file%2C+there+are+two+subsections%3A+%5Cref%7Bmathrefs%7D+and+%5Cref%7Bpowers%7D.+In+subsection+%5Cref%7Bpowers%7D%2C+equation+%5Cref%7Beq%3A1%7D+demonstrates+a+power+series.%0A%5Cend%7Bdocument%7D)

Αν μεταγλωττίσουμε αυτήν την έκδοση του `summary.tex` θα προσπαθήσει να διαβάσει δεδομένα αναφοράς από το `summary.aux` αλλά τα απαιτούμενα δεδομένα περιέχονται στο εξωτερικό αρχείο `article1.aux` στο οποίο, προς το παρόν, δεν μπορεί να γίνει πρόσβαση.

Η μεταγλώττιση αυτού του ελλιπούς `summary.tex` αρχείου παράγει το ακόλουθο αποτέλεσμα, με διπλά ερωτηματικά να δείχνουν μη ορισμένες παραπομπές:

![Εικόνα που δείχνει αναφορά σε ελλείπουσες παραπομπές](/files/8f332549d5035bb1fe220263b38c6b905aac7090)

### Καθορισμός του εξωτερικού εγγράφου

Το επόμενο βήμα είναι να καθορίσετε `article1` ως το όνομα του εξωτερικού εγγράφου του οποίου τις ετικέτες θέλουμε να παραπέμψουμε. Προσθέστε την ακόλουθη γραμμή στον πρόλογο του `summary.tex`:

```latex
\externaldocument{article1}
```

Εδώ, `article1` μπορεί να αντικατασταθεί από οποιοδήποτε αρχείο του οποίου τις ετικέτες θέλετε να αποκτήσετε—μπορείτε να χρησιμοποιήσετε πολλαπλές `\externaldocument` εντολές για να αποκτήσετε πρόσβαση σε επιπλέον εξωτερικά αρχεία.

### Δημιουργία του αρχείου latexmkrc

Το επόμενο βήμα είναι να δημιουργήσετε ένα `latexmkrc` αρχείο όπως φαίνεται παρακάτω:

* Στο παράθυρο επεξεργασίας του έργου σας, επιλέξτε το **Νέο αρχείο** εικονίδιο στην επάνω αριστερή γωνία του παραθύρου του έργου.
* Επιλέξτε **Νέο αρχείο** από μέσα από το **Προσθήκη αρχείων** αναδυόμενο πλαίσιο διαλόγου και ονομάστε το αρχείο `latexmkrc`—σημειώστε ότι δεν υπάρχει επέκταση αρχείου:

![Δημιουργία αρχείου latexmkrc στο Overleaf](/files/92bec881efb10d79e7d26a9dc235e70af1e679bb)

* Βεβαιωθείτε ότι το `latexmkrc` αρχείο που δημιουργείται και αποθηκεύεται στο ανώτερο (ριζικό) επίπεδο της περιοχής αρχείων του έργου. Δηλαδή, όχι μέσα σε κανέναν φάκελο στο δέντρο αρχείων.
* Αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα στο `latexmkrc` αρχείο.

#### Κώδικας για το latexmkrc

Το Overleaf είναι ευγνώμον στον John Collins, [συντηρητή του `latexmk`](https://ctan.org/pkg/latexmk?lang=en), που επικοινώνησε μαζί μας για να παρέχει το ακόλουθο `latexmkrc` αρχείο, το οποίο με χαρά δημοσιεύουμε ολόκληρο—συμπεριλαμβανομένων των εξαιρετικά χρήσιμων ενσωματωμένων σχολίων.

```perl
# Αυτό δείχνει πώς να χρησιμοποιείτε το πακέτο xr με το latexmk.
# John Collins 2023-03-29
#
# Το πακέτο xr ("ένα σύστημα για Εξωτερικές Αναφορές") χρησιμοποιείται από ένα έγγραφο
# για να κάνει παραπομπές σε ενότητες, εξισώσεις κ.λπ. σε άλλα εξωτερικά
# έγγραφα.
# Οι ορισμοί σε αυτό το αρχείο επιτρέπουν στο latexmk να εφαρμόζει το latexmk σε
# να ενημερώνει αυτόματα ένα εξωτερικό έγγραφο κάθε φορά που αλλάζει το αρχείο .tex του,
# ώστε οι παραπομπές στο κύριο έγγραφο να παραμένουν ενημερωμένες.

# Σημειώσεις:
#    1. Αυτή η έκδοση ορίζεται ώστε να τοποθετεί τα αρχεία από τις μεταγλωττίσεις των
#       εξωτερικών εγγράφων σε έναν καθορισμένο υποκατάλογο, ώστε να διαχωρίζονται
#       δυνητικά πολλά παραγόμενα αρχεία από τους καταλόγους του κύριου εγγράφου
#       .
#    2. Όμως, για να χρησιμοποιηθεί ο μηχανισμός προσαρμοσμένων εξαρτήσεων του latexmk, όπως εδώ,
#       το αρχείο aux από τη μεταγλώττιση ενός υποεγγράφου πρέπει να δημιουργείται στο
#       ίδιος κατάλογος με το αντίστοιχο αρχείο πηγής .tex.  Έτσι, το
#       αρχείο .aux αντιγράφεται.
#    3. Υποτίθεται ότι τα εξωτερικά έγγραφα θα μεταγλωττίζονται από
#       pdflatex.  Αυτό μπορεί φυσικά να αλλάξει, τροποποιώντας την επιλογή '-pdf'
#       που δίνεται στο καλούμενο latexmk σε ό,τι χρειάζεται.
#    4. Μια ιδανική υλοποίηση θα διασφάλιζε επίσης ότι η εκ νέου μεταγλώττιση ενός
#       εξωτερικού εγγράφου συμβαίνει επίσης κάθε φορά που οποιοδήποτε από τα άλλα αρχεία πηγής του
#       αλλάζει.  Όμως αυτό δεν γίνεται στην παρούσα έκδοση, και
#       πιθανότατα θα συνεπαγόταν είτε τη χρήση εσωτερικών μεταβλητών του latexmk
#       είτε πρόσθετες επεκτάσεις του latexmk.
#    5. Ο κώδικας χρησιμοποιεί τις υπορουτίνες copy και fileparse που φορτώνονται από το
#       latexmk από τα πακέτα Perl File::Copy και File::Basename.
#    6. Χρησιμοποιεί επίσης ορισμένες ακόμη μη τεκμηριωμένες δυνατότητες του latexmk: έναν πίνακα
#       μεταβλητή @file_not_found και τις υπορουτίνες popd, pushd, και
#       rdb_add_generated.

#--------------------
# Διαμορφώσιμες επιλογές για τη μεταγλώττιση εξωτερικών εγγράφων

# Υποκατάλογος για τα αρχεία εξόδου από τη μεταγλώττιση εξωτερικών εγγράφων:
$sub_doc_output = 'output-subdoc';

# Επιλογές που θα δοθούν στο latexmk για τη μεταγλώττιση εξωτερικών εγγράφων:
@sub_doc_options = ();

push @sub_doc_options, '-pdf'; # Χρησιμοποιήστε pdflatex για τη μεταγλώττιση εξωτερικών εγγράφων.
# Αν χρειάζεται, αντικαταστήστε το '-pdf' με '-pdfdvi', 'pdfxe' ή 'pdflua'.

#--------------------

# Προσθέστε ένα μοτίβο για το μήνυμα του αρχείου καταγραφής του xr σχετικά με ελλείποντα αρχεία στη
# λίστα του latexmk.  Η μεταβλητή @file_not_found του Latexmk δεν έχει ακόμη τεκμηριωθεί.
# Αυτή η γραμμή δεν είναι απαραίτητη για την έκδοση 4.80 ή νεότερη του latexmk.
push @file_not_found, '^No file\\s*(.+)\s*$';

add_cus_dep( 'tex', 'aux', 0, 'makeexternaldocument' );
sub makeexternaldocument {
    if ( $root_filename ne $_[0] )  {
        my ($base_name, $path) = fileparse( $_[0] );
        pushd $path;
        my $return = system "latexmk",
                            @sub_doc_options,
                            "-aux-directory=$sub_doc_output",
                            "-output-directory=$sub_doc_output",
                            $base_name;
        if ( ($sub_doc_output ne '') && ($sub_doc_output ne '.') ) {
               # Σε αυτήν την περίπτωση, το αρχείο .aux που δημιουργείται από το pdflatex δεν βρίσκεται στον ίδιο
               # κατάλογο με το αρχείο .tex.
               # Επομένως:
               # 1. Το πραγματικά παραγόμενο αρχείο aux πρέπει να παρατίθεται όπως παράγεται από αυτόν τον
               #    κανόνα, ώστε το latexmk να χειρίζεται σωστά τις εξαρτήσεις.
               #    (Πρόβλημα που πρέπει να ξεπεραστεί: Αν το $sub_dir_output είναι το ίδιο με το $aux_dir
               #    για το κύριο έγγραφο, το xr μπορεί να διαβάσει το αρχείο .aux στον
               #    aux_dir αντί για εκείνο που υποτίθεται ότι παράγει η cus dep από το latexmk
               #    και το οποίο βρίσκεται στον ίδιο κατάλογο με το αρχείο πηγής .tex
               #    για αυτήν την προσαρμοσμένη εξάρτηση.)
               #    Χρησιμοποιήστε την ακόμη μη τεκμηριωμένη υπορουτίνα του latexmk rdb_add_generated
               #    για να το κάνετε αυτό:
               # 2. Ένα αντίγραφο του αρχείου .aux πρέπει να βρίσκεται στον ίδιο κατάλογο με το αρχείο .tex
               #    για να ικανοποιείται ο ορισμός του latexmk για μια προσαρμοσμένη εξάρτηση.
             rdb_add_generated( "$sub_doc_output/$base_name.aux" );
             copy "$sub_doc_output/$base_name.aux", ".";
        }
        popd;
        return $return;
   }
}
```

### Ανοίξτε ένα έργο Overleaf που παρουσιάζει το xr

Το ακόλουθο έργο τριών αρχείων μπορεί τώρα να ανοίξει στο Overleaf χρησιμοποιώντας τους συνδέσμους που παρέχονται πάνω και κάτω από τις καταχωρίσεις των αρχείων. Σημειώστε ότι το `latexmkrc` αρχείο περιέχει τον κώδικα που παρείχε ο John Collins, αλλά, για συντομία, τα περισσότερα σχόλια έχουν αφαιρεθεί.

[Ανοίξτε αυτό το παράδειγμα τριών αρχείων στο Overleaf.](/latex/el/basi-gnoseon/033-cross-referencing-with-the-xr-package-in-overleaf.md)

**summary.tex**

Αυτό είναι το αρχείο σύνοψής μας. Από μέσα από αυτό το αρχείο θέλουμε να χρησιμοποιήσουμε διασταυρούμενες παραπομπές που δημιουργήθηκαν σε εξωτερικά αρχεία. Εδώ, θέλουμε να χρησιμοποιήσουμε ετικέτες που δημιουργήθηκαν στο `article1.tex`.

```latex
\documentclass[12pt]{article}
\usepackage{xr}

\title{Χρήση του πακέτου xr στο Overleaf}
% βάλτε όλα τα εξωτερικά έγγραφα εδώ!
\externaldocument{article1}

\begin{document}

Στο αρχείο \texttt{article1.tex}, η εισαγωγή είναι η ενότητα \ref{introduction}. Στο αρχείο αυτό, υπάρχουν δύο υποενότητες: \ref{mathrefs} και \ref{powers}. Στην υποενότητα \ref{powers}, η εξίσωση \ref{eq:1} δείχνει μια δυναμοσειρά.

\end{document}
```

**article1.tex**

Αυτό το αρχείο είναι ένα από τα άρθρα μας. Παρατηρήστε πώς περιέχει διάφορες `\label` εντολές για τη δημιουργία ετικετών που, χάρη στο `xr` πακέτο, μπορούμε να χρησιμοποιήσουμε στο αρχείο `summary.tex`.

```latex
\documentclass{article}
\title{Αυτό είναι το \texttt{article1.tex}}
\begin{document}
\section{Εισαγωγή}
\label{introduction}

Αυτό είναι ένα αυτοτελές \LaTeX{} έγγραφο με
παραπομπές που θέλουμε να χρησιμοποιήσουμε στο \texttt{summary.tex}.

\subsection{Μαθηματικές παραπομπές}
\label{mathrefs}
Όπως αναφέρεται στην ενότητα \ref{introduction},
σε διαφορετικά στοιχεία μπορεί να γίνει παραπομπή μέσα σε
ένα έγγραφο.

\subsection{Δυναμοσειρές}
\label{powers}

\begin{equation}
\label{eq:1}
\sum_{i=0}^{\infty} a_i x^i
\end{equation}

Η εξίσωση \ref{eq:1} είναι μια τυπική δυναμοσειρά.
\end{document}
```

**latexmkrc**

Αυτό το `latexmkrc` αρχείο περιέχει κώδικα για να διασφαλίσει ότι τα εξωτερικά αρχεία μεταγλωττίζονται.

```latex
$sub_doc_output = 'output-subdoc';

@sub_doc_options = ();

push @sub_doc_options, '-pdf'; # Χρησιμοποιήστε pdflatex για τη μεταγλώττιση εξωτερικών εγγράφων.
# Αν χρειάζεται, αντικαταστήστε το '-pdf' με '-pdfdvi', 'pdfxe' ή 'pdflua'.

push @file_not_found, '^No file\\s*(.+)\s*$';

add_cus_dep( 'tex', 'aux', 0, 'makeexternaldocument' );
sub makeexternaldocument {
    if ( $root_filename ne $_[0] )  {
        my ($base_name, $path) = fileparse( $_[0] );
        pushd $path;
        my $return = system "latexmk",
                            @sub_doc_options,
                            "-aux-directory=$sub_doc_output",
                            "-output-directory=$sub_doc_output",
                            $base_name;
        if ( ($sub_doc_output ne '') && ($sub_doc_output ne '.') ) {

             rdb_add_generated( "$sub_doc_output/$base_name.aux" );
             copy "$sub_doc_output/$base_name.aux", ".";
        }
        popd;
        return $return;
   }
}
```

[Ανοίξτε αυτό το παράδειγμα τριών αρχείων στο Overleaf.](/latex/el/basi-gnoseon/033-cross-referencing-with-the-xr-package-in-overleaf.md)

Το ακόλουθο γραφικό είναι μια σχολιασμένη έκδοση της εξόδου από τη στοιχειοθεσία του `summary.tex`, δείχνοντας τις διασταυρούμενες παραπομπές και τις αντίστοιχες ετικέτες από το εξωτερικό αρχείο `article1.tex`.

![Εμφάνιση παραπομπών που εισήχθησαν από εξωτερικό αρχείο](/files/cdb1232e5dfc5b06e3966dddef291dad13e21f40)

* Για περισσότερες λεπτομέρειες σχετικά με τις διασταυρούμενες παραπομπές, δείτε το άρθρο του Overleaf [Διασταυρούμενη παραπομπή σε ενότητες, εξισώσεις και πλωτά στοιχεία](/latex/el/domi-eggrafoy/03-cross-referencing-sections-equations-and-floats.md).

## Σημείωση για συντακτικά σφάλματα

Για το κύριο αρχείο του έργου σας, μπορείτε να χρησιμοποιήσετε τη λειτουργία του Overleaf [λειτουργία μεταγλώττισης «Διακοπή στο πρώτο σφάλμα»](/latex/el/basi-gnoseon/149-using-the-stop-on-first-error-compilation-mode.md) για να διασφαλίσετε ότι η μεταγλώττιση τερματίζεται αμέσως με την ανίχνευση του πρώτου σφάλματος. Αυτό μπορεί να βοηθήσει στον εντοπισμό και την απομόνωση σφαλμάτων στον κώδικά σας, αντί να αφήνει τα σφάλματα να αλυσιδωθούν, κάτι που καθιστά πολύ δυσκολότερο τον εντοπισμό και τον εντοπισμό σφαλμάτων.

Η *external* τα έγγραφα μεταγλωττίζονται αυτόματα μέσω του `latexmkrc` αρχείου· κατά συνέπεια, τυχόν συντακτικά σφάλματα LaTeX μέσα σε αυτά δεν θα εμφανίζονται στη διεπαφή του Overleaf—εκτός αν τα μεταγλωττίσετε ξανά και στο Overleaf. Σφάλματα σε εκείνα τα εξωτερικά αρχεία θα μπορούσαν να εμποδίσουν τις διασταυρούμενες παραπομπές να εμφανιστούν σωστά στο στοιχειοθετημένο αρχείο PDF, οπότε συνιστούμε ανεπιφύλακτα να ελέγχετε και να διορθώνετε οποιαδήποτε τέτοια σφάλματα μόλις εμφανιστούν.


---

# 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/basi-gnoseon/033-cross-referencing-with-the-xr-package-in-overleaf.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.
