summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/tex-virtual-academy-pl/idx/porzadek.html
blob: 11c4a6d7eaa0d1aa94df6976f676d6b78bf78428 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Content-language" content="pl">
<meta name="Author" content="W³odzimierz Macewicz">
<title> TeX na indeksie</title>
</head>
<body bgcolor=#F0F0A0>

<center>
<h2> TeX na indeksie</h2><p>

<i></i> <p>
<i></i> <p>
autor: Bogus³aw Lichoñski</i>
</center>

<hr>

<p>

<center>
<h3>Spis tre¶ci</h3><p>
</center>

<a href=#wprowadzenie>Wprowadzenie<br>
<a href=#polsku>Indeks po polsku</a><br>
<dd><a href=#komp>Jêzyk polski a komputery</a><br>
<dd><a href=#reguly>Regu³y sortowania po polsku</a><br>
<dd><a href=#sortowanie>Sortowanie cyfr</a><br>
<a href=#skorowidz>Zrób skorowidz</a><br>
<a href=#uzyt>Programy i makra u¿ytkowe</a><br>
<dd><a href=#PLindex><code><b>MakeIndex</b></code> i <code><b>PLindex</b></code></a><br>
<dd><a href=#uzywac>Jak u¿ywaæ <code><b>PLindex</b></code></a><br>
<dd><a href=#bieg><code><b>PLindex</b></code> w biegu</a><br>
<dd><a href=#idxmac><code>IDXMAC</code> i <code>PLIDXMAC</code></a><br>
<dd><a href=#pierwszy><code>PLIDXMAC</code> po raz pierwszy</a><br>
<dd><a href=#pauzy>Indeks z pauzami</a><br>
<dd><a href=#potrafi>Co jeszcze potrafi <code>PLIDXMAC</code></a><br>
<a href=#zakon>Zakoñczenie</a><br>
<a href=#dostep>Dostêp</a><br>
<a href=#bib>Bibliografia</a><br>
<a href=#przy>Przypisy</a><br>

<i></i><p>

<h3><a name=wprowadzenie>Wprowadzenie</h3>

<p>Na pewno ka¿dy z nas korzysta³ z indeksu. Niekiedy daje on nieocenione
us³ugi, szczególnie wtedy, gdy czytamy grube i ciekawe tomisko. Niemal
niemo¿liwe wydaje siê korzystanie z TeXbiblii, czyli dzie³a Donalda
E. Knutha ,,The TeXbook'', bez obszernego skorowidzu.

<p>Indeks nazwa³bym tradycyjnym oszczêdzaczem czasu. Je¿eli dzie³o jest
czytane przez wiele osób, to z pewno¶ci± czas potrzebny na stworzenie
skorowidzu bêdzie o wiele krótszy od ³±cznego czasu,
jaki musz± straciæ czytelnicy
na odszukanie interesuj±cego zagadnienia. Nie muszê chyba przekonywaæ
nikogo, kto czêsto korzysta z indeksów o ich niezwyk³ej przydatno¶ci.
Je¶li jednak kto¶ w±tpi, przytoczê przyk³ad. Posiadana przeze mnie gruba
ksi±¿ka kucharska nie zawiera prawie ilustracji. Znalezienie w niej
przepisu na jajecznicê zajê³o mi 22 sekundy. Przy braku indeksu sekundy
zast±pi³yby z pewno¶ci± minuty -- choæ z punktu widzenia
prawdopodobieñstwa istnieje szansa odnalezienia ¿±danego przepisu przy
pierwszym otworzeniu ksi±¿ki...

<p>Je¶li wiêc indeks powinien byæ nieodzownym elementem
ka¿dej naukowej pozycji,
to dlaczego tak czêsto jest on pomijany?

<p>Otó¿ proces tworzenia indeksu nigdy nie by³ i nie bêdzie ³atwy.
Bardzo trudno wiêc znale¼æ osobê, która podejmie siê tej pracy.
Winne takiego stanu rzeczy s± tak¿e wydawnictwa, które czêsto
nie podejmuj± wysi³ków, by tworzyæ indeksy.

<p>Pierwszym problemem jest wybór koncepcji, czyli pomys³u na skorowidz.
Indeks powinien znacznie u³atwiaæ czytelnikowi dostêp do tre¶ci dzie³a,
i to w sposób najprostszy. Trudn± spraw± jest wiêc uk³ad logiczny hase³ w indeksie
oraz ich dobór. Ju¿ w tym pierwszym etapie twórca skorowidzu musi kilka
razy przeczytaæ dzie³o i zastanowiæ siê, jak wygl±daæ ma skorowidz, by
by³ zgodny z pierwotn± koncepcj±.

<p>Druga czê¶æ pracy, to ,,wychwycenie'' wszystkich hase³ i stron, na
których te has³a wystêpuj±, oraz sortowanie -- praca ta wykonywana
bez pomocy komutera jest przys³owiowo benedyktyñska.

<p>O ile pierwszy z etapów jest zawsze trudny i pracoch³onny, to jednak przy
du¿ym do¶wiadczeniu redaktora mo¿e byæ sprawnie wykonany;
drugi etap mo¿e wykonaæ za
cz³owieka maszyna, czyli komputer wraz z oprogramowaniem.
Nie mo¿na pominin±æ faktu, i¿ do rozwi±zania powy¿szego problemu
idealnie nadaje siê... TeX.

<p>U¿ytkownicy LaTeX-a ju¿ od dawna mog± tworzyæ skorowidze i sortowaæ je
przy pomocy programu <code><b>MakeIndex</b></code>. Przygotowanie indeksu wygl±da nastêpuj±co:

<ul>
<li>tworzymy dokument LaTeX-owy, w którym
      etykietujemy s³owa, wybrane do skorowidzu przy pomocy
      komendy <code>\index</code>

<li>kompilujemy i otrzymujemy nieposortowany plik <code>.idx</code>, zwieraj±cy
      has³a w kolejno¶ci wystêpowania w tek¶cie

<li>program <code><b>MakeIndex</b></code> sortuje wej¶ciowy plik <code>.idx</code>, tworz±c posortowany plik
      <code>.ind</code> bêd±cy z³o¿onym skorowidzem

<li>kolejna kompilacja daje w efekcie publikacjê z indeksem
</ul>

<p>Powy¿sze cztery kroki opisane s± szczegó³owo w rozdziale 
-- ,,<a href=#skorowidz>Zrób skorowidz</a>''.

<p>Oczywi¶cie w tym miejscu nasun±æ mo¿e siê kilka pytañ, jak choæby ,,czy
mo¿na korzystaæ z <em>plain</em>-TeX-a?'', czy te¿ ,,jak radziæ sobie z tekstami
polskimi?''. Odpowiedzi na te pytania oraz opis jak radziæ
sobie z powy¿szymi problemami w praktyce, udzielam w tym artykule.


<h3><a name=polsku>Indeks po polsku</a></h3>

<p>W rozdziale tym opisujê zasady, wed³ug których
powinien byæ sortowany indeks zawieraj±cy polskie wyrazy.

<p>Okazuje siê, i¿ brak w Polsce stuprocentowo jasnej i wyczerpuj±cej
normy okre¶laj±cej sposób porz±dkowania hase³ w skorowidzach.
Istnieje -- moim zdaniem nie do koñca wyczerpuj±ca temat --
norma PN--80/N--01223 ,,Szeregowanie alfabetyczne'',
której przedmiotem s±:
<blockquote><i>
zasady szeregowania w porz±dku alfabetycznym w katalogach,
bibliografiach, opracowaniach dokumentacyjnych i innych wykazach
dokumentów oraz indeksach
</i></blockquote>

<h4><a name=komp>Jêzyk polski a komputery</a></h4>

<p>Pierwszym problemem maria¿u jêzyka polskiego i komputera jest kodowanie
polskich znaków diakrytycznych na komputerze PC. Jak powszechnie wiadomo
PC zosta³ stworzony dla potrzeb jêzyka angielskiego i dopiero w wersji 5.0
systemu operacyjnego DOS uwzglêdniono jêzyki narodowe.

<p>Gdy komputer PC znalaz³ siê na polskich biurkach, zaistnia³a
potrzeba wprowadzenia standardu kodowania polskich znaków diakrytycznych.
Wymy¶lono wiêc standard Mazovia, który do dzi¶ jest
u nas powszechnie stosowany<sup><a href=#red1>1r</a></sup>. 
Firmy IBM i Hewlett-Packard nie przejê³y siê
tym faktem i stworzy³y standard Latin2<sup><a href=#red2>2r</a></sup>, 
zawieraj±cy
tak¿e wszystkie ,,nasze'' znaki.

<p>Je¶li chodzi o polski format MeX, to przewiduje on u¿ycie obu
standardów w dokumentach TeX-owych, wiêc program powinien sortowaæ
polskie wyrazy w obu standardach. Poniewa¿ do pewnego czasu w Polsce
królowa³a nieprogramowalna karta Hercules, wiêc w plikach ¼ród³owych
<code>.tex</code> u¿ywano powszechnie notacji prefiksowej do oznaczania polskich
znaków (np. <samp>`±'=`/a'</samp>). Programy sortuj±ce indeksy po polsku
powinny wiêc przewidywaæ i tê mo¿liwo¶æ
z epoki przed-MeXowej.

<h4><a name=reguly>Regu³y sortowania po polsku</a></h4>

<p>Regu³y sortowania po polsku ujête s± w normie
PN--80/N--01223 [1],
która mówi, i¿ porz±dek w indeksie powinien byæ zgodny
z porz±dkiem w alfabecie polskim z dodaniem liter `q', `v', `x'.

Alfabet polski z literami q, v, x.

<pre><samp>

a ± b c æ d e ê f g h i j k l ³ m n

ñ o ó p q r s ¶ t u v w x y z ¼ ¿

</samp></pre>


<p>Obce znaki diakrytyczne nie powinny wp³ywaæ na porz±dek.
Chocia¿ w poprzednim zdaniu mo¿naby s³owo ,,obce'' zamieniæ
na ,,wszelkie'', gdy¿ jak mówi norma na stronie 2:
<blockquote><i>
dopuszcza siê nieuwzglêdnienie w szeregowaniu polskich znaków
diakrytycznych
</i></blockquote>
Nie wydaje siê jednak, by taka forma sortowania by³a popularna i nie jest
uwa¿ana powszechnie za najbardziej wskazan±.
O ile mi wiadomo, ¿aden program
systemowy nie dzia³a wed³ug powy¿szej 
normy<sup><a href="#f1">1</a></sup>

<p>Porz±dek w polskich skorowidzach, to tak zwany porz±dek s³owowy, czyli
spacje i znaki interpunkcyjne zostan± umieszczone przed literami
alfabetu. Norma niezbyt jasno o tym mówi. Na stronie 1
czytamy:
<blockquote><i>
W szeregowaniu nale¿y braæ pod uwagê alfabetyczn± kolejno¶æ wyrazów,
a w ich obrêbie -- liter. Wystêpuj±ce miêdzy wyrazami znaki
interpunkcyjne, spacje i ³±czniki nale¿y traktowaæ jako znaki
rozdzielaj±ce poszczególne wyrazy
</i></blockquote>

<p>Maj±c na wzglêdzie powy¿szy cytat, przyjrzyjmy siê przyk³adowi:

<pre>
poprawnie             nie poprawnie
- - - - -             - - - - - - -
katalog informatyczny katalogi
katalog przedmiotowy  katalog informatyczny
katalogi              katalog przedmiotowy
</pre>

<p>Zauwa¿my, ¿e polski alfabet zawiera kilka znaków, których nie znajdziemy
w ¿adnym innym alfabecie narodowym. Ich wyst±pienie w alfabecie jest
naturalne, to znaczy wystêpuj± one zawsze po literze, która w znacznej
czê¶ci j± tworzy.


<pre>
l &lt;&lt; ³          L &lt;&lt; £
</pre>

(znak  <code>&lt;&lt;</code>  oznacza tu relacjê porz±dku w s³owniku polskim)

<p>Porz±dek wielkich i ma³ych liter w jêzyku polskim jest inny ni¿
w angielskim. Ma³a litera wyst±pi przed wielk± w dwu identyczny s³owach,
na przyk³ad:

<pre>
polski &lt;&lt; Polski   (po polsku)
Polish &lt;&lt; polish   (po angielsku)
</pre>

<p>Poruszona w ostatnim akapicie kwestia jest jednak bardzo kontrowersyjna.
Pomimo wielu poszukiwañ ujêtej w normie jasnej definicji,
nic nie uda³o mi siê znale¼æ.
W poradni jêzykowej Uniwersytetu Gdañskiego
uzyska³em informacjê, i¿ precyzyjnej normy nie znajdê, jednak
istnieje zasada, ¿e ma³e
litery powinny byæ przed wielkimi. Gdy poda³em kilka przyk³adów
nie stosowania tej zasady
z dzie³ niez³ych przecie¿ wydawnictw (jak choæby ,,Wiedza Powszechna''),
otrzyma³em odpowied¼, ¿e tylko bardzo powa¿ne wydawnictwa przywi±zuj±
wagê do tak istotnej regu³y (sic!).

<p>S³owniki niestety czêsto nie przestrzegaj± tej zasady. Jedynie bardzo
powa¿ne publikacje jak na przyk³ad w 4-o tomowej  Encyklopedii powszechnej
PWN wydanie I rok 1973 na stronie xi wyra¼nie wspomina siê i¿:
<blockquote><i>
Za podstawê uk³adu hase³ EP PWN przyjêto kolejno¶æ liter alfabetu
polskiego -- od ma³ych liter do du¿ych
</i></blockquote>
Podobnie Encyklopedia popularna PWN wydanie VI rok 1984
wydana pod redakcj± Rafa³a £±kowskiego, mimo i¿ wszystkie has³a napisane
s± wersalikami, uwzglêdnia poprawny sposób sortowania.

<p>Niestety, niektóre wydawnictwa zapominaj± o normach i w sposób dowolny
umieszczaj± has³a w s³ownikach, stosuj±c najczê¶ciej angielskie normy
do porz±dkowania uk³adu hase³. Jeszcze dziwniejsze wydaje siê jednak
stosowanie polskich norm do sortowania s³ów angielskich, sta³o siê tak
na przyk³ad w angielsko-polskim i polsko-angielskim S³owniku minimum
Katarzyny Billip i Zofii Choci³owskiej, wydanym przez Wiedzê Powszechn±
w 1968 roku, wydanie II. Na stronie 224 mo¿na znale¼æ has³a
<code>polish</code> i <code>Polish</code>,
napisane w wymienionej w³a¶nie kolejno¶ci...

<p>Natomiast zupe³nie niezrozumia³e dla mnie jest stosowanie w tym samym
s³owniku i na tej samej stronie ró¿nych zasad porz±dkowania! W ,,S³owniku
ortograficznym jêzyka polskiego'' PWN, pod redakcj± Mieczys³awa
Szymczaka, z roku 1992, wydanie 15, na stronie 612 znajduj± siê has³a:

<pre>
polonez
Polonez
 ...
Polka
polka
</pre>

<p>Po bli¿szym przyjrzeniu siê temu zjawisku mo¿na zauwa¿yæ pewn±
w³asno¶æ chronologiczn±.
Otó¿ starsze wydania -- mniej wiêcej sprzed 1970
roku -- stosuj± zasadê porz±dkowania dwu identycznych hase³,
rozpoczynaj±cych siê od litery ma³ej lub wielkiej
(w kolejno¶ci: ma³a, wielka), za¶ wydania nowsze nie stosuj±
¿adnych zasad.
S±dzê, ¿e wszystkiemu winne s± komputery i oprogramowanie
zapo¿yczone od Anglosasów.


<h4><a name=sortowanie>Sortowanie cyfr</a></h4>
<p>Liczebniki g³ówne powinny byæ
uporz±dkowane wed³ug ich dos³ownego znaczenia, niezale¿nie od tego, czy
liczba jest zapisana s³ownie, czy jako ci±g cyfr.
W tym celu u¿yjemy nastêpuj±cej komendy:

<pre>
\index{trzyna¶cie@13}
</pre>


W skorowidzu pojawi siê wiêc has³o `trzyna¶cie', lecz algorytm sortowania
potraktuje ten napis jako liczbê `13'.

<p>Na stronach 3 i 8 norma [1] mówi, i¿
liczebniki porz±dkowe powinny byæ uporz±dkowane wed³ug
ich warto¶ci, niezale¿nie od dos³ownego systemu zapisu (arabski,
rzymski). U¿ytkownik znów mo¿e pos³u¿yæ siê znaczkiem `@'.

<pre>
\index{19.I.@I.}
\index{08.vii.@vii.}
\index{27.06.@06.}
</pre>

<p>W jêzyku polskim po liczebnikach porz±dkowych piszemy kropkê.

<h3><a name=skorowidz>Zrób skorowidz</a></h3>

<p>Zaawansowani u¿ytkownicy LaTeX-a na pewno tworzyli ju¿ skorowidze
i proces ich powstawania nie jest dla nich ¿adn± tajemnic±.
Dla wszystkich, którzy nie mieli tej okazji, podajê krótki przepis
jak tego dokonaæ:


<ul>
<li>Dodaj styl <code>makeidx</code> jako parametr komendy <code>\documentstyle</code>
  (ujêty w nawiasy kwadratowe np. <code>\documentstyle[makeidx]{article}</code>)

<li>Umie¶æ w preambule komendê <code>\makeindex</code> tak, aby
  znajdowa³ siê ona pomiêdzy komendami
  <code>\documenstyle</code> a <code>\begin{document}</code>

<li>Umie¶æ w tek¶cie komendê <code>\printindex</code> w miejscu, w którym chcesz
  umiejscowiæ skorowidz (zwykle jest to koniec dokumentu --
  bezpo¶rednio przed komend± <code>\end{document}</code>)
</ul>

<p>Zastosowanie siê do powy¿szych trzech punktów da oczywi¶cie
skorowidz pusty, nie wyznaczyli¶my bowiem hase³, które pojawi± siê
w indeksie. Obok wybranego s³owa wpisaæ nale¿y komendê
<code>[\makeescape!]\index{!argument}</code>, której argument musi zawieraæ s³owo pojawiaj±ce
siê potem w skorowidzu. Dla przyk³adu przyjrzyjmy siê ,,wyrwanemu''
z dokumentu fragmentowi:

<pre>
... pusta linia oznacza dla TeX-a
koniec akapitu\index{akapit}, wiêc ...
</pre>

<p>Po takim zabiegu w skorowidzu pojawi siê s³owo `akapit' wraz z numerem
strony, na której s³owo `akapitu' wyst±pi.

<p>Oto krótki przyk³ad LaTeX-owego
dokumentu<sup><a href="#f2">2</a></sup>,
do którego tworzy siê mini-indeks o nazwie <code>przyklad.tex</code>:

<pre>
\documentstyle[makeidx]{article}
\makeindex
\begin{document}
 Znaki koñca linii traktowane s± przez
 TeX-a tak samo jak spacja\index{spacja}.
 Dowolny ci±g spacji jest traktowany
 przez TeX-a tak samo jak jedna
 spacja\index{spacja}. Zatem nie jest
 wa¿ne, czy odstêp pomiêdzy s³owami
 jest wprowadzony jako jedna, czy
 wiêcej spacji\index{spacja}.
 Jednak¿e pusta linia oznacza dla
 TeX-a koniec akapitu\index{akapit}.
\printindex
\end{document}
</pre>

<p>Uznaæ mo¿na w tym miejscu, i¿ wykonano pierwszy z czterech kroków
opisanych w rozdziale pierwszym.

<p>Drugi krok, czyli kompilacja LaTeX-em, mo¿e wydaæ siê ³atwy. Jest tak
w istocie, o ile posiadamy plik stylu <code>makeidx.sty</code>. Plik ten zawiera
definicje makr do tworzenia indeksów i dystrybuowany jest wraz
z programem <code><b>MakeIndex</b></code>. <code>makeidx.sty</code> umie¶ciæ nale¿y
w przeszukiwanym przez TeX-a
katalogu<sup><a href=#f3>3</a></sup>
<code>...\texinput</code> lub katalogu bie¿±cym; je¶li plik ten
istnieje kompilacja
powinna ,,przej¶æ'' bez k³opotu.

<pre>
&gt;tex &lplain przyklad.tex
</pre>

(znak `<code>&gt;</code>' symbolizuje prompt)

<p>Krok trzeci to sortowanie powsta³ego z powy¿szej kompilacji pliku
<code>przyklad.idx</code>, który zawiera linia po linii has³a wraz z numerami
stron, na których wystêpuj± w kolejno¶ci wystêpowania ich w dokumencie.
Oto postaæ pliku <code>przyklad.idx</code>:

<pre>
\indexentry{spacja}{1}
\indexentry{spacja}{1}
\indexentry{spacja}{1}
\indexentry{akapit}{1}
</pre>

<p>Has³a w plikach <code>.idx</code> o powy¿szej strukturze mo¿na sortowaæ na przyk³ad
programem <code><b>MakeIndex</b></code> w nastêpuj±cy sposób:

<pre>
&gt;makeindex przyklad.idx
</pre>

<p>Powstanie plik o nazwie <code>przyklad.ind</code>, który jest
gotowym do kompilacji uporz±dkowanym skorowidzem.
Wprowadzany jest on do sk³adu przez komendê <code>\printindex</code>. Oto jego
postaæ:

<pre>
\begin{theindex}
  \item akapit, 1
  \indexspace
  \item spacja, 1
\end{theindex}
</pre>

<p>Krok ostatni to kolejna kompilacja LaTeX-em. Oprócz zapisanego
dokumentu pojawi siê nowa strona ze skorowidzem.


<h3><a name=uzyt>Programy i makra u¿ytkowe</a></h3>

<p>W pierwszym rozdziale postawi³em sobie dwa nieco k³opotliwe pytania, na
które obieca³em odpowiedzieæ -- co niniejszym czyniê.

<h4><a name=PLindex><code><b>MakeIndex</b></code> i <code><b>PLindex</b></code></a></h4>
<p>Do¶wiadczony u¿ytkownik zauwa¿y³ z pewno¶ci±, ¿e w powy¿szym przyk³adzie
kompilacja pliku <code>przyklad.tex</code> nie przebiegnie poprawnie! Stanie siê
tak, gdy¿ LaTeX nie ,,zna'' polskich znaków i w miejscach ich
wyst±pienia wyka¿e b³±d...

<p>No w³a¶nie -- co dzieje siê z indeksem, gdy zaczynamy u¿ywaæ 
<code>LaMeX-a</code> do
sk³adania polskich publikacji? W skorowidzu pojawiæ siê mog± oczywi¶cie
polskie wyrazy zawieraj±ce polskie litery oraz podlegaj±ce polskim
normom sortowania. W takiej sytuacji program <code><b>MakeIndex</b></code> nie wystarcza.

<p>Poniewa¿ ¼ród³a programu <code><b>MakeIndex</b></code> dostêpne s± jako 
<i> free software</i>, wiêc
spróbowa³em zaimplementowaæ <code><b>MakeIndex</b></code> dla potrzeb polskiego u¿ytkownika.
Powsta³ program <code><b>PLindex</b></code>, który sortuje wed³ug zasad opisanych w rozdziale
drugim -- ,,Indeks po polsku''.

<p>Program <code><b>PLindex</b></code> posiada wszystkie mo¿liwo¶ci programu 
<code><b>MakeIndex</b></code>
(ang. upward compatible). Szczegó³owe informacje o mo¿liwo¶ciach obu
programów znale¼æ mo¿na w pracach [3]
oraz [4].
Jedyn± now± opcj± dodan± do programu <code><b>PLindex</b></code> jest `<code>-z</code>'.


<h4><a name=uzywac>Jak u¿ywaæ <code><b>PLindex</b></code></a></h4>
<p>Oto przepis jak u¿ywaæ <code><b>PLindex</b></code> do polskich skorowidzów:

\noindent
<pre>
>plindex -z [mazovia|latin2|prefixing]
                            ... foo.idx
</pre>


<p>Po parametrze `<code>-z</code>' wpisaæ nale¿y jeden z trzech podanych napisów,
okre¶laj±cych sposób kodowania polskich znaków diakrytycznych.
Trzy kropki oznaczaj±, ¿e istniej± inne parametry
(pokrywaj±ce siê znaczeniem z parametrami programu <code><b>MakeIndex</b></code>).

<p>Oczywiste wydaje siê, i¿ nie mo¿na sortowaæ zbioru wyrazów, u¿ywaj±c
zasad dwóch ró¿nych jêzyków narodowych. Na przyk³ad nie mo¿na sortowaæ
jednocze¶nie w jêzyku polskim (opcja `<code>-z</code>') oraz niemieckim (opcja `<code>-g</code>').
Je¿eli u¿ytkownik poda obie opcje, ostatnia z nich bêdzie brana pod
uwagê przez program. Tak¿e opcja `<code>-c</code>'<sup><a href=#f4>4</a></sup>
nie jest uwzglêdniana w trybie sortowania po polsku.

<p>Domy¶lnie (ang. default) czyli bez jakiejkolwiek opcji <code><b>PLindex</b></code> dzia³a
dok³adnie tak samo jak <code><b>MakeIndex</b></code>, to znaczy sortuje zgodnie z angielskimi
normami i angielskim alfabetem.


<h4><a name=bieg><code> <b>PLindex</b></code> w biegu</a></h4>
<p>Pozwólmy teraz popracowaæ programowi <code><b>PLindex</b></code>. We¼my na przyk³ad taki oto
plik <code>.idx</code> z polskimi znakami kodowanymi w standardzie Mazovii
i nazwijmy go <code>testpl.idx</code>

<pre>
\indexentry{K¡T}{1}
\indexentry{k¡T}{1}
\indexentry{k±t}{1}
\indexentry{k±t}{100}
\indexentry{K±t}{1}
\indexentry{k±T}{1}
\indexentry{KAT}{1}
\indexentry{kAT}{1}
\indexentry{kat}{1}
\indexentry{Kat}{1}
\indexentry{kaT}{1}
\indexentry{kó³ko}{1}
\indexentry{kolka}{1}
</pre>


<p>Wpiszmy teraz w linii komend polecenie:

<pre>
&gt;plindex -z mazovia test.idx
</pre>


<p>Po krótkiej chwili powinni¶my uzyskaæ rezultat w postaci pliku <code>.ind</code>
o nazwie <code>testpl.ind</code> w postaci ¼ród³owej:

<pre>
\begin{theindex}
  \item kat, 1
  \item kaT, 1
  \item kAT, 1
  \item Kat, 1
  \item KAT, 1
  \item k±t, 1, 100
  \item k±T, 1
  \item k¡T, 1
  \item K±t, 1
  \item K¡T, 1
  \item kolka, 1
  \item kó³ko, 1
\end{theindex}
</pre>

Wygl±d w sk³adzie
<pre>

  kat, 1

  kaT, 1

  kAT, 1

  Kat, 1

  KAT, 1

  k±t, 1, 100

  k±T, 1

  k¡T, 1

  K±t, 1

  K¡T, 1

  kolka, 1

  kó³ko, 1

</pre>

<hr>

oraz pliku-ilg<sup><a href=#f5>5</a></sup>
o nazwie <code>testpl.ilg</code>.

<p>Zachêcam do przetestowania programu przy u¿yciu wszelkich sposobów.
Osobi¶cie testowa³em program wielokrotnie, miêdzy innymi pos³u¿y³em siê
zbiorem testów, jakie znalaz³y siê w pakiecie programu 
<code><b>MakeIndex</b></code>
w wersji 2.12. <code><b>PLindex</b></code> spisa³ siê bez zarzutu.


<h4><a name=idxmac><code>IDXMAC</code> i <code>PLIDXMAC</code></a></h4>
<p>Mo¿na powiedzieæ, ¿e dotychczas artyku³ przeznaczony by³ tylko dla
u¿ytkowników LaTeX-a i nie zdziwiê siê, je¶li kogo¶ zdenerwuje ta
jednostronno¶æ.

<p>W pakiecie programu <code><b>MakeIndex</b></code> w wersji 2.12 znale¼æ mo¿na plik 
<code>idxmac.tex</code>,
który zawiera makra do sk³adania skorowidzów w systemie <em>plain</em>-TeX.
Poniewa¿ makra te po prostu nie dzia³a³y, spróbowa³em wiêc je poprawiæ
i nieco zmodyfikowaæ dla u¿ytkownika formatu MeX.

<p>Po przetestowaniu makr </code>IDXMAC</code> znalaz³em w nich kilka 
b³êdów oraz
niezgodno¶ci z systemem LaTeX, które usun±³em; zmiany te szczegó³owo
opisa³em w [5].

<code>IDXMAC</code> z naniesionymi poprawkami i drobnymi dodatkami
do³±czam do pakietu {<code><b>PLindex</b></code>} pod nazw± <code>PLIDXMAC</code> 
w nadziei,
¿e oka¿± siê przydatne dla u¿ytkowników formatu <em>plain</em>.


<h4><a name=pierwszy><code>PLIDXMAC</code> po raz pierwszy</a></h4>
<p>W pakiecie programu <code><b>PLindex</b></code> znajduje siê plik <code>plidxmac.tex</code>, który zawiera
wszystkie definicje potrzebne do tworzenia skorowidzu makr.

<p>Plik ten nale¿y do³±czyæ do tworzonego dokumentu TeX-owego komend±:

<pre>
\input plidxmac.tex
</pre>

któr± nale¿y umie¶ciæ przed wywo³aniem jakiejkolwiek nowej komendy,
s³u¿±cej do tworzenia indeksu. Mo¿e to byæ na przyk³ad pierwsza linia
tego dokumentu.

<p>W tym momencie mamy do dyspozycji trzy<sup><a href=#f6>6</a></sup>
nowe komendy i mimo i¿ nie jest ich zbyt wiele, w zupe³no¶ci
wystarcz± one do wygenerowania skorowidzu.
Kolejno¶æ wywo³ania komend jest istotna; oto ich uk³ad:

 <pre>
 ...
\makeindex
 ...
\index{!argument}
\index{!argument}
 ...
\index{!argument}
 ...
\printindex
 ...
</pre>


<p>Aby stworzyæ najprostszy skorowidz, wystarczy w pliku ¼ród³owym
(rozszerzenie <code>.tex</code>)
umie¶ciæ komendê <code>\makeindex</code>. Nastêpnie obok wybranych do indeksu s³ów
nale¿y wpisaæ komendê <code>[\makeescape!]\index{!argument}</code>, której dok³adny opis znajdziesz
poni¿ej. Makro <code>\index</code> s³u¿y do etykietowania s³ów, które maj± znale¼æ siê
w skorowidzu.

<p>Miejsce publikacji, w którym ¿yczymy sobie umie¶ciæ indeks,
oznaczyæ nale¿y
komend± <code>\printindex</code>, rzecz jasna skorowidz powinien byæ wcze¶niej posortowany
i z³o¿ony [4].

<p>Je¶li we¼miemy znany ju¿ plik <code>przyklad.tex</code> w postaci:

<pre>

\input plidxmac.tex
\makeindex
 Znaki koñca linii traktowane s±
 przez TeX-a tak samo jak
 spacja\index{spacja}. Dowolny ci±g
 spacji jest traktowany przez TeX-a
 tak samo jak jedna
 spacja\index{spacja}. Zatem nie jest
 wa¿ne, czy odstêp pomiêdzy
 s³owami jest wprowadzony jako jedna,
 czy wiêcej spacji\index{spacja}.
 Jednak¿e pusta linia oznacza dla
 TeX-a koniec akapitu\index{akapit}.
\printindex

</pre>

to plik <code>przyklad.idx</code> nale¿y posortowaæ wydaj±c polecenie:

<pre>
&gt;plindex -z Mazovia -s plaintex.ist
                           przyklad.idx
</pre>


<p>Zagadkowe mo¿e tu byæ pojawienie siê pliku <code>plaintex.ist</code>. Dok³adnie
opisa³em tê systuacjê w dokumentacji do programu <code><b>PLindex</b></code> 
[4],
zaznaczê w tym miejscu, i¿ plik ten, to tak zwany plik stylu i powinien
znajdowaæ siê w kartotece bie¿±cej lub kartotece okre¶lonej przez
zmienn± systemow± <code>INDEXSTYLE</code> 
(przyk³adowo<br> <code>SET INDEXSTYLE=c:\tex\ist</code>),<br>
oraz przedstawiê jego zawarto¶æ:

<pre>
preamble
"\\beginindex\n"
postamble
"\n\n\\endindex\n"
</pre>


<p>Posortowany plik <code>przyklad.ind</code> jest wspominanym ju¿ i gotowym do
kompilacji uporz±dkowanym skorowidzem, który wprowadzany jest do sk³adu
komend± <code>\printindex</code>. Oto jego postaæ:

<pre>
\beginindex
\item akapit, 1
\indexspace
\item spacja, 1
\endindex
</pre>

<h4><a name=pauzy>Indeks z pauzami</a></h4>
<p>Poniewa¿ niektóre dzie³a posiadaj± indeksy, w których zamiast wciêæ
pojawiaj± siê pauzy, dlatego zdefiniowa³em makro <code>\indexemdashes</code>, które
wykonuje tê czynno¶æ. Makro to powinno pojawiæ siê w pliku ¼ród³owym
przed makrem <code>\printindex</code>.



<h4><a name=potrafi>Co jeszcze potrafi <code>PLIDXMAC</code></a></h4>
<p>W rozdziale ,,<code>PLIDXMAC</code> po raz pierwszy''
wspomnia³em o innych mo¿liwo¶ciach,
jakie nios± z sob± makra <code>PLIDXMAC</code>.

<p>Pierwsz± z nich jest wybór konwencji zapisu numerów stron. Domy¶lnie
przy has³ach pojawiaj± siê cyfry arabskie, mo¿na tak¿e numerowaæ
wielkimi i ma³ymi cyframi rzymskimi, a tak¿e wielkimi i ma³ymi literami.
Aby uzyskaæ który¶ z opisanych efektów, wystarczy komendê 
<code>\makeindex</code>
poprzedziæ komend±:<br>

<code>[\makeescape!]\pagenumbering{!argument}</code>,  gdzie<br>

<code>[\makeescape!]!argument</code> --&gt; <code>arabic</code> | <code>roman</code> |
<code>Roman</code> | <code>alph</code> | <code>Alph</code>

<hr>

<p>Ka¿dy, kto obok skorowidzu chcia³by stworzyæ
glosarium<sup><a href="#f7">7</a></sup>,
mo¿e dokonaæ tego w identyczny sposób, jak tworzy siê
indeks. Wystarczy u¿yæ komend <code>\makeglossary</code> oraz <code>\glossary</code>, które
odpowiadaj± makrom <code>\makeindex</code> i <code>\index</code>. Powstaje wówczas plik
z rozszerzeniem <code>.glo</code>.

<p>Umieszczenie w dokumencie sekwencji:

<pre>
\begindoublecolumns
\printindex
\enddoublecolumns
</pre>

\noindent
spowoduje z³o¿enie skorowidzu w dwu szpaltach wyrównanych do góry, za¶
umie¶ciwszy po komendzie <code>\begindoublecolumns</code>; <code>\balancecolumns</code>
wyrównanych do do³u.


<h3><a name=zakon>Zakoñczenie</a></h3>

<p>Tworzenie skorowidzów na pewno nie jest i nie bêdzie spraw± ³atw±.
Niektóre systemy -- na przyk³ad system WEB -- wspomagaj± ten proces,
tworz±c automatycznie czê¶æ indeksu. Jest to jeden z przyk³adów,
gdzie komputer wykonuje cz±stkê pracy koncepcyjnej.

<p>Rzeczywist± trudno¶ci± jest dobór kryteriów tworzenia skorowidzu dla
danego typu dzie³a. Mo¿na zdecydowaæ siê na stworzenie kilku
indeksów w obrêbie jednej publikacji, tworzyæ indeksy po ka¿dym
rozdziale czy tomie. Mo¿liwo¶ci jest na prawdê wiele. Mo¿na ¶mia³o
stwierdziæ, ¿e stworzenie odpowiedniego skorowidzu ,,dopasowanego'' do
publikacji jest swoist± sztuk±.

<p>Wiele osób w naszym kraju, pos³uguj±cych siê TeX-em jako systemem
sk³adu, tworzy mniej lub bardziej obszerne publikacje naukowe,
zapominaj±c o skorowidzach lub nie tworz±c ich z braku odpowiednich
narzêdzi. Mam nadziejê, ¿e <code><b>PLindex</b></code> i zbiór makr 
<code>PLIDXMAC</code> obudz±
w nas potrzebê ich tworzenia przydaj±c siê wielu u¿ytkownikom.

<h3><a name=dostep>Dostêp</a></h3>

<p>Program <code><b>MakeIndex</b></code> dostêpny jest np. w zasobach komputerów
CTAN. Program <code><b>PLindex</b></code> i makra <code>PLIDXMAC</code> dostêpne s±
na serwerze <a href=ftp://ftp.gust.org.pl/pub/TeX/indexing/>GUST</a>.

<h3><a name=bib>Bibliografia</a></h3>
<ol>
<!-- norma-szeregowanie-alfabetyczne -->
<li>Norma PN--80/N--01223 ,,Szeregowanie alfabetyczne'', Maj 1980.<br>
<em> Norma zg³oszona przez Ministerstwo Kultury i Sztuki. Ustanowiona
  przez Polski Komitet Miar i Jako¶ci.</em>

<!-- latex-lamport-PL -->
<li>Leslie Lamport.
<i> LaTeX  System przygotowywania dokumentów. </i>
Ariel, 1992.
T³umaczenie polskie: Piotr Wyrostek.

<!-- makeindex-lamport -->
<li>Leslie Lamport.
<code><b>MakeIndex</b></code>: An Index Processor For LaTeX.<br>
Documentation for general <code><b>MakeIndex</b></code> users, Luty 1987.

<!-- plindex -->
<li>Bogus³aw Lichoñski.
<code><b>PLindex</b></code>  polska implementacja programu <code><b>MakeIndex</b></code>.<br>
Dokumentacja dla u¿ytkowników i programistów, Wrzesieñ 1993.

<!-- plidxmac -->
<li>Bogus³aw Lichoñski.
<code>PLIDXMAC</code> makra do tworzenia skorowidzów w systemie
  plain-TeX.<br>
Dokumentacja dla u¿ytkowników i programistów, Pa¼dziernik 1993.

<!-- makeindex-chen -->
<li>Pehong Chen i Michael A. Harrison.
Index Preparation and Processing.<br>
Computer Science Division, Marzec 1987.
</ol>

<h3><a name=przy>Przypisy</a></h3><p>
<i></i><p>

<hr width=20% align=left>
<sup><a name="f1"><b>1</b></a></sup> Mimo i¿
w dokumentacji systemu DOS znale¼æ mo¿na informacjê o mo¿liwo¶ci
sortowania s³ów w jêzykach narodowych -- przy wykorzystaniu programu
systemowego <code>sort</code> -- to jednak opisana mo¿liwo¶æ nie zosta³a chyba
sumiennie
przetestowana przez twórców systemu, gdy¿... program nie dzia³a
poprawnie.


<hr width=20% align=left>
<sup><a name="f2"><b>2</b></a></sup> Tekst jest fragmentem ksi±¿ki [2].


<hr width=20% align=left>
<sup><a name="f3"><b>3</b></a></sup> Zwykle jest to katalog
okre¶lony zmienn± <code>TEXINPUT</code>, na przyk³ad poleceniem:<br>
<code>SET TEXINPUT=c:\tex\texinput</code>


<hr width=20% align=left>
<sup><a name="f4"><b>4</b></a></sup> U¿ycie tej opcji
powoduje znikanie po¶rednich (zbytecznych) spacji. Domy¶lnie wszystkie
spacje s± pamiêtane.


<hr width=20% align=left>
<sup><a name="f5"><b>5</b></a></sup> Plik-ilg jest odpowiednikiem pliku-log,
produkowanego przez TeX-a, czyli jest zbiorem komunikatów wysy³anych
przez <code>PLindex</code>.


<hr width=20% align=left>
<sup><a name="f6"><b>6</b></a></sup> W rzeczywisto¶ci
jest ich wiêcej; patrz rozdzia³ ,,Co jeszcze potrafi <code>PLIDXMAC</code>''.


<hr width=20% align=left>
<sup><a name="f7"><b>7</b></a></sup> glosarium -- od ³ac. <i> glossarium</i> zbiór
glos od ³ac. <i> glossa</i> (stary, obcy) wyraz wymagaj±cy wyja¶nienia;
s³owni(cze)k wyrazów trudnich, rzadkich, przestarza³ych, wymagaj±cych
obja¶nienia.


<hr>
<i>od red.</i><br>
<hr width=20% align=left>
<sup><a name=red1>r1</a></sup> Mazovia by³a kodem czasowo dopuszczonym przez 
Polsk± Normê, oficjalnie straci³a ju¿ swoj± wa¿no¶æ. Polska
Norma PN-93 T-42118 (zgodna z ISO-8859) okre¶la sposób kodowania
polskich znaków diakrytycznych
<hr width=20% align=left>
<sup><a name=red2>r2</a></sup> Trudno mówiæ o standardzie, skoro
na tym samym komputerze obowi±zuj± dwa ró¿ne sposoby DOS - 852 i 
Windows - CP 1250, <b> niezgodne </b> z Polsk± Norm±.

<hr>
Zredagowa³</br>
<em>W³odzimierz Macewicz</em>
<hr>
</body>
</html>