Ini bisa menjadi panjang.
Pertama, bagaimana TeX memecah paragraf adalah seluruh bab dalam TeXbook. Pada dasarnya ada \tolerance (diatur ke 9000 yang sangat longgar. PlainTeX mengaturnya ke 200) yang mengatur apakah cara tertentu memecah paragraf akan dipertimbangkan. Jadi jika mengurangi paragraf dengan satu baris membuat badness > 9000, itu tidak akan mengurangi paragraf berapa pun yang Anda minta. Demikian pula untuk meningkatkan paragraf. Panjang paragraf alami TeX dipilih untuk meminimalkan badness. Jadi mengurangi atau meningkatkan paragraf akan membuatnya lebih buruk, tetapi itu seimbang dengan tata letak halaman yang lebih baik. Toleransi besar tidak buruk mengingat TeX meminimalkan badness untuk paragraf. Itu hanya mengatakan bahwa kami benar-benar tidak ingin baris over atau underfull, terima kasih.
Dari pengalaman kami, TeX jarang mengizinkan paragraf untuk berkurang. Memiliki lebih banyak spasi yang bisa mengecil membantu (min shrink default untuk spasi adalah 66% sehingga 95% sebenarnya membuatnya kurang bisa mengecil). Demikian pula max stretch default adalah 150% sehingga 140% membuatnya kurang bisa meregang. Menambahkan spasi antar karakter tidak mungkin membuat banyak perbedaan dalam pemecahan baris. Mungkin, tetapi sebenarnya yang dilakukannya hanyalah menyerap beberapa stretch tambahan dari spasi sehingga menjadi kurang jelek. BTW jika TeX memecah baris yang sangat sangat buruk, tidak masalah seberapa rendah Anda membatasi max stretch, TeX akan meregangkan semuanya secara proporsional untuk mengisi baris melampaui maksimum mana pun.
Bagian ini matematis: Toleransi 9000 harus dibagi dengan jumlah baris untuk mendapatkan rata-rata. Misalkan ada 10 baris dalam paragraf, sehingga kami mendapatkan rata-rata badness 900 per baris. TeX menghitung badness sebagai 100x(actual shrink or stretch / maximum shrink or stretch)^3. Jadi itu berarti itu dapat mengizinkan baris untuk mengecil atau meregang rata-rata hingga 2 x total untuk baris. Jadi itu mungkin mengurangi spasi hingga setengah minimumnya atau meregangkannya hingga dua kali maksimumnya. Jelas ini adalah kasus terburuk dan TeX selalu memilih paragraf yang terlihat terbaik yang bisa. Jadi jangan khawatir bahwa semuanya akan terlihat jauh lebih buruk dari yang Anda tentukan. Dalam praktiknya, hal-hal terlihat sangat baik dan dengan memilih paragraf mana yang akan diregangkan dengan bijak, seseorang dapat memperbaiki masalah dengan cara yang tidak jelas bagi mata yang tidak terlatih.
Mengapa TeX tidak mengecilkan paragraf dengan baik? Karena biasanya max shrink dari spasi pada baris tidak cukup untuk menarik satu kata utuh ke atas, apalagi 2 atau 3. Tergantung apakah Anda bersedia membiarkan min space Anda turun hingga 40% dari spasi, yang sebenarnya tidak banyak.
Untuk skrip yang tidak memiliki spasi kata, kuncinya adalah memberikan banyak tempat bagi TeX untuk memecah baris dengan menyisipkan karakter ZWSP secara bebas.
Kini tentang perubahan per paragraf. Ya, kami bisa mengubah nilai glue paragraf per paragraf, tetapi saya tidak tahu bagaimana kami akan menyediakan UI untuk itu. Apakah Anda ingin melakukan semua pekerjaan itu? Mungkin cara yang lebih membantu adalah membuat alat yang mengukur semua kemungkinan pengecilan dan peregangan paragraf dan memberi tahu Anda rentang nilai yang benar-benar akan terjadi. Kami memiliki beberapa pemikiran tentang meningkatkan seluruh UI di sekitar daftar penyesuaian anyway.
BTW ini adalah tips. Anda selalu dapat meningkatkan jumlah baris untuk gaya heading karena mereka tidak dijustifikasi, jadi TeX akan dengan senang hati membuat baris-baris itu lebih pendek dan lebih pendek untuk memiliki lebih banyak dari mereka dalam paragraf. Tetapi mereka juga sangat terlihat di halaman.
Anda memang bertanya!!
This could get long.
First, how TeX breaks paragraphs is a whole chapter in the TeXbook. Basically there is a \tolerance (set to 9000 which is very generous. PlainTeX sets it to 200) that governs whether a particular way of breaking the paragraph is going to be considered. So if reducing the paragraph by a line makes the badness > 9000 it won’t reduce the paragraph however much you ask it. Likewise for increasing the paragraph. TeX’s natural paragraph length is chosen to minimise the badness. So reducing or increasing the paragraph will make it worse, but that’s balanced against a better page layout. A large tolerance isn’t bad given TeX minimises the badness for a paragraph. It just says we really don’t want over or underfull lines thank you.
In our experience, TeX rarely allows a paragraph to reduce. Have more shrinky spaces helps (the default min shrink for a space is 66% so 95% actually makes it less shrinky). Likewise the default max stretch is 150% so 140% makes it less stretchy. Adding intercharacter spacing is unlikely to make much difference to line breaking. It might but really all it does is soak up some extra stretch from the spaces making them less ugly. BTW if TeX breaks a really really bad line, it doesn’t matter how low you limit the max stretch, TeX will just stretch everything in proportion to fill the line overflowing any maxima.
This bit is mathematical: The 9000 tolerance needs to be divided by the number of lines to get an average. Let’s say there are 10 lines in a paragraph, so we get an average of 900 badness per line. TeX calculates badness as 100x(actual shrink or stretch / maximum shrink or stretch)^3. So that means it can allow a line to shrink or stretch on average up to 2 x the total for the line. Thus it might reduce spaces down to half their minimum or stretch them to twice their maximum. Obviously this is a worst case and TeX always chooses the best looking paragraph it can. So don’t worry that everything will look far worse than you specify. In practise, things look really good and by choosing which paragraphs to stretch wisely, one can fix problems in a way that is not obvious to the untrained eye.
Why does TeX not shrink paragraphs well? Because usually the max shrink of the spaces on a line are insufficient to pull a whole word up let alone 2 or 3. It depends if you are willing to let your min space be down at 40% of a space, which really isn’t much.
For scripts that don’t have word spaces then the key is to give plenty of places for TeX to break lines by inserting ZWSP characters liberally.
Now as to per paragraph changes. Yes we could change the values of the glue paragraph by paragraph, but I don’t know how we would provide a UI for that. Would you want to do all that work? Perhaps a more helpful way is to create a tool that measures all the possible paragraph shrinks and stretches and lets you know the range of values that will actually happen. We have some thoughts on improving the whole UI around adjustment lists anyway.
BTW here’s a tip. You can always increase the line count for a heading style since they aren’t justified, so TeX will happily make those lines shorter and shorter to have more of them in a paragraph. But they are also very noticeable on the page.
You did ask!!