> 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/138-understanding-underfull-and-overfull-box-warnings.md).

# Hiểu các cảnh báo hộp thiếu đầy và thừa đầy

## Giới thiệu

Sau khi dàn trang một tài liệu LaTeX, Overleaf thường sẽ hiển thị các thông báo báo cáo một hộp underfull hoặc overfull `\hbox` (hoặc `\vbox`), cùng với cái gọi là `độ kém` các giá trị cho các hộp underfull hoặc số lượng mà các hộp bị overfull. Trước hết, cần lưu ý rằng các thông báo này không phải là lỗi—[xem bên dưới để biết thêm chi tiết](#overfull-or-underfull-boxes-are-not-errors). Chúng là *cảnh báo* hoặc, chính xác hơn, “thông báo chẩn đoán” xuất phát từ bên trong bộ máy TeX đang được dùng để dàn trang tài liệu LaTeX của bạn.

Trong bài viết trợ giúp này, chúng tôi sẽ cung cấp một số bối cảnh giới thiệu về nguồn gốc và nguyên nhân của các thông báo đó, đồng thời liệt kê một số vấn đề thường gặp kèm theo các giải pháp đề xuất. Đối với độc giả quan tâm đến chi tiết hơn, chúng tôi đã xuất bản một bài viết đi kèm trong Overleaf Gallery: [Khám phá các hộp underfull hoặc overfull và cách tính badness](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv). Bạn cũng có thể tìm thấy danh sách các tài nguyên bổ sung [ở cuối bài viết này](#further-reading).

## Dự án của tôi có các cảnh báo overfull hoặc underfull không?

Để kiểm tra xem dự án của bạn có báo cáo các cảnh báo này hay không, bạn cần nhấp vào biểu tượng được hiển thị trong ảnh chụp màn hình bên dưới. Mặc dù tài liệu của bạn có thể đã biên dịch thành công mà không có lỗi, nhưng rất thường thấy các thông báo này và bất kỳ ai mới làm quen với TeX/LaTeX có thể tự hỏi chúng có nghĩa là gì và liệu có nên lo lắng về chúng hay không.

![Ảnh màn hình hiển thị Overleaf báo cáo các hộp underfull hoặc overfull](/files/923c35878611061cc075775e93fcd38bff910516)

Khi dàn trang một tài liệu, LaTeX sẽ cố gắng làm cho các phần nội dung của bạn vừa trong giới hạn của một “kích thước” nhất định; chẳng hạn, khi dàn trang các đoạn văn và ngắt dòng thành một độ dài nhất định—điều này dễ minh họa nhất bằng một lệnh như `\parbox`. Nếu chúng ta thử dàn trang đoạn văn sau với độ rộng dòng là 50pt:

```latex
\parbox{50pt}{Some text typeset using a \texttt{\string\parbox}}
```

Overleaf báo cáo hai `Underfull \hbox...` cảnh báo:

![Ảnh màn hình hiển thị Overleaf báo cáo các hộp underfull](/files/5d01d84f62a9f8f0f7fec4614e9c920b70d751c5)

Những `Underfull \hbox...` Các cảnh báo này xuất hiện vì bộ máy TeX không thể tạo ra các ngắt dòng “đẹp” trong các ràng buộc của \parbox này. Bên trong các bộ máy TeX, mỗi dòng của một đoạn văn đã dàn trang trở thành một \hbox, sau đó bộ máy sẽ kiểm tra và báo cáo về nó, có thể tạo ra cảnh báo cho bất kỳ dòng văn bản đã dàn trang nào mà bộ máy TeX phân loại là “không mong muốn”.

Như bạn có thể thấy trong các hình sau, các dòng văn bản cách nhau cực kỳ rộng và các `Underfull \hbox...` cảnh báo của TeX cho bạn biết điều này—mặc dù trong ví dụ này, điều đó hiển nhiên có thể thấy được.

![Ảnh màn hình hiển thị một parbox](/files/ba030549a2873c24c3eac1f1da4dcf4ada4c4409)

Lưu ý rằng, với ví dụ này, bạn có thể tránh các cảnh báo này bằng cách dùng \raggedright:

```latex
\parbox{50pt}{\raggedright Some text typeset using a \texttt{\string\parbox}}
```

![Ảnh màn hình hiển thị một parbox](/files/c64c2a2f1e6a9abedea816fbe2f895dc614146f4)

## Các hộp overfull và underfull

Tính năng `\parbox` ví dụ này minh họa một vấn đề tổng quát hơn nhiều: khi xử lý mã LaTeX của bạn, bộ máy TeX được dùng để dàn trang tài liệu của bạn (pdfTeX, XeTeX hoặc LuaTeX) có thể cho rằng các yêu cầu của LaTeX dẫn đến nội dung dàn trang không “vừa vặn đẹp” trong phạm vi của hộp được cung cấp hoặc được yêu cầu. Nếu vậy, bộ máy TeX sẽ đưa ra cảnh báo và nội dung của bạn vẫn sẽ được dàn trang nhưng kết quả đôi khi có thể không đẹp về mặt thẩm mỹ và có lẽ bạn sẽ cần sửa nó. Việc hiểu ý nghĩa của các thông báo đó và nhận ra khi nào bạn cần hành động để xử lý chúng là rất đáng giá.

Các cảnh báo liên quan đến hộp này có dạng

```
Overfull \hbox (<value>pt quá rộng) ... tại dòng(s) ...
Overfull \vbox (<value>pt quá cao) ... tại dòng(s) ...
Underfull \hbox (badness <value> ) ... tại dòng(s) ...
Underfull \vbox (badness <value>) ... tại dòng(s) ...
```

Một `\hbox` chỉ đến một *hộp ngang* trong đó bộ máy TeX đặt một danh sách các mục cạnh nhau và `\vbox` chỉ đến một *hộp dọc* trong đó bộ máy TeX xếp chồng các mục lên nhau.

Nếu có quá ít nội dung, bộ máy TeX sẽ báo cáo một `Underfull \hbox` cảnh báo hoặc `Underfull \vbox` cảnh báo:

* **Các hộp underfull** không có đủ nội dung để lấp đầy các kích thước (hộp) đã được cấp phát để chứa nó và bộ máy TeX cần “kéo giãn” nội dung trong nỗ lực lấp đầy khoảng trống đó. Đối với các hộp underfull, Overleaf cũng sẽ báo cáo cái gọi là “badness” của TeX (`badness <value>`) là thước đo mức độ TeX phải “kéo giãn” nội dung của bạn để lấp đầy khoảng trống được dành để chứa nó. Các giá trị badness thường nằm trong khoảng từ 0 đến 10000.

Nếu có quá nhiều nội dung, bộ máy TeX sẽ báo cáo cảnh báo \`Overfull \hbox\` hoặc cảnh báo \`Overfull \vbox\`:

* **Các hộp overfull** có quá nhiều nội dung để vừa với các kích thước (hộp) đã được cấp phát để chứa nó và TeX không thể “ép” nó vào khoảng trống được cung cấp. Bộ máy TeX báo cáo mức độ (`<value>`), tính bằng point, mà nội dung của bạn vượt quá khoảng trống sẵn có—nội dung của bạn quá rộng đối với một `\hbox` hoặc quá cao đối với một `\vbox`.

## Các hộp overfull hoặc underfull không phải là lỗi

Như đã lưu ý, overfull/underfull `\hbox` hoặc `\vbox` các thông báo không phải là lỗi mà là “thông báo cảnh báo chẩn đoán” do bộ máy TeX (pdfTeX, XeTeX hoặc LuaTeX) đang được dùng để dàn trang tài liệu LaTeX của bạn xuất ra. Mặc dù *được báo cáo* cho bạn bởi Overleaf, những cảnh báo này không phải là *được tạo ra* do Overleaf tạo ra: chúng xuất phát từ bên trong các bộ máy TeX. Trong quá trình dàn trang, các thông báo này được ghi vào `.log` tệp—một tệp văn bản do bộ máy TeX tạo ra để ghi lại một loạt thông tin khi nó xử lý mã LaTeX của bạn. Overleaf xử lý `.log` tệp để trích xuất các `\hbox` hoặc `\vbox` thông báo cảnh báo overfull/underfull của bộ máy TeX và hiển thị chúng trong giao diện Overleaf. Điều này giúp bạn xác định và tìm ra những phần của tài liệu có thể cần chỉnh sửa để tạo ra kết quả dàn trang tốt nhất có thể.

## Tôi có nên lo lắng về những cảnh báo này không?

Những người mới làm quen với TeX/LaTeX có thể lo ngại về các cảnh báo này, tự hỏi liệu chúng có chỉ ra một vấn đề nghiêm trọng với tài liệu của họ hay không, nhưng thường thì đa số chúng có thể bỏ qua an toàn. Tuy nhiên, đôi khi các cảnh báo này lại làm nổi bật một phần của tài liệu cần được kiểm tra và có thể cần chỉnh sửa để cải thiện kết quả dàn trang hiển thị.

Cần một chút thực hành để diễn giải các thông báo này, vì vậy nếu bạn mới làm quen với TeX/LaTeX thì rất đáng để dành thời gian tích lũy kinh nghiệm bằng cách xác định vị trí trong mã nguồn đã tạo ra cảnh báo. Làm như vậy, bạn sẽ sớm học được cách nhận ra những cảnh báo thực sự làm nổi bật các vấn đề mà bạn có thể cần xử lý.

## Làm thế nào tôi có thể tìm ra nguồn gốc của cảnh báo?

1. Ngay trong giao diện Overleaf, hãy nhấp vào một thông báo cảnh báo và trình soạn thảo sẽ cuộn đến vị trí thích hợp trong mã nguồn LaTeX của bạn.
2. Bên trái vị trí đó trong mã nguồn của bạn sẽ có một tam giác vàng nhỏ chứa dấu chấm than (!).
3. Nếu bạn đặt con trỏ chuột lên tam giác, Overleaf sẽ hiển thị thông báo cảnh báo.

Đoạn video ngắn này minh họa các bước ở trên.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/1S1CW2vbVGRHnCXmsbjgAX/096e314caba0c1bafb762a528761e24d/findwarning.mp4>" %}

## Làm thế nào tôi có thể tìm vị trí trong PDF tương ứng với mã LaTeX của mình?

Sau khi xác định được mã LaTeX đã tạo ra một cảnh báo cụ thể, bạn có thể nhảy đến vị trí thích hợp trong PDF bằng cách dùng các mũi tên nằm trên thanh chia tách giữa các khung chứa trình soạn thảo và PDF đã dàn trang.

![Ảnh màn hình hiển thị một parbox](/files/a6fe39eb11f71611628f1d85f477d884603e79bf)

Nếu bạn không thấy các mũi tên này, bài viết trợ giúp của chúng tôi [Cách nhảy đến mã nguồn từ PDF đã dàn trang (SyncTeX)](/latex/vi/co-so-tri-thuc/069-how-to-jump-to-the-source-code-from-the-typeset-pdf-synctex.md) sẽ chỉ bạn cách bật chúng.

## Các vấn đề thường gặp và cách khắc phục

* Bạn có thể sử dụng [gói microtype](https://ctan.org/pkg/microtype?lang=en) gói này tận dụng các mở rộng vi kiểu chữ do pdfTeX giới thiệu—tạo ra kiểu dàn trang chất lượng cao hơn, đồng thời cũng có thể dẫn đến ít hộp xấu hơn.
* Nếu bạn gặp vấn đề với URL và ngắt dòng, bạn có thể thêm tùy chọn `breaklinks` vào `hyperref` gói: `\usepackage[breaklinks]{hyperref}`.
* Giống như `\parbox`, `minipage` các môi trường có thể dẫn đến cảnh báo hộp overfull hoặc underfull khi bộ máy TeX cố ngắt các đoạn văn thành các dòng:

```latex

\begin{minipage}{width}
text...
\end{minipage}
```

Nếu có thể, hãy tăng giá trị của `width` để cho bộ máy TeX có cơ hội tốt hơn tạo ra các ngắt dòng đẹp—và/hoặc sử dụng [gói microtype](https://ctan.org/pkg/microtype?lang=en).

### Ghi chú về việc sử dụng \\\\

`\\` là một macro (một ký hiệu điều khiển) mà định nghĩa chính xác của nó có thể phụ thuộc vào ngữ cảnh sử dụng—một phần thảo luận/giải thích rất hay có thể được tìm thấy trong [câu trả lời trên tex.stackexchange](https://tex.stackexchange.com/a/55481).

* `\\` không nên dùng để thêm khoảng trắng dọc giữa các đoạn văn—làm như vậy bị coi là thực hành rất tệ.
* `\\` chỉ nhằm cho ngắt dòng (tương tự Shift-Enter trong Microsoft Word). Cách đúng để tạo một đoạn mới trong LaTeX là tách các đoạn bằng các dòng trống trong mã nguồn.
* Thay vì dùng `\\` (hoặc `\newline`/`\vspace`) để mô phỏng ngắt đoạn, hoặc để tăng khoảng cách giữa các đoạn, giải pháp được khuyến nghị để thiết lập khoảng cách giữa các đoạn là nạp [parskip](https://ctan.org/pkg/parskip) gói: đặt `\usepackage{parskip}` vào phần tiền đề của tài liệu.
* Việc dùng `\\` xuyên suốt các đoạn trong tài liệu có thể gây nhiễu các thuật toán của LaTeX, vốn tính toán vị trí tối ưu để đặt các đối tượng nổi, ngắt trang, v.v. và có thể gây lỗi biên dịch trong một tài liệu lớn.
* Việc sử dụng hợp lý của `\\` được giải thích trong các câu trả lời trên [tex.stackexchange](https://tex.stackexchange.com/). Ví dụ, xem:
  * [Khi nào nên dùng `\par` và khi nào `\\`, `\newline`, hoặc các dòng trống](https://tex.stackexchange.com/a/82666)
  * [Lệnh `\\*` làm gì?](https://tex.stackexchange.com/a/55481)

## Kiểm soát những hộp nào TeX báo cáo cho bạn

Các bộ máy TeX cung cấp một số lệnh nguyên thủy cấp thấp mà bạn có thể dùng để định hướng các heuristic của TeX và đặt một giá trị ngưỡng cho mức “tệ” của một hộp trước khi TeX báo cáo nó. Sau đây là một số liên kết cho độc giả quan tâm đến các lệnh đó:

* [\hfuzz và \vfuzz](/latex/vi/cac-nguyen-thuy-tex-latex/06-hfuzz.md)
* [\hbadness và \vbadness](/latex/vi/cac-nguyen-thuy-tex-latex/05-hbadness.md)

## Đọc thêm

Để đọc thêm nền tảng về việc TeX sử dụng các hộp và glue, người đọc quan tâm có thể tham khảo các tài nguyên sau:

* Bài viết của Overleaf [Cách TeX tính toán các thiết lập glue trong một \hbox](/latex/vi/bai-viet-chuyen-sau/24-how-tex-calculates-glue-settings-in-an-hbox.md).
* Một bài viết 17 trang trên Overleaf được viết kèm theo mục trợ giúp này: [Khám phá các hộp underfull hoặc overfull và cách tính badness](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv). Bài viết đó cũng thảo luận về các primitive của TeX `\hfuzz` và `\hbadness`.
* TeX FAQ tại <https://texfaq.org/FAQ-overfull.html>.
* [tex.stackexchange](https://tex.stackexchange.com/) chứa rất nhiều lời khuyên từ các chuyên gia hàng đầu về TeX/LaTeX.


---

# 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/138-understanding-underfull-and-overfull-box-warnings.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.
