TAG — polski edytor tekstów

Edmund Stępień

Początek to rok 1978. Opatentowana w pierwszych latach XVIII wieku maszyna do pisania zaczęła przegrywać w konkurencji z edytorami tekstów na mikrokomputerach osobistych. Próby obrony maszyny trwają do dzisiaj, są to próby naśladownictwa komputera, na przykład — można zapamiętać w trakcie pisania fragment tekstu, zmienić czcionkę poprzez wymianę głowicy itd., itp.

Sprawa po tamtej stronie Łaby została chyba już przesądzona. Większość z tych, którzy do tej pory mozolnie wystukiwali na klawiaturze maszyny do pisania, poprawiali napisane teksty, aby ponownie je wystukiwać, „przesiadła” się na zestaw — komputer, drukarka, edytor tekstów. Nawet pisarze zaczęli zdradzać swoje wysłużone remingtony. Nie mówiąc już o tysiącach wykształconych sekretarek — tutaj już nie ma żadnych wątpliwości.

Ale to wszystko tam, gdzieś daleko. Nasi pisarze ostrzą skwapliwie ołówki, sekretarki walczą z zakleszczającymi się Łucznikami, dziennikarze przekonują panie Basie, że następnym razem ich gryzmoły będą czytelniejsze.

Olbrzymi na świecie popyt na programy do edycji tekstów wiąże się oczywiście z proporcjonalnie dużą ich podażą. Zaoceaniczne programy, mimo iż łatwo u nas osiągalne, rzadko mogą jednak używać polskich liter.

Oprócz wątpliwych prawnie (i moralnie) przeróbek, kilka firm podjęło się ambitniejszego zadania — napisania programu od podstaw. Jedną z takich firm jest gdańska Spółdzielnia Pracy Informatyków InfoService. Rok pracy zespołu programistów zaowocował nowoczesnym (i relatywnie tanim) edytorem TAG.

W ramach tej pracy powstało ponad:

Autorzy przystępując do realizacji edytora założyli, że TAG powinien:

TAG realizuje oczywiście podstawowe, spotykane we wszystkich edytorach funkcje. Przyjrzyjmy się więc tylko temu, jak w praktyce zostały zrealizowane powyższe założenia.

Wygoda obsługi

Jak pogodzić dostęp do wymyślnych nieraz operacji z prostotą obsługi? Może po prostu z tych operacji rezygnując... i tak zrobiono. Program został więc skonstruowany według zmodyfikowanej przez autorów zasady RISP (Reduction Instruction Set Program). Lepiej dać użytkownikowi mniej rzadko używanych operacji (czytaj: „bajerów”), a podstawowe funkcje zrealizować maksymalnie prosto i efektywnie.

Wyboru operacji dokonuje się dwuetapowo — pierwsze wciśnięcie odpowiedniego (opisanego w górnej linii ekranu) klawisza funkcyjnego powoduje rozwinięcie danego menu (na przykład F2—czcionka — menu zmiany czcionki), drugie wciśnięcie powoduje wykonanie konkretnej operacji. Dzięki temu użytkownik jest cały czas „prowadzony” przez program — zawsze ma wykaz możliwych w danym momencie operacji.

Drugim elementem wpływającym na wygodę obsługi jest możliwość wyboru układu klawiatury stosownie do przyzwyczajenia. Program umożliwia wykorzystanie zarówno rozkładu maszyny do pisania, jak i wersji „Alt + znak ASCII” (na przykład ą = Alt + a) i to w standardach klawiatur amerykańskiej, angielskiej i niemieckiej (czyli wszystkich spotykanych w Polsce).

Kroje liter

Edytor TAG obsługuje ekran komputera w trybie graficznym. Dzięki temu użytkownik może używać na ekranie dowolnych kombinacji atrybutów znaków i krojów czcionek.

Program może wczytać jednocześnie 7 różnych zestawów czcionek po 224 znaki w każdym. Znaki na ekran CGA definiowane są w matrycy 8×8, a na ekrany HGC i EGA — w matrycy 8×14. Dowolny znak dowolnej czcionki może zostać wzbogacony o atrybuty wyświetlania. Dzięki temu możemy na ekranie obserwować znaki szerokie, wysokie, pochyłe, podkreślone, tłuste jak i indeksy górne i dolne. Daje to razem ponad 200 możliwości przedstawienia danego znaku.

W podobny do ekranu sposób obsługiwane są również drukarki. Rodzina czcionek składa się z zestawów dla drukarki 9-igłowej (16×24 punkty), 24-igłowej (24×32 punkty) i laserowej (30×32 punkty). TAG drukuje tekst w dwóch podstawowych trybach — wysokiej jakości i przyśpieszonym. Dla drukarek 9-igłowych druk wysokiej jakości trwa równo dwa razy krócej niż w ChiWriterze, druk przyśpieszony jest aż 4-krotnie szybszy. Matryca znaków dla druku przyśpieszonego jest tworzona z podstawowej (16×24) matrycy. Dzięki temu użytkownik może wydrukować brudnopis tekstu (przy zadowalającej jakości) szybko, nie tracąc jednak żadnej informacji o czcionkach, atrybutach, odstępach i tak dalej.

Ilustracja

Szybkość pracy

Bardzo wiele uwagi zwrócili autorzy na szybkość pracy. Dzięki temu przemieszczanie kursora o linię, o stronę nie odbiega czasowo od analogicznych operacji wykonywanych w edytorach, które komunikują się z ekranem w trybie znakowym. Czas przemieszczenia kursora na początek/koniec tekstu jest praktycznie niemierzalny. Najlepszym jednak wydaje się porównanie czasów wyszukiwania i wymiany. Trzystukrotna zamiana słowa „nie” na słowo „tak” w 32-kilobajtowym tekście zajęła ChiWriterowi 50 sekund, podczas gdy TAG uporał się z tym w niespełna 3.5 sekundy!!!

Szybkość pracy to jednak nie tylko pomiary stoperem, ale także coś nieuchwytnego. Coś co powoduje, że praca idzie szybciej... Jedną z bolączek przy pracy z innymi edytorami (vide ChiWriter) jest konieczność troszczenia się o reformatowanie akapitu po każdorazowych zmianach jego treści — TAG wykonuje to samoczynnie. Pamięta również o szerokości marginesów i odstępie międzyliniowym w danym punkcie tekstu. Zmieniając którykolwiek z tych parametrów użytkownik generuje „wzorzec”. Można zmienić marginesy wybierając któryś z istniejących wzorców. Każda linia tekstu zawiera odnośnik do wzorca — dzięki temu program wie między innymi jakich parametrów formatowania użyć w danym miejscu.

Słowniki

Nowym dla polskiego użytkownika elementem edytora jest możliwość interaktywnego używania słowników języka polskiego. Możemy jedynie się domyślać jak ekwilibrystyczne zadanie czekało autorów — język polski jest wszak trochę bardziej skomplikowany od angielskiego. Samych różnych odmian rzeczownika jest ponad 500. Jak więc zmieścić wystarczająco obszerne słowniki na dyskietkach, aby użytkować mogli je również posiadacze tańszych konfiguracji komputerów.

Słownik ortograficzny w edytorze TAG zawiera dokładnie 100 043 wyrazy o statystycznej długości 10 znaków na słowo. Jak łatwo obliczyć plik ze słownikiem musiałby więc liczyć około 1 MiB (pomijając informacje o fleksji). Po upakowaniu słownik liczy tylko 190 KiB — a więc poniżej 16 bitów na słowo. W tych 16 bitach mieści się również informacja o sposobie odmiany. Sto tysięcy słów z zakodowaną fleksją w słowniku oznacza ponad dwa miliony słów znanych słownikowi edytora TAG. Plik słownika liczy w sumie ponad 230 KiB. Różnica 40 KiB wykorzystana została na umieszczenie indeksów przyśpieszających wyszukiwanie informacji.

Spodziewać się należy, iż przygotowanie tego słownika wymagało wielu kompromisów i uproszczeń. I tak jest w istocie — zdarza mu się „puszczać” wyrazy ewidentnie błędne. Słownik w obecnej postaci wychwytuje około 80% błędów. Wystarcza to, aby w wielokrotnie czytanych tekstach znaleźć jeszcze kilka błędów. Korekta tekstu jest operacją długotrwałą, dlatego też przewidziano możliwość założenia bufora na błędy by w trakcie pracy komputera użytkownik nie musiał czuwać przy nim. Po wypełnieniu bufora (co przy dłuższych tekstach trwa kilka minut) program błyskawicznie wskazuje wyrazy błędne lub po prostu mu nie znane. Błędne można poprawić, zignorować a nie znane dodać do słownika. W tym ostatnim przypadku program zachowuje się nad podziw sprytnie — domniema w jakiej formie wyraz został zapisany. Kiedy więc doda się do słownika na przykład wyraz „pszczołom”, to program znać będzie od tego momentu zarówno „pszczoły” jak i „pszczołę”. Te dodatki zapisywane są w normalnym pliku ASCII — można je edytować, dodawać nowe i tak dalej.

Edytor TAG posiada również dostępny w każdej chwili słownik wyrazów bliskoznacznych. W programach anglojęzycznych rozwiązanie to znane jest jako thesaurus. Po uaktywnieniu słownika wprowadza się wyraz, którego synonimu się szuka (wyrazy podaje się w podstawowych formach gramatycznych). Na ekranie błyskawicznie ukazuje się wykaz synonimów. Jak wiadomo, do każdego wyrazu mogą istnieć wyrazy bliskoznaczne o różnych zabarwieniach znaczeniowych.

Przykładowo dla wyrazu „dobry” (dla którego TAG znajduje 74 wyrazy bliskoznaczne) istnieje zarówno synonim „poprawny” jak i „łagodny”. Słownik wyświetla wyrazy grupując je według znaczenia.

W przeciwieństwie do wielu innych programów każdy z 30 tysięcy wyrazów słownika TAGa jest wyrazem kluczowym, odwołując się do naszego przykładu można szukać zarówno według „poprawny” jak i „łagodny”. Dla porównania — szeroko rozpowszechniony Turbo-Lightning posiada jedynie 5 tysięcy wyrazów kluczowych.

Edycja tablic

Każdy użytkownik zna rozkosze łamania palców podczas tworzenia ramek dla różnego rodzaju tablic. Pół biedy, jeśli elementy tych ramek można znaleźć na klawiaturze. Prawdziwe problemy zaczynają się podczas wstukiwania sekwencji Alt+205, Alt+205 i tak dalej. Edytor TAG posiada wbudowane narzędzie do tworzenia i edycji tablic. Wystarczy wskazać rodzaj pożądanej ramki (są 4 typy ramek) i „ciągnąć” ją kursorem. Program sam zatroszczy się o odpowiednie znaki w punktach przecięcia i na narożnikach. Można kasować istniejące linie, dopisywać nowe (nawet innego typu) i tak dalej. Tak utworzona ramka staje się jednocześnie wskaźnikiem dla tabulatorów — ustawiają się one w miejscach pionowych linii tejże ramki.

TAG pilnuje, aby piszący nie przekroczył ramki i umożliwia także rozsuwanie ramki, jeśli okaże się ona za krótka. Klawisz Enter powoduje wstawienie nowego wiersza (pionowe linie są automatycznie uzupełniane) i przejście do niego na początek danej kolumny ramki (a nie początek wiersza!). Program umożliwia więc proste „szpaltowanie” tekstu w tablicach.

Edycja dłuższych tekstów

Każdy użytkownik edytora wie, jak kłopotliwe staje się nieraz opracowanie dłuższych tekstów, na przykład książek. Czasy reakcji edytorów stają się w takich wypadkach co najmniej irytujące. Każdy więc, prędzej czy później, dzieli tekst na krótsze fragmenty.

Przygotowując tekst tradycyjnymi ręcznymi metodami zaczyna się od planu pracy. Czy ktokolwiek robi plan pracy przystępując do pisania tekstów przy pomocy komputera? Wygoda obsługi programów edycyjnych stymuluje wręcz do... bałaganiarstwa. Już dość dawno zauważono te kłopoty — powstała grupa programów zwana outline editor. Dzięki nim możemy napisać tenże plan pracy: określić kolejność rozdziałów, podrozdziały i tym podobne. Tak przygotowana struktura importowana jest do standardowego edytora.

TAG posiada wbudowany mechanizm struktury tekstu. Każdy rozdział, czy podrozdział jest samodzielnie rezydującym w pamięci tekstem identyfikowanym przez swoją nazwę w strukturze tekstu.

Operacje dotyczące pojedynczego rozdziału wykonywane są z prędkością nie ograniczaną długotrwałymi dostępami do dysku. Jednocześnie zlikwidowana została podstawowa wada programów, w których dane przechowywane są w pamięci — łączna długość tekstu może być większa niż pamięć RAM. Dzięki temu bardzo szybkie są operacje zamiany kolejności rozdziałów — zamieniane są tylko odnośniki w strukturze tekstu. W dowolnej chwili można utworzyć nowy rozdział między już istniejącymi, dodać nowe podrozdziały i tak dalej. Dzięki specyficznemu dla TAGa powiązaniu hierarchii tekstu z edytorem użytkownik może zażądać wygenerowania spisu treści łącznie z aktualnymi numerami stron!

Przyjęte rozwiązania programowe „wymuszają” stosowanie struktury tekstu — każdy tekst ma zawsze tworzoną (skojarzoną z nim) strukturę. Aż prosi się, aby z niej korzystać i ... korzysta się, pisząc nawet tak krótki tekst, jak niniejszy.

Obecnie edytor tekstów TAG rozpowszechniany jest w wersji 1.21. Oprócz niego dostępne są również:

Autorzy zapowiadają uzupełnienie edytora o nowe elementy, między innymi:

I na tym chyba jeszcze nie koniec...


Porównanie wybranych funkcji w niektorych edytorach tekstu

Funkcja Word-
Star
Word-
Perfect
Chi-
Writer
MS Word TAG
Graficzna obsługa ekranu (WYSIWYG) - - + + +
Rozwijanie idei (outline) - - - + +
Słownik synonimów (thesaurus) - + - - +
Słownik ortograficzny (speller) + + - + +
Edytor tabeli - + - + +
Definiowanie własnych znaków - - + - +
Automatyczne tworzenie spisu treści - - - - +