underfull hbox badness 10000 in paragraph что делать
Набор текста
Абзацы
Чтобы TeX сверстал абзац, никаких специальных усилий прилагать не нужно: достаточно оставить в исходном тексте пустую строку, указывающую TeX’у на конец абзаца. В этом разделе речь пойдет о тех » нештатных ситуациях», которые могут при этом возникнуть. Система TeX предоставляет множество способов реакции на эти ситуации; некоторые из них важны для всех пользователей, но большая часть — только для полиграфистов. Рекомендуем читателям, полиграфистами не являющимися, пропускать весь мелкий шрифт в этом разделе.
Overfull и underfull
Обычно абзацы делаются выровненными по правому краю; при необходимости промежутки между словами растягиваются или сжимаются, а в словах делаются переносы. При этом и для сжатия, и для растяжения промежутков между словами есть пределы, которые TeX старается не превышать.
Если это удается, то получается аккуратный абзац, но нам сейчас интереснее, что происходит в том случае, когда это не удается.
Прежде всего заметим, что «предел сжимаемости» строки не превышается TeX’ом ни при каких условиях 2 Если не предпринимать для этого специальных усилий. ; что бы ни было, строки не станут более тесными, чем им позволяют параметры шрифта. Поэтому строки, которые не удалось ужать, остаются чересчур длинными (при этом, естественно, они выходят на поля документа). С другой стороны, предел растяжимости, за неимением лучшего, может быть превышен. При этом получается то, что полиграфисты называют жидкими, или разреженными строками:
Предположим, вы получили строку, выходящую на поля (в нашем примере она отмечена черным прямоугольником):
При этом выдается на экран и записывается в файл с расширением log сообщение наподобие такого:
Давайте разберем, что в нем написано. Сначала идет надпись «Overfull\hbox», указывающая, что произошло » переполнение» (overfull) строки. В скобках указано, на какое именно расстояние строка выходит за край: на пункта. (Напомним, что пункт примерно равен одной трети миллиметра). Далее сказано, что переполнение произошло при верстке абзаца (слова «in paragraph»), а затем указаны номера строк исходного файла, в которых был записан этот абзац.
Наконец, в этом сообщении приведен фрагмент неудачной строки вблизи ее конца (конца не в исходном тексте, а на печати)<Загадочный набор символов, предшествующий фрагменту строки, характеризует текущий шрифт;>. Обратите внимание, что в некоторые слова вставлены дефисы: они показывают те места, в которых TeX в принципе мог бы сделать переносы. Если вглядеться повнимательнее, то станет ясна и причина катастрофы: в слове «если», которым заканчивается строка, дефиса не стоит вообще; значит, программа не смогла найти подходящего места для переноса и оказалась перед неприятным выбором: либо перенести это «если» целиком на другую строку (что, видимо, вызвало бы проблемы в других местах), либо оставить его на этой строке и создать overfull. Выбрано было второе (ниже мы объясним, как можно в какой-то мере управлять этим выбором).
Сообщения о разреженных строках выглядят так:
Главных элементов в этих сообщениях три:
Итак, мы выяснили, какие могут быть неприятности при верстке абзацев и как TeX о них сообщает. Вся оставшаяся часть этого раздела посвящена тому, как с этими неприятностями бороться.
Борьба с переносами
то при обработке всех абзацев, кончающихся после этой команды, переносы с отрывом двух последних букв будут разрешены. Если вам встретится абзац английского текста, то перед завершающей его пустой строкой дайте команду
дабы не сделать неверных переносов в английских словах 3 Сказанное в этом абзаце относится к вариантам русификации, где русские и английские слова включены в общую таблицу переносов (такова, например, русификация, использованная при подготовке этой книги и описанная в приложении babel. В других случаях могут потребоваться явные команды переключения языков (которые могут также заодно менять \righthyphenmin).
Совет номер один — попробуйте немного отредактировать абзац. Обычно после небольших изменений в абзаце неприятности с переносами исчезают; качество текста при этом тоже зачастую улучшается (с точки зрения языка, а не TeX’а).
Пусть, однако, улучшать изложение дальше некуда, а абзац все равно получается неудачный. Что еще можно сделать, чтобы избавиться от переполнения?
Если TeX не может перенести слово, перенос которого по правилам русского языка возможен, то есть два способа указать TeX’у на это обстоятельство.
Во-первых, существует «одноразовый» способ указать TeX’у места переносов в слове. Это делается с помощью команды \- таким, например, образом:
Бывают случаи, когда избавиться от переполнения не помогают даже идеально расставленные переносы: например, если в конец строки попадает слово, которое переносить нельзя (скажем, » гвоздь»), или не допускающая переноса математическая формула. Что делать в таких случаях, рассказано в последующих разделах.
LaTeX.org
We love good questions
LaTeX forum ⇒ General ⇒ Underfull \hbox (badness 10000) during compilation Topic is solved
Underfull \hbox (badness 10000) during compilation
Post by Cham » Tue Mar 24, 2015 4:39 pm
Here’s the 20—39 code lines :
Recommended reading 2021:
Underfull \hbox (badness 10000) during compilation
Post by Stefan Kottwitz » Tue Mar 24, 2015 5:55 pm
This «Underfull \hbox» error comes because TeX thinks in boxes. And there was a box (line) which wasn’t filled with anything.
A proper way would be not inserting space by hand, but to design the document so it would not be necessary. It’s often too hard and a user would like to manually tweak the output, but then a \vspace command should be used. An own macro (with \vspace inside) is better than a specific value, for document wide adjustments at such places.
Re: Underfull \hbox (badness 10000) during compilation
Post by Cham » Tue Mar 24, 2015 6:01 pm
Hmmm, thanks a lot for the explanation, Stefan.
That picture was just intended as a joke, at the end of that section.
Underfull \hbox (badness 10000) during compilation
Post by Cham » Tue Mar 24, 2015 6:07 pm
Underfull \hbox (badness 10000) during compilation
Post by Stefan Kottwitz » Tue Mar 24, 2015 6:11 pm
Understanding underfull and overfull box warnings
Contents
Introduction
After typesetting a LaTeX document Overleaf will often display messages which report an underfull or overfull \hbox (or \vbox ), along with so-called badness values for underfull boxes or amounts by which boxes are overfull. Firstly, it is important to note these messages are not errors—see below for more detail. They are warnings or, more correctly, “diagnostic messages” which originate from inside the TeX engine being used to typeset your LaTeX document.
In this help article we’ll provide some introductory background on the source and cause of those messages and list some common problems with suggested solutions. For readers interested in more detail, we have published an accompanying article in the Overleaf Gallery: Exploring underfull or overfull boxes and badness calculations. A list of additional resources can also be found at the end of this article.
Does my project have overfull or underfull warnings?
To check if your project reports these warnings, you’ll need to click on the icon shown in the screenshot below. Even though your document may have compiled without error it is very common to see these messages and anyone fairly new to TeX/LaTeX might wonder what they mean and should they be concerned by them.
Overleaf reports two Underfull \hbox. warnings:
These Underfull \hbox. warnings arise because the TeX engine cannot produce “nice” linebreaks within the restrictions of this \parbox. Inside of TeX engines each line of a typeset paragraph becomes an \hbox, which the engine will subsequently check and report on, potentially generating warnings for any lines of typeset text the TeX engine classifies as “not desirable”.
As you can see in the following images, the lines of text are extremely spaced out and TeX’s Underfull \hbox. warnings tell you about this—although, in this example, it is clearly visible.
Note, for this example you can avoid these warnings by using \raggedright:
Overfull and underfull boxes
The \parbox example demonstrates a much more general issue: when processing your LaTeX code the TeX engine being used to typeset your document (pdfTeX, XeTeX or LuaTeX) might consider that LaTeX’s requests result in typeset content that does not “fit nicely” within the confines of the box provided or requested. If so, the TeX engine issues warnings and your material will be typeset but the result may not, on occasion, be aesthetically desirable and you’ll probably need to fix it. It is worth understanding the meaning of those messages and recognizing when you need to take action to address them.
These box-related warnings take the form
An \hbox refers to a horizontal box in which a TeX engine places a list of items side-by-side and \vbox refers to a vertical box in which the TeX engine stacks items one on top of another.
If there is too little material the TeX engine will report an Underfull \hbox warning or Underfull \vbox warning:
If there is too much material the TeX engine will report an `Overfull \hbox` warning or an `Overfull \vbox` warning:
Overfull or underfull boxes are not errors
Should I worry about these warnings?
Users who are new to TeX/LaTeX may be concerned by these warnings, wondering if they indicate a serious problem with their document, but it’s often the case that most of them can be safely ignored. However, these warnings do sometimes highlight a part of your document which does need to be checked and may need editing to improve the visible typeset results.
It can take a little practice to interpret these messages, so if you are new to TeX/LaTeX it is worth taking time to build your experience by locating the point in your source code which generated the warning. By doing that you will soon learn how to spot warnings which do highlight issues you might need to address.
How can I find the source of the warning?
This short video clip demonstrates the steps above.
How can I find the PDF location corresponding to my LaTeX code?
After locating the LaTeX code which has generated a particular warning you can jump to the appropriate position in the PDF by using the arrows located on the splitter bar separating the panels containing the editor and typeset PDF.
If you do not see these arrows, our help article How to jump to the source code from the typeset PDF (SyncTeX) shows how to enable them.
Common problems and how to fix them
If possible, increase the value of width to give the TeX engine a better chance at producing good linebreaks—and/or use the microtype package.
Notes on using \\
\\ is a macro (a control symbol) whose precise definition can depend on the context in which it is used—an excellent discussion/explanation can be found in this answer on tex.stackexchange.
Controlling which boxes TeX reports to you
TeX engines provide a number of low-level primitive commands you can use to guide TeX’s heuristics and set a threshold value for how “bad” a box needs to be before TeX will report it. Here are some links for readers interested in those commands:
Further reading
For further background reading on TeX’s use of boxes and glue the interested reader is referred to these resources:
Набор текста
Абзацы
Чтобы TeX сверстал абзац, никаких специальных усилий прилагать не нужно: достаточно оставить в исходном тексте пустую строку, указывающую TeX’у на конец абзаца. В этом разделе речь пойдет о тех » нештатных ситуациях», которые могут при этом возникнуть. Система TeX предоставляет множество способов реакции на эти ситуации; некоторые из них важны для всех пользователей, но большая часть — только для полиграфистов. Рекомендуем читателям, полиграфистами не являющимися, пропускать весь мелкий шрифт в этом разделе.
Overfull и underfull
Обычно абзацы делаются выровненными по правому краю; при необходимости промежутки между словами растягиваются или сжимаются, а в словах делаются переносы. При этом и для сжатия, и для растяжения промежутков между словами есть пределы, которые TeX старается не превышать.
Если это удается, то получается аккуратный абзац, но нам сейчас интереснее, что происходит в том случае, когда это не удается.
Прежде всего заметим, что «предел сжимаемости» строки не превышается TeX’ом ни при каких условиях 2 Если не предпринимать для этого специальных усилий. ; что бы ни было, строки не станут более тесными, чем им позволяют параметры шрифта. Поэтому строки, которые не удалось ужать, остаются чересчур длинными (при этом, естественно, они выходят на поля документа). С другой стороны, предел растяжимости, за неимением лучшего, может быть превышен. При этом получается то, что полиграфисты называют жидкими, или разреженными строками:
Предположим, вы получили строку, выходящую на поля (в нашем примере она отмечена черным прямоугольником):
При этом выдается на экран и записывается в файл с расширением log сообщение наподобие такого:
Давайте разберем, что в нем написано. Сначала идет надпись «Overfull\hbox», указывающая, что произошло » переполнение» (overfull) строки. В скобках указано, на какое именно расстояние строка выходит за край: на пункта. (Напомним, что пункт примерно равен одной трети миллиметра). Далее сказано, что переполнение произошло при верстке абзаца (слова «in paragraph»), а затем указаны номера строк исходного файла, в которых был записан этот абзац.
Наконец, в этом сообщении приведен фрагмент неудачной строки вблизи ее конца (конца не в исходном тексте, а на печати)<Загадочный набор символов, предшествующий фрагменту строки, характеризует текущий шрифт;>. Обратите внимание, что в некоторые слова вставлены дефисы: они показывают те места, в которых TeX в принципе мог бы сделать переносы. Если вглядеться повнимательнее, то станет ясна и причина катастрофы: в слове «если», которым заканчивается строка, дефиса не стоит вообще; значит, программа не смогла найти подходящего места для переноса и оказалась перед неприятным выбором: либо перенести это «если» целиком на другую строку (что, видимо, вызвало бы проблемы в других местах), либо оставить его на этой строке и создать overfull. Выбрано было второе (ниже мы объясним, как можно в какой-то мере управлять этим выбором).
Сообщения о разреженных строках выглядят так:
Главных элементов в этих сообщениях три:
Итак, мы выяснили, какие могут быть неприятности при верстке абзацев и как TeX о них сообщает. Вся оставшаяся часть этого раздела посвящена тому, как с этими неприятностями бороться.
Борьба с переносами
то при обработке всех абзацев, кончающихся после этой команды, переносы с отрывом двух последних букв будут разрешены. Если вам встретится абзац английского текста, то перед завершающей его пустой строкой дайте команду
дабы не сделать неверных переносов в английских словах 3 Сказанное в этом абзаце относится к вариантам русификации, где русские и английские слова включены в общую таблицу переносов (такова, например, русификация, использованная при подготовке этой книги и описанная в приложении babel. В других случаях могут потребоваться явные команды переключения языков (которые могут также заодно менять \righthyphenmin).
Совет номер один — попробуйте немного отредактировать абзац. Обычно после небольших изменений в абзаце неприятности с переносами исчезают; качество текста при этом тоже зачастую улучшается (с точки зрения языка, а не TeX’а).
Пусть, однако, улучшать изложение дальше некуда, а абзац все равно получается неудачный. Что еще можно сделать, чтобы избавиться от переполнения?
Если TeX не может перенести слово, перенос которого по правилам русского языка возможен, то есть два способа указать TeX’у на это обстоятельство.
Во-первых, существует «одноразовый» способ указать TeX’у места переносов в слове. Это делается с помощью команды \- таким, например, образом:
Бывают случаи, когда избавиться от переполнения не помогают даже идеально расставленные переносы: например, если в конец строки попадает слово, которое переносить нельзя (скажем, » гвоздь»), или не допускающая переноса математическая формула. Что делать в таких случаях, рассказано в последующих разделах.
underfull hbox (badness 10000) warning and line breakage inside algorithm in two column page
Here I want line 4, 5, 9 and 11 to stay in one line but they are getting broken. Moreover, the line 11 has this unwanted indent in the beginning, whereas it should be aligned with line 10.
And here is the aistats2021.sty file
And here is algorithm.sty
2 Answers 2
I assume you’re using the algorithmicx package, although I don’t see it imported anywhere. You would be served to look at the documentation. You shouldn’t be manually indenting or boldfacing. So, for example, your for loops would be marked up using:
Note also the use of \Comment for the right-aligned comment.
This should resolve your indentation issues and might solve line breaks as well. I’ll leave the rewriting of the algorithm markup to you and we can see what else needs to be done.
In the comments below, you indicated that you’re actually using algorthimic which has a slightly different syntax and documentation here. You still shouldn’t be manually indenting or boldfacing. Here is the equivalent version of the for loop from above:
algorithmic uses all caps for all of its commands (there’s a \COMMENT command as well, but it doesn’t work with looping/flow-control constructs so for those you would use the optional argument on the statement as above).
It’s unclear what you’re hoping to accomplish with the \vspace commands sprinkled through the algorithm.