Osmiobitowe 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'' osmiobitowa, tzn. zastosowanie jakiejs strony kodowej (np. cp852, cp1250, ISO 8859-2 (Latin 2), itp.). Sa dwa zasadnicze sposoby nauczenia TeXa przetwarzania tak zapisanego tekstu. Jeden polega na zastosowaniu znaków aktywnych. Drugi wymaga wsparcia ze strony samej implementacji TeXa polegajacego na przekodowywaniu znaków z wejscia na odpowiednie pozycje znaków w stosowanych fontach. Kazdy z wymienionych sposobów ma swoje wady i zalety. Przekodowywanie znaków narodowych przez TeXa jest dostepne w emTeXu i sbTeXu (MS DOG), brak go natomiast w popularnych dystrybucjach UNIXowych. Implementacja przekodowywania, pod tajemnicza nazwa TCX zostal/a wprowadzona na pewien czas do dystrybucji web2c --- matki wszystkich UNIXowych dystrybucji TeXa. Wkrótce jednak przeciwnicy tego rozwiazania (zwiazani z ekipa LaTeXa 2e) wymogli na autorze web2c jego unieczynnienie. Przekodowywanie wydaje sie byc bardzo uzyteczne w kontekscie potrzeb polskich uzytkowników --- zwl/aszcza formatu MeX. Dlatego tez podjal/em próbe wprowadzenia na nowo do web2c procedur przekodowujacych. Obserwujac sposób rozwoju Linuksa oraz programów takich jak GIMP, KDE czy GNOME dochodze do wniosku, ze wczesne udostepnianie programów jest dobrym pomysl/em. Dlatego ponizej znajduje sie wstepna wersja implementacji przekodowywania w web2c. Jest ona przeznaczona dla ofiarnych testerów a nie dla zwykl/ych uzytkowników. Wszelkie informacje o (nie)dzial/aniu nalezy wysyl/ac do mnie. W szczególnosci jestem bardzo zainteresowany informacja jak ,,to'' sie sprawuje w Luftach. Wydaje mi sie, ze w chwili obecnej zostal/ osiagniety wl/asciwy zakres funkcjonalnosci TCX, wiec szczególnie zachecam do oceny ,,czy to jest to'', czy moze potrzeba czegos wiecej/mniej. Pliki web2c-tcx.tgz - kod zródl/owy dla web2c 7.2 web2c-tcx.diff.gz - kod zródl/owy w postaci l/aty, mozna spróbowac nal/ozyc na inna wersje web2c; nie zawiera testów i plików .tcx. L/ate nalezy nal/ozyc przez (cd texk; patch -p1 <web2c-tcx.diff) web2c-tcx_linux_i386_libc6.tgz - wersja binarna dla systemu GNU/Linux dla procesorów Intela (uwaga: skompilowane przy uzyciu wersji 2 bibliotek GNU C, wymaga stosunkowo swiezego systemu linuksowego) Jak tego uzyc Plik z binariami zawiera skompilowane programy tex, etex i pdftex oraz przykl/adowe tabele konwersji: iso2-pl.tcx opisujacy przekodowanie polskich znaków z pozycji kodu ISO Latin-2 na pozycje fontów PL (lub EC) i cp1250-pl.tcx opisujacy to samo dla strony kodowej cp1250 (Lufty). Jezeli w systemie zainstalowane sa programy z pl/yty TeXlive 3 lub teTeX 0.9 to binaria te powinny po prostu dzial/ac, nawet bez koniecznosci generowania na nowo formatów (ale oczywiscie nie moze to byc MeX z pakietu pltexmf z polskimi znakami uzyskiwanymi przy pomocy znaków aktywnych). Jezeli ujawnia sie problemy ze sciezkami moze pomóc ustawienie zmiennej srodowiskowej TEXMFCNF tak, aby wskazywal/a katalog z systemowym plikiem texmf.cnf. Programy reaguja na dodatkowa opcje -translate-file wskazujaca tablice przekodowan. Opcji tej uzywa sie przy normalnym wywol/aniu TeXa (a nie jak w emTeXu przy generowaniu formatu). Ponizsze wywol/anie powinno dawac MeXa czytajacego osmiobitowe polskie znaki: ./tex -fmt=mex -translate-file=iso2-pl mojdokument.tex TeX poszukuje pliku opisujacego przekodowanie w biezacym katalogu oraz w miejscu wl/asciwym dla plików .pool. Opcji -translate-file mozna uzywac równiez w wywol/aniu initexa (nowosc!), ale bedzie ona w mocy tylko w czasie jego pracy. Po co? Mozna wyobrazic sobie format oparty na MeXu definiujacy makra o nazwach zawierajacych polskie znaki. W pliku takiego formatu nazwy makr byl/yby zakodowane w notacji wewnetrznej. A zatem format taki byl/by nadal niezalezny od notacji wejsciowej! Przy przetwarzaniu dokumentu moznaby nadal wskazac dowolna strone kodowa dla wejscia i dawal/aby ona dostep do makr o polskich nazwach. Jak sie zdaje prezentujemy tu pierwsza na swiecie implementacje TeXa z taka funkcjonalnoscia. Paczka z kodem zródl/owym zawiera kilka plików testujacych te mozliwosci. Plik testtcx.ini zapisany w cp1250 sl/uzy do wygenerowania formatu MeX rozszerzonego o makro \azs. Pliki test-win.tex i test-il2.tex zapisane w kodach cp1250 i ISO 8859-2 odpowiednio powinny dac sie przetworzyc przy pomocy tego formatu. Tablice konwersji mozna równiez zadac przypisujac zmiennej srodowiskowej TEXCHARTRANSLATE nazwe pliku z tabela. (Jak sie okazuje ta funkcjonalnosc istnial/a w dotychczasowym kodzie.) Mozna wreszcie wartosc te ustanowic w pliku konfiguracyjnym texmf.cnf, równiez selektywnie dla formatu. Oto fragment texmf.cnf sensowny dla MeXa pod Linuksem: % translation files TEXCHARTRANSLATE.mex = iso2-pl Jak to skompilowac Osobiscie uzywam zródel/ web2c 7.2 z pl/yty TeXlive 3. Po skopiowaniu zródel/ TeXa nalezy plikami z mojej paczki z katalogu changed/ zastapic odpowiednie oryginalne. Katalog changed/ odpowiada gl/ównemu katalogowi texk/. Nastepnie wykonujemy: ./configure --enable-tcx make Bez opcji --enable-tcx wynikiem kompilacji beda binaria bajt w bajt zgodne z tymi z web2c. Z ta opcja dostaje sie przekodowujacego TeXa, który stanowi Nowa Jakosc (tm). Aby skompilowac tylko niektóre programy wystarczy wejsc do katalogu web2c i wykonac np. make tex etex pdftex. Send mail to Marcin Wolinski [INLINE] Strona wiodaca Kacik TeXnika Color Free Zone certified page