Overfull hbox in paragraph latex как исправить

I often see output from TeX with the warning overfull hbox, badness 10000. What does this message mean?

barbara beeton's user avatar

asked Jul 26, 2010 at 19:38

Phil Miller's user avatar

4

Quoting Phil Miller answer, for completeness:

This message means that a line of your document is too long to fit within the horizontal space on the page, and TeX couldn’t find a good way to break it apart. This will usually result in text hanging out past the margin, possibly even running off the side of the page. Common causes are long words without proper hyphenation information and long displayed equations.

These warnings can also happen by manually breaking works with - as commented by Sebastian. This can be fixed by importing the package usepackage{hyphenat} and using its command hyp{} to break words, i.e., hyphenatedhyp{}word instead of hyphenated-word. But as can be easily noted, typing hyp{} all the time can be quite annoying. Here come in the babel package shorthands. See the question How to create an alternative to shortcut “= or hyp{}?, to learn about the usage of the ~= shorthand. So you can write like hyphenated~=word, instead of hyphenatedhyp{}word.

Badboxes warnings can also be caused by breaking lines with \ and hbox as demonstrated on this other question: How to stop newsavebox giving me bad boxes warnings or how to use better names with setbox?

You can control how the overfull hbox, badness work configuring these latex parameters explained on:

  1. badness is an integer from 0 to 10000 that is a measure of the quality of the spacing in any given box.
    https://en.wikibooks.org/wiki/TeX/definition/badness

  2. tolerance A parameter that tells TeX how much badness is allowable without error. [number] can range from 0 to 10000, and there are no units.
    https://en.wikibooks.org/wiki/TeX/tolerance

  3. The TeX primitive pretolerance is an integer parameter that is used in TeX’s line breaking algorithm as described below. The quantity is an integer from -1 to 10000.

    If pretolerance is an integer from 0 to 10000, then TeX’s line breaking algorithm first attempts to break up a paragraph without hyphenation. In this attempt TeX ties to minimize the badness of each line. If TeX can break up a paragraph so that none of the lines have badness greater than pretolerance, then TeX accepts it. If this is not possible, TeX will re-attempt to break up the paragraph with the allowance of hyphenation of words. In this second attempt, the integer parameter tolerance is used instead of pretolerance. If TeX is unsuccessful in the second attempt an error is reported in the log file.

    If pretolerance is -1, then TeX bypasses the first attempt at breaking a paragraph without hyphenation.
    https://en.wikibooks.org/wiki/TeX/pretolerance

On these questions there are more related information about line breaking:

  1. What is the meaning of fussy, sloppy, emergencystretch, tolerance, hbadness?
  2. What’s the difference between tolerance and badness ?
  3. Why is Latex hyphenating some words automatically, but others dont?
  4. Long blank space in the middle of paragraph

Hyphenation:

  1. Is it still worthwhile to let TeX try line-breaking without hyphenation?
  2. How to add global hyphenation rules?
  3. How to manually set where a word is split?

Bad boxes:

  1. Do I have to care about bad boxes?
  2. How to avoid using sloppy document-wide to fix overfull hbox problems?
  3. Overfull hbox – How do I fix this?

Table of Contents:

  1. Fixing overfull hbox in table of contents removes too many dots
  2. Memoir mysterious overfull hbox in TOC when mathptmx is used
  3. Overfull hbox warning for TOC entries when using memoir documentclass
  4. titletoc: section titles ragged right
  5. How to typeset the table of contents raggedright in memoir?
  6. Table of contents: section titles ragged right

Miscellaneous:

  1. underfull vbox
  2. What is the difference between hspace*{fill} and hfill?
  3. how to suppress “Underfull vbox (badness 10000) … while output is active”?
  4. http://www.tex.ac.uk/FAQ-overfull.html (La)TeX makes overfull lines
  5. http://www.tex.ac.uk/FAQ-paraparam.html Why does it ignore paragraph parameters?

answered Aug 22, 2017 at 2:07

user's user avatar

useruser

4,5957 gold badges35 silver badges72 bronze badges

The first answer doesn’t really help somebody fix the problem, though. Take a look at:

https://texfaq.org/FAQ-overfull

and

http://en.wikibooks.org/wiki/LaTeX/Text_Formatting#Hyphenation

to learn about tolerance, pretolerance, and hyphenpenalty and how they affect the overfull/underfull behavior. Also, if you’re fixing the document by hand, you can add hyphenation dictionary entries with hyphenation or add discretionary hyphens into words with -.

IniasP's user avatar

answered Apr 23, 2011 at 7:15

dgatwood's user avatar

dgatwooddgatwood

8331 gold badge7 silver badges5 bronze badges

5

This message means that a line of your document is too long to fit within the horizontal space on the page, and TeX couldn’t find a good way to break it apart. This will usually result in text hanging out past the margin, possibly even running off the side of the page. Common causes are long words without proper hyphenation information and long displayed equations.

answered Jul 26, 2010 at 19:40

Phil Miller's user avatar

Phil MillerPhil Miller

19.7k7 gold badges26 silver badges28 bronze badges

3

I always like to see a visual example of these Latex messages. The images below show the most frequent occurrence of Overfull hbox. So if you like visuals too, her you go:
-> NOTE: The explanations above are very good, so don’t miss out on them.

The Latex view:
This is in Latex

The compiled pdf view:
compiled pdf

The problem is, that sometimes Latex is not able to fit certain information in a defined space. As you can see here, the - overflows the right border which here causes the warning. Hope this helps!

Tip:
you can visualize the borders, to simply see the problem locations, f.e. if the overlapping is not caused by text and no error message appears.

Use: usepackage[showframe]{geometry}

answered May 14, 2021 at 11:54

LC117's user avatar

LC117LC117

1711 silver badge4 bronze badges

3

You must log in to answer this question.

Not the answer you’re looking for? Browse other questions tagged

.

Часто бывает, что в документе появляются слишком длинные, переполненные строки (Warning: overfull hbox). Как избавиться от overfull hbox в LaTeX? Я расскажу несколько способов. Их можно комбинировать.

Overfull hbox возникает, когда строка залезает на правое поле страницы. Это происходит, когда совпадают два условия:

– компилятор не может найти правило переноса слова или формулы в конце строки, 

– если он уберет это слово целиком в следующую строку, размеры пробелов в текущей строке станут чересчур большими. 

Компилятор сдается, формирует переполненную строку и пишет предупреждение в лог.

Итак, два способа:

1. Как указать LaTeX, где можно ставить переносы? Поставить в местах возможного переноса слов символы -, например: зашифро-ва-ние, cipher-text. Разбить формулу на несколько, т.к. LaTeX не переносит формулу после запятой.

2. Чтобы не расставлять переносы вручную, можно немного изменить настройки окончения строк и страниц в преамбуле документа. Не стоит использовать команду sloppy, так как после нее текст выглядит неопрятно.

Вот, что я добавил в преамбулу своего .tex файла для аккуратной верстки:

tolerance 1414
hbadness 1414
emergencystretch 1.5em
hfuzz 0.3pt        % размер максимального переполнения без warning'a
widowpenalty=10000 % запрещает одиночную строку абзаца в начале 
страницы 
vfuzz hfuzz
raggedbottom       % если на странице мало содержимого, добавить пустое место в конце, а не в середине страницы

Источники этих настроек.  

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.

Screen image showing Overleaf reporting underfull or overfull boxes

When typesetting a document LaTeX will try to make parts of your content fit within boundaries of a given “size”; for example, when typesetting paragraphs and breaking lines into a certain length—most easily demonstrated using a command such parbox. If we try to typeset set the following paragraph using a line width of 50pt:

parbox{50pt}{Some text typeset using a texttt{stringparbox}}

Overleaf reports two Underfull hbox... warnings:

Screen image showing Overleaf reporting underfull boxes

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.

Screen image showing a parbox

Note, for this example you can avoid these warnings by using raggedright:

parbox{50pt}{raggedright Some text typeset using a texttt{stringparbox}}

Screen image showing a parbox

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

Overfull hbox (<value>pt too wide) ... at line(s) ... 
Overfull vbox (<value>pt too high) ... at line(s) ... 
Underfull hbox (badness <value> ) ... at line(s) ... 
Underfull vbox (badness <value>) ... at line(s) ...

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:

  • Underfull boxes do not have sufficient material to fill the (box) dimensions allocated to contain it and the TeX engine needed to “stretch out” the content in its attempt to fill that space. For underfull boxes Overleaf will also report TeX’s so-called “badness” (badness <value>) which is a measure of how much TeX has needed to “stretch” your content to fill space set aside to contain it. Badness values normally range from 0 to 10000.

If there is too much material the TeX engine will report an `Overfull hbox` warning or an `Overfull vbox` warning:

  • Overfull boxes have too much content to fit the (box) dimensions allocated to contain it and TeX cannot “squeeze it” into the space provided. The TeX engine reports the amount (<value>), in points, by which your content exceeds the available space—your material is too wide for a given hbox or too high for a given vbox.

Overfull or underfull boxes are not errors

As noted, overfull/underfull hbox or vbox messages are not errors but “diagnostic warning messages” output by the TeX engine (pdfTeX, XeTeX or LuaTeX) being used to typeset your LaTeX document. Although reported to you by Overleaf, these warnings are not generated by Overleaf: they originate from inside TeX engines. During typesetting, these messages are written to the .log file—a text file produced by the TeX engine to record a range of information as it processes your LaTeX code. Overleaf processes the .log file to extract the TeX engine’s overfull/underfull hbox or vbox warning messages and displays them within the Overleaf interface. This helps you locate and identify parts of your document which might need editing to produce the best possible typeset result.

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?

  1. From within the Overleaf interface, click on a warning message and the editor will scroll to the appropriate location in your LaTeX source code.
  2. To the left of the location in your source code there will be a small yellow triangle containing an exclamation mark (!).
  3. If you place your mouse pointer over the triangle Overleaf will display the warning message.

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.

Screen image showing a parbox

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

  • You can use the microtype package which takes advantage of micro-typographic extensions introduced by pdfTeX—producing higher-quality typesetting which can also result in fewer bad boxes.
  • If you have problems with URLs and linebreaks you can add the option breaklinks to the hyperref package: usepackage[breaklinks]{hyperref}.
  • Like parbox, minipage environments can give rise to overfull or underfull box warnings when the TeX engine tries to break paragraphs into lines:
 
begin{minipage}{width}
text...
end{minipage}

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.

  • \ should not be used to add vertical space between paragraphs—it is considered very bad practice to do that.
  • \ is intended for line breaks only (similar to Shift-Enter in Microsoft Word). The correct way to generate a new paragraph in LaTeX is to separate your paragraphs with blank lines in the source code.
  • Instead of using \ (or newline/vspace) to simulate paragraph breaks, or to increase inter-paragraph spacing, the recommended solution for setting spacing between paragraphs is to load the parskip package: put usepackage{parskip} in your document’s preamble.
  • Using \ throughout paragraphs in the document can interfere with LaTeX’s algorithms which calculate optimum locations to place floats, break pages, etc. and can cause compilation errors in a large document.
  • Legitimate use of \ is explained in answers on tex.stackexchange. For example, see:
    • When to use par and when \, newline, or blank lines
    • What does \* do?

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:

  • hfuzz and vfuzz
  • hbadness and vbadness

Further reading

For further background reading on TeX’s use of boxes and glue the interested reader is referred to these resources:

  • The Overleaf article How TeX Calculates Glue Settings in an hbox.
  • A 17-page Overleaf article written to accompany this help item: Exploring underfull or overfull boxes and badness calculations. That article also discusses the TeX primives hfuzz and hbadness.
  • The TeX FAQ at https://texfaq.org/FAQ-overfull.html.
  • tex.stackexchange contains a wealth of advice from leading TeX/LaTeX experts.

Абзацы

Чтобы TeX сверстал абзац, никаких специальных усилий прилагать не
нужно: достаточно оставить в исходном тексте пустую строку,
указывающую TeX’у на конец абзаца. В этом разделе речь пойдет о тех
” нештатных ситуациях”, которые могут при этом возникнуть. Система
TeX предоставляет множество способов реакции на эти ситуации;
некоторые из них важны для всех пользователей, но большая
часть — только для полиграфистов. Рекомендуем читателям,
полиграфистами не являющимися, пропускать весь мелкий шрифт в
этом разделе.

Overfull и underfull

Обычно абзацы делаются выровненными по правому краю; при необходимости
промежутки между словами растягиваются или сжимаются, а в словах
делаются переносы.
При этом и для сжатия, и для растяжения
промежутков между словами есть пределы, которые TeX старается не
превышать.

Если это удается, то получается аккуратный абзац, но нам сейчас
интереснее, что происходит в том случае, когда это не
удается.

Прежде всего заметим, что “предел сжимаемости” строки не
превышается TeX’ом ни при каких условиях2Если не
предпринимать для этого специальных усилий.
; что бы ни было,
строки не станут более тесными, чем им позволяют параметры
шрифта. Поэтому строки, которые не удалось ужать, остаются
чересчур длинными (при этом, естественно, они выходят на поля
документа). С другой стороны, предел растяжимости, за неимением
лучшего, может быть превышен. При этом получается то, что
полиграфисты называют жидкими, или разреженными строками:

begin{flushleft}
tolerance=10000hbadness=10000
leavevmode
hbox to .6hsize{Весьма и весьма разреженная строка.}
end{flushleft}

О каждой из этих двух неприятностей TeX сообщает в процессе
трансляции (эти сообщения появляются на экране и, кроме того,
записываются в log-файл –
специальный файл с тем же именем, что у файла, который обрабатывался
системой, и расширением log).

Предположим, вы получили строку, выходящую на поля (в нашем
примере она отмечена черным прямоугольником):

parnopagebreaksmallskipmoveright 2emvbox{
typeout{Не обращай внимания на следующий Overfull!}
hyphenation{если}fussytolerance=100
advancehsize-4.9emoverfullrule 2pt
Еще одно правило относительно увеличения пробелов: если
пробел задан как неразрывный, то он не
увеличивается, невзирая ни на какие предшествующие знаки
препинания.
typeout{}
}
typeout{А теперь снова следи за Overfull'ами!}
smallskiphyphenation{ес-ли} % восстановим...</p>

При этом выдается
на экран и записывается в файл с расширением log
сообщение наподобие такого:

Overfull hbox (3.2673pt too wide) in paragraph at lines 8--13
[]OT1/cmr/m/n/10.95 Еще од-но пра-ви-ло от-но-си-тель-но
уве-ли-че-ния про-бе-лов: если
 []

Давайте разберем, что в нем
написано. Сначала идет надпись “Overfullhbox”, указывающая, что произошло ”
переполнение” (overfull) строки. В скобках указано, на какое
именно расстояние строка выходит за край: на 3.2673 пункта.
(Напомним, что пункт примерно равен одной трети миллиметра). Далее сказано, что переполнение произошло при
верстке абзаца (слова “in paragraph”), а затем указаны
номера строк исходного файла, в которых был записан этот абзац.

Наконец, в этом сообщении приведен фрагмент неудачной строки
вблизи ее конца (конца не в исходном тексте, а на
печати){Загадочный набор символов, предшествующий
фрагменту строки, характеризует текущий шрифт;}.
Обратите внимание, что
в некоторые слова вставлены дефисы: они
показывают те места, в которых TeX в принципе мог бы сделать
переносы. Если вглядеться повнимательнее, то станет ясна и
причина катастрофы: в слове “если”, которым заканчивается
строка, дефиса не стоит вообще; значит, программа не смогла найти
подходящего места для переноса и оказалась перед неприятным
выбором: либо перенести это “если” целиком на другую
строку (что, видимо, вызвало бы проблемы в других местах), либо
оставить его на этой строке и создать overfull. Выбрано было
второе (ниже мы объясним, как можно в какой-то мере управлять
этим выбором).

Сообщения о разреженных строках выглядят так:

Underfull hbox (badness 1142) in paragraph at lines 885--892
[]OT1/cmr/m/n/10.95 Некоторым со-че-та-ни-ям атри-бу-тов
ни-ка-ко-го ре-аль-но-го шриф-та
 []

Главных элементов в этих сообщениях
три:

  • само слово Underfull,
    указывающее, что речь идет о
    разреженной строке;
  • указание на строки исходного текста, в которых находится абзац с
    разреженной строкой (в нашем случае 885-892);
  • численная характеристика того, насколько разрежена строка
    (по-английски это число называется badness). В нашем случае это
    число равно 1142; вскоре мы обсудим, что оно значит.

Итак, мы выяснили, какие могут быть неприятности при верстке
абзацев и как TeX о них сообщает. Вся
оставшаяся часть этого раздела посвящена тому, как с этими
неприятностями бороться.

Борьба с переносами

Вероятно, читатель был шокирован тем, что в нашем примере с
overfull’ом TeX не смог найти, где сделать перенос в слове ”
если”. Дело, в частности, в том, что обычно TeX не делает
переносов, при которых от слова отрываются две последние буквы. Это
соответствует нормам английской орфографии, но для русского языка
такое ограничение неуместно. Поэтому при работе с русскими текстами
можно (и нужно) установить такой режим, в котором перенос двух
последних букв допустим. Устанавливается этот режим с помощью
изменения параметра righthyphenmin. Значение этого параметра — целое
число, равное наименьшему количеству букв в слове, которые можно
переносить на следующую строку. Стало быть, если написать в файле

то при обработке всех абзацев, кончающихся после этой команды,
переносы с отрывом двух последних букв будут разрешены. Если вам
встретится абзац английского текста, то перед завершающей его пустой
строкой дайте команду

дабы не сделать неверных переносов в английских словах3Сказанное в этом абзаце относится к
вариантам русификации, где русские и английские слова
включены в общую таблицу переносов (такова, например,
русификация, использованная при подготовке этой книги и
описанная в приложении babel. В других случаях
могут потребоваться явные команды переключения языков
(которые могут также заодно менять
righthyphenmin).

Общее облегчение режима переносов с помощью righthyphenmin может,
тем не менее, не помочь преодолеть встретившийся вам overfull: не
исключено, что TeX действительно не знает, как перенести какое-то
слово. Таких слов не очень много, но они встречаются. Кроме того,
TeX не делает автоматических переносов в словах, содержащих
диакритические знаки (например, если в слове указано ударение или если
буква ё задана в тексте как “е )4Если вы
пользуетесь пакетом babel вместе с так называемыми
EC-шрифтами и соответствующими “форматными файлами”,
то слова с диакритическими знаками иногда
могут переноситься.
,
а также в словах, в
которых присутствуют наряду с буквами цифры,
знаки препинания (не в конце слова)
и т.п. Далее, если в слове присутствует дефис, то
TeX сможет сделать в нем перенос только на месте этого
дефиса, но так, что “{генерал-”
останется в конце строки, а “губернатор” начнет следующую
строку). Что делать в таких случаях, когда автоматически
вставляемых TeX’ом переносов не хватает?

Совет номер один — попробуйте немного отредактировать абзац.
Обычно после небольших изменений в абзаце неприятности с
переносами исчезают; качество текста при этом тоже зачастую
улучшается (с точки зрения языка, а не
TeX’а).

Пусть, однако, улучшать изложение дальше некуда, а абзац все
равно получается неудачный. Что еще можно сделать, чтобы
избавиться от переполнения?

Если TeX не может перенести слово, перенос которого по правилам
русского языка возможен, то есть два способа указать TeX’у на это
обстоятельство.

Во-первых, существует “одноразовый” способ указать TeX’у
места переносов в слове. Это делается с помощью команды таким,
например, образом:

Команда означает, что данное слово можно переносить в тех и
только тех местах, где стоят знаки – (хотя бы и вопреки тому,
что диктует TeX’овский алгоритм переноса). Она годится для любых слов (с
диакритическими знаками,
цифрами и т.д.). Однако при этом TeX не запоминает,
какие слова и в каких местах позволила ему перенести команда .
Если, например, то же слово “творог”
встретится в тексте еще
раз, места переносов придется указывать заново.

Во-вторых, если слово-исключение
встречается в тексте неоднократно,
имеет смысл указать это TeX’у “раз и навсегда” (в пределах
данного документа). Для этого предназначена команда hyphenation.
В качестве ее аргумента указываются слово или слова, в которых
дефисами обозначены разрешенные места
переносов. Например:

hyphenation{вклю-чен об-ласть}"

Теперь слова “включен” и “область” всегда будут
переноситься так, как было указано (хотя бы и вопреки тому, что
диктует алгоритм переноса). Если в слове, указанном в качестве
аргумента команды hyphenation, дефисов не поставить, то это будет
означать, что переносить его вообще нельзя. Разумное место для команды hyphenation — преамбула документа.

Слова, указанные в аргументе команды hyphenation, должны
быть разделены пробелами (конец строки — тоже пробел, так что
слова можно располагать и в нескольких строках). Пустой строки в
аргументе hyphenation быть не должно. В качестве аргумента
команды hyphenation нельзя указывать слова с диакритическими
знаками или небуквенными символами.

Слова в исходном тексте, в которые вставлены , будут
переноситься именно там, где указано этими командами, невзирая на
то, что говорит команда hyphenation.

Иногда в тексте встречаются пары слов, объединенные знаком /,.
По общим TeX’овским правилам такое “слово” перенесено
быть не может. Если вместо символа / использовать
команду slash, то станет возможен перенос, при котором на
одной строке останется первое слово и символ /, а на второй
строке — второе слово:

Перенаправление вводаslash вывода &
одна из характерных черт систем типа
UNIXslash Linux

.

Перенаправление вводаslash 
вывода —
одна из характерных черт 
систем типа UNIXslash Linux.

Бывают случаи, когда избавиться от переполнения не помогают даже
идеально расставленные переносы: например, если в конец строки
попадает слово, которое переносить нельзя (скажем, ”
гвоздь”), или не допускающая переноса математическая формула.
Что делать в таких случаях, рассказано в последующих разделах.

Let’s start with a quote from Knuth’s TeXbook (Chapter 11)

TeX makes complicated pages by starting with simple individual
characters and putting together in larger units, and putting these
together in still larger units, and so on.

Whenever you look at a (La)TeX document, imagine putting on a pair of glasses that allows you to ‘x-ray’ the page’s structure- what you would see is that each page is made up of boxes.

In particular, there are horizontal boxes (hboxes) and vertical boxes (vboxes). TeX is able to make beautiful documents by making the content of each box fit ‘ideally’ using its stretchable glue. When something simply will not fit, either because it is too big or too small, then you get overfull and underfull boxes respectively.

When TeX encounters such situations, it is kind enough to tell you in the .log file so that you can make a decision for yourself as to whether you need to make changes; ultimately, you have to decide if you think they mean anything bad. Note that TeX will also give you a badness rating, with 10000 being the worst.

If you prefer a more visual approach, then you can load the draft option to your documentclass, for example

 documentclass[draft]{article}

which ensures that your output is highlighted with black boxes in any of the offending areas.

For more details see any of the ‘related’ links on the right hand side of this page, perhaps starting with What does “overfull hbox” mean?

In terms of your ‘specific’ case, it sounds like one of your graphs is over-stretching its boundaries- perhaps it is going over a minipage, or into the page margin. If you’re happy with the output, then you typically don’t have to worry too much (unless the people viewing your document are also going to grep your .log file).

Related videos on Youtube

Preparing an Article Manuscript using Elsevier Journal LaTeX Template

11 : 52

Preparing an Article Manuscript using Elsevier Journal LaTeX Template

LaTeX Tutorial 13 Two Common LaTeX errors

03 : 28

LaTeX Tutorial 13 Two Common LaTeX errors

Solution for   Latex error    '' Overfull  hbox   pt too wide '' for table insertion

03 : 37

Solution for Latex error ” Overfull hbox pt too wide ” for table insertion

Common Warnings in LaTeX (Latex Basic Tutorial-33)

05 : 15

Common Warnings in LaTeX (Latex Basic Tutorial-33)

Common Errors in LaTeX (Latex Basic Tutorial-34)

07 : 53

Common Errors in LaTeX (Latex Basic Tutorial-34)

Comments

  • I have bunch of pgfplots (plots and bar charts in my document) and when I compile I get errors like:

    Overfull hbox (1.17287pt too wide) in paragraph at lines 2121--2122
     [][] 
    [35]
    

    Sometimes it also tell underfull as well. What does these mean ? Any general pointers on how to solve them ? Do they mean anything bad ?

    • Overfull: when your line passes the line width. Underfull: when your line has width smaller than line width, so it will use a lot of blank spaces to justify it. If you use the draft option on the class you can see some black marks on the right margin to show the overfull parts.

  • You could mention perhaps that setting hfuzz=<length> makes TeX tolerate an excess size equal to <length> before it considers a horizontal box overfull (this can be useful to get rid of overfull hboxes messages for small lengths (1.5pt maximum).

Recents

Related

Добавить комментарий