Program TeX
Author: Włodzimierz Macewicz
Keywords: tex, Wirtualna Akademia

## Parę słów o programie TeX

Najprościej mówiąc, TeX jest programem służącym do składu tekstów, jego podstawową rolą jest zastąpienie pracy zecera. Jest to jednak zbyt duże uproszczenie. TeX jest systemem, czyli zbiorem różnych narzędzi, stanowiących logiczną całość, służącym do profesjonalnego przygotowania publikacji, ze szczególnym uwzględnieniem matematyki. Jądrem systemu jest oczywiście program TeX. Używając terminologii informatycznej jest to specjalizowany makrogenerator przystosowany do przetwarzania tekstów. Język, przy pomocy którego sterujemy składem, pozwala na absolutnie precyzyjne wyrażenie swoich życzeń. Osoba opisująca postać dokumentu jest w roli redaktora technicznego przekazującego swoją wolę zecerowi. Język opisu jest niewątpliwie trudny, można powiedzieć że tak trudny jak problem, którego rozwiązaniu służy.

Łamanie tekstu jest nie tylko wiedzą, ale i sztuką. Ostateczny kształt dokumentu musi uwzględniać: tradycję, reguły estetyki, zdolności percepcyjne człowieka, funkcjonalność i wiele innych aspektów. Iluzją jest, że jakikolwiek program jest w stanie samodzielnie uwzględnić wszystkie aspekty; musi zrobić to człowiek posiadający odpowiednią wiedzę i doświadczenie. Program jest jedynie narzędziem, które pozwoli na efektywne osiągnięcie postawionego celu.

Podstawową cechą programu TeX, różniącą go od innych jest to, że może on zrobić tyle, na ile pozwala wiedza osoby go używającej, a nie tyle, na ile pozwala wyobraźnia jego twórcy. Jest to nie tylko system, ale i pewna filozofia podejścia do rozwiązywanego problemu.

Program TeX został wymyślony i napisany przez Donalda Knutha. Historia jego powstania jest na tyle ciekawa, że pozwolę sobie ją w paru słowach przytoczyć.

Przygotowując publikację wydajemy dyspozycje składu w postaci poleceń, następnie tak przygotowany tekst przetwarzamy programem TeX. Jest to działanie w trybie off line w odróżnieniu od trybu on line oferowanego przez programy nowej generacji. Ostateczny efekt zależy od precyzji (naszej wiedzy) wyrażania naszych życzeń. Program wymaga od nas ścisłego formułowania naszych życzeń, pozwala na obiektowe podejście do zagadnienia -- jest to naturalne podejście do problemu. Definiujemy obiekty: akapity, tytuły, listy, skorowidze, spisy itp. i określamy sposoby składu tych obiektów: marginesy, czcionkę, odstępy itp. Mając wprowadzony tekst, opisany poleceniami składu, możemy zmienić formę dokumentu zmieniając jedynie atrybuty (cechy) zdefiniowanych obiektów bez konieczności modyfikowania dokumentu. Tryb pracy popularnych programów typu MS-Word sprzyja wstawianiu znaków sterujących w danym miejscu, dających pożądany efekt wizualny -- zmiana formy dokumentu wymaga skasowania starych znaków sterujących i wstawienia nowych w całym dokumencie. Praca z systemem TeX zdecydowanie utrudnia tego rodzaju działanie (doraźna ingerencja wymaga większej, a nie mniejszej wiedzy). Przystępując do pracy należy określić jakie efekty chcemy uzyskać, zdefiniować odpowiednie obiekty, które będą reprezentowane w ten sposób, a następnie posługiwać się ich definicjami.

Dodatkową zaletą pracy z systemem TeX, jest to, że używamy wyłącznie znaków pisarskich bezpośrednio dostępnych na klawiaturze. Pisząc wzory matematyczne używamy nazw symboli i konstrukcji i nie musimy zmieniać trybu pracy edytora, odrywać rąk od klawiatury, aby wziąć mysz itp. W 99/100 przypadków złożony wzór matematyczny nie wymaga ,,ręcznych'' interwencji; w odróżnieniu od wszystkich innych znanych mi programów. Zdefiniowane są prawie wszystkie używane symbole matematyczne (jak do tej pory brakowało mi tylko symbolu potrójnej całki po kole). Nazwy poleceń odzwierciedlają ich funkcje, nie musimy pamiętać znaczenia wielu klawiszy funkcyjnych, których znaczenie trudno skojarzyć z ich nazwami. Jeżeli nazwy poleceń są trudne do zapamiętania można w łatwy sposób tworzyć ich synonimy.

Niewątpliwie TeX-a nie da się używać nie rozumiejąc jego języka programowania, w odróżnienu od programów typu MS-Word, ale twierdzę że sprzyja to systematycznemu podejściu do problemu. Aby używać TeX-a trzeba zdobyć niezbędną wiedzę również o sztuce składu publikacji, nie da się go używać tak jak starej maszyny do pisania. Włożony wysiłek szybko procentuje wzrostem efektywności pracy. W znanych mi narzędziach, w miarę zdobywania wiedzy o nich i doświadczenia, napotykamy na liczne bariery, błędy i ograniczenia, bardzo denerwujące doświadczonego użytkownika. Używanie takiego programu staje się walką z narzędziem, a nie z postawionym zadaniem. Autor TeX-a zadbał o to, aby był to program bezbłędny i jego cechy oraz własności nie uległy zmianie; TeX jest niezwykle stabilnym programem.

Przewagę TeX-a nad innymi programami widać szczególnie przy składzie formuł matematycznych. Symbole i operatory matematyczne zostały podzielone na grupy. Zostały zdefiniowane cechy tych grup i określone zasady sąsiedztwa (np. odstęp między znakami). Nazwy symboli są jasne i logiczne. Nie musimy określać pozycji każdego symbolu; robi to za nas TeX. Wiele programów (np. WordPerfect) ma zapożyczony sposób definiowania wzorów matematycznych, ale efekt końcowy jest drastycznie gorszy (bez ręcznej korekty).

Na szczęście używając programu TeX możemy korzystać z wiedzy innych. Mamy do dyspozycji ponad 20 MB zbiorów makroinstrukcji, ułatwiających proces składu. W celu ułatwienia pracy w 1982 został napisany przez L.Lamporta zbiór makroinstrukcji nazwany systemem LaTeX. Zawiera on definicje najczęściej używanych obiektów i określa sposób ich składu. LaTeX jest pewnego rodzaju nakładką na język składu TeX-a (zdefiniowaną w jego języku), ułatwiającą pisanie typowych artykułów, raportów i książek przez samych autorów. Opatrując tekst kilkoma (no może kilkudziesięcioma) poleceniami, otrzymujemy zadowalający rezultat składu. Zmieniając cechy zdefiniowanych obiektów możemy taką publikację bardzo łatwo dostosować do wymagań konkretnego wydawnictwa.

L.Lamport ma niewątpliwie duże zasługi w popularyzacji TeX-a i dostosowaniu go do potrzeb ,,normalnego'' użytkownika, ale sam kod systemu LaTeX jest bardzo nieporządny, w dodatku przez kilka lat zostało napisanych szereg makroinstrukcji pisanych w różny sposób, często wprowadzających efekty uboczne. W wyniku pracy p. Franka Mitellbacha i Rainera Schöpfa cały pakiet LaTeX-a został napisany od nowa -- znany jest on pod nazwą LaTeX2e (2 epsilon, jako forma przejściowa do systemu 3), a coraz częściej pod nazwą LaTeX (,,stary'' LaTeX został nazwany LaTeX-209).

Nowy system ma budowę warstwową. W języku TeX-a została zdefiniowana spójna i logiczna warstwa umożliwiająca pisanie kodu prawie ,,proceduralnego'', a nie jako klasyczne makrowołania. Został zdefiniowany elegancki interface dla programistów definiujących skład i piszących nowe pakiety makroinstrukcji. Ze względu na to, że klasyczne makrogeneratory tracą na znaczeniu, a większość programistów przyzwyczajonych jest do języków proceduralnych (Pascal, C) jest to niewątpliwie duże ułatwienie. W tym języku pośrednim został zdefiniowany od nowa system LaTeX, jako zbiór poleceń realizujących podobne cele, jak system LaTeX L.Lamporta.

Dodatkową zaletą programu TeX i pakietu LaTeX jest to, że są one programami public domain, używając ich nie musimy wnosić żadnych opłat. W szerzącej się komercyjnej bylejakości TeX jest przykładem rzadko spotykanej staranności, stabilności i bezbłędności działania.

Włodzimierz Macewicz