> 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/cac-nguyen-thuy-tex-latex/02-badness.md).

# \badness

#### Tóm tắt

Mỗi khi TEX tạo một hộp (ví dụ, một cách tường minh thông qua một `\hbox` hoặc `\vbox`) nó đặt, hoặc tính toán, “độ xấu” của hộp đó: một giá trị số có thể được xem là một cách đo, hoặc phân loại, mức độ “phù hợp” của nội dung trong một hộp so với kích thước hộp đó. Giá trị độ xấu của hộp được tạo gần đây nhất được lưu trong một thanh ghi chỉ đọc (một vị trí bộ nhớ) có thể được truy cập bằng lệnh `\badness`: ví dụ bằng `\the\badness`. Lưu ý rằng TEX cũng tạo các hộp trong những hoạt động dàn trang khác (ví dụ, ngắt dòng) nhưng ở đây chúng ta sẽ tập trung vào các lệnh tạo hộp tường minh.

#### Giải thích và ví dụ

Khi TEX được yêu cầu tạo một hộp bằng các lệnh tạo hộp sau:

* `\hbox`
* `\vbox`
* `\vtop`

bạn có thể chọn đặt kích thước của hộp và yêu cầu TEX cố gắng đưa nội dung của bạn vừa khít vào đó; ví dụ `\hbox to 20pt{<stuff>}` sẽ yêu cầu TEX cố gắng đưa `<stuff>` của bạn vào một hộp rộng 20pt. TEX sẽ cố gắng hết sức để làm cho `<stuff>` vừa bằng cách kéo giãn hoặc thu nhỏ mọi glue sẵn có.

Ngược lại, nếu bạn *không* ấn định kích thước của hộp, bằng cách viết `\hbox{<stuff>}`, TEX sẽ đơn giản tạo một `\hbox` hộp `<stuff>` rộng đủ để chứa

Khi TEX quyết định tính độ xấu của một hộp, nó so sánh kích thước thực của nội dung của bạn với chiều kích thích hợp của hộp mà nội dung phải vừa vào: nội dung của bạn có quá rộng để vừa với `\hbox` đã chỉ định hay quá cao để vừa với `\vbox` hoặc `\vtop`? Là một phần của phép tính độ xấu, TEX cũng tính đến *tổng* lượng của từng loại glue trong hộp—tức là tổng độ giãn hoặc co có sẵn để giúp tạo ra một hộp có kích thước mong muốn.

Trong thực tế, khi TEX cần tính giá trị độ xấu của một hộp, nó dùng (một xấp xỉ của) công thức sau:

$$\mathrm{badness}=100\left ({t \over s}\right )^3$$

trong đó $$t$$ là độ rộng dư mong muốn cần được chứa và $$s$$ là lượng glue có sẵn để giãn hoặc co.

Giá trị độ xấu thường nằm giữa 0 và 10000 nhưng có một giá trị đặc biệt được dành cho các hộp mà, ngay cả sau khi cho phép glue co lại, vẫn đơn giản là không đủ lớn để chứa nội dung: những hộp đó được phân loại là “quá đầy” và TEX gán cho chúng một giá trị độ xấu “đặc biệt” là 1000000.

Được rồi, bấy nhiêu cho phần thảo luận/lý thuyết, giờ chúng ta sẽ xem một số ví dụ. Chúng ta sẽ tạo 5 hộp và dùng 5 `\count` thanh ghi để chứa `\badness` giá trị của hộp mà TEX vừa tạo. Sau đó chúng ta dùng những `\count` thanh ghi đó để xuất ra `\badness` giá trị của hộp liên quan.

```
\newcount\aval\newcount\bval\newcount\cval\newcount\dval\newcount\eval
\setbox100=\hbox{Hello \TeX}\aval=\the\badness %Chúng ta không đặt kích thước hộp
\setbox101=\hbox to25mm{Hello \TeX\hskip0pt plus5pt}\bval=\the\badness
\setbox102=\hbox to50mm{Hello \TeX}\cval=\the\badness
\setbox103=\hbox to50mm{Hello \TeX\hfill}\dval=\the\badness
\setbox104=\hbox to5mm{Overleaf}\eval=\the\badness
\setlength{\fboxsep}{0pt}% đặt viền sát quanh mỗi hộp
\noindent Đây là kết quả:\vskip5mm
\noindent hộp 100 (\fbox{\copy100}) có giá trị \verb|\badness| là \number\aval\par
\noindent hộp 101 (\fbox{\copy101}) có giá trị \verb|\badness| là \number\bval\par
\noindent hộp 102 (\fbox{\copy102}) có giá trị \verb|\badness| là \number\cval\par
\noindent hộp 103 (\fbox{\copy103}) có giá trị \verb|\badness| là \number\dval\par
\noindent hộp 104 (\fbox{\copy104}) có giá trị \verb|\badness| là \number\eval\par
```

Hình minh họa sau cho thấy đầu ra:

![](/files/3e51f5ddc9304569b2e74f4c2573a4bdb7d2e223)

* hộp 100: `\hbox{Hello \TeX}`. Hộp này có `\badness` bằng 0 vì TEX không được yêu cầu khớp nội dung với một kích thước cụ thể.
* hộp 101: `\hbox to25mm{Hello \TeX\hskip0pt plus5pt}`. Hộp này có hai glue: một khoảng cách giữa các từ sau từ “Hello” và 5pt đến từ `\hskip` glue. Tuy nhiên, hộp mong muốn rộng 25mm, dẫn đến rất nhiều khoảng trống cần lấp trong khi lượng glue để làm điều đó lại không nhiều. Sự kết hợp giữa khoảng trống dư và lượng glue sẵn có đó dẫn đến `\badness` giá trị 6396.
* hộp 102: `\hbox to50mm{Hello \TeX}`. Hộp này chỉ có một mục glue: một khoảng cách giữa các từ sau từ “Hello” và có rất nhiều khoảng trống dư cần lấp. Sự kết hợp giữa khoảng trống dư và lượng glue ít ỏi đó dẫn đến một `\badness` giá trị rất lớn—lớn đến mức TEX “cắt” nó xuống giá trị tối đa là 10000. Ngoài ra, khoảng cách giữa các từ được kéo giãn đáng kể để lấp đầy hộp, dẫn đến một khoảng trống khổng lồ xuất hiện giữa “Hello” và “TEX”
* hộp 103: `\hbox to50mm{Hello \TeX\hfill}`. Hộp này tương tự hộp 102 nhưng có hai glue: khoảng cách giữa các từ sau từ “Hello” nhưng nó có thêm một glue thứ hai rất linh hoạt được cung cấp bởi `\hfill`—một glue được gọi là “linh hoạt vô hạn”. Do đó,`\hfill` có thể giãn ra bao xa tùy cần và nở ra để hấp thụ toàn bộ khoảng trống dư. Nhờ glue “linh hoạt vô hạn”, `\badness` kết quả bằng 0.
* hộp 104: `\hbox to5mm{Overleaf}` Hộp này chồng lấn lên văn bản theo sau nó; nó có `\badness` giá trị bằng 1000000. Giá trị độ xấu rất lớn này (và văn bản chồng lấn) là do văn bản “Overleaf” quá lớn để vừa vào một `\hbox` hộp chỉ rộng 5mm — và ngoài ra, không có glue nào sẵn có có thể hấp thụ phần độ rộng dư. TEX phân loại hộp 104 là hộp “quá đầy” và đặt `\badness` thành giá trị đặc biệt 1000000.

#### Các lệnh liên quan

TEX cung cấp một số lệnh liên quan đến việc báo cáo và hiển thị độ xấu của các hộp:

* `[\overfullrule](./07-overfullrule.md)`
* `[\hfuzz](./06-hfuzz.md)`
* `[\vfuzz](./06-hfuzz.md)`
* `[\hbadness](./05-hbadness.md)`
* `[\vbadness](./05-hbadness.md)`


---

# 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/cac-nguyen-thuy-tex-latex/02-badness.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.
