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