Wygląd

ID #1052

Jak zadbać, by ostatni wiersz akapitu nie był krótszy niż wielkość wcięcia akapitowego \\parindent?

Uogólniając: jak zadbać by ostatni wiersz nie był krótszy niż \parmin
i nie dłuższy niż \hsize-\parmin (gdzie \parmin jest zadanym z góry
wymiarem)?

Rozwiązaniem jest kod \TeX-owy:
(autorstwa F. Mittelbacha)


\parfillskip\hsize
\advance\parfillskip by -\parmin
\advance\parfillskip 0pt minus \hsize
\advance\parfillskip 0pt minus -2\parmin


Ma ono swoje wady, np. przestaje działać zgodnie z oczekiwaniami
komenda \abovedisplayshortskip. Czy ktoś może dopracował się innych rozwiązań?

I jeszcze drobny komentarz B.JACKO (na podstawie archiwum GUST-listy)

TeX dużo częściej ma kłopoty ze złożeniem akapitu, zwłaszcza przy
krótkich akapitach, czasem może to być wręcz niewykonalne zadanie,
np. w akapitach jedno- lub dwuwierszowych. Kiedyś w jakimś formacie
wykorzystałem Mittelbachowy pomysł, ale musiałem ,,mierzyć'' akapity
składając każdy akapit dwa razy) -- jeżeli miały mniej niż trzy
wiersze, to stosowałem normalny \parfillskip. A jeżeli składać akapit na
próbę, to może coś coś lepszego da się wymyśleć?

Ponadto jeżeli ostatni wiersz jest bardziej rozciągnięty niż przedostatni, co zdarzyć się może, to efekt -- na moje nietypograficzne oko -- jest oględnie mówiąc taki sobie.

A co do ,,przestawania działania \abovedisplayshortskip'' -- oto kawałek podręcznika The \TeX{}book (str. 180):

[...]do rejestru \predisplaysize wpisywana jest efektywna szerokość
p wiersza poprzedzającego równanie zgodnie z następującymi
regułami: jeżeli przed równaniem nie wystąpił żaden wiersz (na przykład jeśli znacznik $$ wystąpił bezpośrednio po instrukcji \noindent lub po zamykającym inne równanie znaczniku $$), $p$ przyjmuje wartość -16383.99999pt (-\maxdimen, czyli najmniejszy dopuszczalny wymiar).
W przeciwnym razie \TeX\ sprawdza pudełko utworzone przez poprzedni wiersz i określa wartość $p$ jako równą szerokości wnętrza pudełka, plus przesunięcie pudełka w prawo, plus dwie jednostki em z bieżącego fontu. Jeśli jednak szerokość wnętrza pudełka zależy od ściśliwości lub rozciągliwości odstępów -- jeśli na przykład klej \parfillskip ma wartość skończoną -- wówczas $p$ przyjmuje wartość \maxdimen.
[...]


Otóż \abovedisplayshortskip jest wstawiany tylko wówczas (The TeXbook, str.~189), gdy:

[...] wartość \predisplaysize jest odpowiednio mała, tak by nie zachodziła na eksponowaną (displayed) formułę [...]

Dla dociekliwych: B. Jackowski Władca akapitów (TeXniczny artykuł o parametrach łamania akapitów); Biuletyn GUST nr 9/1997 (kopia artykułu ftp-agh)

Zaktualizowano: 2003-05-30 21:18
Autor: jk, B.Jacko
Revision: 1.0

wydrukuj ten wpis wydrukuj ten wpis
wyślij do znajomego wyślij do znajomego
eksportuj jako XML eksportuj jako XML

Oceń ten wpis:

Średnia ocena: 5 z 5 (5 głosów)

bezużyteczny 1 2 3 4 5 najlepszy

Możesz skomentować ten wpis