> 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/038-fixing-and-preventing-compile-timeouts.md).

# Khắc phục và ngăn chặn thời gian biên dịch hết hạn

Khi bạn nhấp vào **Biên dịch lại** nút trong dự án Overleaf của bạn, bạn bắt đầu một quy trình đọc các tệp dự án và chuyển chúng thành một tệp PDF đã dàn trang. Nếu bạn gặp lỗi hết thời gian biên dịch, điều này có nghĩa là quá trình biên dịch không thể hoàn thành trong [giới hạn thời gian của gói Overleaf của bạn](/latex/vi/co-so-tri-thuc/119-overleaf-plan-limits.md).

Mặc dù có thể một số dự án quá lớn hoặc quá phức tạp để tạo ra PDF trong thời gian cho phép, lỗi hết thời gian biên dịch thường có thể được khắc phục hoặc ngăn chặn.

## Các bước để khắc phục lỗi hết thời gian biên dịch

Hãy làm theo các bước sau để xác định và khắc phục những vấn đề phổ biến gây ra lỗi hết thời gian biên dịch:

1. [Kiểm tra các lỗi biên dịch và khắc phục chúng bằng **Dừng ở lỗi đầu tiên** mode](#first-errors)
2. [Hãy thử **Fast\[draft\]** chế độ và tối ưu hóa kích thước hình ảnh của bạn](#second-images)
3. [Đánh giá dự án của bạn về các tác vụ tốn nhiều thời gian](#third-assess)

Ngoài việc làm theo các bước này, vui lòng xem lại các gợi ý về việc nên làm trong [các tình huống hết thời gian cụ thể](#anchor-advice) cũng như những gì [các thực hành tốt nhất](#anchor-best) cần tuân theo để ngăn ngừa lỗi hết thời gian biên dịch.

Mặc dù nhiều dự án có thể được biên dịch trong thời gian cho phép trên gói miễn phí của Overleaf, nếu bạn đang chuẩn bị một tài liệu lớn hoặc phức tạp, bạn có thể cần [đăng ký một gói cao cấp](https://www.overleaf.com/user/subscription/plans) để có thêm thời gian biên dịch.

## Bước 1: Kiểm tra các lỗi biên dịch và khắc phục chúng

Một số lỗi biên dịch, hoặc sự tích tụ của nhiều lỗi, có thể chặn hoàn toàn [quá trình build latexmk](https://learn.overleaf.com/learn/Kb/How_does_Overleaf_compile_my_project%3F) và dẫn đến hết thời gian biên dịch. Để tìm và sửa lỗi, hãy bật **Dừng ở lỗi đầu tiên** trong **Biên dịch lại** menu thả xuống:

![Ảnh chụp màn hình cho thấy cách bật chế độ biên dịch Dừng ở lỗi đầu tiên](/files/577e08855f08ce6bfa7f213e77cbc78c60ed0c32)

Tính năng [**Dừng ở lỗi đầu tiên**](/latex/vi/co-so-tri-thuc/149-using-the-stop-on-first-error-compilation-mode.md) chế độ biên dịch này đúng như bạn mong đợi — nó sẽ dừng biên dịch ngay lập tức khi gặp lỗi. Khi điều này xảy ra, sẽ không tạo ra PDF nào và một thông báo mô tả lỗi sẽ được hiển thị. Bật **Dừng ở lỗi đầu tiên** sẽ giúp bạn tìm và khắc phục từng lỗi trong dự án cho đến khi dự án không còn lỗi.

Nhấp vào từng thông báo lỗi sẽ đưa bạn đến dòng trong mã nguồn đang gây ra vấn đề để bạn có thể sửa mã của mình. Một số lỗi thường gặp được giải thích trên [trang này](/latex/vi/kien-thuc-co-ban-ve-latex/05-errors.md)và một số gợi ý gỡ lỗi LaTeX được liệt kê trên [trang này](/latex/vi/cau-hoi-and-tra-loi/81-tips-and-tricks-for-troubleshooting-latex.md). [mục trong bài viết này](#anchor-fatal) liệt kê một số **lỗi biên dịch nghiêm trọng** gây ra lỗi hết thời gian biên dịch.

## Bước 2: Hãy thử biên dịch ở chế độ Fast \[bản nháp]

Việc đưa nhiều tệp ảnh lớn vào dự án của bạn có thể làm tăng đáng kể thời gian cần để biên dịch dự án của bạn.

Một cách có thể giúp xác định xem việc xử lý ảnh có phải là nguyên nhân gây hết thời gian hay không là thử biên dịch trong **Nhanh \[bản nháp]** chế độ. Để làm điều đó, hãy chọn **Nhanh \[bản nháp]** tùy chọn từ **menu Biên dịch lại**. Điều này thay thế tất cả đồ họa của bạn bằng các hộp và làm cho PDF được biên dịch nhanh hơn nhiều:

![Thiết lập chế độ biên dịch bản nháp cho một dự án Overleaf](/files/4fdcda98da6b0ce934e9f0693d4a01e7d688480f)

Nếu tài liệu của bạn biên dịch trong **Nhanh \[bản nháp]** chế độ nhưng không thể hoàn tất biên dịch trong **Chế độ bình thường** chế độ, nguyên nhân có thể là do các tệp ảnh lớn hoặc nhiều.

### Tối ưu hóa các tệp ảnh

Nếu bạn đã dùng nhiều tệp PNG hoặc JPEG lớn, có độ phân giải cao, việc xử lý những tệp này có thể làm tăng thời gian cần để biên dịch dự án của bạn, đôi khi đáng kể. Hãy chắc chắn rằng:

* Dùng tệp PDF thay vì tệp PNG cho sơ đồ và biểu đồ.
* Chỉ dùng JPEG cho ảnh chụp.

Để biết thêm lời khuyên, xem: [Tối ưu hóa các tệp ảnh lớn](/latex/vi/co-so-tri-thuc/113-optimising-very-large-image-files.md).

## Bước 3: Đánh giá dự án của bạn về các tác vụ tốn nhiều thời gian và các lỗi nghiêm trọng

Nếu cả **Dừng ở lỗi đầu tiên** và **Fast\[draft]** chế độ biên dịch vẫn dẫn đến lỗi hết thời gian biên dịch, bạn có thể cần xem xét kỹ hơn để xác định nguyên nhân của lỗi hết thời gian biên dịch và (hy vọng) khắc phục nó.

1\. [Xem lại danh sách các thực hành và gói tốn nhiều thời gian có thể làm chậm quá trình biên dịch](#anchor-slow)

2\. [Xem lại danh sách các lỗi nghiêm trọng thường gặp có thể dẫn đến hết thời gian](#anchor-fatal)

3\. [Kiểm tra lời khuyên cho các tình huống hết thời gian cụ thể mô tả tình huống của bạn tốt nhất](#anchor-advice)

### Các thực hành và gói tốn nhiều thời gian

Một số thực hành và gói có thể dẫn đến việc biên dịch rất chậm, thậm chí gây ra lỗi hết thời gian.

**Bao gồm các hình vẽ TikZ hoặc pgfplots phức tạp**

`TikZ` và [`pgfplots`](https://ctan.org/pkg/pgfplots?lang=en) tạo ra đồ họa rất đẹp nhưng chúng có thể [mất rất nhiều thời gian để biên dịch](https://tex.stackexchange.com/a/254946/226). Có [nhiều cách để bạn có thể ngoại hóa các hình TikZ](/latex/vi/cau-hoi-and-tra-loi/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) để LaTeX không phải vẽ lại chúng mỗi lần nó tạo một PDF mới.

**Sử dụng gói mhchem**

Các phiên bản gần đây của [`mhchem` gói](https://ctan.org/pkg/mhchem?lang=en) có thể mất nhiều thời gian hơn để biên dịch. Tùy thuộc vào mục đích bạn dùng nó, [`chemformula` gói](https://ctan.org/pkg/chemformula) có thể giảm thời gian cần thiết cho việc biên dịch. Nếu bạn đã dùng `mhchem`, bạn có thể thử chuyển trực tiếp sang `chemformula` làm thay thế:

```latex
% \usepackage{mhchem}
\usepackage{chemformula}
\let\ce\ch
```

* **Lưu ý**: có sự khác biệt về cú pháp và tính năng giữa `mhchem` và `chemformula`, vì vậy điều này không phải lúc nào cũng hoạt động tốt. Ví dụ, `\ce{2H2O}` sẽ hiển thị tốt với `mhchem`, nhưng với `chemformula` bạn sẽ phải viết thành `\ch{2 H2O}` với một khoảng trắng sau `2`.

**Bao gồm các lời gọi truy vết hoặc gỡ lỗi**

Nếu bạn tình cờ có một `\tracingall` lệnh trong tài liệu của bạn, nó có thể đang ghi một *lượng lớn* dữ liệu vào tệp nhật ký `.log`. Việc ghi lại và xử lý `\tracingall` dữ liệu trong tệp `.log` có thể khiến việc biên dịch trở nên cực kỳ chậm. Nên xóa các `\tracingall` lời gọi, hoặc nếu bạn cần dùng các phương pháp tương tự để gỡ lỗi thì hãy dùng [`trace` gói](http://ctan.org/pkg/trace) thay vào đó.

**Sử dụng gói acro**

Người dùng [`acro` gói](https://www.ctan.org/pkg/acro) đã [báo cáo rằng phiên bản 3 chậm](https://github.com/cgnieder/acro/issues/205) khi tải các khai báo từ viết tắt. Một hệ quả của `acro`việc thời gian biên dịch tăng lên là khả năng kích hoạt lỗi hết thời gian biên dịch; may mắn là có một cách khắc phục: dùng phiên bản 2 của `acro` gói.

Việc chuyển từ phiên bản 3 trở lại phiên bản 2 có thể đòi hỏi chỉnh sửa dự án của bạn để bảo đảm nó tương thích với các tùy chọn, tính năng và lệnh của phiên bản 2. Tài liệu cho phiên bản 2 có sẵn, nằm trong các bản phát hành mã nguồn trước đó có thể được [tải xuống từ GitHub](https://github.com/cgnieder/acro/releases/tag/v2.10).

Dưới đây là một số mục cần kiểm tra khi quay lại phiên bản 2 — danh sách này còn lâu mới đầy đủ:

1. Sửa tệp chính của dự án `.tex` thành:
   * thay đổi `\usepackage{acro}` sang `\usepackage{acro}[=v2]`
   * thay đổi `include=...` khóa tùy chọn của `\printacronyms` sang `include-classes=...`
2. Trong bất kỳ `\DeclareAcronym` lệnh nào, hãy bảo đảm `tag=...` khóa tùy chọn được đổi thành `class=...`.

Vui lòng tham khảo [`acro` tài liệu phiên bản 2.10](https://github.com/cgnieder/acro/releases/tag/v2.10) để biết các lệnh và tùy chọn có sẵn trong phiên bản 2 nhưng không có trong phiên bản 3.

**Sử dụng hình ảnh EPS hoặc SVG**

Việc dùng hình ảnh EPS hoặc SVG có thể yêu cầu xử lý thêm để chuyển chúng sang định dạng PDF. Việc xử lý thêm này sẽ làm tăng thời gian cần để biên dịch dự án của bạn.

* Mặc dù **latex** trình biên dịch sẽ hỗ trợ trực tiếp các hình EPS, nhưng **pdfLaTeX** trình biên dịch không hỗ trợ hình EPS, nên cần thêm một bước để chuyển chúng thành ảnh PDF khi dùng trình biên dịch đó. Việc xử lý được đảm nhiệm bởi `epstopdf` gói sử dụng `Ghostscript` để chuyển các tệp EPS sang PDF. Bước chuyển đổi này có thể làm tăng đáng kể thời gian cần để biên dịch dự án.
* Các tệp hình SVG không được bất kỳ trình biên dịch LaTeX nào hỗ trợ trực tiếp, và cần dùng `svg` gói và `\includesvg` lệnh mà nó cung cấp.  `svg` gói sử dụng `inkscape` để chuyển hình SVG sang PDF. Bước chuyển đổi này có thể làm tăng đáng kể thời gian cần để biên dịch dự án.

Để có kết quả nhanh hơn, có thể giúp tránh lỗi hết thời gian biên dịch, hãy dùng các phiên bản PDF của hình ảnh thay vì định dạng EPS hoặc SVG.

**Sử dụng gói tabularray**

Tính năng `tabularray` gói cung cấp một lựa chọn thay thế cho các lệnh và môi trường chuẩn để triển khai bảng trong LaTeX. Rất tiếc là `tabularray` gói chạy rất chậm, đặc biệt với các bảng lớn hơn và những bảng sử dụng một số kiểu cột nhất định. Hiện tại, các phương pháp định nghĩa bảng chuẩn được khuyến nghị hơn `tabularray` vì những cân nhắc về thời gian biên dịch.

**Tạo một vòng lặp vô hạn trong một lệnh**

Trong quá trình biên dịch, các lệnh LaTeX đôi khi, rất hiếm khi, có thể kích hoạt một “vòng lặp vô hạn”. Vòng lặp vô hạn thường do lỗi trong các gói hoặc trong các lệnh do người dùng định nghĩa.

Nếu bạn nghi ngờ rằng mình đang gặp vòng lặp, hãy kiểm tra xem liệu bạn có vô tình tạo một [đệ quy](https://en.wikipedia.org/wiki/Recursion) định nghĩa trong một trong các lệnh tùy chỉnh của bạn, chẳng hạn như `\newcommand{\foo}{\foo}`.

### Một số nguyên nhân gây lỗi biên dịch nghiêm trọng

Dưới đây là một số nguyên nhân đã biết gây ra lỗi nghiêm trọng.

**Bao gồm các dòng trống trong các lệnh đặt tiêu đề nhạy cảm**

Các lớp LaTeX và mẫu tạp chí thường cung cấp các lệnh đặc biệt để cung cấp các phần của tiêu đề tài liệu. Những lệnh này thường được dùng để nhận các đối số đơn giản, và việc sử dụng chúng theo những cách không ngờ tới có thể dẫn đến lỗi biên dịch và thậm chí hết thời gian. Quan trọng nhất, các lệnh như `\author{...}`, `\date{...}` và `\title{...}` không nên chứa các dòng trống.

**Bao gồm quá nhiều float cố định**

Nếu bạn có quá nhiều bảng hoặc hình sử dụng `[H]` mã định vị từ gói `float` nó, có thể khiến LaTeX rơi vào vòng lặp vô hạn khi cố tìm vị trí phù hợp cho tất cả chúng. Hãy cân nhắc thay thế tất cả `[H]` với `[hbt!]` và nếu cần thì thỉnh thoảng một `\clearpage` để đẩy tất cả các bảng và hình trong hàng đợi ra ngoài trước khi chèn ngắt trang.

**Lỗi trong lệnh \caption và môi trường tabular**

Đây là danh sách các vấn đề liên quan đến bảng cần lưu ý — nhìn chung, hãy cẩn thận khi dàn trang các bảng!

* `\caption{...}` luôn luôn phải được đặt *bên ngoài* trang `tabular` môi trường tabular vì nó có thể gây ra lỗi nghiêm trọng nếu [`caption` gói](https://ctan.org/pkg/caption) được nạp, như được minh họa trong ví dụ sau:

  ```latex
  \documentclass{article}
  \usepackage{caption}
  \begin{document}

  \begin{table}
      \begin{tabular}{c|c}
          \caption{Caption}% \caption{...} phải ở BÊN NGOÀI môi trường tabular
          a & b \\
          c & d \\
      \end{tabular}
  \end{table}
  \end{document}
  ```

  [Mở ví dụ này **điều này sẽ kích hoạt lỗi hết thời gian trên Overleaf**](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Overleaf+timeout+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bcaption%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cbegin%7Btable%7D%0A++++%5Cbegin%7Btabular%7D%7Bc%7Cc%7D%0A++++++++%5Ccaption%7BCaption%7D%25+%5Ccaption%7B...%7D+should+be+OUTSIDE+the+tabular+environment%0A++++++++a+%26+b+%5C%5C%0A++++++++c+%26+d+%5C%5C%0A++++%5Cend%7Btabular%7D%0A%5Cend%7Btable%7D%0A%5Cend%7Bdocument)
* Ngược lại, lưu ý rằng `longtable` môi trường *thì* đòi hỏi `\caption{...}` bên trong nó, như được minh họa bởi một ví dụ trong [bài viết trợ giúp về bảng](/latex/vi/hinh-va-bang/01-tables.md#multi-page-tables).
* `\caption{...}` không nên chứa `\\`, `\newline`, `\centering`, `\raggedright` v.v.
* Với một số mẫu hoặc gói, `\ref{...}` hoặc `\cite{...}` trong một `\caption` có thể cần được thêm tiền tố bởi `\protect` để tránh lỗi nghiêm trọng; ví dụ, `\protect\cite{...}`.
* Kiểm tra các `\cmidrule{...}` trong `tabular` môi trường chưa hoàn chỉnh; nó yêu cầu một phạm vi cột nên bạn sẽ cần viết `\cmidrule{3-3}` thay vì chỉ `\cmidrule{3}` nếu bạn muốn một đường kẻ ngang chỉ trải qua một cột.
* Tránh các `tabular` môi trường lồng nhau. Hãy xem [`makecell` gói](https://ctan.org/pkg/makecell?lang=en) nếu bạn muốn thêm ngắt dòng thủ công trong một ô bảng, hoặc kiểu cột `p{...}` và/hoặc [`tabularx`](https://ctan.org/pkg/tabularx) gói nếu bạn đang tìm cách tạo các cột tự động ngắt dòng dài.
* Nếu bạn có các hàng tabular bắt đầu bằng `[...` bạn có thể cần thêm `\relax` sau `\\` ở hàng trước.

**Sử dụng gói soul hoặc changes**

Nếu bạn đang sử dụng [`soul`](https://ctan.org/pkg/soul) hoặc [`changes`](https://ctan.org/pkg/changes) gói để tô sáng văn bản hoặc gạch bỏ văn bản, thì `\cite` và `\ref` có thể cần được thêm tiền tố bởi `\protect`; ví dụ, `\protect\cite{...}`.

**Sử dụng môi trường tikzpicture**

Kiểm tra xem có thiếu `;` dấu chấm phẩy ở cuối các lệnh path/node và `]` dấu phẩy ở cuối danh sách tham số trong `tikzpicture`các lệnh.

**Sử dụng gói breqn**

Tính năng [`breqn`](https://ctan.org/pkg/breqn) của gói `dmath` có thể rơi vào vòng lặp vô hạn; hãy thay bằng `align` và tự ngắt dòng thủ công nếu cần.

**Sử dụng gói babel**

Một số [`babel`](https://ctan.org/pkg/babel) tùy chọn ngôn ngữ thay đổi ý nghĩa của một số ký tự nhất định, điều này có thể gây ra vấn đề khi các ký tự đó được dùng trong ngữ cảnh “bình thường” của chúng; ví dụ, trong chế độ toán. Để tránh điều này, hãy thử dùng tùy chọn `shorthands=off` khi nạp babel (ví dụ, `\usepackage[shorthands=off]{babel}`).

**Sử dụng gói jabbrv**

Một số mẫu sử dụng [`jabbrv` gói](https://github.com/compholio/jabbrv) để tự động viết tắt tiêu đề tạp chí (xem [ví dụ Overleaf này](https://www.overleaf.com/latex/templates/automatic-journal-abbreviations/mxfsdscmvxcr)). Khi một trường tạp chí trong `.bib` tệp chứa các ký tự Unicode có dấu (ví dụ: Biología), điều này có thể chặn quá trình biên dịch và gây ra lỗi hết thời gian trên Overleaf. Thay vào đó cần dùng các lệnh LaTeX, ví dụ `Biolog{\'i}a` hoặc bạn có thể [thay đổi trình biên dịch của dự án](/latex/vi/co-so-tri-thuc/026-changing-compiler.md) sang `XeLaTeX` hoặc `LuaLaTeX`, cả hai đều có hỗ trợ tích hợp để đọc các ký tự Unicode.

## Lời khuyên cho một số tình huống hết thời gian cụ thể

### Dự án của tôi đang biên dịch mà không có lỗi nào, nhưng giờ tôi thấy lỗi hết thời gian biên dịch

Một thay đổi nhỏ đôi khi có thể gây ra lỗi hết thời gian biên dịch. Để giúp xác định nguyên nhân của vấn đề và sửa nó, hãy thử các bước sau:

1. Sử dụng [Biên dịch lại từ đầu](/latex/vi/co-so-tri-thuc/028-clearing-the-cache.md) để xóa mọi tệp sinh ra cũ có thể đang gây ra vấn đề.
2. Hãy sử dụng [tính năng Lịch sử Overleaf](/latex/vi/chu-de-khac/49-using-the-history-feature.md) để tìm các thay đổi gần đây nhất của bạn. Xem danh sách các nguyên nhân gây lỗi biên dịch nghiêm trọng ở trên.
3. Hãy sử dụng [Dừng ở lỗi đầu tiên](/latex/vi/co-so-tri-thuc/149-using-the-stop-on-first-error-compilation-mode.md) tùy chọn để tìm và sửa bất kỳ lỗi nào mà bạn đã vô tình đưa vào.

Có thể một thay đổi nhỏ đã dẫn đến một lỗi biên dịch nghiêm trọng - vui lòng xem [danh sách lỗi biên dịch nghiêm trọng ở trên](#anchor-fatal) để biết một số nguyên nhân có thể.

### Tôi vừa tải một dự án lên Overleaf và gặp lỗi hết thời gian biên dịch

Có thể dự án của bạn thiếu một tệp hoặc gói quan trọng, hoặc nó được tổ chức theo cách đang gây ra vấn đề cho quá trình biên dịch của Overleaf.

* Nếu một dự án biên dịch không vấn đề gì trên máy cục bộ của bạn nhưng lại không biên dịch được trên Overleaf, có thể là do bạn đang dùng một phiên bản khác của **TeX Live** trên máy tính của bạn. Bạn có thể [thay đổi phiên bản Tex Live cho dự án của bạn](https://www.overleaf.com/blog/new-feature-select-your-tex-live-compiler-version) để khớp gần hơn với phiên bản đã biên dịch thành công dự án của bạn cục bộ.
* Dự án đã tải lên của bạn có thể không có cấu trúc tệp tối ưu cho Overleaf. Nếu tệp tex chính của bạn nằm trong một thư mục, trình biên dịch có thể gặp khó khăn khi xác định một số phụ thuộc tệp. Nếu tệp tex chính của bạn nằm trong một thư mục, hãy thử sắp xếp lại dự án của bạn sao cho tệp tex chính ở cấp cao nhất của dự án.

Theo [các hướng dẫn ở trên để xác định và khắc phục lỗi](#first-errors) thường có thể xác định các tệp bị thiếu, các vấn đề về phiên bản TeX Live, và các vấn đề về tổ chức dự án.

### Tôi đã tạo một bản sao của một dự án đang biên dịch được, nhưng giờ tôi lại gặp lỗi hết thời gian biên dịch

Các dự án mới, bao gồm cả bản sao của các dự án hiện có, sẽ mặc định dùng phiên bản TeX Live mới nhất. Nếu dự án gốc của bạn dùng phiên bản TeX Live cũ hơn, có thể có những điểm không tương thích với phiên bản mới nhất đang gây ra vấn đề. Hãy thử [thay đổi phiên bản TeX Live](https://www.overleaf.com/blog/new-feature-select-your-tex-live-compiler-version) trên bản sao mới của bạn để khớp với phiên bản của dự án gốc.

### Tôi không thể làm cho dự án của mình biên dịch khi bao gồm tất cả các phần, nhưng từng phần lại biên dịch tốt khi đứng riêng

Hãy làm theo [lời khuyên ở trên về việc sử dụng tùy chọn biên dịch Fast\[draft\]](#second-images) để xem liệu toàn bộ dự án có thể được biên dịch ở chế độ Fast\[draft] hay không.

Trong một số trường hợp, có thể biên dịch thành công một dự án lớn theo hai giai đoạn: trước tiên chạy ở chế độ Fast\[draft], sau đó biên dịch ở chế độ Bình thường.

Kiểm tra từng phần của dự án để xác định các nguồn có thể gây biên dịch chậm. Chúng có thể bao gồm [các tệp ảnh lớn có thể được tối ưu hóa](#anchor-optimize), hoặc các [thực hành hoặc gói tốn nhiều thời gian](#anchor-slow).

### Dự án của tôi đôi khi bị hết thời gian, nhưng nó không thể biên dịch một cách ổn định

Dự án của bạn có thể đang chạy rất gần mức giới hạn biên dịch tối đa. Hãy làm theo lời khuyên ở trên về [việc sửa lỗi](#first-errors), [tối ưu hóa hình ảnh](#second-images), và [tránh các thực hành hoặc gói tốn nhiều thời gian](#third-assess).

## Các thực hành tốt nhất để ngăn ngừa lỗi hết thời gian biên dịch

Việc ngăn chặn lỗi hết thời gian biên dịch xảy ra tốt hơn nhiều so với việc phải xử lý quá trình đôi khi căng thẳng khi sửa chúng sau khi chúng đã xảy ra. Những khuyến nghị này sẽ giúp bạn ngăn lỗi hết thời gian biên dịch xảy ra, hoặc nhanh chóng phục hồi khi chúng xảy ra.

### Sửa tất cả lỗi biên dịch ngay khi chúng xảy ra

Các lỗi biên dịch được chỉ báo bằng bong bóng thông báo màu đỏ bên cạnh nút Biên dịch lại như được mô tả trong [trang này](/latex/vi/cau-hoi-and-tra-loi/81-tips-and-tricks-for-troubleshooting-latex.md). Nếu bạn nhấp vào bong bóng đỏ, bạn sẽ thấy các thông báo lỗi. Nhấp vào từng thông báo lỗi sẽ đưa bạn đến dòng tương ứng trong mã nguồn, để bạn có thể sửa mã của mình. Chúng tôi khuyên nên sửa lỗi càng sớm càng tốt, vì để chúng tích tụ có thể dẫn đến các lỗi nghiêm trọng và khó gỡ lỗi trong tương lai.

[Trang này](/latex/vi/kien-thuc-co-ban-ve-latex/05-errors.md) giải thích một số lỗi biên dịch thường gặp. Nếu bạn gặp khó khăn trong việc hiểu một thông báo lỗi, thường việc tìm kiếm trực tuyến bằng nội dung của lỗi sẽ dẫn bạn đến một bài đăng blog hoặc diễn đàn nơi lỗi được giải thích và các giải pháp được đưa ra.

### Gắn nhãn các phiên bản của dự án trước những thay đổi lớn hoặc các cột mốc quan trọng

Hãy sử dụng [tính năng Lịch sử Overleaf](/latex/vi/chu-de-khac/49-using-the-history-feature.md) để gắn nhãn các phiên bản của dự án, ताकि bạn có thể dễ dàng so sánh dự án hiện tại của mình với các phiên bản trước đó. Điều này có thể giúp bạn nhanh chóng tìm ra bất kỳ nguồn mới nào gây lỗi biên dịch.

### Sắp xếp các tệp của bạn

Sẽ dễ dàng hơn để tìm và sửa lỗi nếu dự án của bạn được tổ chức tốt. Ngoài ra, quản lý dự án tốt có thể cho phép bạn biên dịch các phần cụ thể của dự án, giúp dễ dàng xác định những khu vực có thể đang góp phần làm thời gian biên dịch kéo dài quá lâu. Vui lòng [xem tại đây](/latex/vi/cau-truc-tai-lieu/07-management-in-a-large-project.md) để biết lời khuyên về việc quản lý các dự án lớn.

## Thông tin thêm về biên dịch và thời gian biên dịch

### Rốt cuộc “biên dịch” là gì?

Biên dịch là quá trình chuyển đổi mã LaTeX của bạn thành một tệp PDF đã được dàn trang. [Tìm hiểu thêm về cách Overleaf biên dịch các dự án LaTeX](/latex/vi/co-so-tri-thuc/064-how-does-overleaf-compile-my-project.md).

### Giới hạn sử dụng hợp lý

Một số tài liệu lớn hoặc phức tạp có thể mất nhiều thời gian hơn để biên dịch so với giới hạn thời gian chờ trên gói miễn phí của Overleaf, và có thể cần thời gian biên dịch mở rộng có sẵn trên [gói trả phí](https://www.overleaf.com/user/subscription/plans). Một số dự án thậm chí có thể cần thời gian biên dịch lâu hơn mức có sẵn trong các gói trả phí của chúng tôi. Trong những trường hợp đó, bạn có thể cần tải xuống dự án của mình và biên dịch cục bộ.

### Vẫn còn gặp khó khăn?

Nếu bạn gặp lỗi hết thời gian biên dịch mà bạn không thể giải quyết bằng các lời khuyên ở đây, vui lòng [cho chúng tôi biết](https://www.overleaf.com/contact).


---

# 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/038-fixing-and-preventing-compile-timeouts.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.
