2008-08-25 Korekta italikowa

Dawno, dawno temu, gdy pisało się w plain TeXu, korektę italikową wstawiało się ręcznie. (Jeśli nie wiesz, co to korekta italikowa, porównaj to: [Error: dvipng binary and convert binary not found at /usr/bin/dvipng or ] z tym: [Error: dvipng binary and convert binary not found at /usr/bin/dvipng or ]. W pierwszym przypadku, po literze d wstawiono korektę italikową, czyli mały odstęp – różny dla różnych liter – który winno się wstawiać na końcu tekstu pisanego kursywą, a przed ciągiem dalszym, pisanym pismem prostym. Oczywiście, zwykle po drodze jest jeszcze spacja, więc problem nie jest aż tak jaskrawo widoczny – ale jednak jest. Na przykład: [Error: dvipng binary and convert binary not found at /usr/bin/dvipng or ], [Error: dvipng binary and convert binary not found at /usr/bin/dvipng or ].)

Korektę italikową w plain TeXu wprowadza się ręcznie, pisząc np. {\it d\/}b. LaTeX robi to super-fantastycznie-automatycznie-i-nie-za-bardzo-wiadomo-jak sam, zwalniając użytkownika od myślenia, żeby mu się mózg nie przegrzał. Brrr.

Może ktoś zapytać, dlaczego to jest złe? W końcu po to są komputery, żeby sobie ułatwiać życie i automatyzować pracę, prawda?

Popatrzmy zatem dokładniej na problem.

Otóż korekty italikowej nie powinno się wstawiać zawsze. Spójrzmy na poprawne [Error: dvipng binary and convert binary not found at /usr/bin/dvipng or ] (bez korekty) oraz błędne [Error: dvipng binary and convert binary not found at /usr/bin/dvipng or ] (z korektą). Widać, w czym rzecz – znaki takie, jak kropka czy przecinek są na tyle niskie, że korekty italikowej nie wymagają.

Cóż więc robi LaTeX? Czy jest aż tak głupi, żeby wstawiać \/ gdzie popadnie? Oczywiście nie. Ma on swój tajemniczy algorytm, który decyduje, kiedy wstawić korektę, a kiedy nie. (“Tajemniczość” polega na tym, że jedynym miejscem, w którym udało mi się o nim czegokolwiek dowiedzieć, były źródła LaTeXa… (Źródła te można znaleźć np. pytając wyszukiwarkę o plik source2e.pdf.) Polecam stronę 213 i następne tychże źródeł – jest tam więcej tekstu niż kodu, i jest on bardzo pouczający. W szczególności, jest tam napisane, jak spowodować, żeby LaTeX nie wstawiał korekty przed innymi znakami niż tylko domyślne przecinek i kropka, a także, jak kazać nie wstawiać korekty doraźnie w jednym miejscu. Jest tam też piękne zdanie: In addition to global customization of when to insert the italic correction, it is of course sometimes necessary to explicitly insert one with \/. Niestety, autorzy nie podają żadnego przykładu owego sometimes.)

Czemu więc jest źle, skoro w sumie jest dobrze?

Ano temu, że to wszystko jest słabo udokumentowane. Tzn. w źródłach jest dobrze – autorzy piszą (z grubsza), co LaTeX robi i jak kazać mu robić co innego. Sęk w tym, że ta informacja nie przedostała się chyba za bardzo do podręczników LaTeXa. A założenie, że każdy użytkownik, który chce składać ładne dokumenty, prędzej czy później będzie czytał źródła LaTeXa (ponad 500 stron A4!) jest cokolwiek ryzykowne. Prawda?

Jak widać, problem leży na styku: program / dokumentacja. LaTeX nie jest tutaj zły sam w sobie; złe jest to, że istotna jego funkcjonalność jest słabo udokumentowana. Tak, jest o tym mowa w The LaTeX companion – ale ta książka nie jest dostępna za darmo. Na pewno nie ma o tym wzmianki ani w Nie za krótkim wprowadzeniu…, ani w An essential guide…; nie przypominam sobie też, żebym gdziekolwiek indziej o tym czytał.

Może LaTeX team, zamiast od ok. 10 lat zapowiadać LaTeXa3, powinien napisać kompetentny, darmowy podręcznik LaTeXa, większy i poważniejszy niż (skądinąd świetne – ale tylko na początek) Nie za krótkie wprowadzenie (zresztą pisane przez kogoś innego)? Ja rozumiem, że oni muszą z czegoś żyć, ale z drugiej strony, darmowy system z komercyjnym podręcznikiem to troszkę głupio, prawda? Nie wiem, może to bez sensu, co piszę, może właściwą odpowiedzią jest “to napisz sam, jak jesteś taki mądry” – kto wie, może i napiszę…

To na koniec podam jeszcze przykład sytuacji, gdy LaTeX sam z siebie nie wstawia korekty italikowej (choć powinna ona być wstawiona), a na którą całkiem często się trafia (przynajmniej, jeśli jest się matematykiem;)): gdy składamy np. tekst twierdzenia (kursywą), a po drodze mamy jakieś symbole matematyczne (niekiedy pisane pismem prostym). Czyli np. [Error: dvipng binary and convert binary not found at /usr/bin/dvipng or ]. Wystarczy się nieco przyjrzeć, żeby zobaczyć, że tak jest dużo lepiej: [Error: dvipng binary and convert binary not found at /usr/bin/dvipng or ]. (Zamiast [Error: dvipng binary and convert binary not found at /usr/bin/dvipng or ] mogłaby tu być np. dowolna liczba, której pierwszą cyfrą jest 1; liczby składa się w trybie matematycznym, czyli pismem prostym!)

A, i jeszcze jedno. Dawno temu, chyba w którymś biuletynie GUSTu czytałem, jak rozwiązać problem automatycznego wstawiania korekty italikowej. Wyobraźmy sobie jeden wieeelki font, w którym będą zaszyte i pismo proste, i kursywa, i znaki matematyczne… Wtedy można całą sprawę załatwić kerningiem.

KategoriaTeX, KategoriaPlainTeX, KategoriaLaTeX