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

# Korsreferenser med xr-paketet i Overleaf

## Översikt

Den [`xr` paketet](https://ctan.org/pkg/xr?lang=en) låter dig skapa korsreferenser till ekvationer, figurer, tabeller osv. som finns i externa LaTeX-dokument, förutsatt att dessa dokument är *fristående.* Ett fristående LaTeX-dokument är ett dokument som kan kompileras eftersom det innehåller en `\documentclass{...}` sats och `\begin{document}`...`\end{document}` konstruktionen.

### Sammanfattning av användning

1. Skriv `\usepackage{xr}` i förordet till LaTeX-filen som behöver korsreferera innehåll i externa LaTeX-filer.
2. Använd `xr` paketkommandot `\externaldocument{filename}` för att ange de externa dokument vars innehåll du vill korsreferera.

Den `xr` paketet fungerar genom att använda korsreferensetiketter som finns i `.aux` filer som genereras när de externa LaTeX-dokumenten kompileras.

### Så fungerar korsreferenser (en kort sammanfattning)

För att korsreferera ett element i ett LaTeX-dokument behöver du:

1. Ge det en unik identifierare, `some_string`, med hjälp av `\label` kommandot:

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

3. På platsen där du vill referera till det elementet behöver du skriva

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

Mycket kort sagt hanterar LaTeX korsreferenser genom att skriva data till en fil som heter `filename.aux` där `filename` är namnet på den huvudsakliga `.tex` filen som kompileras.

För att processen ska fungera måste LaTeX-dokumentet kompileras minst två gånger: den första kompileringen *genererar* referensdatan—genom att skriva den till `filename.aux`. Under den andra kompileringen läser LaTeX *läser* `filename.aux` för att lösa referenserna, och tillhandahåller data som ersätter förekomster av `\ref{some_string}`.

* För mer detaljer om korsreferenser se Overleaf-artikeln [Korsreferenser till sektioner, ekvationer och flytande objekt](/latex/sv/dokumentstruktur/03-cross-referencing-sections-equations-and-floats.md).

## Projekt där xr-paketet inte krävs

Stora LaTeX-projekt, såsom böcker eller långa rapporter, delas ofta upp i en serie mindre `.tex` filer, en per kapitel, där varje kapitels `.tex` fil läggs till i det huvudsakliga LaTeX-dokumentet med hjälp av `\input` eller `\include`. Vanligtvis är dessa kapitel inte fristående: du kan inte kompilera enskilda kapitel eftersom de inte innehåller en `\documentclass{...}` sats eller `\begin{document}...\end{document}` konstruktionen. Dessa kapitel är avsedda för *inkludering* i ett ”behållar”-dokument som *kan* kompileras. Under sådana omständigheter kan korsreferenser till dokumentelement — inom varje enskild kapitel-fil — göras som vanligt: du behöver inte använda `xr` paketet.

För att utforska ett exempel på ett stort projekt kan du [öppna detta exempel i 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=)

## Exempel på ett projekt där xr-paketet krävs

Anta att du har en uppsättning fristående LaTeX-dokument, till exempel en samling av N artiklar: `article1.tex`, `article2.tex` ... `articleN.tex`. Var och en av dessa artiklar kan kompileras separat och de skrevs sannolikt med en mängd olika dokumentklasser, paket osv.

Föreställ dig nu att du vill använda LaTeX för att skriva en översikt eller sammanfattning av dessa artiklar — vi kallar vår fil `summary.tex`. Vår sammanfattning behöver referera till sektioner, figurer, tabeller, ekvationer osv. som finns i dessa enskilda, fristående N artiklar. Hur kan vi göra det?

Den `xr` paketet låter dig göra detta: det `summary.tex` att använda referensetiketter som genererats av någon av de fristående `article*.tex` .bib-filer.

### En notis om .aux-filer

* Notera att vi här använder en asterisk (`*`) som platshållare för vilket tal som helst från 1 till N.

Om du kompilerar någon av de fristående filerna `article1.tex`, `article2.tex` ... `articleN.tex` får LaTeX att generera en motsvarande `article*.aux` (\*\*`aux`\*\*illär) fil som bland annat innehåller etikettdata som krävs för att generera korsreferenser.

Om någon av de `article*.tex` filerna redigeras — till exempel för att ändra, lägga till eller ta bort etiketter (`\label{...}`) — måste motsvarande `article*.tex` fil(er) kompileras om för att uppdatera den tillhörande `article*.aux` fil(er).

Att upptäcka ändringar i `article*.tex`, och därefter kompilera om dem, kan automatiseras i Overleaf genom att använda en lämplig `latexmkrc` -filen.

## Så använder du xr i Overleaf

Vi använder en förenklad version av vårt flerartikelsexempel; särskilt visar vi hur man automatiserar kompileringsprocessen via en `latexmkrc` fil [tillhandahållen till Overleaf av John Collins](#code-for-latexmkrc) ([underhållare av `latexmk`](https://ctan.org/pkg/latexmk?lang=en)).

### Filer som används i vårt exempel

Vårt exempel använder följande filer:

* `**summary.tex**`: detta är vårt översiktsdokument. Vi behöver det för att referera till innehåll i `article1.tex`, såsom figurer och sektioner.
  * `summary.tex` laddar `xr` paketet och använder `\externaldocument{article1}` för att ange att referensdata från `article1.aux` ska användas.
* `**article1.tex**`: en enda fristående artikel som innehåller interna korsreferenser. Att kompilera `article1.tex` genererar korsreferensdata som finns i filen `article1.aux`.
  * En extern fil såsom `article1.tex` som kan ha skrivits av någon annan — för att du ska kunna använda den ”i befintligt skick”, dvs. orörd.
* `**latexmkrc**`: innehåller kod (Perl) för att automatisera omkompilering av `article1.tex` på grund av eventuella ändringar i den — för att skapa en uppdaterad `article1.aux` -filen.
  * Vår `latexmkrc` fil var [tillhandahållen till Overleaf av John Collins](#code-for-latexmkrc) ([underhållare av `latexmk`](https://ctan.org/pkg/latexmk?lang=en)).

### Om kommandot \externaldocument

Den `xr` paketet tillhandahåller`\externaldocument` kommandot, som har den allmänna formen

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

* **`prefix` (valfritt):** Detta valfria argument låter dig definiera ett prefix som läggs till alla etiketter som importeras från det externa dokumentet. Detta är användbart för att undvika konflikter om samma etikettnamn används i flera dokument.
* **`external_file` (obligatoriskt):** Detta obligatoriska argument anger namnet på det externa LaTeX-dokumentet (utan `.tex` tillägget) från vilket du vill importera referenser.  `xr` paketet kommer att leta efter `.aux` filen som motsvarar `external_file` (t.ex., `external_file.aux`) för att hämta etiketterna.

Som exempel, om vårt huvudsakliga `.tex` fil `summary.tex` och den externa filen, `article1.tex` båda innehåller etiketten `\label{eq:1}` har vi en namnkonflikt för etiketter. Den konflikten kan förhindras genom att skriva

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

i vilket fall alla etiketter som skapas genom att kompilera `article1.tex` får prefixet `art1-`. Nu kan du komma åt `\label{eq:1}`, som finns i `article1.tex`, genom att skriva `\ref{art1-eq:1}` i `summary.tex`.

### Projektfilerna

#### article1.tex

Följande kod kan öppnas i Overleaf med länken under kodlistningen.

```latex
\documentclass{article}
\title{This is \texttt{article1.tex}}
\begin{document}
\section{Introduktion}
\label{introduction}

Detta är ett fristående \LaTeX{}-dokument med
referenser som vi vill använda i \texttt{summary.tex}.

\subsection{Math references}
\label{mathrefs}
Som nämnts i sektion \ref{introduction},
olika element kan refereras till inom
ett dokument.

\subsection{Powers series}
\label{powers}

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

Ekvation \ref{eq:1} är en typisk potensserie.
\end{document}
```

[Öppna `article1.tex` i 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)

Kompilering `article1.tex` ger följande utdata:

![Utdata som produceras när article1.tex-filen kompileras i Overleaf](/files/a0cef16e718dbaddc14493f85ce7ef828ceff89b)

#### summary.tex

Här är vår initiala `summary.tex` fil *innan* vi har angett vilket externt dokument vi vill referera till. För enkelhetens skull, `summary.tex` innehåller inte några `\label` kommandon eftersom det inte finns några interna korsreferenser. Alla `\ref` kommandon hänvisar till etiketter som genereras av `\label` kommandon som finns i `article1.tex`.

```latex
\documentclass{article}
\usepackage{xr}
\title{This is \texttt{summary.tex}}
\begin{document}
I filen \texttt{article1.tex} är introduktionen sektion \ref{introduction}.  I den filen finns det två underrubriker: \ref{mathrefs} och \ref{powers}. I underrubriken \ref{powers} demonstrerar ekvation \ref{eq:1} en potensserie.
\end{document}
```

[Öppna detta *ofullständig* `summary.tex` i 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)

Om vi kompilerar denna version av `summary.tex` kommer den att försöka läsa referensdata från `summary.aux` men den nödvändiga datan finns i den externa filen `article1.aux` som ännu inte kan nås.

Att kompilera denna ofullständiga `summary.tex` fil ger följande utdata, där dubbla frågetecken visar odefinierade referenser:

![Bild som visar rapportering av saknade referenser](/files/b41f3dd9564a3f71997057e2318713f926873fca)

### Ange det externa dokumentet

Nästa steg är att ange `article1` som namnet på det externa dokument vars etiketter vi vill referera till. Lägg till följande rad i förordet till `summary.tex`:

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

Här, `article1` kan ersättas av valfri fil vars etiketter du vill komma åt — du kan använda flera `\externaldocument` kommandon för att komma åt ytterligare externa filer.

### Skapa latexmkrc-filen

Nästa steg är att skapa en `latexmkrc` fil enligt nedan:

* I ditt projektredigeringsfönster väljer du **Ny fil** ikonen uppe till vänster i projektfönstret.
* Välj **Ny fil** från **Lägg till filer** popup-dialogrutan och ge filen namnet `latexmkrc`—observera att det inte finns någon filändelse:

![Skapa en latexmkrc-fil i Overleaf](/files/b6aa1b36a1e0ac214e54643e82add6b61e33b80e)

* Se till att `latexmkrc` filen skapas och sparas på projektets översta (rot-)nivå i filområdet. Det vill säga inte inuti någon mapp i filträdet.
* Kopiera och klistra in följande kod i din `latexmkrc` -filen.

#### Kod för latexmkrc

Overleaf är tacksamma mot John Collins, [underhållare av `latexmk`](https://ctan.org/pkg/latexmk?lang=en), för att han kontaktade oss och tillhandahöll följande `latexmkrc` fil, som vi med glädje publicerar i sin helhet — inklusive de mycket hjälpsamma kommentarer i texten.

```perl
# Detta visar hur man använder xr-paketet med latexmk.
# John Collins 2023-03-29
#
# xr-paketet ("ett system för externa referenser") används av ett dokument
# för att göra referenser till sektioner, ekvationer osv. i andra externa
# dokument.
# Definitionerna i denna fil gör det möjligt för latexmk att tillämpa latexmk på
# automatiskt uppdatera ett externt dokument varje gång dess .tex-fil ändras,
# så att referenserna i huvuddokumentet hålls uppdaterade.

# Noteringar:
#    1. Denna version är definierad så att filerna från kompileringarna av
#       de externa dokumenten placeras i en definierad underkatalog, för att separera
#       potentiellt många genererade filer från huvuddokumentets
#       kataloger.
#    2. Men för att latexmks mekanism för anpassade beroenden ska kunna användas, som här,
#       måste aux-filen från kompileringen av ett underdokument genereras i
#       samma katalog som motsvarande käll-.tex-fil. Så
#       kopieras .aux-filen.
#    3. Det antas att de externa dokumenten ska kompileras med
#       pdflatex. Detta kan förstås ändras genom att ändra alternativet '-pdf'
#       som ges till den anropade latexmk till vad som än behövs.
#    4. En ideal implementation skulle också säkerställa att omkompilering av ett
#       externt dokument också sker när någon av dess andra käll-
#       filer ändras. Men detta görs inte i den nuvarande versionen, och
#       skulle sannolikt kräva antingen användning av interna latexmk-variabler
#       eller extra förbättringar av latexmk.
#    5. Koden använder subrutinerna copy och fileparse som laddas av
#       latexmk från Perl-paketen File::Copy och File::Basename.
#    6. Den använder också vissa ännu inte dokumenterade funktioner i latexmk: en array
#       variabel @file_not_found samt subrutinerna popd, pushd och
#       rdb_add_generated.

#--------------------
# Konfigurerbara val för kompilering av externa dokument

# Underkatalog för utdatafiler från kompilering av externa dokument:
$sub_doc_output = 'output-subdoc';

# Alternativ att ge till latexmk för kompilering av externa dokument:
@sub_doc_options = ();

push @sub_doc_options, '-pdf'; # Använd pdflatex för kompilering av externa dokument.
# Ersätt '-pdf' med '-pdfdvi', 'pdfxe' eller 'pdflua' om det behövs.

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

# Lägg till ett mönster för xr:s loggfilmeddelande om saknade filer i latexmks
# lista. Latexmks variabel @file_not_found är ännu inte dokumenterad.
# Den här raden behövs inte för v. 4.80 eller senare av 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 '.') ) {
               # I detta fall ligger .aux-filen som genereras av pdflatex inte i samma
               # katalog som .tex-filen.
               # Därför:
               # 1. Den faktiskt genererade aux-filen måste listas som producerad av denna
               #    regel, så att latexmk hanterar beroenden korrekt.
               #    (Problem att övervinna: Om $sub_dir_output är samma som $aux_dir
               #    för huvuddokumentet kan xr läsa .aux-filen i
               #    aux_dir i stället för den som latexmks anpassade beroende antas
               #    producera, vilken ligger i samma katalog som .tex-käll-
               #    filen för detta anpassade beroende.)
               #    Använd den ännu inte dokumenterade latexmk-subrutinen rdb_add_generated
               #    för att göra detta:
               # 2. En kopia av .aux-filen måste finnas i samma katalog som .tex-filen
               #    för att uppfylla latexmks definition av ett anpassat beroende.
             rdb_add_generated( "$sub_doc_output/$base_name.aux" );
             copy "$sub_doc_output/$base_name.aux", ".";
        }
        popd;
        return $return;
   }
}
```

### Öppna ett Overleaf-projekt som demonstrerar xr

Följande projekt med tre filer kan nu öppnas i Overleaf med hjälp av länkarna ovanför och under fillistorna. Observera att `latexmkrc` filen innehåller koden som tillhandahållits av John Collins men, av korthetsskäl, har de flesta kommentarerna tagits bort.

[Öppna detta exempel med tre filer i Overleaf.](/latex/sv/kunskapsbas/033-cross-referencing-with-the-xr-package-in-overleaf.md)

**summary.tex**

Detta är vår sammanfattningsfil. Från denna fil vill vi använda korsreferenser som skapats i externa filer. Här vill vi använda etiketter som genererats i `article1.tex`.

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

\title{Att använda xr-paketet i Overleaf}
% lägg alla de externa dokumenten här!
\externaldocument{article1}

\begin{document}

I filen \texttt{article1.tex} är introduktionen sektion \ref{introduction}.  I den filen finns det två underrubriker: \ref{mathrefs} och \ref{powers}. I underrubriken \ref{powers} demonstrerar ekvation \ref{eq:1} en potensserie.

\end{document}
```

**article1.tex**

Denna fil är en av våra artiklar. Lägg märke till hur den innehåller olika `\label` kommandon för att skapa etiketter som tack vare `xr` paketet kan vi använda i filen `summary.tex`.

```latex
\documentclass{article}
\title{This is \texttt{article1.tex}}
\begin{document}
\section{Introduktion}
\label{introduction}

Detta är ett fristående \LaTeX{}-dokument med
referenser som vi vill använda i \texttt{summary.tex}.

\subsection{Math references}
\label{mathrefs}
Som nämnts i sektion \ref{introduction},
olika element kan refereras till inom
ett dokument.

\subsection{Powers series}
\label{powers}

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

Ekvation \ref{eq:1} är en typisk potensserie.
\end{document}
```

**latexmkrc**

Denna `latexmkrc` fil innehåller kod för att säkerställa att de externa filerna kompileras.

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

@sub_doc_options = ();

push @sub_doc_options, '-pdf'; # Använd pdflatex för kompilering av externa dokument.
# Ersätt '-pdf' med '-pdfdvi', 'pdfxe' eller 'pdflua' om det behövs.

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;
   }
}
```

[Öppna detta exempel med tre filer i Overleaf.](/latex/sv/kunskapsbas/033-cross-referencing-with-the-xr-package-in-overleaf.md)

Följande grafik är en kommenterad version av utdata från sättningen av `summary.tex`, som visar korsreferenserna och de motsvarande etiketterna från den externa filen `article1.tex`.

![Visar referenser importerade från en extern fil](/files/cf09cec3b1bb4f7ab2fd094ddcfeb23d419b3762)

* För mer detaljer om korsreferenser se Overleaf-artikeln [Korsreferenser till sektioner, ekvationer och flytande objekt](/latex/sv/dokumentstruktur/03-cross-referencing-sections-equations-and-floats.md).

## En notis om syntaxfel

För din huvudprojektfil kan du använda Overleafs [kompileringsläget Stop on First Error](/latex/sv/kunskapsbas/149-using-the-stop-on-first-error-compilation-mode.md) för att säkerställa att kompileringen avslutas omedelbart när det första felet upptäcks. Detta kan hjälpa till att isolera och identifiera fel i din kod, i stället för att låta fel kedjereagera, vilket gör det betydligt svårare att hitta och felsöka problem.

Den *external* dokument kompileras automatiskt via `latexmkrc` filen; följaktligen kommer eventuella LaTeX-syntaxfel i dem inte att visas i Overleaf-gränssnittet — om du inte kompilerar om dem i Overleaf också. Fel i dessa externa filer kan göra att korsreferenser inte visas korrekt i den sätta PDF-filen, så vi rekommenderar starkt att du kontrollerar och rättar sådana fel så snart de uppstår.


---

# 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/sv/kunskapsbas/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.
