> 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/zh-tw/zhi-shi-ku/138-understanding-underfull-and-overfull-box-warnings.md).

# 了解 underfull 與 overfull 方框警告

## 簡介

在排版 LaTeX 文件後，Overleaf 通常會顯示訊息，回報 underfull 或 overfull `\hbox` （或 `\vbox`），以及所謂的 `badness` underfull 方框的 badness 值，或方框超出部分的數值。首先，要注意這些訊息並不是錯誤——[詳情請見下文](#overfull-or-underfull-boxes-are-not-errors)。它們是 *警告* 或更準確地說，是「診斷訊息」，這些訊息來自用於排版你 LaTeX 文件的 TeX 引擎內部。

在這篇說明文章中，我們將提供這些訊息的來源與成因的入門背景，並列出一些常見問題及建議解法。對於想了解更多細節的讀者，我們在 Overleaf Gallery 發表了相關文章： [探索 underfull 或 overfull 方框與 badness 計算](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv)。也可以在 [本文末尾找到其他資源清單](#further-reading).

## 我的專案有 overfull 或 underfull 警告嗎？

要檢查你的專案是否回報這些警告，你需要點擊下方截圖中顯示的圖示。即使你的文件已成功編譯且沒有錯誤，看到這些訊息也很常見，而剛接觸 TeX/LaTeX 的人可能會想知道它們是什麼意思，以及是否需要擔心。

![顯示 Overleaf 回報 underfull 或 overfull 方框的畫面截圖](/files/81409a397d6bf890c68444c5b8c5b2003bfdbde8)

在排版文件時，LaTeX 會嘗試讓內容的各部分符合指定「尺寸」的界限；例如，在排版段落並將行分成某個長度時——最容易用如下指令來示範 `\parbox`。如果我們試著以 50pt 的行寬來排版下列段落：

```latex
\parbox{50pt}{使用 \texttt{\string\parbox} 排版的文字}
```

Overleaf 會回報兩個 `Underfull \hbox...` 警告：

![顯示 Overleaf 回報 underfull 方框的畫面截圖](/files/0bf02784cdb8a5227df70a488c2c4bd331de6851)

這些 `Underfull \hbox...` 這些警告出現的原因是 TeX 引擎無法在這個 \parbox 的限制內產生「漂亮」的換行。在 TeX 引擎內，每一行排版後的段落都會成為一個 \hbox，而引擎之後會檢查並回報它，可能會對任何被 TeX 引擎歸類為「不理想」的排版文字行產生警告。

如你在下列圖片中所見，文字行之間的間距極大，而 TeX 的 `Underfull \hbox...` 警告會告訴你這件事——雖然在這個例子中其實已經很明顯。

![顯示一個 parbox 的畫面截圖](/files/807e0a69f541614ccd12b2c73d74a48f309dac90)

注意，對於這個例子，你可以使用 \raggedright 來避免這些警告：

```latex
\parbox{50pt}{\raggedright 使用 \texttt{\string\parbox} 排版的文字}
```

![顯示一個 parbox 的畫面截圖](/files/6dd667acc964331005b6f839f74f32571979bee1)

## Overfull 和 underfull 方框

該 `\parbox` 這個例子展示了更一般的問題：在處理你的 LaTeX 程式碼時，用來排版文件的 TeX 引擎（pdfTeX、XeTeX 或 LuaTeX）可能會認為 LaTeX 的要求所產生的排版內容，無法在所提供或要求的方框範圍內「完美貼合」。如果是這樣，TeX 引擎就會發出警告，而你的內容仍會被排版出來，但結果有時可能在美觀上不理想，你大概需要修正它。理解這些訊息的意義，以及辨識何時需要採取行動來處理它們，是值得的。

這些與方框相關的警告格式如下

```
Overfull \hbox（<value>pt too wide）... 於第 ... 行
Overfull \vbox（<value>pt too high）... 於第 ... 行
Underfull \hbox（badness <value>）... 於第 ... 行
Underfull \vbox（badness <value>）... 於第 ... 行
```

一個 `\hbox` 指的是一個 *水平方框* TeX 引擎將一串項目並排放置的方框，而 `\vbox` 指的是一個 *垂直方框* TeX 引擎將項目一個疊在另一個上方的方框。

如果內容太少，TeX 引擎會回報 `Underfull \hbox` 警告，或 `Underfull \vbox` 警告：

* **Underfull 方框** 沒有足夠的內容去填滿分配給它的（方框）尺寸，而 TeX 引擎在嘗試填滿該空間時需要把內容「拉開」。對於 underfull 方框，Overleaf 也會回報 TeX 所謂的「badness」（`badness <value>`）這是衡量 TeX 為了填滿預留空間而需要將內容「拉伸」多少的一個指標。badness 值通常介於 0 到 10000 之間。

如果內容太多，TeX 引擎會回報 \`Overfull \hbox\` 警告或 \`Overfull \vbox\` 警告：

* **Overfull 方框** 有太多內容，以致無法符合分配給它的（方框）尺寸，而 TeX 無法把它「擠」進所提供的空間中。TeX 引擎會回報超出的量（`<value>`），以點為單位，表示你的內容超出可用空間的程度——你的內容對於某個指定的 `\hbox` 來說太寬，或對於某個指定的 `\vbox`.

## Overfull 或 underfull 方框不是錯誤

如前所述，overfull/underfull `\hbox` 或 `\vbox` 訊息並不是錯誤，而是由用來排版 LaTeX 文件的 TeX 引擎（pdfTeX、XeTeX 或 LuaTeX）輸出的「診斷警告訊息」。雖然 *由 Overleaf* 向你顯示，這些警告並不是 *產生的* 由 Overleaf 產生的：它們來自 TeX 引擎內部。在排版過程中，這些訊息會寫入 `.log` 檔案——這是 TeX 引擎在處理你的 LaTeX 程式碼時所產生的文字檔，用來記錄各種資訊。Overleaf 會處理這個 `.log` 檔案，以擷取 TeX 引擎的 overfull/underfull `\hbox` 或 `\vbox` 警告訊息，並在 Overleaf 介面中顯示它們。這有助於你找出並辨識文件中可能需要修改的部分，以產生盡可能好的排版結果。

## 我需要擔心這些警告嗎？

剛接觸 TeX/LaTeX 的使用者可能會對這些警告感到擔心，想知道它們是否表示文件有嚴重問題，但通常多數警告都可以安全忽略。然而，這些警告有時確實會指出文件中需要檢查的部分，並可能需要編輯以改善可見的排版結果。

理解這些訊息需要一點練習，所以如果你剛接觸 TeX/LaTeX，花時間透過定位產生警告的原始碼位置來累積經驗是值得的。這麼做之後，你很快就會學會如何辨識那些確實指出你可能需要處理的問題的警告。

## 我如何找到警告的來源？

1. 在 Overleaf 介面中，點擊某則警告訊息，編輯器就會捲動到 LaTeX 原始碼中的對應位置。
2. 在原始碼位置左側會有一個帶有驚嘆號（!）的小黃三角形。
3. 如果你將滑鼠指標移到三角形上，Overleaf 會顯示該警告訊息。

這段短影片示範了上述步驟。

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

## 如何找到與我的 LaTeX 程式碼相對應的 PDF 位置？

在找到產生特定警告的 LaTeX 程式碼後，你可以使用分隔編輯器與已排版 PDF 面板的分割條上的箭頭，跳到 PDF 中的對應位置。

![顯示一個 parbox 的畫面截圖](/files/d8b1389efc95728f9333d22ec87857e4f5b5c35a)

如果你看不到這些箭頭，我們的說明文章 [如何從已排版 PDF 跳回原始碼（SyncTeX）](/latex/zh-tw/zhi-shi-ku/069-how-to-jump-to-the-source-code-from-the-typeset-pdf-synctex.md) 說明如何啟用它們。

## 常見問題與修正方式

* 您可以使用 [microtype 套件](https://ctan.org/pkg/microtype?lang=en) 它利用了 pdfTeX 引入的微排版擴充功能——能產生更高品質的排版，也可能減少不良方框。
* 如果你在 URL 與換行方面遇到問題，可以加入選項 `breaklinks` 到 `hyperref` 套件的範例程式碼： `\usepackage[breaklinks]{hyperref}`.
* 像 `\parbox`, `minipage` 環境在 TeX 引擎嘗試將段落分行時，也可能導致 overfull 或 underfull 方框警告：

```latex

\begin{minipage}{width}
文字...
\end{minipage}
```

如果可能，請增加 `width` 的值，以讓 TeX 引擎更有機會產生良好的換行——和/或使用 [microtype 套件](https://ctan.org/pkg/microtype?lang=en).

### 使用 \\\ 的注意事項

`\\` 是個巨集（控制符號），其精確定義會依其使用的上下文而定——在這個 [tex.stackexchange 上的回答](https://tex.stackexchange.com/a/55481).

* `\\` 不應該用來在段落之間加入垂直空白——這樣做被認為是非常糟糕的做法。
* `\\` 它只適用於換行（類似於 Microsoft Word 中的 Shift+Enter）。在 LaTeX 中建立新段落的正確方式，是在原始碼中用空白行將段落分開。
* 不要使用 `\\` （或 `\newline`/`\vspace`）來模擬段落分隔，或增加段落間距；設定段落間距的建議做法是載入 [parskip](https://ctan.org/pkg/parskip) 套件：在 `\usepackage{parskip}` 放在文件前言區中。
* 使用 `\\` 在文件的整個段落中，可能會干擾 LaTeX 用來計算浮動體最佳位置、分頁等的演算法，並可能在大型文件中造成編譯錯誤。
* 對 `\\` 的正當使用方法 [tex.stackexchange](https://tex.stackexchange.com/)可在
  * [中說明。例如，請參見： `\par` 以及 `\\`, `\newline`，或空白行](https://tex.stackexchange.com/a/82666)
  * [什麼是 `\\*` 的作用？](https://tex.stackexchange.com/a/55481)

## 控制 TeX 向你回報哪些方框

TeX 引擎提供一些底層原始命令，你可以用它們來引導 TeX 的啟發式規則，並設定一個門檻值，決定方框要有多「糟」 TeX 才會回報它。以下是一些給對這些命令感興趣的讀者的連結：

* [\hfuzz 和 \vfuzz](/latex/zh-tw/tex-latex-ji-ben-ming-ling/06-hfuzz.md)
* [\hbadness 和 \vbadness](/latex/zh-tw/tex-latex-ji-ben-ming-ling/05-hbadness.md)

## 延伸閱讀

若想進一步閱讀 TeX 如何使用方框與 glue 的背景，請參考以下資源：

* Overleaf 文章 [TeX 如何計算 \hbox 中的 Glue 設定](/latex/zh-tw/shen-ru-wen-zhang/24-how-tex-calculates-glue-settings-in-an-hbox.md).
* 一篇 17 頁的 Overleaf 文章，為這篇說明內容而寫： [探索 underfull 或 overfull 方框與 badness 計算](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv)。該文章也討論了 TeX 原始命令 `\hfuzz` 和 `\hbadness`.
* TeX FAQ 位於 <https://texfaq.org/FAQ-overfull.html>.
* [tex.stackexchange](https://tex.stackexchange.com/) 收錄了來自頂尖 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/zh-tw/zhi-shi-ku/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.
