plmindex
, czyli
swoj� implementacj� programu makeindx
(wersja 2.12).
Program jest dost�pny w postaci pakietu spakowanego (�r�d�a)
programem zip
w instalacji TeX Live:
texmf-dist/doc/support/gustprog/plmindex.zipProgram ten s�u�y do sortowania i grupowania skorowidz�w utworzonych pakietem LaTeX. Po przetworzeniu zbioru mo�e on by� do��czony do tekstu jako gotowy skorowidz.
Kr�tki opis opcji programu mo�na uzyska� po wywo�aniu
plmindex -h
Zmiany w programie polegaj� na dostosowaniu go do pracy
z dowolnym o�mio-bitowym alfabetem (sposobem kodowania).
Prezentowana wersja pozwala na opracowanie skorowidz�w
w j�zyku polskim (kod Mazowii, cp1250, cp852 i ISO-8859-2) oraz angielskim.
Zdefiniowanie nowego j�zyka polega na zbudowaniu kilku
tablic okre�laj�cych: porz�dek leksykograficzny,
kategorie znak�w, odpowiedniki liter ma�e-du�e i
nie wymaga modyfikacji kodu programu. Wszystkie funkcje
odpowiedzialne za operowanie na ci�gach znak�w (,,stringach'')
s� sterowane tablicami. S� one ca�kowicie niezale�ne od
implementacji kompilatora C
. Program by�
kompilowany nast�puj�cymi kompilatorami:
makefile
, �atwo rozr�niane po ostatnim cz�onie
nazwy (rozszerzeniu):
.wcc
-- Watcom,
.djg
-- GNU (MS-Dos),
.gcc
-- GNU (SunOS -- og�lnie Unix).msc
-- MSC C++ 6.0 (Windows 98).emx
-- GNU (DOS >>implementacja E.Mathesa<< lub OS)
makefile
i uruchomi� program make
(lub wmake
w przypadku
pakietu Watcom i nmake w przypadku MSC) lub wyw�a�Zosta�a zdefiniowana struktura _multilanguage
zawieraj�ca tablice opisuj�ce cechy j�zyka. Odsy�acze przyporz�dkowane
nazwom p�l wskazuj� na zbiory zawieraj�ce przyk�adowe
definicje dla kodu Mazowii. Nazwa przyk�adowej tablicy
zawiera prefix okre�laj�cy definiowany j�zyk.
struct _multilanguage { p_char_u *day_name_ptr; /* tablica nazw dni tygodnia */ p_char_u *mon_name_ptr; /* tablica nazw miesi�cy */ int_u *toascii_table; /* tablica konwersji znak�w o kodach > 127 na kod ASCII np. � --> a */ a_char_u *lower_table; /* tablica konwersji ma�ych liter na du�e */ a_char_u *upper_table; /* tablica konwersji du�ych liter na ma�e */ a_char_u *char_type; /* tablica typ�w znak�w */ int_u *order_tbl; /* tablica definiuj�ca kolejno�� leksykograficzn� */ word flags; /* s�owo flag */ char_u *(*_special)(const long); /* adres funkcji dodatkowych */ char *id; /* identyfikator j�zyka */ char *name; /* nazwa j�zyka */ struct decode *decode; /* adres struktury opisuj�cej nazwy liczb */ };
struct decode { p_char_u *jedn; /* adres tablicy nazw jednostek */ p_char_u *dies; /* adres tablicy nazw dziesi�tek */ p_char_u *setki; /* adres tablicy nazw setek */ p_char_u *tys; /* adres tablicy nazw tysi�cy */ p_char_u *mil; /* adres tablicy nazw milion�w */ };definicje typ�w
typedef unsigned char char_u; typedef const unsigned char *p_char_u[]; typedef const unsigned char a_char_u[]; typedef const int int_u[]; typedef unsigned int word;Powy�sze definicje znajduj� si� w zbiorze
mkind.h
.
W celu pod��czenia nowego j�zyka nale�y utworzy� nowy zbi�r nag��wkowy zawieraj�cy opis j�zyka w postaci tabel.
Utworzony zbi�r nale�y do��czy� poleceniem
#include
do zbioru language.c
W zbiorze language.c
znajduj� si� funkcje
odpowiedzialne za operacje na ci�gach znak�w. S� one
sterowane zmienn� Language
, b�d�c� wskazaniem
na element tablicy multilanguage
zawieraj�c�
struktury wszystkich zadeklarowanych j�zyk�w. Pocz�tkowa warto��
zmiennej Language
okre�la domy�lny j�zyk
Dopuszczalna warto�� zmiennej jest okre�lona przez konstrukcj�
enum _language
, tak �e w przypadku definiowania
nowego j�zyka nale�y zdefiniowa� nowy element -- b�dzie
on identyfikatorem j�zyka.
W zbiorze language.c
znajduje si� deklaracja
tablicy struktur opisu j�zyk�w. Ostatnim elementem tablicy
musi by� opis zawieraj�cy w polu id
warto��
NULL