O�miobitowe wprowadzanie
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 (#ifdef 0 z podejrzanym komentarzem). Praca z o�miobitowym tekstem jest dla polskich u�ytkownik�w czym� zupe�nie podstawowym. Dlatego te� niewielka ekipa polskich u�ytkownik�w (Staszek Wawrykiewicz, W�odek Bzyl i ni�ej podpisany) podj�a pr�b� przeforsowania wprowadzenia na nowo do web2c procedur przekodowuj�cych. Przedsi�wzi�cie to powiod�o si� (g��wnie dzi�ki zapa�owi i energii Staszka).

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� --translate-file wskazuj�c� plik z tablic� konwersji. Opcji tej u�ywa si� przy normalnym wywo�aniu TeXa (a nie jak w emTeXu przy generowaniu formatu).
Poka�na kolekcja tablic konwersji jest dystrybuowana z samym web2c (i w konsekwencji powinna by� dost�pna w dystrybucjach pochodnych). S� tu w szczeg�lno�ci tablice przekodowuj�ce do uk�adu font�w PL (tylko polskie znaki): il2-pl.tcx -- dla ISO 8859-2 (Latin-2), cp1250-pl.tcx -- Code Page 1250 (Windows), cp852-pl.tcx -- tzw. IBM Latin 2, maz-pl.tcx -- Mazowia, a jak�e, oraz amiga-pl.tcx -- dla kodu AmigaPL.

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 --translate-file w pierwszej linii pliku sprawia, �e dokument zawiera jawn� informacj� o kodzie, kt�ry zosta� w nim u�yty. Dzi�ki temu nie trzeba zgadywa�, w jakim kodzie kolega przys�a� nam plik (zmora emTeXa). Dzi�ki za� obecno�ci kompletu plik�w .tcx w dystrybucji wystarczy uruchomi� na dokumencie TeXa bez �adnych dodatkowych opcji, aby uzyska� poprawny wydruk.

TeX poszukuje pliku opisuj�cego przekodowanie w bie��cym katalogu oraz w miejscu w�a�ciwym dla plik�w .pool czyli domy�lnie texmf/web2c.

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.

Marcin Woli�ski

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.