polskich znaków w TeXu (w implementacjach opartych na web2c) | |
Istnieje kilka sposobów kodowania polskich znaków w dokumencie TeXowym. Najbardziej komfortowa jest notacja ,,naturalna'' ośmiobitowa, tzn. zastosowanie jakiejś strony kodowej (np. cp852, cp1250, ISO 8859-2 (Latin 2), itp.). Są dwa zasadnicze sposoby nauczenia TeXa przetwarzania tak zapisanego tekstu. Jeden polega na zastosowaniu znaków aktywnych. Drugi wymaga wsparcia ze strony samej implementacji TeXa polegającego na przekodowywaniu znaków z wejścia na odpowiednie pozycje znaków w stosowanych fontach. Każdy z wymienionych sposobów ma swoje wady i zalety. Przekodowywanie znaków narodowych przez samego TeXa jest dostępne od dawna w emTeXu i sbTeXu (MS DOG), natomiast w popularnych dystrybucjach UNIXowych opartych na web2c pojawiło się dosłownie przed chwilą (jeśli pamiętać, że chwila w TeXu może trwać pół roku; w porównaniu z wiekiem TeXa jest to czas zaniedbywalny). W związku z tym przekodowanie stało się dostępne również w fpTeXu --- opartej na web2c dystrybucji TeXa dla Windows 95/98/NT. A ponieważ MikTeX (też Windows) nie zamierza być w tej kwestii w tyle, można mieć nadzieję, że wkrótce praktycznie każdy liczący się TeX będzie mógł przekodowywać. Implementacja przekodowywania, pod
tajemniczą nazwą TCX została wprowadzona do dystrybucji
web2c już jakiś czas temu. Wkrótce jednak przeciwnicy
tego rozwiązania (związani z ekipą LaTeXa 2e) wymogli
jego unieczynnienie w źródłach ( Warto tu jeszcze zaznaczyć, że wprowadzenie przekodowywania nie narusza licencji TeXa. Jak wiadomo, jedyną osobą władną aby wprowadzać zmiany w TeXu jest Don Knuth. Nie dotyczy to wszakże drobnych szczegółów związanych ze specyfiką danego systemu operacyjnego (środowiska obliczeniowego), w którym dana implementacja TeXa ma działać. W istocie TeX ma mechanizm zamiany dowolnego (jednobajtowego) kodu używanego w dokumentach na reprezentację opartą na ASCII i używaną w pliku .dvi (reprezentacja ta odzwierciedla układ znaków w fontach). Mechanizm przekodowywania został przewidziany z myślą o komputerach pracujących w EBCDICu (który jest istotnie odmienny od ASCII). Wierzymy, że środowisko obliczeniowe posługujące się kodem (na przykład) ISO 8859-2 też jest środowiskiem ,,nie-ASCII'' i że w związku z tym pracująca w nim implementacja TeXa może mieć w odpowiednie tablice w programie włożone odwzorowanie ISO 8859-2 w układ fontów. W związku z mnogością stosowanych ,,stron kodowych'' zaszycie odwzorowania w kompilat TeXa jest niepraktyczne. Dlatego web2c oferuje rewelacyjne uproszczenie: tabelę opisującą przekodowanie można zadać przy pomocy opcji polecenia uruchamiającego TeXa. | |
Jak się tego używa? W nowej wersji web2c (7.3) i w konsekwencji teTeXa
(1.0) TeX reaguje na dodatkową opcję
Przykład: pod Linuksem poniższe wywołanie przetwarza dokument MeXowy z polskimi znakami w notacji ,,naturalnej'': mex -translate-file=il2-pl mojdokument.tex Istnieje alternatywny sposób informowania TeXa o sposobie kodowania danego pliku. Web2c ,,od zawsze'' reagowało na pierwszą linię pliku zaczynającą się w taki sposób %&mex załadowaniem odpowiedniego formatu (tutaj MeXa). W nowej wersji ten mechanizm został rozszerzony. Następująca linia %&mex --translate-file=il2-pl oprócz formatu zadaje również kodowanie pliku. Można również pominąć nazwę formatu: %& --translate-file=il2-pl Użycie opcji TeX poszukuje pliku opisującego przekodowanie w
bieżącym katalogu oraz w miejscu właściwym dla plików
.pool czyli domyślnie
Opcji -translate-file można używać również w wywołaniu initexa, ale będzie ona w mocy tylko w czasie jego pracy. Po co to komu? Można wyobrazić sobie format oparty na MeXu definiujący makra o nazwach zawierających polskie znaki. W pliku takiego formatu nazwy makr byłyby zakodowane w notacji wewnętrznej. A zatem format byłby nadal niezależny od notacji wejściowej! Przy przetwarzaniu dokumentu możnaby nadal wskazać dowolną stronę kodową dla wejścia i dawałaby ona dostęp do makr o polskich nazwach. Jak się zdaje web2c jest pierwszą na świecie implementację TeXa o takich możliwościach. | |
|