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` (dystrybucja 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ów PDF) polega w skrócie na uruchomieniu:

    tex-engine --ini mex.ini

gdzie tex-engine oznacza program `tex` lub `pdftex`. Obecnie, od Web2c wer. 7.5.5, używamy jednego programu: `pdftex`, zaś ,,sposób'' generowania formatu (dla tworzenia plików DVI lub PDF) zależny jest od zawartości pliku `.ini`. Zatem format do tworzenia plików PDF generujemy obecnie poleceniem: `pdftex --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 dystrybucji opartej na Web2c (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`).
  Tyle teorii co dzieje się za kulisami. Obecnie w dystrybucji TeX Live cały proces generowania formatów został zautomatyzowany: po instalacji pakietu do obsługi danego języka aktualizowane są omówione wyżej pliki konfiguracyjne, po czym generowne są pliki formatów dla wszystkich dostępnych odmian-silników TeX-a.
  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 `pdftex` z formatem `mex` bądź 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) `pdftex` w katalogu zawierającym binaria.

Przekodowanie (plik TCX) może być deklarowane bezpośrednio w pliku TeX-owym. 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 `pdftex 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 w wersji Type 1 (postscriptowe) serii PL (spolonizowane standardowe dla TeX-a fonty CM), a także znacznie rozszerzone i obecnie zalecane fonty Latin Modern. Można je także znaleźć w najbliższym węźle CTAN lub jego kopii, np.:
ftp://ftp.gust.org.pl/pub/CTAN/language/polish/plpsfont/.
ftp://ftp.gust.org.pl/pub/CTAN/fonts/lm/.

Przedstawimy tu przykład dotyczący instalacji fontów PL. 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 `dvipdfmx`. Poniżej omówiono więc tylko, 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`, `pdftex`, jak i `dvipdfmx` .

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

Staszek Wawrykiewicz (StaW at gust dot org dot pl), 30.05.2008.