MeX, pdfMeX

## MeX i pdfMeX

MeX jest adaptacją formatu Plain TeX do składu w języku polskim z uwzględnieniem polskich zwyczajów drukarskich.
Autorzy: Bogusław Jackowski i Marek Ryćko.
Dokumentacja poniższa omawia pokrótce tworzenie formatu `mex.fmt` (lub `pdfmex.fmt`, dla wersji TeX-a tworzącej od razu pliki PDF) i jego użycie w instalacji zgodnej z `Web2c` (dystrybucje teTeX, fpTeX, TeX Live) a także MiKTeX. Szczegółowe informacje nt. pakietu MeX zawarto w pliku `mexinfo.pol`.

W dystrybucji dołączono ponadto prosty plik przykładowy `doc/polish/mex/base/tstmex.tex`, służący do przetestowania poprawnego działania formatu MeX. Początkującym użytkownikom zaleca się zapoznanie z zawartością tego pliku. Plik ten dostępny jest także na serwerze GUST.

### I. Przygotowanie formatu MeX/pdfMeX (polskiej implementacji formatu Plain)

Format w systemie TeX to wstępnie prekompilowany (aby przyspieszyć jego analizę przez program `tex/pdftex`) zestaw makrodefinicji oraz reguł przenoszenia wyrazów dla wybranego zestawu języków. Plik formatu z reguły posiada rozszerzenie `.fmt`.

Przygotowanie formatu MeX (lub pdfMeX do tworzenia plik PDF) polega w skrócie na uruchomieniu:

    tex-engine --ini mex.ini

gdzie tex-engine oznacza program `tex` lub `pdftex` (od Web2c wer. 7.5.3 używamy jednego programu: `pdfetex`). Analogicznie, format do tworzenia plików PDF generujemy poleceniem: `pdfetex --ini pdfmex.ini`. Podczas przetwarzania wczytywane są pliki makr formatu MeX, a także `plain.tex` oraz wzorce przenoszenia wyrazów dla języka polskiego i angloamerykańskiego.

Ponieważ wygenerowany plik powinien znaleźć się w odpowiednim miejscu struktury katalogów, a także powinien zostać ,,zarejestrowany'' w instalacji, współczesne dystrybucje ułatwiają proces generowania.

- W dystrybucjach opartych na Web2c (fpTeX, teTeX, TeX Live) formaty generowane są przy pomocy programu `fmtutil` (`fmtutil --help` wyświetla dostępne opcje) zaś deklaracje formatów znajdują się w pliku `texmf/web2c/fmtutil.cnf` (gdy posiadamy drzewo katalogów zawierające lokalne pliki konfiguracyjne instalacji systemu TeX, program `fmtutil` korzysta z lokalnej kopii `fmtutil.cnf`; dokładne położenie pliku wyświetli uruchomienie polecenia: `kpsewhich fmtutil.cnf`).
  W systemach Unix/Linux cały proces generowania formatu dostępny jest z menu `Formats` programu `texconfig`, które pozwala modyfikować plik `fmtutil.cnf`, co polega na usunięciu znaku # przed deklacją wybranego formatu bądź zablokowaniu takim znakiem formatów niepożądanych. Po zapisaniu pliku i zakończeniu edycji, format zostanie automatyczne wygenerowany.
  W systemach Windows należy samodzielnie zmodyfikować plik `fmtutil.cnf`, po czym uruchomić polecenie `fmtutil --byfmt=mex` (lub `fmtutil --byfmt=pdfmex`).
- W MiKTeX (od wersji 2.0) należy uruchomić w menu `MiKTeX Options` podmenu `TeX Formats`, zaznaczyć format `MeX` (`pdfMeX`) i utworzyć (przyciskiem `Build`) potrzebny plik formatu.

W obu omawianych przypadkach tworzony jest plik formatu `mex.fmt` (lub `pdfmex.fmt`), który jest umieszczany w katalogu właściwym dla tego rodzaju plików, oraz tworzony jest program `mex` lub `pdfmex` (uruchamia on program `tex` z formatem `mex` bądź program `pdftex` z formatem `pdfmex`).

### II. Użycie

Aktualne implementacje, oparte na Web2c, a także MiKTeX pozwalają na prawidłowe przekodowanie znaków diakrytycznych w pliku TeX-owym na wewnętrzną reprezentację, stosowaną przez programy. W Polsce, niestety, stosowane są różne ,,standardy'' kodowania diakrytyków w tworzonych przez użytkownika plikach, zależnie od systemu operacyjnego. Dla potrzeb systemu TeX używamy zewnętrznych, tekstowych plików TCX, pozwalających ,,obsłużyć'' różne spotykane ,,standardy''. Dzięki temu przekodowanie działa też w drugą stronę, kiedy TeX wyświetla komunikaty i zapisuje pliki `.log`, a także pliki ze spisem treści, skorowidzem itp.

Uruchomienie polecenia:
`mex --translate-file=TCXFILE myfile.tex`
oznacza uruchomienia TeX-a z formatem `mex.fmt` i z odpowiednią tablicą przekodowań (ich lista znajduje się poniżej). Polecenie `mex` tworzone jest zwykle jako dowiązanie do programu (obecnie) `pdfetex` w katalogu zawierającym binaria.

Przekodowanie (plik TCX) może być deklarowane bezpośrednio w pliku TeX-owym. Począwszy od wersji Web2c 7.4, wymaga to podania w wierszu poleceń opcji `--parse` lub włączenia jej na stałe, co wymaga zmiany w głównym pliku konfiguracyjnym `texmf.cnf`:
`parse_first_line = t`
(t -- od `true', zamiast domyślnego przypisania f -- od `false').

Przykładowo, jeśli pierwszy wiersz pliku zawiera komentarz strukturalny postaci
`%&mex --translate-file=il2-pl`
to plik może być przetworzony za pomocą polecenia `pdfetex plik.tex`; zostanie wtedy wczytany format `mex.fmt` oraz tablica `il2-pl.tcx` przekodowania z układu iso8859-2 do układu fontów PL (wewnętrznego dla programu TeX).

W dystrybucjach dostarczono szereg plikow TCX. Można je znaleźć w katalogu `texmf/web2c/`:

amiga-pl.tcx | AmigaPL do PL
il2-pl.tcx | iso8859-2 (latin2) do PL
cp1250pl.tcx | Windows cp1250 do PL
cp852-pl.tcx | IBM cp852 do PL
macce-pl.tcx | Apple MacCE do PL
maz-pl.tcx | Mazovia do PL

### III. Polskie fonty PostScriptowe

Aktualne dystrybucje zawierają fonty serii PL (spolonizowane standardowe dla TeX-a fonty CM) w wersji Type 1 (postscriptowe). Można je także znaleźć w najbliższym węźle CTAN lub jego kopii, np.:
`ftp://sunsite.icm.edu.pl/CTAN/fonts/psfonts/polish/plpsfont/`.
Pliki `.pfb` powinny znaleźć się w podkatalogu `texmf/fonts/type1/public/pl/` naszej instalacji, pliki map fontowych (`.map`) w katalogu `texmf/fonts/map/dvips/pl/` zaś wektory kodowań (`.enc`) -- w katalogu `texmf/fonts/enc/dvips/pl/`

W dystrybucjach opartych na Web2c zautomatyzowano, poprzez użycie programu `updmap`, proces tworzenia map fontowych dla programów `dvips`, `pdftex` i `dvipdfm`. Poniżej omówiono więc jedynie czego ten proces dotyczy.

Sterownik `dvips` (zamieniający wynik pracy TeX-a, plik DVI, do formatu PostScript) wymaga aby deklaracje map fontowych (dla fontów PL konkretnie zawartość `texmf/fonts/map/dvips/pl/pl.map`) były dołączone do pliku `texmf/fonts/map/dvips/updmap/psfonts.map`. Mapy fontowe można alternatywnie dołączyć w pliku `texmf/dvips/config/config.ps` (lub jego lokalnej kopii), dopisując wiersz:
`p +pl.map`
po deklaracji głównej mapy fontowej: `p psfonts.map`.

Aby fonty Type 1 były użyte przez program `pdfTeX`, należy sprawdzić jakie mapy fontowe są deklarowane w pliku `texmf/fonts/map/pdftex/updmap/pdftex.map` -- powinien on także zawierać deklaracje map fontowych dla fontów PL.

W dystrybucjach wszystkie aktualnie dostępne polskie fonty Type1 są gotowe do użycia zarówno przez program `dvips`, jak i `pdftex`.

Bardziej szczegółowe omówienie instalacji fontów Type1 zawarte jest w artykule Instalowanie fontów Type1/True Type.

Staszek Wawrykiewicz (StaW at gust.org.pl), 18.01.2005.