> 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/ja/tex-latexpurimitibu/02-badness.md).

# \badness

#### 概要

TEXがボックスを構築するたびに（たとえば、明示的にある `\hbox` または `\vbox`）それは、そのボックスの「badness」を設定、または計算します。これは数値で、ボックスの内容がそのボックスにどれだけ「うまく」収まっているかを測定・分類する方法だと考えることができます。直近に構築されたボックスの badness 値は、コマンド `\badness`：たとえば次のように `\the\badness`。なお、TEXは他の組版処理（たとえば行分割）の最中にもボックスを作成しますが、ここでは明示的なボックス構築コマンドに焦点を当てます。

#### 説明と例

TEXに次のボックス構築コマンドを使ってボックスを作成するよう指示すると、

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

ボックスのサイズを指定して、TEXに内容をその中へ収めるよう試させることができます。たとえば `\hbox to 20pt{<stuff>}` は、TEXにあなたの `<stuff>` を幅20ptのボックスに収めるよう求めます。TEXは `<stuff>` 利用可能なグルーを伸ばしたり縮めたりして、できる限り収まるようにします。

一方で、もし *しない* ことでボックスのサイズを固定せずに `\hbox{<stuff>}`と書けば、TEXは単に `\hbox` を収めるのに十分な幅を持つ `<stuff>` を構築し、その場合TEXはそのボックスに badness 値0を割り当てます。

TEXがボックスの badness を計算するときは、内容の実際のサイズを、収めるべきボックスの該当寸法と比較します。内容が指定された `\hbox` 幅に収まらないほど広すぎるのか、それとも指定された `\vbox` または `\vtop`高さに収まらないほど高すぎるのか？ badness の計算の一部として、TEXはまた *合計* ボックス内にある各種類のグルー量、つまり、所望のサイズのボックスを作るのに使える伸びや縮みの総量も考慮します。

実際には、TEXがボックスの badness 値を計算する必要があるとき、次の式（の近似）を使います：

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

ここで $$t$$ は、収めるべき望ましい「余剰幅」であり、 $$s$$ は、伸縮に利用できるグルーの量です。

badness の値は通常0から10000の範囲に収まりますが、グルーの縮みを考慮しても単に内容を保持するには小さすぎるボックスには特別な値が割り当てられます。そうしたボックスは「overfull（はみ出し）」に分類され、TEXはそれらに「特別な」badness 値1000000を割り当てます。

では、議論／理論はここまでにして、次にいくつか例を見てみましょう。5つのボックスを作成し、5つの `\count` レジスタを使って `\badness` TEXが直前に作成したボックスの `\count` レジスタを使って、該当するボックスの `\badness` 値を保持します。後でこれらの

```
\newcount\aval\newcount\bval\newcount\cval\newcount\dval\newcount\eval
\setbox100=\hbox{Hello \TeX}\aval=\the\badness %ボックスサイズは指定していません
\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}% 各ボックスの周囲にぴったりした枠を付ける
\noindent 結果は次のとおりです：\vskip5mm
\noindent ボックス100（\fbox{\copy100}）の \verb|\badness| 値は \number\aval\par
\noindent ボックス101（\fbox{\copy101}）の \verb|\badness| 値は \number\bval\par
\noindent ボックス102（\fbox{\copy102}）の \verb|\badness| 値は \number\cval\par
\noindent ボックス103（\fbox{\copy103}）の \verb|\badness| 値は \number\dval\par
\noindent ボックス104（\fbox{\copy104}）の \verb|\badness| 値は \number\eval\par
```

次の図は出力を示しています：

![](/files/19c57c823c73eb67db65865398fd28f97ee33bd6)

* ボックス100： `\hbox{Hello \TeX}`。これは `\badness` 0です。なぜなら、TEXに内容を特定のサイズに収めるよう求めていないからです。
* ボックス101： `\hbox to25mm{Hello \TeX\hskip0pt plus5pt}`。このボックスには2つのグルーがあります。ひとつは「Hello」の後の単語間スペースで、もうひとつは `\hskip` グルーから来る5ptです。しかし、望まれるボックス幅は25mmなので、埋めるべき空きは多い一方で、それを埋めるグルーはあまりありません。余剰スペースと利用可能なグルーのその組み合わせにより `\badness` 6396という値になります。
* ボックス102： `\hbox to50mm{Hello \TeX}`。このボックスにはグルー要素が1つしかありません。つまり「Hello」の後の単語間スペースだけで、埋めるべき余剰スペースは大量にあります。余剰スペースの多さとグルー量の少なさの組み合わせにより、非常に大きな `\badness` 値になります。しかもそれは非常に高いため、TEXはそれを最大値10000に「クリップ」します。さらに、ボックスを埋めるために単語間スペースがかなり伸ばされるので、「Hello」と「TEX」の間に大きな隙間が生じます
* ボックス103： `\hbox to50mm{Hello \TeX\hfill}`。このボックスはボックス102に似ていますが、グルーが2つあります。ひとつは「Hello」の後の単語間スペースで、もうひとつは `\hfill`—いわゆる「無限に柔軟な」グルーです。したがって、`\hfill` 必要なだけ伸びることができ、余剰スペースをすべて吸収するように広がります。「無限に柔軟な」グルーのおかげで、結果として `\badness` は0です。
* ボックス104： `\hbox to5mm{Overleaf}` このボックスは後続のテキストと重なっており、 `\badness` 値は1000000です。非常に大きな badness 値（およびテキストの重なり）は、「Overleaf」という文字列が `\hbox` 幅5mmしかない `\badness` ボックスに収まるには大きすぎるうえ、余分な幅を吸収できる利用可能なグルーもないためです。TEXはボックス104を「overfull」ボックスと分類し、これを特別値1000000に設定します。

#### 関連コマンド

TEXには、ボックスの badness を報告・表示するためのコマンドがいくつか用意されています：

* `[\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/ja/tex-latexpurimitibu/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.
