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 TeXa jest dostępne w emTeXu i sbTeXu (MS DOG), brak go natomiast w popularnych dystrybucjach UNIXowych. Implementacja przekodowywania, pod tajemniczą nazwą TCX została wprowadzona na pewien czas do dystrybucji web2c --- matki wszystkich UNIXowych dystrybucji TeXa. Wkrótce jednak przeciwnicy tego rozwiązania (związani z ekipą LaTeXa 2e) wymogli na autorze web2c jego unieczynnienie. Przekodowywanie wydaje się być bardzo użyteczne w kontekście potrzeb polskich użytkowników --- zwłaszcza formatu MeX. Dlatego też podjąłem próbę wprowadzenia na nowo do web2c procedur przekodowujących. Obserwując sposób rozwoju Linuksa oraz programów takich jak GIMP, KDE czy GNOME dochodzę do wniosku, że wczesne udostępnianie programów jest dobrym pomysłem. Dlatego poniżej znajduje się wstępna wersja implementacji przekodowywania w web2c. Jest ona przeznaczona dla ofiarnych testerów a nie dla zwykłych użytkowników. Wszelkie informacje o (nie)działaniu należy wysyłać do mnie. W szczególności jestem bardzo zainteresowany informacją jak ,,to'' się sprawuje w Luftach. Wydaje mi się, że w chwili obecnej został osiągnięty właściwy zakres funkcjonalności TCX, więc szczególnie zachęcam do oceny ,,czy to jest to'', czy może potrzeba czegoś więcej/mniej. | ||
Pliki Jak tego użyć ./tex -fmt=mex -translate-file=iso2-pl mojdokument.tex TeX poszukuje pliku opisującego przekodowanie w bieżącym katalogu oraz w miejscu właściwym dla plików .pool. Opcji -translate-file można używać również w wywołaniu initexa (nowość!), ale będzie ona w mocy tylko w czasie jego pracy. Po co? 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 taki 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 prezentujemy tu pierwszą na świecie implementację TeXa z taką funkcjonalnością. Paczka z kodem źródłowym zawiera kilka plików testujących te możliwości. Plik testtcx.ini zapisany w cp1250 służy do wygenerowania formatu MeX rozszerzonego o makro \ąźś. Pliki test-win.tex i test-il2.tex zapisane w kodach cp1250 i ISO 8859-2 odpowiednio powinny dać się przetworzyć przy pomocy tego formatu. Tablicę konwersji można również zadać przypisując zmiennej środowiskowej TEXCHARTRANSLATE nazwę pliku z tabelą. (Jak się okazuje ta funkcjonalność istniała w dotychczasowym kodzie.) Można wreszcie wartość tę ustanowić w pliku konfiguracyjnym texmf.cnf, również selektywnie dla formatu. Oto fragment texmf.cnf sensowny dla MeXa pod Linuksem: % translation files TEXCHARTRANSLATE.mex = iso2-pl Jak to skompilować ./configure --enable-tcx make Bez opcji --enable-tcx wynikiem kompilacji będą binaria bajt w bajt zgodne z tymi z web2c. Z tą opcją dostaje się przekodowującego TeXa, który stanowi Nową Jakość (tm). Aby skompilować tylko niektóre programy wystarczy wejść do katalogu web2c i wykonać np. make tex etex pdftex. | ||
|