akapit


64 GUST, Zeszyt 9 1997
przy wyliczaniu kosztu. Podstawowa formuła opi-
Władca Akapitów
sująca sposób obliczania kosztu łamania w danym
miejscu jest dość skomplikowana ( The TEXbook ,
Bogusław Jackowski
str. 98):
ńł
TEX posiada niezwykle sprawny algorytm łamania (l + b)2+p2, if 0 d" p < 10000;
òÅ‚
d =
akapitu na wiersze. NiewÄ…tpliwÄ… zaletÄ… tego algo- (l + b)2-p2, if -10000 < p < 0;
ół
rytmu  z punktu widzenia profesjonalnych zastoso- (l + b)2, if p d" -10000.
wań  jest jego parametryzacja. Warto wiedzieć jakie
W powyższym wzorze b oznacza kiepskość, l 
parametry i w jaki sposób wpływają na efekt koń- wartość parametru \linepenalty, a p  karę
cowy. Temu zagadnieniu poświęcona jest niniejsza
(penalty) obliczaną jako sumę wartości jednego
notka.
z parametrów \exhyphenpenalty bądz \hyphen-
PodstawowÄ… ideÄ… algortytmu jest wyznaczenie
penalty oraz ewentualnie kary wstawionej jawnie
potencjalnych miejsc łamania i przypisanie im pew- przez TEX-owca za pomocą polecenia \penalty.
nego kosztu (ang. demerits). Po przypisaniu kosz-
Warto zadać sobie trud i przeanalizować powyż-
tów wszystkim potencjalnym miejscom przełamania
szą formułę, ale to każdy powinien zrobić  sam na
TEX wybiera taki ciąg przełamań, by suma kosztów
sam ze sobą . Do dalszych rozważań wystarczy nam
była dlań najmniejsza.
spostrzeżenie, że do obliczenia kosztu d wykorzy-
Na ogół o koszcie decyduje stopień ściśnię- stywane są wartości b, l oraz p podniesione do
cia lub rozciągnięcia klejów międzywyrazowych.
kwadratu.
Odpowiednią wartość dla danego miejsca przeła-
Dla ciekawskich parę szczegółów dotyczących parame-
mania TEX wylicza ze wzoru b = 100f3, gdzie f
trów \exhyphenpenalty bądz \hyphenpenalty: wartość tych
jest czynnikiem określającym ściśnięcie lub rozcią- parametrów jest wstawiana w miejscu przełamania dys-
krecjonalnego (ang. discretionary break ); jeśli element po-
gnięcie kleju, a b określa  kiepskość (ang. bad-
przedzający przełamanie (pre-break text) jest niepusty, to
ness) składu. Na przykład jeśli całkowita rozcią-
uwzględniana jest wartość \hyphenpenalty, w przeciwnym
gliwość kleju w wierszu wynosi 10pt, a klej zo- razie brana jest pod uwagę wartość \exhyphenpenalty.
Ponieważ TEX-owy algorytm przenoszenia wyrazów
stał ostatecznie rozciągnięty o 5pt, to f = 5/10
wstawia przełamania dyskrecjonalne odpowiadające instruk-
i b = 100 " (5/10)3= 12.5; jeśli klej został rozcią-
cji \discretionary{-}{}{}, więc parametr \hyphenpenalty
gnięty o 10pt, to b = 100 " (10/10)3= 100. Za-
ma wpływ na  powściąganie TEX-a przed  nadużywaniem
algorytmu dzielenia wyrazów. Natomiast po każdym jawnie
uważmy, że kiepskość wynikająca ze ściskania nie
użytym znaku dzielenia wyrazów (na ogół jest to znak -, ale
może przekroczyć wartości 100, gdyż wielkość ści-
TEX-owiec może to zmienić, przypisując stosowną wartość
śnięcia  inaczej niż wielkość rozciągnięcia  nie
parametrowi \hyphenchar bÄ…dz \defaulthyphenchar) lub po
może przekroczyć wielkości nominalnej. ligaturze, której ostatnim elementem jest znak dzielenia wy-
razów (np. endash lub emdash), TEX wstawia niejawnie puste
TEX wyróżnia w tym kontekście cztery klasy
przełamanie dyskrecjonalne \discretionary{}{}{}. Oznacza
wierszy:
to, że parametr \exhyphenpenalty ma wpływ na łama-
klasa 0 : jeżeli kiepskość jest większa niż 100,
nie wierszy za jawnie użytymi w tekście znakami dzielenia
wyrazów.
to TEX uznaje dany wiersz za  bardzo
rozciągnięty (very loose);
Ostateczny koszt łamania w danym miejscu
klasa 1 : jeżeli kiepskość jest mniejsza niż 100,
wyznaczany jest przez dodanie do wartości wy-
ale większa od 12, a kleje zostały roz-
znaczonej na podstawie powyższej formuły kosztów
ciągnięte, to TEX uznaje dany wiersz za
określonych za pomocą parametrów \adjdemerits,
 rozciągnięty (loose);
\doublehyphendemerits oraz \finalhyphendeme-
klasa 2 : jeżeli kiepskość nie jest większa od 12, to
rits:
TEX uznaje go za  przyzwoity (decent);
 wartość parametru \adjdemerits jest doda-
klasa 3 : jeżeli kiepskość jest większa od 12, a kleje
wana wówczas, gdy poprzedni wiersz należy do
zostały ściśnięte, to TEX uznaje dany
innej klasy (w sensie podanej wyżej klasyfikacji
wiersz za  ściśnięty (tight).
wizualnej) niż wiersz bieżący;
Jaki użytek TEX robi z tej  klasyfikacji wizual-
 wartość parametru \doublehyphendemerits
nej  o tym za chwilÄ™.
jest dodawana wówczas, gdy zarówno poprzedni
Nie należy mylić kiepskości z kosztem  kiep- jak i bieżący wiersz kończy się podzielonym
skość jest jednym z elementów uwzględnianych słowem;
Polska Grupa Użytkowników Systemu TEX, 1997 (http://www.GUST.org.pl)
1997 GUST, Zeszyt 9 65
 wartość parametru \finalhyphendemerits przełamań, by liczba wierszy była możliwie bliska
jest dodawana wówczas, gdy bieżący wiersz n + k i by jednocześnie kiepskość żadnego z wier-
kończy się podzielonym słowem, a jest to szy nie przekroczyła wartości parametru \tole-
przedostatni wiersz akapitu. rance. (Uwaga: instrukcja \par powoduje nadanie
Koszty dodatkowe określane przez powyższe parametrowi \looseness wartości zero.)
parametry związane są nie tyle z konkretnym miej- Na sposób łamania akapitu ma ponadto wpływ
scem przełamania, ile z określonym ciągiem prze- parametr \pretolerance określający najwyższą do-
łamań, dlatego nie zostały uwzględnione w sposób puszczalną kiepskość przełamania akapitu bez dzie-
jawny w formule. Wartości tych parametrów są do- lenia wyrazów, parametry \lefthyphenmin oraz
dawane do sumarycznego kosztu  jak leci , tzn. bez \righthyphenmin określające długość fragmen-
podnoszenia do kwadratu, co oznacza, że ich war- tów przenoszonych słów, parametry \spaceskip,
tości należy podawać w jednostkach odpowiadają- \xspaceskip oraz \spacefactor wpływające na
cych wartościom kar podniesionym do kwadratu, wielkość odstępów międzywyrazowych, parametr
jeżeli parametry te mają mieć zauważalny wpływ \hfuzz określający dopuszczalną wielkość przekro-
na łamanie akapitu. czenia prawego marginesu, parametr \uchyph po-
zwalający zablokować dzielenie wyrazów zaczynają-
W ten sposób TEX poszukuje optymalnego
przełamania akapitu. cych się dużą literą, oraz. . .
No właśnie, co jeszcze można dorzucić do tej
Omówienie co się dzieje, jeśli TEX nie znajdzie
kolekcji?
akceptowalnego ciągu przełamań, to równie długa
historia. Na szczęście w praktyce jest to mniej
istotne, dlatego pozwalam sobie pominąć ten temat.
Parę uwag natury ogólnej
Na ogół w dokumentacjach TEX-owych trudno
o opis wyczerpujÄ…cy i precyzyjny. Tak jest i w tym
przypadku  pozostała spora lista nie omówionych
tematów związanych z parametryzacją algorytmu
łamania akapitu.
Uważny czytelnik zapewne podejrzliwie odniósł
się do określenia  potencjalne miejsca przełamania
 cóż miałoby to oznaczać? Otóż TEX  dla uła- Domyślne (plainowe) ustawienia
twienia sobie życia  nie rozpatruje w ogóle niektó- omawianych parametrów
rych miejsc, tych mianowicie, dla których p 10000
\linepenalty=10 \doublehyphendemerits=10000
lub b > t, gdzie t oznacza wartość parametru \to-
\hyphenpenalty=50 \finalhyphendemerits=5000
lerance. Z kolei miejsca, dla których p -10000,
\exhyphenpenalty=50 \adjdemerits=10000
\looseness=0 \lefthyphenmin=2
wyznaczają obowiązkowe miejsca przełamań; koszt
\tolerance=200 \righthyphenmin=3
dla tych miejsc wyznaczany jest z uproszczonej for-
\pretolerance=100 \defaulthyphenchar= \-
muły nie uwzględniającej wartości p jako zbędnej,
\spaceskip=0pt \uchyph=1
\xspaceskip=0pt \hfuzz=0.1pt
mianowicie (l + b)2 (p. wyżej).
Jest jeszcze parę parametrów wpływających na
Podziękowania
sposób przełamania akapitu, z których niezwykle
przydatny przy nadawaniu składanemu tekstowi
Dziękuję Włodkowi Macewiczowi za skłonienie mnie
ostatecznego kształtu jest parametr \looseness.
do nauczenia siÄ™ paru ciekawych rzeczy.
Wartością tego parametru jest liczba całkowita. Po-
Bogusław Jackowski
woduje on, że TEX stara się wydłużyć lub skrócić
B.Jackowski@GUST.ORG.PL
akapit o zadaną liczbę wierszy. Dokładniej: niech n
oznacza liczbę wierszy, jaką by TEX utworzył skła-
dając akapit bez uwzględnienia wartości parametru
\looseness i niech k oznacza aktualną wartość
tego parametru; TEX próbuje znalezć taki ciąg
Polska Grupa Użytkowników Systemu TEX, 1997 (http://www.GUST.org.pl)
jeszcze?
coÅ›
Czy
gane).
naciÄ…
hÄ™
c
tro
może
jest
parametru
ostatniego
tego
(włączanie
\overfullrule
,
\lccode
,
\uccode
,
\hyphenation
,
\language
,
\hangafter
i
\hangindent
,
shape
\par-
,
\parindent
,
\leftskip
,
\rightskip
,
\parfillskip
,
\everypar
,
\emergencystretch
),
\relpenalty
,
noppenalty
\bi-
,
\thickmuskip
,
\medmuskip
,
\thinmuskip
(
yki
matemat
wienia
usta
t,
fon
bieżący
to:
SÄ…
cić.
napso
coÅ›
mogÄ…
rametry
pa-
jakie
ym,
t
o
wiedza
azać
ok
siÄ™
może
otrzebna
p
Dlatego
w.
parametró
h
yc
an
używ
o
rzadk
z
któryś
siÄ™
zmienił
prostu
o
p
a,
niemożliw
jest
sytuacja
a
tak
Oczywiście
inaczej .
siÄ™
składa
a
zmieniło,
nie
siÄ™
 nic
że
zdarza,
siÄ™
czasem
Ano,
cja.
informa-
a
tak
u
om
k
co
o
p
uzasadnienie,
małe
jpierw
Na
:
wiedz
o
Odp


Wyszukiwarka

Podobne podstrony:
Smoleńsk w kilkunastu akapitach Nasz Dziennik, 2011 03 11
Writer Tworzenie akapitów
paleta typografia i akapit
Writer Styl akapitu
Writer Dzielenie i łączenie akapitów
Writer Wprowadzenie do akapitów

więcej podobnych podstron