Każdy z nas może zostać szefem pana Kazia. Wystarczy nauczyć się sposobu przygotowania mu na piśmie poleceń dotyczących sposobu składania.
Nie będziemy jednak zawracać panu Kaziowi głowy i przygotowywać poleceń dla niego w jego obecności. Przygotujemy je zawczasu i udamy się do niego z prośbą o realizację.
Tu właśnie zaczyna się pierwszy etap pracy.
Polecenia, które przygotujemy, to będą informacje o tym co i w jaki sposób należy złożyć. Do przygotowania zbioru poleceń użyjemy zwykłego edytora, który jest zwykle zainstalowany na każdym komputerze. Powinien to być tzw. edytor typu ASCII.
Napiszmy przykładowy plik tekstowy, zawierający następujące dwie linijki:
Ala ma psa. \end
Oczywiście w momencie, kiedy piszemy ten tekst, TEX -- pan Kazio -- go nie widzi.
Po zakończeniu pisania (edycji), tworzymy w pamięci dyskowej komputera plik z tekstem. Nazwijmy przygotowany przez nas plik ala.mex. Zwyczajowo pliki zawierające dane dla TEX-a mają rozszerzenie .tex, a pliki z danymi dla polskiej wersji TEX-a mają rozszerzenie .mex.
Wkrótce wyjaśni się, co oznaczają polecenia napisane w tym tekście i jak zrozumie je pan Kazio. Na razie uwierzmy, że będą one dla niego zrozumiałe i prześledźmy dalszą drogę wiodącą ku ostatecznemu efektowi.
Teraz już nadeszła pora, żeby poprosić pana Kazia o wykonanie składu na podstawie naszych poleceń.
Na każdym komputerze, na którym zainstalowany jest system TEX, istnieje specyficzny sposób uruchamiania go. Nie będziemy tu wyjaśniać rozmaitych sposobów uruchamiania TEX-a.
TEX, czyli pan Kazio przystępuje do pracy i realizuje polecenia. Po pewnym czasie daje znać, że wszystko gotowe.
Wynik jego pracy zapisany jest na dysku w postaci pliku ala.dvi. Oznaczenie dvi jest skrótem od angielskich słów ,,device independent'' -- niezależny od urządzenia. Pan Kazio podjął wszystkie decyzje dotyczące położenia znaków na stronach, ale nie wie jeszcze na jakim urządzeniu zewnętrznym zdecydujemy się wydrukować lub wyświetlić wynik jego pracy. Z tego powodu przygotowuje wynik swojej pracy w postaci niezależnej od urządzenia.
Dodatkowo, jako niezwykle skrupulatny pracownik, pan Kazio umieszcza na dysku jeszcze jeden plik, o nazwie ala.log, zawierający zapis tego, co podczas jego pracy wyświetlał ekran komputera.
Na tym kończy się rola TEX-a -- pana Kazia. Przyniósł nam zmontowane, gotowe strony tekstu (w postaci pliku dvi) i dalej musimy jakoś sobie radzić. Jak już wspomnieliśmy TEX nigdy nie działa samotnie. Pan Kazio byłby bezużyteczny w firmie, gdyby nie było w niej innych pracowników. W istocie użyteczność TEX-a w ogromnym stopniu zależy od jego powiązań z innymi programami.
Jeden z możliwych sposobów współpracy, to wykorzystanie, po zakończeniu pracy TEX-a, jednego z wielu programów, które umożliwiają zobaczenie tego, co TEX przygotował. Takie programy, zwane sterownikami, służą do wyświetlania, drukowania, naświetlania lub jeszcze innych możliwych sposobów uwidocznienia wyniku pracy TEX-a.
Użycie TEX-a, a następnie sterownika jest najbardziej popularnym, choć nie jedynym sposobem uzyskania wyniku składu.
W przypadku przetwarzania pliku poleceń ala.mex, jeśli na naszym komputerze zainstalowany jest sterownik ekranowy, to możemy obejrzeć wynik składu na ekranie.
Jak mamy postępować dalej, jeśli nie będziemy usatysfakcjonowani tym co zobaczymy? Oczywiście jedynym sposobem poprawienia czegokolwiek w końcowym efekcie jest przygotowanie zmienionej wersji poleceń dla naszego pana Kazia i powtórzenie całego cyklu przetwarzania.
Każdy chyba zdaje sobie sprawę, jak wiele zależy od organizacji pracy w firmie: od zatrudnienia właściwych pracowników i utworzenia odpowiednich mechanizmów ich współpracy. Podobnie jest z cyklem przetwarzania, którego częścią jest zecer, pan Kazio. Powiązanie jego działalności z odpowiednimi programami może dać czasem zdumiewające efekty. Ale to jest już temat na osobną pogadankę.
Przyjrzyjmy się obecnie uważniej plikowi przygotowanemu w poprzednim rozdziale. Z punktu widzenia TEX-a/pana Kazia plik ten składa się jedynie z komend, czyli poleceń. Przypomnijmy, że treścią pliku było:
Ala ma psa. \endPlik ten zawiera 13 komend.
Pierwsze trzy z nich, to trzy pierwsze litery.
Każda z nich to polecenie:
,,Umieść w składzie literkę <<A>>'',
,,Umieść w składzie literkę <<l>>'',
,,Umieść w składzie literkę <<a>>''.
Następna komenda, to odstęp. Oznacza ona polecenie
,,zrób zwykły odstęp międzywyrazowy''.
Podobnie rzecz się ma z kolejnymi dwoma literami, odstępem i dalszymi
czterema literami. Również kropka, to po prostu polecenie
,,Umieść w składzie kropkę''.
Dwunaste polecenie w tym pliku jest najmniej widoczne. Zmiana wiersza (przejście do nowej linii) następująca po kropce traktowana jest przez TEX-a jak odstęp i w związku z tym oznacza to samo, co zwykły odstęp. (W składzie ten odstęp nie będzie widoczny, ponieważ po nim nie następuje już żaden tekst.)
Ostatnie, trzynaste polecenie znacznie różni się od pozostałych. Jest ono zapisane nie w postaci pojedynczego znaku, ale w postaci trzech liter poprzedzonych znakiem \ (wtyłciach, po angielsku backslash). Większość komend systemu TEX, które oznaczają coś innego niż ,,umieść w składzie...'' zapisuje się właśnie w postaci znaku w-tył-ciach i następującego po nim ciągu liter. Istnieje jeszcze trzecia kategoria komend, którą wkrótce poznamy, zapisywana w postaci znaku w-tył-ciach i następującego po nim pojedynczego znaku nie będącego literą.
Komenda \end oznacza ,,zakończ pracę''. Jest to jedyne polecenie, które musi znaleźć się w każdym pliku danych (zestawie poleceń) dla TEX-a.
Uważny czytelnik może zadać pytanie: ,,Skąd pan Kazio wiedział jakimi wielkościami liter ma wykonać skład, jaki ma być krój pisma itp.?'' To bardzo ważne pytanie. Otóż w bardzo wielu sprawach szef umówił się z panem Kaziem: ,,jeśli nie napiszę ci tego-i-tego, to postępuj tak-i-tak''. W szczególności są umówieni: ,,jeśli nie napiszę ci jakim krojem pisma masz wykonywać skład, to ma to być Computer Modern Roman''.
W istocie liczba tego rodzaju ,,umów'' z panem Kaziem jest
ogromna i sięga kilkuset. Pozwala to na stosowanie stosunkowo zwartej
i skrótowej notacji. Dzięki temu, że TEX jest systemem programowalnym,
możemy zawierać z panem Kaziem własne umowy, specyficzne dla konkretnego
zastosowania, do którego go wykorzystujemy.
System TEX montuje stronę z podobnych elementów, tylko metalowe
czcionki zostały zastąpione ich obrazem komputerowym i nazywają
się w TEX-u pudełkami, a odstępy nazywają się klejem. Można
sobie wyobrazić, że każda strona montowana jest z pudełek, zawierających
litery i inne znaki, połączonych ze sobą różnymi ilościami elastycznego
kleju, i dzięki niemu utrzymywanych w odpowiednich odległościach od siebie.
Opracowanie przez autora systemu TEX matemetycznego modelu
składu drukarskiego jest prawdopodobnie jednym z jego najważniejszych
osiągnięć związanych ze stworzeniem TEX-a. Podstawowym elementem
tego modelu jest stwierdzenie, że budowane przez system strony
są pudełkami o hierarchicznej budowie. Każdy pojedynczy znak jest pudełkiem.
Z takich znaków można tworzyć pudełka bardziej skomplikowane.
Na każdym etapie tworzenia pudełek dowolonie skomplikowane pudełko
może być użyte w takiej samej roli jak pojedynczy znak. Pozwala
to wyrazić bardzo złożone konstrukcje za pomocą prostych środków.
Poniżej opisujemy podstawowe narzędzia, jakich dostarcza system TEX,
do konstruowania pudełek.
Podstawowe dwa nastroje, w jakich bywa TEX -- pan Kazio --
to nastrój pionowy i poziomy. Zależnie od tego nastroju ma
zwyczaj umieszczać napotykane przez siebie (w tekście z poleceniami)
pudełka albo pionowo -- jedno pod drugim, albo poziomo -- jedno
obok drugiego.
Na początku pracy, przed przeczytaniem pierwszego polecenia
z pliku wejściowego, TEX znajduje się w nastroju pionowym.
Pewne wydarzenia mogą jednak wpłynąć na zmianę jego nastroju
na poziomy.
TEX jest w nastroju poziomym w dwóch rodzajach sytuacji:
podczas składania akapitu i podczas tworzenia pudełka poziomego.
Jest to podstawowy nastrój, w którym następuje składanie tekstów.
Nastrój pionowy służy do montowania w strony elementów
utworzonych w nastroju poziomym.
Po zakończeniu składania akapitu i po zakończeniu tworzenia pudełka
poziomego TEX wraca do nastroju, w jakim znajdował się poprzednio.
Podczas składania akapitu TEX tworzy długą poziomą listę,
złożoną z pudełek i poziomego kleju. Kolejno napotkane litery
traktuje jako pudełka, a odstępy między literami zamienia na
klej i oddziela nim pudełka
W przykładzie cytowanym w poprzednich rozdziałach
akapit zawierający napis ,,Ala ma psa.'' zostanie przez
TEX-a zamieniony na następującą konstrukcję złożoną z pudełek i kleju:
Po zakończeniu czytania akapitu (TEX w tym wypadku rozpozna koniec akapitu
po komendzie \end) system dokona połamania akapitu na linijki o szerokości
takiej jak zadana szerokość kolumny tekstu, zaczynając pierwszą z nich
wcięciem akapitowym odpowiedniej wielkości oraz kończąc ostatnią z nich
odpowiednią ilością poziomego kleju, wypełniającą prawą stronę ostatniego
pudełka.
Każda linijka, która powstaje w wyniku połamania akapitu, jest pudełkiem
o szerokości takiej jak szerokość kolumny tekstu.
W naszym przykładzie TEX utworzy akapit jednolinijkowy, a zatem
powstanie linijka zaczynająca się od wcięcia akapitowego i kończąca się
klejem dopełniającym ją do prawej strony.
Nie zachowując proporcji wymiarów, bo litery rysujemy tu w powiekszeniu
można by narysować tę linijkę jako:
Aby utworzyć w TEX-u poziome pudełko o określonej zawartości
należy napisać komendę \hbox i po niej w nawiasach klamrowych
napisać zawartość tego pudełka.
Na przykład, jeśli chcemy utworzyć pudełko zawierające napis:
,,Od rana jestem dziś w poziomym nastroju.'',
to musimy w pliku poleceń dla TEX-a napisać:
Pudełko takie może być użyte jako element konstrukcujny innych pudełek.
Na przykład, jeśli przed przeczytaniem tego pudełka TEX znajdował się
w nastroju pionowym, to potraktuje to pudełko jako element konstrukcyjny
strony i umieści w obrębie strony pod innymi pudełkami. Jeśli
znajdował się w nastroju poziomym i był w trakcie składania akapitu,
to potraktuje to pudełko tak jak inne znaki znajdujące się w akapicie
i umieści je na liście poziomej przeznaczonej do łamania na linijki.
Należy zwrócić uwagę na różnicę pomiędzy umieszczeniem w akapicie
zdania ,,Od rana jestem dziś w poziomym nastroju.'' od umieszczenia
w akapicie pudełka poziomego zawierającego takie zdanie.
W pierwszym przypadku w różnych miejscach zdania TEX ma prawo
dokonać łamania listy poziomej na linijki, w tym również z uwzględnieniem
przenoszenia wyrazów.
W drugim przypadku całe pudełko traktowane jest jako jeden znak i żadne
łamanie wewnątrz niego nie może mieć miejsca. Może to być w szczególności
użyteczne do wprowadzenia lokalnego zakazu łamania na linijki.
5.2. Pudełka i kleje
System TEX składając tekst (wykonując polecenia) pracuje
podobnie do tego jak pracowali dawniej zecerzy. Jeśli zecer
otrzymywał polecenie (np. czytał je z przygotowanego maszynopisu):
,,umieść w składzie literę <>'', to sięgał ręką do tzw. kaszty,
czyli skrzynki, gdzie znajdowały się metalowe czcionki, wyjmował czcionkę
z literką ,,A'' i ustawiał w odpowiednim miejscu komponowanej strony.
Podobnie, gdy trzeba było zrobić odstęp, umieszczał w montowanej stronie
odpowiedni kawałek metalu, który służył do odsuniecia następnych czcionek.
5.3. Nastroje pana Kazia
TEX zna dwa podstawowe sposoby montowania większych pudełek
z mniejszych pudełek i kleju. Stosuje jeden z tych sposobów,
zależnie od nastroju (lub inaczej mówiąc ,,trybu'', w jakim się
w danej chwili znajduje). Angielskie słowo mode oznaczające
tryb (rodzaj) wykonywanej pracy jest podobne do słowa mood
oznaczającego nastrój.
Wydaje się, że właściwe jest wyobrażanie sobie TEX-a
(pana Kazia z poprzednich rozdziałów) jako istoty poddającej się
nastrojom.
5.4. Składanie akapitu
Początek akapitu TEX rozpoznaje po pewnych typach elementów,
które stanowią zwykle część akapitu.
W szczególności, jeśli będąc w trybie pionowym
TEX napotka w pliku pojedynczą literę, to stwierdzi, że
chcemy rozpocząć składanie akapitu i zmieni nastrój na poziomy.
Ala ma psa.
(jest to dziewięć pudełek i dwa kawałki kleju między nimi).
Ala ma psa.
\end
5.4. Składanie pudełka poziomego
Drugim możliwym sposobem umieszczania poziomo obok siebie
pudełek jest jawne utworzenie tzw. pudełka poziomego.
Podstawową komendą służącą w TEX-u do tego celu jest komenda
\hbox (h, to skrót od angielskiego horizontal
-- poziomy, box, to po angielsku pudełko).
Od rana jestem dziś w poziomym nastroju.