Это может получиться длинным.
Во-первых, то, как TeX разбивает абзацы, — это целая глава в TeXbook. В основном есть \tolerance (установлено в 9000, что очень щедро. PlainTeX устанавливает его в 200), который определяет, будет ли рассматриваться конкретный способ разбивки абзаца. Таким образом, если уменьшение абзаца на одну строку делает badness (степень нежелательности) > 9000, он не будет уменьшать абзац, сколько бы вы ни просили. То же самое для увеличения абзаца. Естественная длина абзаца в TeX выбирается для минимизации badness. Таким образом, уменьшение или увеличение абзаца сделает его хуже, но это уравновешивается лучшим макетом страницы. Большой tolerance не является плохим, учитывая, что TeX минимизирует badness для абзаца. Это просто говорит, что мы действительно не хотим переполненных или недополненных строк, спасибо.
По нашему опыту, TeX редко позволяет уменьшить абзац. Больше сжимаемых интервалов помогает (по умолчанию минимальное сжатие для пробела составляет 66%, поэтому 95% на самом деле делает его менее сжимаемым). Аналогично, максимальное растяжение по умолчанию составляет 150%, поэтому 140% делает его менее растяжимым. Добавление межбуквенного интервала вряд ли сильно повлияет на разбивку строк. Возможно, но на самом деле оно просто поглощает дополнительное растяжение из пробелов, делая их менее некрасивыми. Кстати, если TeX разбивает действительно очень плохую строку, не имеет значения, насколько низко вы ограничите максимальное растяжение, TeX просто растянёт всё пропорционально, чтобы заполнить строку, превышая любые максимумы.
Эта часть математическая: tolerance 9000 нужно разделить на количество строк, чтобы получить среднее значение. Допустим, в абзаце 10 строк, тогда мы получаем среднее значение badness 900 на строку. TeX вычисляет badness как 100x(фактическое сжатие или растяжение / максимальное сжатие или растяжение)^3. Это означает, что он может позволить строке сжиматься или растягиваться в среднем до 2 x от общего для строки. Таким образом, он может уменьшить пробелы до половины их минимума или растянуть их до двойного максимума. Очевидно, это худший случай, и TeX всегда выбирает лучший на вид абзац, который может. Поэтому не беспокойтесь, что всё будет выглядеть гораздо хуже, чем вы указываете. На практике вещи выглядят действительно хорошо, и, выбирая, какие абзацы растягивать, можно исправить проблемы таким образом, который не очевиден для неопытного глаза.
Почему TeX не хорошо сжимает абзацы? Потому что обычно максимальное сжатие пробелов в строке недостаточно, чтобы поднять целое слово, не говоря уже о 2 или 3. Это зависит от того, готовы ли вы позволить вашему минимальному пробелу опуститься до 40% от пробела, что на самом деле не очень много.
Для письменностей, которые не имеют пробелов между словами, ключевым моментом является дать TeX много мест для разбивки строк, вставляя символы ZWSP (невидимый символ разрыва слова) щедро.
Теперь насчет изменений для каждого абзаца. Да, мы могли бы изменить значения glue (клея/интервала) для абзаца за абзацем, но я не знаю, как мы предоставили бы для этого пользовательский интерфейс. Хотели бы вы делать всю эту работу? Возможно, более полезным способом было бы создать инструмент, который измеряет все возможные сжатия и растяжения абзацев и сообщает вам диапазон значений, которые действительно произойдут. У нас есть некоторые мысли по улучшению всего пользовательского интерфейса вокруг списков корректировок в любом случае.
Кстати, вот совет. Вы всегда можете увеличить количество строк для стиля заголовка, поскольку они не выравниваются по ширине, поэтому TeX с удовольствием сделает эти строки короче и короче, чтобы иметь больше их в абзаце. Но они также очень заметны на странице.
Вы же спросили!!