Friday, June 12, 2015

Избавляемся от переполненных строк в LaTeX

Часто бывает, что в документе появляются слишком длинные, переполненные строки (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       % если на странице мало содержимого, добавить пустое место в конце, а не в середине страницы

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


No comments:

Post a Comment