> 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/vi/co-so-tri-thuc/033-cross-referencing-with-the-xr-package-in-overleaf.md).

# Liên kết chéo với gói xr trong Overleaf

## Tổng quan

Tính năng [`xr` gói](https://ctan.org/pkg/xr?lang=en) cho phép bạn tạo các tham chiếu chéo tới các phương trình, hình, bảng, v.v. có trong các tài liệu LaTeX bên ngoài, với điều kiện các tài liệu đó là *độc lập.* Một tài liệu LaTeX độc lập là tài liệu có thể được biên dịch vì nó chứa một `\documentclass{...}` khai báo và cấu trúc `\begin{document}`...`\end{document}` .

### Tóm tắt cách dùng

1. Viết `\usepackage{xr}` trong phần tiền đề của tệp LaTeX cần tham chiếu chéo tới nội dung có trong các tệp LaTeX bên ngoài.
2. Hãy sử dụng `xr` lệnh gói `\externaldocument{filename}` để chỉ định tài liệu bên ngoài mà bạn muốn tham chiếu chéo nội dung.

Tính năng `xr` gói hoạt động bằng cách sử dụng các nhãn tham chiếu chéo có trong `.aux` các tệp được tạo ra khi các tài liệu LaTeX bên ngoài được biên dịch.

### Cách tham chiếu chéo hoạt động (tóm tắt ngắn)

Để tham chiếu chéo một mục trong tài liệu LaTeX, bạn cần

1. Gán cho nó một định danh duy nhất, `some_string`, bằng cách dùng `\label` lệnh:

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

3. Ở vị trí bạn muốn tham chiếu tới phần tử đó, bạn cần viết

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

Nói thật ngắn gọn, LaTeX quản lý việc tham chiếu chéo bằng cách ghi dữ liệu vào một tệp có tên là `filename.aux` trong đó `filename` là tên của tệp `.tex` chính đang được biên dịch.

Để quá trình này hoạt động, tài liệu LaTeX phải được biên dịch ít nhất hai lần: lần biên dịch thứ nhất *tạo ra* dữ liệu tham chiếu—ghi nó vào `filename.aux`. Trong lần biên dịch thứ hai, LaTeX *đọc* `filename.aux` để phân giải các tham chiếu, cung cấp dữ liệu để thay thế các lần xuất hiện của `\ref{some_string}`.

* Để biết thêm chi tiết về tham chiếu chéo, xem bài viết của Overleaf [Tham chiếu chéo các mục, phương trình và phần tử nổi](/latex/vi/cau-truc-tai-lieu/03-cross-referencing-sections-equations-and-floats.md).

## Các dự án mà gói xr không cần thiết

Các dự án LaTeX lớn, như sách hoặc báo cáo dài, thường được tách thành một loạt các `.tex` tệp nhỏ hơn, mỗi tệp cho một chương, với tệp `.tex` của mỗi chương được thêm vào tài liệu LaTeX chính bằng `\input` hoặc `\include`. Thông thường, các chương đó không độc lập: bạn không thể biên dịch từng chương riêng lẻ vì chúng không chứa một `\documentclass{...}` khai báo hoặc cấu trúc `\begin{document}...\end{document}` . Các chương đó được dành để *chèn* vào một tài liệu “vỏ chứa” mà tài liệu này *có thể* được biên dịch. Trong những trường hợp đó, việc tham chiếu chéo tới các phần tử của tài liệu—trong bất kỳ tệp chương riêng lẻ nào—vẫn diễn ra như bình thường: bạn không cần dùng `xr` gói.

Để khám phá một ví dụ về dự án lớn, bạn có thể [mở ví dụ này trong 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=)

## Ví dụ về một dự án cần gói xr

Giả sử bạn có một bộ tài liệu LaTeX độc lập như một tập hợp gồm N bài báo: `article1.tex`, `article2.tex` ... `articleN.tex`. Mỗi bài báo đó có thể được biên dịch riêng và có lẽ chúng được viết bằng nhiều lớp tài liệu, gói, v.v. khác nhau.

Bây giờ hãy tưởng tượng bạn muốn dùng LaTeX để viết một bản tổng quan hoặc tóm tắt về các bài báo đó—chúng ta sẽ gọi tệp của mình là `summary.tex`. Bản tóm tắt của chúng ta cần tham chiếu tới các mục, hình, bảng, phương trình, v.v. nằm trong từng bài báo độc lập, riêng biệt, N đó. Làm sao để làm được điều đó?

Tính năng `xr` gói cho phép bạn làm điều này: nó cho phép `summary.tex` sử dụng các nhãn tham chiếu do bất kỳ `article*.tex` các tệp.

### Một lưu ý về các tệp .aux

* Lưu ý, ở đây chúng ta đang dùng dấu hoa thị (`*`) làm chỗ giữ cho bất kỳ số nào từ 1 đến N.

Biên dịch bất kỳ tệp độc lập nào `article1.tex`, `article2.tex` ... `articleN.tex` khiến LaTeX tạo ra một tệp tương ứng `article*.aux` (\*\*`aux`(tệp phụ trợ), ngoài những thứ khác, chứa dữ liệu nhãn cần thiết để tạo tham chiếu chéo.

Nếu bất kỳ `article*.tex` tệp nào được chỉnh sửa—ví dụ, để thay đổi, thêm hoặc xóa nhãn (`\label{...}`)—thì các `article*.tex` tệp tương ứng phải được biên dịch lại để cập nhật `article*.aux` tệp của dự án bạn.

Phát hiện các thay đổi đối với `article*.tex`và sau đó biên dịch lại chúng, có thể được tự động hóa trên Overleaf bằng cách dùng một `latexmkrc` .

## Cách dùng xr trên Overleaf

Chúng ta sẽ dùng một phiên bản đơn giản hóa của ví dụ nhiều bài báo của mình; cụ thể, chúng ta sẽ trình bày cách tự động hóa quá trình biên dịch thông qua một `latexmkrc` tệp có thể chỉnh sửa [được cung cấp cho Overleaf bởi John Collins](#code-for-latexmkrc) ([người duy trì của `latexmk`](https://ctan.org/pkg/latexmk?lang=en)).

### Các tệp được dùng trong ví dụ của chúng ta

Ví dụ của chúng ta sử dụng các tệp sau:

* `**summary.tex**`: đây là tài liệu tổng quan của chúng ta. Chúng ta cần nó để tham chiếu đến nội dung có trong `article1.tex`, chẳng hạn như hình và các mục.
  * `summary.tex` tải `xr` gói và dùng `\externaldocument{article1}` để chỉ định rằng dữ liệu tham chiếu từ `article1.aux` sẽ được dùng.
* `**article1.tex**`: một bài báo độc lập đơn lẻ chứa các tham chiếu chéo nội bộ. Biên dịch `article1.tex` tạo ra dữ liệu tham chiếu chéo có trong tệp `article1.aux`.
  * Một tệp bên ngoài như `article1.tex` có thể đã được người khác viết sẵn—để bạn dùng “nguyên trạng,” tức là không chỉnh sửa.
* `**latexmkrc**`: chứa mã (Perl) để tự động biên dịch lại `article1.tex` do bất kỳ thay đổi nào được thực hiện đối với nó—để tạo ra một `article1.aux` .
  * Tệp `latexmkrc` của chúng tôi đã [được cung cấp cho Overleaf bởi John Collins](#code-for-latexmkrc) ([người duy trì của `latexmk`](https://ctan.org/pkg/latexmk?lang=en)).

### Về lệnh \externaldocument

Tính năng `xr` gói cung cấp`\externaldocument` lệnh, có dạng tổng quát

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

* **`prefix` (tùy chọn):** Đối số tùy chọn này cho phép bạn xác định một tiền tố sẽ được thêm vào tất cả các nhãn được nhập từ tài liệu bên ngoài. Điều này hữu ích để tránh xung đột nếu cùng tên nhãn được dùng trong nhiều tài liệu.
* **`external_file` (bắt buộc):** Đối số bắt buộc này chỉ định tên của tài liệu LaTeX bên ngoài (không có `.tex` phần mở rộng) mà từ đó bạn muốn nhập các tham chiếu. Gói `xr` sẽ tìm `.aux` tệp tương ứng với `external_file` (ví dụ, `external_file.aux`) để lấy các nhãn.

Ví dụ, nếu tệp `.tex` tệp có thể chỉnh sửa `summary.tex` chính của chúng ta và tệp bên ngoài, `article1.tex` cả hai đều chứa nhãn `\label{eq:1}` thì ta có xung đột tên nhãn. Xung đột đó có thể được ngăn chặn bằng cách viết

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

trong trường hợp đó tất cả các nhãn được tạo khi biên dịch `article1.tex` đều được thêm tiền tố bởi `art1-`. Bây giờ bạn có thể truy cập `\label{eq:1}`, có trong `article1.tex`, bằng cách viết `\ref{art1-eq:1}` trong `summary.tex`.

### Các tệp của dự án

#### article1.tex

Đoạn mã sau có thể được mở trong Overleaf bằng liên kết bên dưới danh sách.

```latex
\documentclass{article}
\title{This is \texttt{article1.tex}}
\begin{document}
\section{Giới thiệu}
\label{introduction}

Đây là một tài liệu \LaTeX{} độc lập với
các tham chiếu mà chúng ta muốn dùng trong \texttt{summary.tex}.

\subsection{Math references}
\label{mathrefs}
Như đã đề cập trong mục \ref{introduction},
các phần tử khác nhau có thể được tham chiếu trong
một tài liệu.

\subsection{Powers series}
\label{powers}

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

Phương trình \ref{eq:1} là một chuỗi lũy thừa điển hình.
\end{document}
```

[Mở `article1.tex` trong 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)

Biên dịch `article1.tex` tạo ra kết quả sau:

![Kết quả do biên dịch tệp article1.tex trên Overleaf tạo ra](/files/6e08451e5200a981b1730e76ffb6130d37277b1e)

#### summary.tex

Đây là `summary.tex` tệp có thể chỉnh sửa *trước khi* ban đầu của chúng ta; chúng ta đã chỉ định tài liệu bên ngoài nào mình muốn tham chiếu. Để đơn giản, `summary.tex` không chứa bất kỳ `\label` lệnh nào vì không có tham chiếu chéo nội bộ. Tất cả các `\ref` lệnh tham chiếu tới các nhãn được tạo bởi `\label` lệnh có trong `article1.tex`.

```latex
\documentclass{article}
\usepackage{xr}
\title{This is \texttt{summary.tex}}
\begin{document}
Trong tệp \texttt{article1.tex}, phần mở đầu là mục \ref{introduction}. Trong tệp đó, có hai tiểu mục: \ref{mathrefs} và \ref{powers}. Trong tiểu mục \ref{powers}, phương trình \ref{eq:1} minh họa một chuỗi lũy thừa.
\end{document}
```

[Mở *chưa hoàn chỉnh* `summary.tex` trong 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)

Nếu chúng ta biên dịch phiên bản này của `summary.tex` nó sẽ cố gắng đọc dữ liệu tham chiếu từ `summary.aux` nhưng dữ liệu cần thiết lại nằm trong tệp bên ngoài `article1.aux` mà hiện vẫn chưa thể truy cập.

Biên dịch tệp `summary.tex` chưa hoàn chỉnh này tạo ra kết quả sau, với dấu hỏi kép cho thấy các tham chiếu không xác định:

![Hình cho thấy báo cáo các tham chiếu bị thiếu](/files/e7a37ad08302dc7d435291b87df8b2a7cf691527)

### Chỉ định tài liệu bên ngoài

Bước tiếp theo là chỉ định `article1` là tên của tài liệu bên ngoài mà chúng ta muốn tham chiếu các nhãn. Thêm dòng sau vào phần tiền đề của `summary.tex`:

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

Ở đây, `article1` có thể được thay thế bằng bất kỳ tệp nào mà bạn muốn truy cập các nhãn—bạn có thể dùng nhiều `\externaldocument` lệnh để truy cập các tệp bên ngoài bổ sung.

### Tạo tệp latexmkrc

Bước tiếp theo là tạo một `latexmkrc` tệp như được minh họa bên dưới:

* Trong cửa sổ trình soạn thảo dự án của bạn, hãy chọn **Tệp mới** biểu tượng ở góc trên bên trái của cửa sổ dự án.
* Chọn **Tệp mới** từ trong **Thêm tệp** hộp thoại bật lên và đặt tên cho tệp `latexmkrc`—lưu ý không có phần mở rộng tệp:

![Tạo tệp latexmkrc trong Overleaf](/files/ff992b162bbba31b71f466f6cf28b8cb4e858d68)

* Hãy chắc chắn rằng `latexmkrc` tệp được tạo và lưu ở cấp trên cùng (gốc) của khu vực tệp của dự án. Tức là, không nằm trong bất kỳ thư mục nào trong cây tệp.
* Sao chép và dán mã sau vào `latexmkrc` .

#### Mã cho latexmkrc

Overleaf xin cảm ơn John Collins, [người duy trì của `latexmk`](https://ctan.org/pkg/latexmk?lang=en), vì đã liên hệ với chúng tôi để cung cấp `latexmkrc` tệp sau, mà chúng tôi rất vui được đăng đầy đủ—bao gồm cả các chú thích nội tuyến cực kỳ hữu ích.

```perl
# Đây là cách dùng gói xr với latexmk.
# John Collins 2023-03-29
#
# Gói xr ("một hệ thống cho Tham chiếu Bên ngoài") được dùng bởi một tài liệu
# để tham chiếu tới các mục, phương trình, v.v. trong các
# tài liệu bên ngoài khác.
# Các định nghĩa trong tệp này cho phép latexmk áp dụng latexmk cho
# tự động cập nhật một tài liệu bên ngoài bất cứ khi nào tệp .tex của nó thay đổi,
# để các tham chiếu trong tài liệu chính luôn được cập nhật.

# Ghi chú:
#    1. Phiên bản này được định nghĩa để đặt các tệp từ quá trình biên dịch của
#       các tài liệu bên ngoài vào một thư mục con đã định, nhằm tách biệt
#       nhiều tệp được tạo ra có thể có từ tài liệu chính
#       các thư mục.
#    2. Nhưng để cơ chế phụ thuộc tùy chỉnh của latexmk được dùng như ở đây,
#       tệp aux từ việc biên dịch một tài liệu con phải được tạo trong
#       cùng thư mục với tệp .tex nguồn tương ứng. Vậy nên
#       tệp .aux được sao chép.
#    3. Giả định rằng các tài liệu bên ngoài sẽ được biên dịch bằng
#       pdflatex. Tất nhiên có thể thay đổi điều này bằng cách đổi tùy chọn '-pdf'
#       được truyền cho latexmk được gọi sang bất cứ thứ gì cần thiết.
#    4. Một cách triển khai lý tưởng cũng sẽ bảo đảm rằng việc biên dịch lại một
#       tài liệu bên ngoài cũng xảy ra bất cứ khi nào bất kỳ tệp nguồn nào khác
#       của nó thay đổi. Nhưng trong phiên bản hiện tại điều này chưa được thực hiện, và
#       có lẽ sẽ liên quan đến việc dùng các biến nội bộ của latexmk
#       hoặc các cải tiến bổ sung cho latexmk.
#    5. Mã dùng các hàm con copy và fileparse được nạp bởi
#       latexmk từ các gói Perl File::Copy và File::Basename.
#    6. Nó cũng dùng một số tính năng của latexmk chưa được tài liệu hóa: một mảng
#       biến @file_not_found và các hàm con popd, pushd, và
#       rdb_add_generated.

#--------------------
# Cấu hình các lựa chọn cho việc biên dịch tài liệu bên ngoài

# Thư mục con cho tệp đầu ra từ quá trình biên dịch các tài liệu bên ngoài:
$sub_doc_output = 'output-subdoc';

# Các tùy chọn cung cấp cho latexmk để biên dịch tài liệu bên ngoài:
@sub_doc_options = ();

push @sub_doc_options, '-pdf'; # Dùng pdflatex để biên dịch tài liệu bên ngoài.
# Nếu cần thì thay '-pdf' bằng '-pdfdvi', 'pdfxe' hoặc 'pdflua'.

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

# Thêm một mẫu cho thông báo tệp bị thiếu trong log của xr vào
# danh sách của latexmk. Biến @file_not_found của latexmk vẫn chưa được tài liệu hóa.
# Dòng này không cần thiết đối với phiên bản 4.80 trở lên của 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 '.') ) {
               # Trong trường hợp này, tệp .aux do pdflatex tạo ra không nằm trong cùng
               # thư mục với tệp .tex.
               # Vì vậy:
               # 1. Tệp aux thực sự được tạo phải được liệt kê như được tạo ra bởi
               #    quy tắc này, để latexmk xử lý đúng các phụ thuộc.
               #    (Vấn đề cần vượt qua: Nếu $sub_dir_output giống với $aux_dir
               #    cho tài liệu chính, xr có thể đọc tệp .aux trong
               #    aux_dir thay vì tệp mà cus dep được latexmk giả định là
               #    tạo ra, tức là tệp nằm trong cùng thư mục với tệp nguồn .tex
               #    cho phụ thuộc tùy chỉnh này.)
               #    Dùng hàm con latexmk chưa được tài liệu hóa rdb_add_generated
               #    để làm điều này:
               # 2. Một bản sao của tệp .aux phải nằm trong cùng thư mục với tệp .tex
               #    để thỏa mãn định nghĩa phụ thuộc tùy chỉnh của latexmk.
             rdb_add_generated( "$sub_doc_output/$base_name.aux" );
             copy "$sub_doc_output/$base_name.aux", ".";
        }
        popd;
        return $return;
   }
}
```

### Mở một dự án Overleaf minh họa xr

Dự án ba tệp sau đây giờ có thể được mở trong Overleaf bằng các liên kết được cung cấp ở trên và bên dưới danh sách tệp. Lưu ý rằng `latexmkrc` tệp chứa mã do John Collins cung cấp nhưng, để ngắn gọn, hầu hết các chú thích đã bị xóa.

[Mở ví dụ ba tệp này trong Overleaf.](/latex/vi/co-so-tri-thuc/033-cross-referencing-with-the-xr-package-in-overleaf.md)

**summary.tex**

Đây là tệp tóm tắt của chúng ta. Từ trong tệp này, chúng ta muốn dùng các tham chiếu chéo được tạo trong các tệp bên ngoài. Ở đây, chúng ta muốn dùng các nhãn được tạo trong `article1.tex`.

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

\title{Using the xr package on Overleaf}
% đặt tất cả các tài liệu bên ngoài ở đây!
\externaldocument{article1}

\begin{document}

Trong tệp \texttt{article1.tex}, phần mở đầu là mục \ref{introduction}. Trong tệp đó, có hai tiểu mục: \ref{mathrefs} và \ref{powers}. Trong tiểu mục \ref{powers}, phương trình \ref{eq:1} minh họa một chuỗi lũy thừa.

\end{document}
```

**article1.tex**

Đây là một trong các bài báo của chúng ta. Hãy chú ý nó chứa nhiều `\label` lệnh để tạo nhãn mà, nhờ `xr` gói, chúng ta có thể dùng trong tệp `summary.tex`.

```latex
\documentclass{article}
\title{This is \texttt{article1.tex}}
\begin{document}
\section{Giới thiệu}
\label{introduction}

Đây là một tài liệu \LaTeX{} độc lập với
các tham chiếu mà chúng ta muốn dùng trong \texttt{summary.tex}.

\subsection{Math references}
\label{mathrefs}
Như đã đề cập trong mục \ref{introduction},
các phần tử khác nhau có thể được tham chiếu trong
một tài liệu.

\subsection{Powers series}
\label{powers}

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

Phương trình \ref{eq:1} là một chuỗi lũy thừa điển hình.
\end{document}
```

**latexmkrc**

Tệp này `latexmkrc` chứa mã để bảo đảm các tệp bên ngoài được biên dịch.

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

@sub_doc_options = ();

push @sub_doc_options, '-pdf'; # Dùng pdflatex để biên dịch tài liệu bên ngoài.
# Nếu cần thì thay '-pdf' bằng '-pdfdvi', 'pdfxe' hoặc '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;
   }
}
```

[Mở ví dụ ba tệp này trong Overleaf.](/latex/vi/co-so-tri-thuc/033-cross-referencing-with-the-xr-package-in-overleaf.md)

Hình minh họa sau đây là một phiên bản có chú giải của kết quả đầu ra từ việc dàn trang `summary.tex`, cho thấy các tham chiếu chéo và các nhãn tương ứng từ tệp bên ngoài `article1.tex`.

![Hiển thị các tham chiếu được nhập từ một tệp bên ngoài](/files/06edb629e4598d3b8fc37af176bd536f4106da4f)

* Để biết thêm chi tiết về tham chiếu chéo, xem bài viết của Overleaf [Tham chiếu chéo các mục, phương trình và phần tử nổi](/latex/vi/cau-truc-tai-lieu/03-cross-referencing-sections-equations-and-floats.md).

## Một lưu ý về lỗi cú pháp

Đối với tệp dự án chính của bạn, bạn có thể dùng chế độ biên dịch [Dừng ở lỗi đầu tiên](/latex/vi/co-so-tri-thuc/149-using-the-stop-on-first-error-compilation-mode.md) để bảo đảm quá trình biên dịch kết thúc ngay lập tức khi phát hiện lỗi đầu tiên. Điều này có thể giúp cô lập và xác định lỗi trong mã của bạn, thay vì cho phép lỗi lan truyền, khiến việc tìm và gỡ lỗi trở nên khó khăn hơn nhiều.

Tính năng *external* tài liệu được biên dịch tự động thông qua `latexmkrc` tệp; do đó, bất kỳ lỗi cú pháp LaTeX nào trong chúng sẽ không hiển thị trong giao diện Overleaf—trừ khi bạn cũng biên dịch lại chúng trong Overleaf. Lỗi trong các tệp bên ngoài đó có thể khiến các tham chiếu chéo không xuất hiện đúng trong tệp PDF đã được dàn trang, vì vậy chúng tôi rất khuyến nghị kiểm tra và sửa bất kỳ lỗi như vậy ngay khi chúng xảy ra.


---

# 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/vi/co-so-tri-thuc/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.
