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

# Krydshenvisning med xr-pakken i Overleaf

## Oversigt

Den [`xr` pakken](https://ctan.org/pkg/xr?lang=en) giver dig mulighed for at oprette krydshenvisninger til ligninger, figurer, tabeller osv. i eksterne LaTeX-dokumenter, forudsat at disse dokumenter er *selvstændige.* Et selvstændigt LaTeX-dokument er et dokument, der kan kompileres, fordi det indeholder en `\documentclass{...}` erklæring og `\begin{document}`...`\end{document}` konstruktionen.

### Kort brugssammenfatning

1. Skriv `\usepackage{xr}` i præamblen til den LaTeX-fil, der skal krydshenvise indhold i eksterne LaTeX-filer.
2. Brug `xr` pakke-kommando `\externaldocument{filename}` for at angive det eller de eksterne dokumenter, hvis indhold du vil krydshenvise.

Den `xr` pakken fungerer ved at bruge krydshenvisningsetiketter i `.aux` filer, der genereres, når de eksterne LaTeX-dokumenter kompileres.

### Sådan fungerer krydshenvisninger (kort fortalt)

For at krydshenvise et element i et LaTeX-dokument skal du:

1. Give det en unik identifikator, `some_string`, ved at bruge `\label` kommandoen:

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

3. På det sted, hvor du vil henvise til det element, skal du skrive

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

Kort fortalt håndterer LaTeX krydshenvisninger ved at skrive data til en fil kaldet `filename.aux` hvor `filename` er navnet på den primære `.tex` fil, der kompileres.

For at processen skal fungere, skal LaTeX-dokumentet kompileres mindst to gange: Den første kompilering *genererer* referencedataene—og skriver dem til `filename.aux`. Under den anden kompilering læser LaTeX *læser* `filename.aux` for at løse referencerne og levere data til at erstatte forekomster af `\ref{some_string}`.

* For flere detaljer om krydshenvisninger, se Overleaf-artiklen [Krydshenvisning til sektioner, ligninger og flydere](/latex/da/dokumentstruktur/03-cross-referencing-sections-equations-and-floats.md).

## Projekter, hvor xr-pakken ikke er påkrævet

Store LaTeX-projekter, såsom bøger eller lange rapporter, opdeles ofte i en række mindre `.tex` filer, én pr. kapitel, hvor hvert kapitels `.tex` fil føjes til det primære LaTeX-dokument ved hjælp af `\input` eller `\include`. Normalt er disse kapitler ikke selvstændige: du kan ikke kompilere enkelte kapitler, fordi de ikke indeholder en `\documentclass{...}` erklæring eller `\begin{document}...\end{document}` konstruktion. Disse kapitler er beregnet til *indsættelse* i et “beholder”-dokument, som *kan* kompileres. Under disse omstændigheder kan krydshenvisninger til dokumentelementer—i en hvilken som helst enkelt kapselfil—foregå som normalt: du behøver ikke at bruge `xr` pakken.

For at udforske et eksempel på et stort projekt kan du [åbne dette eksempel 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=)

## Eksempel på et projekt, hvor xr-pakken er påkrævet

Antag, at du har et sæt selvstændige LaTeX-dokumenter, såsom en samling af N artikler: `article1.tex`, `article2.tex` ... `articleN.tex`. Hver af disse artikler kan kompileres separat, og de er sandsynligvis skrevet ved hjælp af forskellige dokumentklasser, pakker osv.

Forestil dig nu, at du vil bruge LaTeX til at skrive en oversigt eller sammenfatning af disse artikler—vi kalder vores fil `summary.tex`. Vores sammenfatning skal henvise til sektioner, figurer, tabeller, ligninger osv., der findes i disse enkelte, selvstændige N artikler. Hvordan kan vi gøre det?

Den `xr` pakken giver dig mulighed for at gøre dette: den gør det muligt `summary.tex` at bruge referenceetiketter genereret af enhver af de selvstændige `article*.tex` filer.

### En bemærkning om .aux-filer

* Bemærk, at vi her bruger en stjerne (`*`) som pladsholder for et vilkårligt tal fra 1 til N.

Kompilering af en hvilken som helst af de selvstændige filer `article1.tex`, `article2.tex` ... `articleN.tex` får LaTeX til at generere en tilsvarende `article*.aux` (\*\*`aux`\*\*illær) fil, som blandt andet indeholder etiketdata, der kræves for at generere krydshenvisninger.

Hvis nogen af `article*.tex` filer redigeres—for eksempel for at ændre, tilføje eller fjerne etiketter (`\label{...}`)—skal den tilsvarende `article*.tex` fil(er) kompileres igen for at opdatere de tilhørende `article*.aux` fil(er).

Registrering af ændringer i `article*.tex`, og efterfølgende genkompilering af dem, kan automatiseres i Overleaf ved at bruge en passende `latexmkrc` filen.

## Sådan bruges xr i Overleaf

Vi bruger en forenklet version af vores eksempel med flere artikler; især viser vi, hvordan man automatiserer kompileringsprocessen via en `latexmkrc` fil [leveret til Overleaf af John Collins](#code-for-latexmkrc) ([vedligeholderen af `latexmk`](https://ctan.org/pkg/latexmk?lang=en)).

### Filer brugt i vores eksempel

Vores eksempel bruger følgende filer:

* `**summary.tex**`: dette er vores oversigtsdokument. Vi har brug for det til at henvise til indhold i `article1.tex`, såsom figurer og sektioner.
  * `summary.tex` indlæser `xr` pakken og bruger `\externaldocument{article1}` for at angive, at referencedata fra `article1.aux` skal bruges.
* `**article1.tex**`: en enkelt selvstændig artikel, som indeholder interne krydshenvisninger. Kompilering af `article1.tex` genererer krydshenvisningsdata, der findes i filen `article1.aux`.
  * En ekstern fil såsom `article1.tex` som måske er skrevet af en anden—for at du kan bruge den “som leveret”, dvs. uberørt.
* `**latexmkrc**`: indeholder kode (Perl) til at automatisere genkompilering af `article1.tex` på grund af eventuelle ændringer i den—for at skabe en opdateret `article1.aux` filen.
  * Vores `latexmkrc` fil var [leveret til Overleaf af John Collins](#code-for-latexmkrc) ([vedligeholderen af `latexmk`](https://ctan.org/pkg/latexmk?lang=en)).

### Om \externaldocument-kommandoen

Den `xr` pakken indeholder`\externaldocument` kommandoen, som har den generelle form

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

* **`præfiks` (valgfri):** Denne valgfrie parameter gør det muligt at definere et præfiks, som føjes til alle etiketter importeret fra det eksterne dokument. Dette er nyttigt for at undgå konflikter, hvis de samme etiketnavne bruges i flere dokumenter.
* **`ekstern_fil` (påkrævet):** Denne påkrævede parameter angiver navnet på det eksterne LaTeX-dokument (uden `.tex` filendelse), som du vil importere referencer fra.  `xr` pakken vil lede efter `.aux` fil, der svarer til `ekstern_fil` (f.eks., `external_file.aux`) for at hente etiketterne.

Som eksempel, hvis vores primære `.tex` fil `summary.tex` og den eksterne fil, `article1.tex` begge indeholder etiketten `\label{eq:1}` så har vi et navnekonflikt i etiketterne. Den konflikt kan forhindres ved at skrive

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

i hvilket tilfælde alle etiketter, der oprettes ved kompilering af `article1.tex` får præfikset `art1-`. Nu kan du få adgang til `\label{eq:1}`, som findes i `article1.tex`, ved at skrive `\ref{art1-eq:1}` i `summary.tex`.

### Projektfilerne

#### article1.tex

Følgende kode kan åbnes i Overleaf ved hjælp af linket under kodestykket.

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

Dette er et selvstændigt \LaTeX{}-dokument med
referencer, som vi vil bruge i \texttt{summary.tex}.

\subsection{Math references}
\label{mathrefs}
Som nævnt i sektion \ref{introduction},
kan forskellige elementer refereres til i
et dokument.

\subsection{Potensrækker}
\label{powers}

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

Ligning \ref{eq:1} er en typisk potensrække.
\end{document}
```

[Åbn `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 af `article1.tex` giver følgende output:

![Output produceret ved kompilering af article1.tex-filen i Overleaf](/files/d800c47b8ed914e3a13466b322875ba2dec14040)

#### summary.tex

Her er vores første `summary.tex` fil *før* vi har angivet, hvilket eksternt dokument vi vil henvise til. For enkelheds skyld, `summary.tex` indeholder ikke nogen `\label` kommandoer, fordi der ikke er nogen interne krydshenvisninger. Alle `\ref` kommandoer henviser til etiketter genereret af `\label` kommandoer i `article1.tex`.

```latex
\documentclass{article}
\usepackage{xr}
\title{This is \texttt{summary.tex}}
\begin{document}
I filen \texttt{article1.tex} er indledningen sektion \ref{introduction}. I den fil er der to undersektioner: \ref{mathrefs} og \ref{powers}. I undersektionen \ref{powers} demonstrerer ligning \ref{eq:1} en potensrække.
\end{document}
```

[Åbn dette *ufuldstæ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)

Hvis vi kompilerer denne version af `summary.tex` vil den forsøge at læse referencedata fra `summary.aux` men de nødvendige data findes i den eksterne fil `article1.aux` som endnu ikke kan tilgås.

Kompilering af denne ufuldstændige `summary.tex` fil giver følgende output, hvor dobbelte spørgsmålstegn viser udefinerede referencer:

![Billede, der viser rapportering af manglende referencer](/files/368eb1542ef03392aca0f24bfc573057abef8e40)

### Angivelse af det eksterne dokument

Næste trin er at angive `article1` som navnet på det eksterne dokument, hvis etiketter vi vil henvise til. Tilføj følgende linje til præamblen af `summary.tex`:

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

Her, `article1` kan erstattes af enhver fil, hvis etiketter du vil tilgå—du kan bruge flere `\externaldocument` kommandoer til at få adgang til yderligere eksterne filer.

### Oprettelse af latexmkrc-filen

Det næste trin er at oprette en `latexmkrc` fil som vist nedenfor:

* I dit projekteditorvindue skal du vælge **Ny fil** ikonet øverst til venstre i projektvinduet.
* Vælg **Ny fil** inde fra **Tilføj filer** pop-up-dialogboksen og navngiv filen `latexmkrc`—bemærk, at der ikke er nogen filendelse:

![Oprettelse af en latexmkrc-fil i Overleaf](/files/9c6a184a6a1616fd1b21204702e6d642a078158e)

* Sørg for, at `latexmkrc` fil oprettes og gemmes på det øverste (rod-)niveau i projektets filområde. Det vil sige, ikke inde i nogen mapper i filtræet.
* Kopiér og indsæt følgende kode i din `latexmkrc` filen.

#### Kode til latexmkrc

Overleaf er taknemmelige over for John Collins, [vedligeholderen af `latexmk`](https://ctan.org/pkg/latexmk?lang=en), for at kontakte os og levere følgende `latexmkrc` fil, som vi med glæde offentliggør i sin helhed—inklusive de yderst hjælpsomme indlejrede kommentarer.

```perl
# Dette viser, hvordan man bruger xr-pakken sammen med latexmk.
# John Collins 2023-03-29
#
# xr-pakken ("et system til eksterne referencer") bruges af et dokument
# til at henvise til sektioner, ligninger osv. i andre eksterne
# dokumenter.
# Definitionerne i denne fil gør det muligt for latexmk at anvende latexmk på
# automatisk at opdatere et eksternt dokument, når dets .tex-fil ændres,
# så referencerne i hoveddokumentet forbliver opdaterede.

# Bemærkninger:
#    1. Denne version er defineret til at placere filerne fra kompileringerne af
#       de eksterne dokumenter i en defineret undermappe for at adskille
#       potentielt mange genererede filer fra hoveddokumentets
#       mapper.
#    2. Men for at latexmks mekanisme for brugerdefinerede afhængigheder kan bruges, som her,
#       skal aux-filen fra kompileringen af et underdokument genereres i
#       samme mappe som den tilsvarende kilde-.tex-fil. Derfor bliver
#       .aux-filen kopieret.
#    3. Det antages, at de eksterne dokumenter skal kompileres med
#       pdflatex. Dette kan naturligvis ændres ved at ændre '-pdf'-
#       -indstillingen, der gives til den kaldte latexmk, til det, der er nødvendigt.
#    4. En ideel implementering ville også sikre, at genkompilering af et
#       eksternt dokument også sker, når nogen af dets andre kilde-
#       filer ændres. Men dette gøres ikke i den nuværende version, og
#       ville sandsynligvis kræve enten brug af interne latexmk-variabler
#       eller ekstra udvidelser til latexmk.
#    5. Koden bruger underfunktionerne copy og fileparse, som indlæses af
#       latexmk fra Perl-pakkerne File::Copy og File::Basename.
#    6. Den bruger også nogle endnu ikke dokumenterede funktioner i latexmk: en array-
#       variabel @file_not_found og underfunktionerne popd, pushd og
#       rdb_add_generated.

#--------------------
# Konfigurerbare valg til kompilering af eksterne dokumenter

# Undermappe til outputfiler fra kompilering af eksterne dokumenter:
$sub_doc_output = 'output-subdoc';

# Indstillinger, der skal gives til latexmk til kompilering af eksterne dokumenter:
@sub_doc_options = ();

push @sub_doc_options, '-pdf'; # Brug pdflatex til kompilering af eksterne dokumenter.
# Erstat '-pdf' med '-pdfdvi', 'pdfxe' eller 'pdflua', hvis det er nødvendigt.

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

# Tilføj et mønster for xrs logfilmeddelelse om manglende filer til latexmks
# liste. Latexmks variabel @file_not_found er endnu ikke dokumenteret.
# Denne linje er ikke nødvendig for latexmk version 4.80 eller senere.
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 dette tilfælde er .aux-filen genereret af pdflatex ikke i samme
               # mappe som .tex-filen.
               # Derfor:
               # 1. Den faktisk genererede aux-fil skal angives som produceret af denne
               #    regel, så latexmk håndterer afhængigheder korrekt.
               #    (Problem, der skal løses: Hvis $sub_dir_output er det samme som $aux_dir
               #    for hoveddokumentet, kan xr læse .aux-filen i
               #    aux_dir i stedet for den, som latexmks brugerdefinerede afhængighed antages at
               #    producere, hvilket er i samme mappe som .tex-kildefilen
               #    for denne brugerdefinerede afhængighed.)
               #    Brug den endnu ikke dokumenterede latexmk-underfunktion rdb_add_generated
               #    til at gøre dette:
               # 2. En kopi af .aux-filen skal være i samme mappe som .tex-filen
               #    for at opfylde latexmks definition af en brugerdefineret afhængighed.
             rdb_add_generated( "$sub_doc_output/$base_name.aux" );
             copy "$sub_doc_output/$base_name.aux", ".";
        }
        popd;
        return $return;
   }
}
```

### Åbn et Overleaf-projekt, der demonstrerer xr

Følgende tre-fils-projekt kan nu åbnes i Overleaf ved hjælp af linkene ovenfor og nedenfor filoversigterne. Bemærk, at `latexmkrc` filen indeholder koden leveret af John Collins, men af hensyn til kortfattethed er de fleste kommentarer blevet fjernet.

[Åbn dette tre-fils-eksempel i Overleaf.](/latex/da/vidensbase/033-cross-referencing-with-the-xr-package-in-overleaf.md)

**summary.tex**

Dette er vores sammenfatningsfil. Inden for denne fil vil vi bruge krydshenvisninger oprettet i eksterne filer. Her vil vi bruge etiketter genereret i `article1.tex`.

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

\title{Using the xr package on Overleaf}
% læg alle de eksterne dokumenter her!
\externaldocument{article1}

\begin{document}

I filen \texttt{article1.tex} er indledningen sektion \ref{introduction}. I den fil er der to undersektioner: \ref{mathrefs} og \ref{powers}. I undersektionen \ref{powers} demonstrerer ligning \ref{eq:1} en potensrække.

\end{document}
```

**article1.tex**

Denne fil er en af vores artikler. Bemærk, hvordan den indeholder forskellige `\label` kommandoer til at oprette etiketter, som takket være `xr` pakken kan vi bruge i filen `summary.tex`.

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

Dette er et selvstændigt \LaTeX{}-dokument med
referencer, som vi vil bruge i \texttt{summary.tex}.

\subsection{Math references}
\label{mathrefs}
Som nævnt i sektion \ref{introduction},
kan forskellige elementer refereres til i
et dokument.

\subsection{Potensrækker}
\label{powers}

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

Ligning \ref{eq:1} er en typisk potensrække.
\end{document}
```

**latexmkrc**

Denne `latexmkrc` fil indeholder kode, der sikrer, at de eksterne filer bliver kompileret.

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

@sub_doc_options = ();

push @sub_doc_options, '-pdf'; # Brug pdflatex til kompilering af eksterne dokumenter.
# Erstat '-pdf' med '-pdfdvi', 'pdfxe' eller 'pdflua', hvis det er nødvendigt.

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

[Åbn dette tre-fils-eksempel i Overleaf.](/latex/da/vidensbase/033-cross-referencing-with-the-xr-package-in-overleaf.md)

Den følgende grafik er en annoteret version af outputtet fra sats af `summary.tex`, der viser krydshenvisningerne og de tilsvarende etiketter fra den eksterne fil `article1.tex`.

![Viser referencer importeret fra en ekstern fil](/files/574e4ad6e29fcca13b68127d3d67eb76f09e7a3f)

* For flere detaljer om krydshenvisninger, se Overleaf-artiklen [Krydshenvisning til sektioner, ligninger og flydere](/latex/da/dokumentstruktur/03-cross-referencing-sections-equations-and-floats.md).

## En bemærkning om syntaksfejl

Til din primære projektfil kan du bruge Overleafs [Stop ved første fejl-kompileringsmode](/latex/da/vidensbase/149-using-the-stop-on-first-error-compilation-mode.md) for at sikre, at kompileringen afsluttes straks, når den første fejl opdages. Dette kan hjælpe med at isolere og identificere fejl i din kode i stedet for at lade fejlene kaskadere, hvilket gør det langt sværere at finde og fejlfinde problemer.

Den *external* dokumenter kompileres automatisk via `latexmkrc` filen; derfor vises eventuelle LaTeX-syntaksfejl i dem ikke i Overleaf-grænsefladen—medmindre du også genkompilerer dem i Overleaf. Fejl i disse eksterne filer kan forhindre, at krydshenvisninger vises korrekt i den typografisk satte PDF-fil, så vi anbefaler kraftigt at kontrollere og rette sådanne fejl så snart de opstå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/da/vidensbase/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.
