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

# Kryssreferering med xr-pakken i Overleaf

## Oversikt

Den [`xr` pakken](https://ctan.org/pkg/xr?lang=en) lar deg opprette kryssreferanser til ligninger, figurer, tabeller osv. som finnes i eksterne LaTeX-dokumenter, forutsatt at disse dokumentene er *selvstendige.* Et selvstendig LaTeX-dokument er et dokument som kan kompileres fordi det inneholder en `\documentclass{...}` erklæring og `\begin{document}`...`\end{document}` konstruksjonen.

### Kort oppsummering av bruk

1. Skriv `\usepackage{xr}` i preamblen til LaTeX-filen som trenger å kryssreferere innhold som finnes i eksterne LaTeX-filer.
2. Bruk `xr` pakke-kommandoen `\externaldocument{filename}` for å angi de eksterne dokumentene hvis innhold du vil kryssreferere.

Den `xr` pakken fungerer ved å bruke kryssreferanselabeler som finnes i `.aux` filene som genereres når de eksterne LaTeX-dokumentene kompileres.

### Hvordan kryssreferanser fungerer (en kort oppsummering)

For å kryssreferere et element i et LaTeX-dokument må du:

1. Gi det en unik identifikator, `some_string`, ved å bruke `\label` kommandoen:

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

3. På stedet der du vil referere til dette elementet, må du skrive

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

Kort fortalt håndterer LaTeX kryssreferanser ved å skrive data til en fil som heter `filename.aux` der `filename` er navnet på hoved- `.tex` filen som kompileres.

For at prosessen skal fungere, må LaTeX-dokumentet kompileres minst to ganger: den første kompileringen *genererer* referansedataene – og skriver dem til `filename.aux`. Under den andre kompileringen, LaTeX *leser* `filename.aux` for å løse referansene, og gir data som erstatter forekomster av `\ref{some_string}`.

* For mer detalj om kryssreferanser, se Overleaf-artikkelen [Kryssreferering av seksjoner, ligninger og flytende objekter](/latex/no/dokumentstruktur/03-cross-referencing-sections-equations-and-floats.md).

## Prosjekter der xr-pakken ikke er nødvendig

Store LaTeX-prosjekter, som bøker eller lange rapporter, deles ofte opp i en serie mindre `.tex` filer, én per kapittel, der hvert kapittels `.tex` fil legges til hoved-LaTeX-dokumentet ved hjelp av `\input` eller `\include`. Vanligvis er disse kapitlene ikke selvstendige: du kan ikke kompilere enkelte kapitler fordi de ikke inneholder en `\documentclass{...}` erklæring eller `\begin{document}...\end{document}` konstruksjon. Disse kapitlene er ment for *inkludering* i et «beholder»-dokument som *kan* kompileres. Under slike omstendigheter kan kryssreferering til dokumentelementer – innenfor enhver enkelt kapittelfil – foregå som normalt: du trenger ikke å bruke `xr` pakken.

For å utforske et eksempel på et stort prosjekt kan du [åpne dette eksemplet 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 prosjekt der xr-pakken er nødvendig

Anta at du har et sett med selvstendige LaTeX-dokumenter, for eksempel en samling på N artikler: `article1.tex`, `article2.tex` ... `articleN.tex`. Hver av disse artiklene kan kompileres separat, og de ble sannsynligvis skrevet med et utvalg ulike dokumentklasser, pakker osv.

Forestill deg nå at du vil bruke LaTeX til å skrive en oversikt eller oppsummering av disse artiklene – vi kaller filen vår `summary.tex`. Oppsummeringen vår må referere til seksjoner, figurer, tabeller, ligninger osv. som finnes i disse enkelte selvstendige N artiklene. Hvordan kan vi gjøre det?

Den `xr` pakken lar deg gjøre dette: den gjør `summary.tex` det mulig `å bruke referanselabeler generert av hvilken som helst av de selvstendige` filer.

### En merknad om .aux-filer

* Merk at vi her bruker en asterisk (`*`) som plassholder for et hvilket som helst tall fra 1 til N.

Ved å kompilere en hvilken som helst av de selvstendige filene `article1.tex`, `article2.tex` ... `articleN.tex` får man LaTeX til å generere en tilsvarende `article*.aux` (\*\*`aux`\*\*iliær) fil som, blant annet, inneholder label-data som trengs for å generere kryssreferanser.

Hvis noen av `å bruke referanselabeler generert av hvilken som helst av de selvstendige` filene redigeres – for eksempel for å endre, legge til eller fjerne labels (`\label{...}`) – må de tilsvarende `å bruke referanselabeler generert av hvilken som helst av de selvstendige` filene må kompileres på nytt for å oppdatere de tilhørende `article*.aux` fil(er).

Å oppdage endringer i `å bruke referanselabeler generert av hvilken som helst av de selvstendige`, og deretter kompilere dem på nytt, kan automatiseres i Overleaf ved å bruke en egnet `latexmkrc` filen.

## Hvordan bruke xr i Overleaf

Vi bruker en forenklet versjon av eksemplet vårt med flere artikler; nærmere bestemt viser vi hvordan du kan automatisere kompileringsprosessen via en `latexmkrc` fil [levert til Overleaf av John Collins](#code-for-latexmkrc) ([vedlikeholderen av `latexmk`](https://ctan.org/pkg/latexmk?lang=en)).

### Filer som brukes i eksemplet vårt

Eksemplet vårt bruker følgende filer:

* `**summary.tex**`: dette er oversiktsdokumentet vårt. Vi trenger det for å referere til innhold som finnes i `article1.tex`, som figurer og seksjoner.
  * `summary.tex` laster inn `xr` pakken og bruker `\externaldocument{article1}` for å angi at referansedata fra `article1.aux` skal brukes.
* `**article1.tex**`: en enkelt selvstendig artikkel som inneholder interne kryssreferanser. Ved å kompilere `article1.tex` genereres kryssreferansedata som finnes i filen `article1.aux`.
  * En ekstern fil som `article1.tex` som kan være skrevet av noen andre – for at du skal kunne bruke den «som levert», altså urørt.
* `**latexmkrc**`: inneholder kode (Perl) for å automatisere rekompilering av `article1.tex` på grunn av endringer som er gjort i den – for å lage en oppdatert `article1.aux` filen.
  * Vår `latexmkrc` fil var [levert til Overleaf av John Collins](#code-for-latexmkrc) ([vedlikeholderen av `latexmk`](https://ctan.org/pkg/latexmk?lang=en)).

### Om \externaldocument-kommandoen

Den `xr` pakken tilbyr`\externaldocument` -kommandoen, som har den generelle formen

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

* **`prefiks` (valgfritt):** Dette valgfrie argumentet lar deg definere et prefiks som legges til alle labels som importeres fra det eksterne dokumentet. Dette er nyttig for å unngå konflikter hvis de samme label-navnene brukes i flere dokumenter.
* **`external_file` (påkrevd):** Dette påkrevde argumentet angir navnet på det eksterne LaTeX-dokumentet (uten `.tex` filendelsen) som du vil importere referanser fra. Pakken `xr` vil se etter `.aux` filen som tilsvarer `external_file` (f.eks., `external_file.aux`) for å hente labelene.

Som et eksempel, hvis vårt hoved `.tex` fil `summary.tex` og den eksterne filen, `article1.tex` begge inneholder labelen `\label{eq:1}` har vi en navnekonflikt for labelene. Den konflikten kan unngås ved å skrive

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

i så fall får alle labels som lages ved kompilering av `article1.tex` et prefiks `art1-`. Nå kan du få tilgang til `\label{eq:1}`, som finnes i `article1.tex`, ved å skrive `\ref{art1-eq:1}` i `summary.tex`.

### Prosjektfilene

#### article1.tex

Følgende kode kan åpnes i Overleaf ved å bruke lenken under oppføringen.

```latex
\documentclass{article}
\title{Dette er \texttt{article1.tex}}
\begin{document}
\section{Innledning}
\label{introduction}

Dette er et selvstendig \LaTeX{}-dokument med
referanser vi vil bruke i \texttt{summary.tex}.

\subsection{Matematiske referanser}
\label{mathrefs}
Som nevnt i seksjon \ref{introduction},
ulike elementer kan refereres til i
et dokument.

\subsection{Potensrekker}
\label{powers}

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

Ligning \ref{eq:1} er en typisk potensrekke.
\end{document}
```

[Åpne `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` gir følgende utdata:

![Utdata produsert ved kompilering av filen article1.tex i Overleaf](/files/152b30a917daf8ea68a34ea93823615ae4ae095b)

#### summary.tex

Her er vår innledende `summary.tex` fil *før* vi har spesifisert hvilket eksternt dokument vi vil referere til. For enkelhets skyld, `summary.tex` inneholder ingen `\label` kommandoer fordi det ikke finnes noen interne kryssreferanser. Alle `\ref` kommandoer refererer til labels generert av `\label` kommandoer som finnes i `article1.tex`.

```latex
\documentclass{article}
\usepackage{xr}
\title{Dette er \texttt{summary.tex}}
\begin{document}
I filen \texttt{article1.tex} er introduksjonen seksjon \ref{introduction}.  I den filen er det to underseksjoner: \ref{mathrefs} og \ref{powers}. I underseksjon \ref{powers} demonstrerer ligning \ref{eq:1} en potensrekke.
\end{document}
```

[Åpne dette *ufullstendig* `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 versjonen av `summary.tex` vil den forsøke å lese referansedata fra `summary.aux` men de nødvendige dataene finnes i den eksterne filen `article1.aux` som ennå ikke kan åpnes.

Ved kompilering av denne ufullstendige `summary.tex` filen får vi følgende utdata, der doble spørsmålstegn viser udefinerte referanser:

![Bilde som viser rapportering av manglende referanser](/files/f199c7464f5a692f009feb92f2b838ffafb621aa)

### Angi det eksterne dokumentet

Neste steg er å angi `article1` som navnet på det eksterne dokumentet hvis labels vi vil referere til. Legg til følgende linje i preamblen til `summary.tex`:

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

Her, `article1` kan erstattes av enhver fil hvis labels du vil ha tilgang til – du kan bruke flere `\externaldocument` kommandoer for å få tilgang til flere eksterne filer.

### Opprette latexmkrc-filen

Neste steg er å opprette en `latexmkrc` fil som vist nedenfor:

* I prosjektredigeringsvinduet velger du **Ny fil** ikonet øverst til venstre i prosjektvinduet.
* Velg **Ny fil** fra **Legg til filer** -dialogboksen og gi filen navnet `latexmkrc`—merk at det ikke er noen filendelse:

![Opprette en latexmkrc-fil i Overleaf](/files/d138015d32df7f502df72d6f9863168fcaa04ebd)

* Pass på at `latexmkrc` filen opprettes og lagres øverst (i rotnivået) i prosjektets filområde. Det vil si, ikke inne i noen mapper i filtreet.
* Kopier og lim inn følgende kode i din `latexmkrc` filen.

#### Kode for latexmkrc

Overleaf er takknemlige overfor John Collins, [vedlikeholderen av `latexmk`](https://ctan.org/pkg/latexmk?lang=en), for at han kontaktet oss og leverte følgende `latexmkrc` filen, som vi med glede publiserer i sin helhet – inkludert de svært nyttige kommentarene i koden.

```perl
# Dette viser hvordan du bruker xr-pakken med latexmk.
# John Collins 2023-03-29
#
# xr-pakken ("et system for eXternal References") brukes av et dokument
# for å gjøre referanser til seksjoner, ligninger osv. i andre eksterne
# dokumenter.
# Definisjonene i denne filen gjør det mulig for latexmk å bruke latexmk på
# automatisk oppdatere et eksternt dokument hver gang dets .tex-fil endres,
# slik at referansene i hoveddokumentet holdes oppdatert.

# Merknader:
#    1. Denne versjonen er definert slik at filene fra kompileringene av
#       de eksterne dokumentene legges i en definert undermappe, for å skille
#       potensielt mange genererte filer fra hoveddokumentets
#       kataloger.
#    2. Men for at latexmks egendefinerte avhengighetsmekanisme skal kunne brukes, som her,
#       må aux-filen fra kompilering av et underdokument genereres i
#       samme katalog som den tilsvarende kilde-.tex-filen. Derfor må
#       .aux-filen kopieres.
#    3. Det antas at de eksterne dokumentene skal kompileres med
#       pdflatex. Dette kan selvsagt endres ved å endre '-pdf'-
#       alternativet som gis til latexmk som kalles opp, til det som trengs.
#    4. En ideell implementering ville også sørge for at rekompilering av et
#       eksternt dokument også skjer når noen av de andre kilde
#       filene endres. Men dette gjøres ikke i denne versjonen, og
#       ville sannsynligvis innebære enten bruk av interne latexmk-variabler
#       eller ekstra utvidelser av latexmk.
#    5. Koden bruker subrutinene copy og fileparse som lastes inn av
#       latexmk fra Perl-pakkene File::Copy og File::Basename.
#    6. Den bruker også noen ennå ikke dokumenterte funksjoner i latexmk: en array
#       -variabel @file_not_found og subrutinene popd, pushd og
#       rdb_add_generated.

#--------------------
# Konfigurerbare valg for kompilering av eksterne dokumenter

# Undermappe for utdatafiler fra kompilering av eksterne dokumenter:
$sub_doc_output = 'output-subdoc';

# Alternativer som skal gis til latexmk for kompilering av eksterne dokumenter:
@sub_doc_options = ();

push @sub_doc_options, '-pdf'; # Bruk pdflatex for kompilering av eksterne dokumenter.
# Erstatt '-pdf' med '-pdfdvi', 'pdfxe' eller 'pdflua' om nødvendig.

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

# Legg til et mønster for xrs loggfil-melding om manglende filer i latexmks
# liste. Latexmks variabel @file_not_found er ennå ikke dokumentert.
# Denne linjen er ikke nødvendig for v. 4.80 eller senere 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 dette tilfellet er .aux-filen generert av pdflatex ikke i samme
               # katalog som .tex-filen.
               # Derfor:
               # 1. Den faktisk genererte aux-filen må være listet som produsert av denne
               #    regelen, slik at latexmk håndterer avhengighetene riktig.
               #    (Problem som må løses: Hvis $sub_dir_output er det samme som $aux_dir
               #    for hoveddokumentet, kan xr lese .aux-filen i
               #    aux_dir i stedet for den som latexmk antar at cus dep
               #    skal produsere, og som ligger i samme katalog som
               #    .tex-kildefilen for denne egendefinerte avhengigheten.)
               #    Bruk den ennå ikke dokumenterte latexmk-subrutinen rdb_add_generated
               #    for å gjøre dette:
               # 2. En kopi av .aux-filen må ligge i samme katalog som .tex-filen
               #    for å oppfylle latexmks definisjon av en egendefinert avhengighet.
             rdb_add_generated( "$sub_doc_output/$base_name.aux" );
             copy "$sub_doc_output/$base_name.aux", ".";
        }
        popd;
        return $return;
   }
}
```

### Åpne et Overleaf-prosjekt som demonstrerer xr

Følgende tre-filprosjekt kan nå åpnes i Overleaf ved å bruke lenkene som er gitt over og under fillistene. Merk at `latexmkrc` filen inneholder koden som John Collins leverte, men for korthets skyld er de fleste kommentarene fjernet.

[Åpne dette tre-fil-eksemplet i Overleaf.](/latex/no/kunnskapsbase/033-cross-referencing-with-the-xr-package-in-overleaf.md)

**summary.tex**

Dette er oppsummeringsfilen vår. Inne i denne filen vil vi bruke kryssreferanser som er laget i eksterne filer. Her vil vi bruke labels generert i `article1.tex`.

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

\title{Bruke xr-pakken i Overleaf}
% legg alle de eksterne dokumentene her!
\externaldocument{article1}

\begin{document}

I filen \texttt{article1.tex} er introduksjonen seksjon \ref{introduction}.  I den filen er det to underseksjoner: \ref{mathrefs} og \ref{powers}. I underseksjon \ref{powers} demonstrerer ligning \ref{eq:1} en potensrekke.

\end{document}
```

**article1.tex**

Denne filen er en av artiklene våre. Legg merke til hvordan den inneholder ulike `\label` kommandoer for å lage labels som, takket være `xr` pakken, kan vi bruke i filen `summary.tex`.

```latex
\documentclass{article}
\title{Dette er \texttt{article1.tex}}
\begin{document}
\section{Innledning}
\label{introduction}

Dette er et selvstendig \LaTeX{}-dokument med
referanser vi vil bruke i \texttt{summary.tex}.

\subsection{Matematiske referanser}
\label{mathrefs}
Som nevnt i seksjon \ref{introduction},
ulike elementer kan refereres til i
et dokument.

\subsection{Potensrekker}
\label{powers}

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

Ligning \ref{eq:1} er en typisk potensrekke.
\end{document}
```

**latexmkrc**

Denne `latexmkrc` filen inneholder kode for å sikre at de eksterne filene kompileres.

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

@sub_doc_options = ();

push @sub_doc_options, '-pdf'; # Bruk pdflatex for kompilering av eksterne dokumenter.
# Erstatt '-pdf' med '-pdfdvi', 'pdfxe' eller 'pdflua' om nødvendig.

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

[Åpne dette tre-fil-eksemplet i Overleaf.](/latex/no/kunnskapsbase/033-cross-referencing-with-the-xr-package-in-overleaf.md)

Følgende grafikk er en kommentert versjon av utdataene fra typsetting av `summary.tex`, som viser kryssreferansene og de tilsvarende labelene fra den eksterne filen `article1.tex`.

![Viser referanser importert fra en ekstern fil](/files/91fb49dbab9e648c37087302ee118779efba59f8)

* For mer detalj om kryssreferanser, se Overleaf-artikkelen [Kryssreferering av seksjoner, ligninger og flytende objekter](/latex/no/dokumentstruktur/03-cross-referencing-sections-equations-and-floats.md).

## En merknad om syntaksfeil

For hovedprosjektfilen din kan du bruke Overleafs [kompileringsmodus Stopp ved første feil](/latex/no/kunnskapsbase/149-using-the-stop-on-first-error-compilation-mode.md) for å sikre at kompileringen avsluttes umiddelbart når den første feilen oppdages. Dette kan bidra til å isolere og identifisere feil i koden din, i stedet for å la feilene forplante seg, noe som gjør det langt vanskeligere å finne og feilsøke problemer.

Den *external* dokumenter kompileres automatisk via `latexmkrc` filen; følgelig vil eventuelle LaTeX-syntaksfeil i dem ikke vises i Overleaf-grensesnittet – med mindre du kompilerer dem på nytt i Overleaf også. Feil i disse eksterne filene kan hindre at kryssreferanser vises korrekt i den typede PDF-filen, så vi anbefaler sterkt å kontrollere og rette slike feil så snart de oppstå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/no/kunnskapsbase/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.
