summaryrefslogtreecommitdiff
path: root/info/lshort/polish/src/custom.tex
blob: 1c83e554fe5f92aa671851167d4c289a3b4a667c (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
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
% -- translate-file=il2-pl --
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Contents: Customising LaTeX output (LShort2e Introduction)
% File: custom.tex (Polish translation)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{Adaptowanie {\LaTeX}a \label{chp:adapt}}

\begin{intro}  
  Dokumenty sk³adane za pomoc± poznanych do tej pory poleceñ
  bêd± siê zapewne podoba³y zdecydowanej wiêkszo¶ci czytelników.
  Chocia¿ ich wygl±d nie bêdzie mo¿e wyrafinowany, z~pewno¶ci± jednak
  spe³ni± one podstawowe zasady sk³adu, dziêki czemu
  bêdzie siê je czyta³o ³atwo i~przyjemnie.
  
  W~niektórych wypadkach mo¿e siê jednak okazaæ, ¿e brakuje polecenia
  czy otoczenia, za pomoc± którego mogliby¶my z³o¿yæ dany fragment
  tekstu w~sposób odpowiadaj±cy potrzebom, albo te¿ ¿e sposób
  dzia³ania dostêpnej w~{\LaTeX}u instrukcji nie spe³nia naszych wymagañ.
  
  W~tym rozdziale przedstawimy, jak nauczyæ {\LaTeX}a formatowaæ
  dokumenty tak, aby wygl±da³y inaczej ni¿ w~wypadku korzystania
  jedynie ze standardowych klas i~pakietów.
\end{intro}

\section{Definiowane instrukcji i~otoczeñ}

Czytelnicy zauwa¿yli zapewne, ¿e nowo wprowadzane w~tej ksi±¿ce
polecenia ukazuj± siê w~ramkach oraz ¿e znajduj± siê one
w~skorowidzu. Aby to osi±gn±æ, nie korzystali¶my za ka¿dym razem
z~wbudowanych w~{\LaTeX}a instrukcji, lecz utworzyli¶my w³asny
pakiet, w~którym zawarli¶my nowe, potrzebne nam polecenia i~otoczenia.
Dysponuj±c takim pakietem, wystarczy po prostu napisaæ:
 %
\begin{example}
\begin{command}
\ci{polecenie}
\end{command}
\end{example}
\noindent
W~tym przyk³adzie u¿yli¶my zarówno nowego otoczenia o~nazwie
\verb+command+, odpowiedzialnego za rysowanie ramek dooko³a instrukcji,
jak te¿ nowego polecenia \verb+\ci+, s³u¿±cego do sk³adu nazw poleceñ
i~wprowadzania ich do skorowidza. Proponujemy Czytelnikom odszukanie
has³a \verb+\polecenie+ w~skorowidzu; przy ha¶le powinny byæ podane
numery stron, na których ta instrukcja wystêpuje w~ksi±¿ce.

Gdy zdecydujemy siê zaprzestaæ otaczaæ polecenia ramkami,
to do zmiany wygl±du wystarczy, ¿e zmienimy definicjê 
otoczenia \verb+command+.
Jest to znacznie ³atwiejsze od przebiegniêcia przez ca³y dokument
w~celu wy³apania w~nim wszystkich standardowych poleceñ \LaTeX{}, które
s³u¿± do rysowania ramek wokó³ s³ów.

%%<PLext>
We wstêpie do tego opracowania wspomnieli¶my, ¿e w~{\LaTeX}u mo¿emy
siê skupiæ na logicznej strukturze dokumentów.  Wskazane jest
rozró¿niæ w~tek¶cie ¼ród³owym wszystkie elementy logiczne dokumentu,
nawet je¿eli ich formatowanie jest identyczne.  Nierzadko bowiem to,
co dzisiaj formatujemy w~taki sam sposób, w~przysz³o¶ci mo¿emy chcieæ
rozró¿niæ.

Zwyk³o siê na przyk³ad sk³adaæ adresy internetowe imitacj± kroju
maszynowego. Poniewa¿ w~adresach mog± wyst±piæ znaki specjalne
{\LaTeX}a, to mo¿na by do tego celu stosowaæ instrukcjê \ci{verb}.
Lepiej jednak u¿yæ specjalnej instrukcji, np.~\ci{url}.  W~dokumencie
papierowym nie ma to znaczenia, znakowanie logiczne pozwala jednak
przedstawiæ dokument zarówno w~formie drukowanej, jak
i~hipertekstowej, w~formacie \acro{HTML} lub \acro{PDF}.
%%</PLext>

\subsection{Instrukcje definiowane przez u¿ytkownika}

Do definiowania potrzebnych nam nowych poleceñ mo¿emy u¿yæ instrukcji:
%
\begin{command}
\ci{newcommand}\verb|{|%
\emph{nazwa}\verb|}[|\emph{num}\verb|]{|\emph{tekst}\verb|}|
\end{command}
%
\noindent
Wymaga ona podania dwóch argumentów. Pierwszy z~nich, \emph{nazwa},
oznacza nazwê nowej instrukcji, natomiast \emph{tekst} to jej znaczenie,
czyli tekst, który ma zostaæ wstawiony do sk³adu w~momencie wykonania
instrukcji. Podawany w~nawiasach kwadratowych argument \emph{num} 
powinien byæ cyfr± od~1 do~9, okre¶laj±c± liczbê (obowi±zkowych) argumentów
instrukcji. Argument \emph{num} jest opcjonalny, a~jego pominiêcie
oznacza, ¿e definiowana instrukcja jest bezargumentowa.

%%<PLext>
W~czê¶ci \emph{tekst} wolno u¿ywaæ zarówno standardowych instrukcji
{\LaTeX}a, jak te¿ zdefiniowanych przez u¿ytkownika. Nie wolno jednak
korzystaæ z~tych instrukcji, które same definiuj± inne polecenia, jak
\ci{newcommand}, \ci{newenvironment} itp. Niedozwolona jest rekursja,
nie wolno te¿ w~nazwach instrukcji umieszczaæ polskich liter
diakrytycznych.
%%</PLext>

Nastêpuj±ce przyk³ady pomog± lepiej zrozumieæ zagadnienie. W~pierwszym
z~nich definiujemy instrukcjê o~nazwie \cmd{kwle}, maj±c± byæ skrótem dla
s³ów ,,Krótkie wprowadzenie do systemu \LaTeXe''. Takie polecenie 
mog³oby siê przydaæ, gdyby tytu³ ksi±¿ki mia³ w~niej wystêpowaæ wielokrotnie.
%
\begin{example}
\newcommand{\kwle}{Krótkie
wprowadzenie do systemu \LaTeXe}
% nastêpnie po \begin{document}:
\kwle; \emph{\kwle}
\end{example}
%
\noindent
Nastêpny przyk³ad ilustruje sposób wykorzystania opcjonalnego argumentu
\emph{num}. Znacznik \verb|#1| oznacza pierwszy parametr formalny
(\verb|#2| oznacza³by drugi, \verb|#3| -- trzeci
itd.). W~trakcie wykonywania tre¶ci instrukcji w~miejsce parametrów
formalnych \TeX{} wstawia argumenty podane w~jej wywo³aniu
(parametry aktualne).

Instrukcja w~poni¿szym przyk³adzie ma jeden parametr:
%
\begin{example}
\newcommand{\wle}[1]
{\emph{#1} wprowadzenie
do systemu \LaTeXe}
% nastêpnie po \begin{document}:
\wle{Krótkie}; \wle{D³ugie}
\end{example}
%
\noindent {\LaTeX} nie pozwala zdefiniowaæ instrukcji nazwanej tak samo
jak wcze¶niej zdefiniowane polecenie. W~wypadku gdy chcemy zmieniæ
znaczenie ju¿ istniej±cej instrukcji, powinni¶my u¿yæ polecenia
\ci{renewcommand}. Za wyj±tkiem nazwy ma ono sk³adniê identyczn± jak
\verb|\newcommand|.

Czasami mo¿e siê te¿ przydaæ polecenie
\ci{providecommand}. Dzia³a ono jak \verb|\newcommand|, z~tym ¿e je¶li
istnieje ju¿ komenda o~takiej samej nazwie, to nie zastêpuje ono
starej, zwyczajnie ignoruj±c now±.

Nieco uwagi nale¿y po¶wiêciæ temu, jaki skutek ma umieszczenie odstêpu
po komendzie \LaTeX{}a. Informacje na ten temat mo¿na znale¼æ na stronie
\pageref{whitespace}.

\subsection{Otoczenia definiowane przez u¿ytkownika }

Odpowiednikiem definiuj±cej nowe polecenie instrukcji \verb|\newcommand|
jest dla otoczeñ instrukcja \verb|\newenvironment|. Ma ona nastêpuj±c±
sk³adniê:
%
\begin{command}
\ci{newenvironment}\verb|{|%
\emph{nazwa}\verb|}[|\emph{num}\verb|]{|%
\emph{pocz±tek}\verb|}{|\emph{koniec}\verb|}|
\end{command}
%
\noindent
Podobnie jak w~wypadku \verb|\newcommand|, mo¿na instrukcji
\ci{newenvironment} u¿yæ z~argumentem opcjonalnym albo bez niego.
{\LaTeX} wstawia tekst \emph{pocz±tek}, gdy w~dokumencie napotyka napis
\verb+\begin{+\emph{nazwa}\verb+}+, a~zawarto¶æ argumentu \emph{koniec}
  -- po napotkaniu napisu \verb|\end{|\emph{nazwa}\verb|}|.

Poni¿szy przyk³ad ilustruje sposób u¿ycia 
instrukcji \ci{newenvironment}.
%
\begin{example}
\newenvironment{zrodlo}
{¬ród³o: }{\par}
% nastêpnie po \begin{document}:
\begin{zrodlo} Rocznik Statystyczny
GUS. \end{zrodlo}
\end{example}
%
\noindent
Znaczenie argumentu \emph{num} jest takie samo jak w~instrukcji 
\verb|\newcommand|.

{\LaTeX} nie pozwala zdefiniowaæ otoczenia o~ju¿ istniej±cej nazwie.
W~razie potrzeby zast±pienia ju¿ istniej±cego otoczenia
powinni¶my u¿yæ polecenia \ci{renewenvironment}, o~sk³adni takiej samej
jak \ci{newenvironment}.

% to jest zbêdne [tp]:
% Polecenia u¿yte w~powy¿szym przyk³adzie s± obja¶niane dalej. O~poleceniu
% \ci{rule} mo¿na przeczytaæ na stronie \pageref{sec:rule}, o~\ci{stretch} 
% -- na stronie \pageref{cmd:stretch}, a~informacje na temat  \ci{hspace} 
% mo¿na znale¼æ na stronie \pageref{sec:hspace}.

\subsection{Nadmiarowe odstêpy}

Gdy tworzymy nowe otoczenie, problemem mog± byæ zbêdne 
%, niechciane przez nas %% ¼le siê ³amie strona
odstêpy, które {\LaTeX} wstawia do sk³adu. Rozwa¿my przyk³ad
otoczenia, które ma siê rozpoczynaæ od akapitu bez wciêcia, ponadto
pierwszy akapit po otoczeniu tak¿e nie ma mieæ wciêcia. Polecenie
\ci{ignorespaces}, umieszczone jako ostatnie polecenie bloku
\emph{begin\/} otoczenia, spowoduje zignorowanie wszystkich %znaków
odstêpów wystêpuj±cych przed pierwszym akapitem otoczenia. Usuniêcie
drugiego wciêcia przez umieszczenie w~bloku koñcowym \ci{ignorespaces}
jest niemo¿liwe, gdy¿ zawsze ostatnim poleceniem bêdzie
\verb@\end{otoczenie}@, które anuluje dzia³anie \ci{ignorespaces}.
W~takiej sytuacji trzeba skorzystaæ z~polecenia
\ci{ignorespacesafterend}. Napotkawszy je, {\LaTeX} wstawi
\ci{ignorespaces} dopiero po wykonaniu zamykaj±cego
\verb|\end{otoczenie}|.

 %%
\begin{example}
\newenvironment{proste}%
 {\noindent}%
 {\par\noindent}

\begin{proste}
Zobacz odstêp\\z~lewej strony.
\end{proste}
Tak samo\\tutaj.
\end{example}

\begin{example}
\newenvironment{poprawne}%
 {\noindent\ignorespaces}%
 {\par\noindent%
   \ignorespacesafterend}

\begin{poprawne}
Bez odstêpu\\z lewej strony.
\end{poprawne}
Tak samo\\tutaj.
\end{example}

% Poni¿sze jest zupe³nie niepotrzebne [tp]:
% \subsection{Wywo³ywanie \LaTeX{}a w~linii rozkazowej}

% U¿ytkownicy systemów operacyjnych typu Unix do obs³ugi projektów
% \LaTeX{}owych stosuj± zapewne pliki Makefile. W~tym kontek¶cie 
% ciekawa by³aby mo¿liwo¶æ tworzenia ró¿nych wersji tego samego dokumentu
% metod± podawaniu ró¿nych parametrów w~linii rozkazowej
% wo³aj±cej \LaTeX{}a. Mo¿emy to u³atwiæ, umieszczaj±c w~dokumencie
% co¶ takiego:
% \begin{verbatim}
% \usepackage{ifthen}
% \ifthenelse{\equal{\blackandwhite}{true}}{
%   % co¶ robimy w~trybie "czarno--bia³ym"
% }{
%   % robimy co¶ innego w~trybie "kolorowym"
% }
% \end{verbatim}
% Mo¿emy teraz wywo³aæ  \LaTeX{}a w~nastêpuj±cy sposób:
% \begin{verbatim}
% latex '\newcommand{\blackandwhite}{true}\input{test.tex}'
% \end{verbatim}
% Polecenie \verb|\blackandwhite| zostaje zdefiniowane jeszcze przed
% odczytem pliku ¼ród³owego. Zmieniaj±c \verb|\blackandwhite| na
% \ci{false} spowodujemy generowanie kolorowej wersji dokumentu.

\subsection{W³asne pakiety}

W~wypadku definiowania wielu nowych poleceñ i~otoczeñ preambu³a
dokumentu mo¿e siê znacznie wyd³u¿yæ. Dobrze w~takiej sytuacji stworzyæ
pakiet zawieraj±cy definicje tych instrukcji i~otoczeñ. Taki pakiet
mo¿na pó¼niej do³±czyæ do dokumentu poleceniem \ci{usepackage}.

\begin{figure}[!htbp]
\begin{lined}{\textwidth}
\begin{verbatim}
% Przyk³adowy pakiet ***
\ProvidesPackage{demopack}
\newcommand{\kwle}{Krótkie wprowadzenie do systemu \LaTeXe}
\newcommand{\wle}[1]{\emph{#1} wprowadzenie
do systemu \LaTeXe}
\newenvironment{zrodlo}{¬ród³o: }{\par}
\end{verbatim}
\end{lined}
\caption{Przyk³adowy pakiet\label{package} }
\end{figure}
\noindent 

Tworzenie pakietu polega na skopiowaniu poleceñ z~preambu³y do
oddzielnego pliku o~rozszerzeniu \eei{.sty}.
Na pocz±tku pakietu nale¿y wpisaæ polecenie:
%
\begin{command}
\ci{ProvidesPackage}\verb|{|\emph{nazwa}\verb|}|
\end{command}
%
\noindent
Dziêki instrukcji \verb|\ProvidesPackage| {\LaTeX} poznaje nazwê
pakietu, a~to pozwala mu na przyk³ad ostrzec u¿ytkownika
w~wypadku powtórnego do³±czenia pakietu do dokumentu.
Rysunek~\ref{package} przedstawia niewielki pakiet z~instrukcjami 
z~powy¿szych przyk³adów.

\section{Fonty}

\subsection{Instrukcje prze³±czaj±ce stopieñ pisma }

{\LaTeX} automatycznie 
%%dostosowuje
dobiera 
krój, odmianê i~stopieñ pisma\footnote{%
  \emph{Pismo drukarskie\index{pismo!drukarskie}\/} to pismo utrwalone
  na no¶niku, tj.~materiale, na którym umieszczono negatywy lub pozytywy
  znaków pisma. \emph{Krój pisma}\index{pismo!krój} to obraz pisma
  drukarskiego o~jednolitych cechach graficznych, niezale¿nych od
  stopnia i~odmiany pisma. Ka¿dy krój pisma posiada swoj± nazwê (na
  przyk³ad Times New Roman, Computer Modern czy Garamond). \emph{Odmiana
    kroju}\index{pismo!odmiana} pisma ró¿nicuje pisma jednego kroju ze
  wzglêdu na grubo¶æ, szeroko¶æ i~pochylenie. \emph{Stopieñ
    pisma}\index{pismo!stopieñ} okre¶la z~kolei wielko¶æ znaków. Zestawy
  metalowych \emph{czcionek}\index{czcionka|see{pismo drukarskie}}, 
  czyli kawa³ków metalu,
  w~których utrwalano znaki pisma, drukarze przechowywali
  w~\emph{kasztach}\index{kaszta}. Angielsk±, a~w³a¶ciwie amerykañsk±
  nazw± zestawu czcionek jednego kroju i~wielko¶ci, powszechnie dzi¶
  u¿ywan± w~terminologii komputerowej, jest \emph{font}\index{font}
  (zobacz te¿~\cite{chwialowski}).
  
  Fonty {\LaTeX}a, takie jak \acro{PL}, \acro{EC} czy \acro{LM}, s±
  optycznie identyczne, bo wszystkie s± replikami kroju \emph{Computer
    Modern}, ró¿ni± siê jednak od najczê¶ciej u¿ywanego
  w~edytorach biurowych, takich jak {\MSWord}, kroju \emph{Times New
    Roman}. }
%% do logicznego charakteru sk³adanych 
dla ró¿nych
elementów dokumentu (tytu³ów
rozdzia³ów, punktów, przypisów itp.). Czasami  zachodzi jednak potrzeba
,,rêcznego'' prze³±czenia kroju b±d¼ stopnia pisma. Mo¿na do tego
u¿yæ poleceñ zestawionych w~tabelach~\ref{fonts} i~\ref{sizes}.
Stopieñ pisma jest kwesti± uk³adu graficznego dokumentu i~zale¿y od 
wybranej klasy dokumentu oraz ustawienia odpowiednich opcji.
W~tabeli~\ref{tab:ptsizes} zestawiono stopnie pisma w~jednostkach
absolutnych dla poleceñ zmieniaj±cych wielko¶æ kroju w~standardowych 
klasach dokumentów.
%
\begin{example}
{\small Nieliczni lecz
\textbf{odwa¿ni} Rzymianie rz±dzili}
{\Large wielk± \textit{Itali±}.}
\end{example}
%

\noindent
Bie¿±cy font jest w~{\LaTeX}u scharakteryzowany przez piêæ elementów:
uk³ad (zestaw znaków), krój (rodzinê), grubo¶æ i~szeroko¶æ, odmianê oraz
stopieñ i~interliniê. Ka¿dy z~nich mo¿na dobraæ niezale¿nie od
ustawienia pozosta³ych. Oznacza to na przyk³ad, ¿e zmiana stopnia
pisma nie powoduje zmiany jego kroju ani odmiany.

\begin{table}[!bth]
\caption{Polecenia wyboru krojów i~odmian \label{fonts}}
\begin{lined}{12.5cm}
%
% Alan suggested not to tell about the other form of the command
% eg \verb|\sffamily| or \verb|\bfseries|. This seems a good thing to me.
%
\tabcolsep=.5\tabcolsep
\begin{tabular}{@{}rl@{\quad}rl@{}}
\ci{textrm}\verb|{...}| & \textrm{krój szeryfowy} &
\ci{textsf}\verb|{...}| & \textsf{krój bezszeryfowy} \\
\ci{texttt}\verb|{...}| & \multicolumn{3}{l}{\texttt{grotesk}, 
       tj. pismo o~jednakowej szeroko¶ci znaków} \\[6pt]
\ci{textmd}\verb|{...}| & \textmd{pismo jasne} &
\ci{textbf}\verb|{...}| & \textbf{pismo grube} \\[6pt]
\ci{textup}\verb|{...}| & \textup{odmiana prosta} &
\ci{textit}\verb|{...}| & \textit{kursywa} \\
\ci{textsl}\verb|{...}| & \textsl{odmiana pochy³a}&
\ci{textsc}\verb|{...}| & \textsc{kapitaliki} \\[6pt]
\ci{emph}\verb|{...}| & \emph{wyró¿nienie} \\
\ci{textnormal}\verb|{...}| & \multicolumn{2}{l}{g³ówny font dokumentu}
\end{tabular}
\end{lined}
\vspace{-2.0ex}
\end{table}

\begin{table}[!tbh]
\caption{Polecenia jednoczesnego wyboru stopnia pisma
i~interlinii\index{stopieñ pisma}\label{sizes} }
\begin{lined}{12.5cm}
\begin{tabular}{@{}ll}
\ci{tiny} & \tiny mikroskopijny \\
\ci{scriptsize} & \scriptsize bardzo ma³y \\
\ci{footnotesize} & \footnotesize mniejszy \\
\ci{small} & \small ma³y \\
\ci{normalsize} & \normalsize normalny \\
\ci{large} & \large du¿y
\end{tabular}%
\qquad\begin{tabular}{ll@{}}
\ci{Large} & \Large wiêkszy \\[5pt]
\ci{LARGE} & \LARGE bardzo du¿y \\[5pt]
\ci{huge} & \huge ogromny \\[5pt]
\ci{Huge} & \Huge najwiêkszy
\end{tabular}
\end{lined}
\end{table}

Przy okazji omawiania poleceñ dotycz±cych fontów trzeba wspomnieæ
o~koncepcji \emph{grupowania}. Grupa\index{grupa} zaczyna
siê od znaku \verb+{+, a~koñczy znakiem \verb+}+. Grupy s³u¿±
do ograniczania zasiêgu dzia³ania poleceñ {\LaTeX}a. Przyjrzyjmy siê
nastêpuj±cemu przyk³adowi:
%
\begin{example}
Lubiê {\LARGE du¿e oraz
{\small ma³e} litery} i~cyfry.
\end{example}
%
%%<PLext>
  Pierwszy nawias klamrowy rozpoczyna grupê, potem polecenie
  \verb+\LARGE+ zmienia stopieñ pisma na \emph{bardzo du¿y}, w~którym
  zostanie z³o¿ony napis ,,du¿e oraz''.  Kolejny otwieraj±cy nawias
  klamrowy zaczyna nastêpn± grupê. W~jej obrêbie polecenie \verb+\small+ zmienia
  stopieñ pisma na ma³y. Do z³o¿enia w~tym stopniu przewidziano jedynie s³owo
  ,,ma³e'', bo  nawias \verb+}+ za tym s³owem zamyka grupê. Po zamkniêciu
grupy nastêpuje powrót do stopnia pisma aktualnego przed jej
rozpoczêciem, czyli \verb+\LARGE+. W~nim zostanie z³o¿one
s³owo ,,litery''. Zamkniêcie tej grupy powoduje, ¿e resztê tekstu
{\LaTeX} z³o¿y w~wyj¶ciowym stopniu pisma. Jak widaæ, grupy mo¿na
zagnie¿d¿aæ, nawet wielokrotnie.
%%</PLext>

\noindent
Polecenia zmieniaj±ce stopieñ pisma zmieniaj± tak¿e interliniê. Dzieje
siê tak jednak tylko wtedy, gdy \emph{przed} zamkniêciem odpowiedniej
grupy koñczony jest akapit -- przez wstawienie pustego wiersza
\emph{lub} polecenia \ci{par}. Zwróæmy uwagê na miejsce, w~którym
umieszczono instrukcjê \verb|\par| w~poni¿szych dwóch przyk³adach.
%
\begin{example}
{\Large Zdanie, które ma wiêcej
ni¿ piêæ s³ów, nie ma sensu!\par}
\end{example}
%
\begin{example}
{\Large Zdanie, które ma wiêcej
ni¿ piêæ s³ów, nie ma sensu!}\par
\end{example}
%
\noindent
Je¶li zachodzi konieczno¶æ zmiany stopnia pisma dla ca³ego akapitu lub jeszcze
d³u¿szego tekstu, to mo¿emy skorzystaæ ze sk³adni przyjêtej dla otoczeñ:
%
\begin{example}
\begin{Large} Zdanie, które ma
wiêcej ni¿ piêæ s³ów, nie ma sensu!
\end{Large}
\end{example}
%
\noindent
Zapis taki pozwala unikaæ ³atwych do pope³nienia b³êdów, wynikaj±cych
z~opuszczania nawiasów otwieraj±cych lub zamykaj±cych grupy.

% [RK] usuwam ten akapit jako nieobecny w oryginale, nieoznakowany
% przez TP i w ogóle ma³o nios±cy informacji (powtarza to, co 
% w nag³ówku tabeli.
% Stopieñ pisma jest kwesti± uk³adu graficznego dokumentu i~zale¿y od
% wybranej klasy dokumentu i~ustawienia odpowiednich opcji.
% W~tabeli~\ref{tab:ptsizes} zestawiono stopnie pisma, wyra¿one
% w~jednostkach absolutnych, dla poleceñ ustalaj±cych wielko¶æ kroju
% w~standardowych klasach dokumentów.

\begin{table}[!tb]
\caption{Wielko¶æ stopnia pisma w~klasach  standardowych\label{tab:ptsizes}}
\label{tab:sizes}
\begin{lined}{12.5cm}
\tabcolsep=1.75em
\begin{tabular}{lrrr}
\multicolumn{1}{c}{\emph{Stopieñ}} & \multicolumn{1}{c}{\emph{10pt}} &
\multicolumn{1}{c}{\emph{opcja 11pt}} &
\multicolumn{1}{c}{\emph{opcja 12pt}} \\[4.5pt]
\verb|\tiny| & 5pt & 6pt & 6pt \\
\verb|\scriptsize| & 7pt & 8pt & 8pt \\
\verb|\footnotesize| & 8pt & 9pt & 10pt \\
\verb|\small| & 9pt & 10pt & 11pt \\
\verb|\normalsize| & 10pt & 11pt & 12pt \\
\verb|\large| & 12pt & 12pt & 14pt \\
\verb|\Large| & 14pt & 14pt & 17pt \\
\verb|\LARGE| & 17pt & 17pt & 20pt \\
\verb|\huge| & 20pt & 20pt & 25pt \\
\verb|\Huge| & 25pt & 25pt & 25pt
\end{tabular}
\end{lined}
\vspace{-2.0ex}
\end{table}

W~\emph{trybie matematycznym} w~celu z³o¿enia fragmentu wzoru innym
ni¿ pochy³e krojem pisma mo¿na zastosowaæ polecenia zestawione
w~tabeli~\ref{mathfonts}.

\begin{table}[!tb]
\caption{Polecenia wyboru fontów w~trybie matematycznym\label{mathfonts} }
\begin{lined}{\textwidth}
\begin{tabular}{@{}lll@{}}
\textit{Polecenie}&\textit{Przyk³ad}& \textit{Wynik\strut}\\ \hline
\ci{mathcal}\verb|{...}|& \verb|$\mathcal{B}=c$|& $\mathcal{B}=c$\\
\ci{mathrm}\verb|{...}|& \verb|$\mathrm{K}_2$|& $\mathrm{K}_2$\\
\ci{mathbf}\verb|{...}|& \verb|$\sum x=\mathbf{v}$|& $\sum x=\mathbf{v}$\\
\ci{mathsf}\verb|{...}|& \verb|$\mathsf{G\times R}$|& $\mathsf{G\times
R}$\\
\ci{mathtt}\verb|{...}|& \verb|$\mathtt{L}(b,c)$|& $\mathtt{L}(b,c)$\\
\ci{mathnormal}\verb|{...}|& \verb|$\mathnormal{R_{19}}\neq R_{19}$|&
$\mathnormal{R_{19}}\neq R_{19}$\\
\ci{mathit}\verb|{...}|& \verb|$\mathit{ffi}\neq ffi$|& $\mathit{ffi}\neq
ffi$
\end{tabular}
\end{lined}
\end{table}

\subsection{Uwaga, niebezpieczeñstwo! }

Jak zaznaczyli¶my na pocz±tku rozdzia³u, nie nale¿y instrukcji zmiany
fontu wstawiaæ \emph{explicite} do pliku ¼ród³owego. By³oby to niezgodne
z~podstawow± ide± {\LaTeX}a, jak± jest oddzielenie formy od tre¶ci
dokumentu i~pos³ugiwanie siê formatowaniem logicznym, a~nie wizualnym.
Je¿eli fragment tekstu ma zostaæ wyró¿niony przez z³o¿enie go innym
krojem lub stopniem pisma, to nale¿y zdefiniowaæ odpowiednie polecenie
i~potem w³a¶nie jego u¿ywaæ w~tre¶ci dokumentu.
%
\begin{example}
% w~preambule albo pakiecie
\newcommand{\uwaga}[1]{\textbf{#1}}
% po \begin{document}
\uwaga{Baczno¶æ!} Przewody sieci
trakcyjnej s± pod napiêciem.
Dotkniêcie grozi \uwaga{¶mierci±}.
\end{example}
%
\noindent
Niew±tpliw± zalet± tego podej¶cia jest to, ¿e kiedy pó¼niej bêdziemy
chcieli wyró¿niæ wszystkie elementy, na które czytelnik powinien
zwróciæ \emph{szczególn± uwagê}, w~sposób inny ni¿ sk³adaj±c je pismem
pó³grubym, to nie musimy przegl±daæ ca³ego pliku w~celu sprawdzenia,
czy dane wyst±pienie \ci{textbf} dotyczy tekstu, na który ma zostaæ
zwrócona \emph{szczególna uwaga}, czy te¿ wstawione zosta³o w~zupe³nie
innym celu.

\medskip
\noindent
%%<PLext>
  \EMPH{Na zakoñczenie rada z~gatunku estetycznych}: nie nale¿y
  przesadzaæ ze stosowaniem wielu ró¿nych krojów pisma w~jednym
  dokumencie.
%%</PLext>

\subsection{U¿ycie alternatywnych krojów pisma}

Wiêkszo¶æ dokumentów jest sk³adanych w~{\LaTeX}u z~u¿yciem domy¶lnego
kroju, bêd±cego replik± \emph{Computer Modern}. Je¿eli wygl±d znaków
z~rodziny \acro{CM} nam siê znu¿y, to mo¿emy z³o¿yæ dokument innym
krojem. Musimy jednak pamiêtaæ, ¿e na ogó³ alternatywne kroje nie s± tak
kompletne jak rodzina \emph{Computer Modern}, czêsto na przyk³ad brakuje
w~nich kompletu symboli matematycznych, znaków z~alfabetów
nie³aciñskich, takich jak greka lub alfabet cyrylicki, albo niektórych
odmian, jak na przyk³ad kapitalików.

Z~drugiej strony krój \acro{CM} ma te¿ wady: kreski znaków s± cieñsze, a
wzglêdna wysoko¶æ ma³ych liter\footnote{Wzglêdna w~porównaniu do
  nominalnego stopnia pisma; 
  wysoko¶æ ta wynosi dla kroju \acro{CM} 43\%, a dla
  kroju Palatino -- 46\%; dla du¿ych liter z~tych krojów jest
  to odpowiednio: 68,9\% i~68,5\%.} jest mniejsza ni¿ w~wielu innych
krojach. Te cechy kroju \acro{CM} powoduj±, ¿e jest mniej czytelny
w~wypadku, gdy jest reprodukowany na no¶niku o~niskiej rozdzielczo¶ci,
lub -- mówi±c wprost -- nie najlepiej siê nadaje do dokumentów, które bêd±
wy¶wietlane na ekranach komputerów, np.~dokumentów w~formacie \acro{PDF}.

Pakiet~\pai{qtimes} umo¿liwia sk³ad dokumentu w~kroju QTimes,
który jest klonem znanego kroju Times New Roman autorstwa Stanleya
Morisona\index{Morison Stanley}. 
Je¿eli dokument zawiera wzory matematyczne, to aby znaki
w~formu³ach by³y optycznie zgodne z~otaczaj±cym je tekstem, nale¿y tak¿e
do³±czyæ pakiety \pai{txfonts} oraz \pai{qtxmath}:
 %%
\begin{code}
\begin{verbatim}
%& --translate-file=il2-pl
\documentclass[a4paper]{article}
\usepackage{polski}
\usepackage{txfonts,qtimes,qtxmath}
\usepackage{qswiss,qcourier}
\usepackage{sfheaders}
\author{Wanda Przechlewska}
\title{Test pakietu txfonts}
\begin{document} ...
\end{verbatim}
\end{code}
 %%
Z~kolei pakiet~\pai{qpalatin} wraz z~pakietami \pai{qpxmath} oraz
\pai{pxfonts} umo¿liwia sk³ad dokumentu krojem QPalatino
(³±cznie ze wzorami matematycznymi), który jest klonem znanego kroju
Palatino autorstwa Hermanna Zapfa\index{Zapf Hermann}:
 %%
\begin{code}
\begin{verbatim}
%& --translate-file=il2-pl
\documentclass[a4paper]{article}
\usepackage{polski}
\usepackage{pxfonts,qpalatin,qpxmath}
\usepackage{qswiss,qcourier}
\usepackage{sfheaders}
\author{Maria Matysek}
\title{Test pakietu qpxfonts}
\begin{document} ...
\end{verbatim}
\end{code}
 %%
W~powy¿szych przyk³adach do³±czono tak¿e pakiety \pai{qswiss},
\pai{sfheaders} oraz \pai{qcourier}. Pakiet \pai{qswiss} przestawia
domy¶l± odmianê bezszeryfow± na krój Helvetica, a~\pai{sfheaders}
przedefiniowuje ¶ródtytu³y tak, ¿e sk³adane s± krojem bezszeryfowym.
Z~kolei \pai{qcourier} zamienia domy¶lny krój o~sta³ej szeroko¶ci znaków
na QCourier. W~rezultacie pierwszy z~dokumentów bêdzie podobny do
typowego dokumentu sk³adanego na przyk³ad edytorem {\MSWord}; drugi
z~kolei bêdzie siê doskonale nadawa³ do dokumentu \acro{PDF}, który
chcemy umie¶ciæ w~sieci \acro{WWW}, z~uwagi na to, ¿e krój Palatino --
reprodukowany w~niskiej rozdzielczo¶ci -- jest du¿o bardziej czytelny
ni¿ \acro{CM}, a nawet \emph{Times New Roman}. Uwaga: aby powy¿sze
deklaracje zadzia³a³y, instalacja {\LaTeX}a musi zawieraæ
ww.~fonty\footnote{Wchodz± one w~sk³ad wspó³czesnych dystrybucji
  {\LaTeX}a. Je¿eli ich nie masz, to powiniene¶ je doinstalowaæ. 
  W~dokumentacji dystrybucji powinno byæ opisane, jak siê to robi.}.

\section{Odstêpy }

\subsection{Zmiana wielko¶ci interlinii\index{interlinia} }

% Odstêp %%<sk³ad
Wielko¶æ odstêpów miêdzy wierszami dokumentu mo¿na zmieniæ, umieszczaj±c
w~preambule polecenie \ci{linespread}, postaci:
%
\begin{command}
\ci{linespread}\verb|{|\emph{czynnik}\verb|}|
\end{command}
%
\noindent
Parametr \emph{czynnik\/} okre¶la powiêkszenie odstêpu miêdzy wierszami.
Znany z~maszyn do pisania efekt podwójnej
interlinii\index{interlinia!podwójna},
czyli podwojenie odstêpu\index{odstêp!podwójny}, uzyskamy za pomoc±
\verb|\linespread{1.6}|.
Aby otrzymaæ odstêp wielko¶ci 1,5, powinni¶my wpisaæ \verb|\linespread{1.3}|.
Pojedynczemu i~zarazem domy¶lnemu odstêpowi odpowiada warto¶æ~1.

Polecenie \ci{linespread} wp³ywa na odstêpy miêdzywierszowe w~ca³ym
dokumencie.
Je¶li s± wyra¼ne powody do zmiany odstêpu tylko w~pewnym fragmencie 
dokumentu, to lepsza mo¿e siê okazaæ instrukcja:
\begin{command}
\verb|\setlength{\baselineskip}{1.5\baselineskip}|
\end{command}
 %%
Poni¿szy przyk³ad ilustruje wykorzystanie \ci{baselineskip}:
 %%
\begin{example}
{\setlength{\baselineskip}%
           {1.5\baselineskip}
Ten akapit jest sk³adany 
z~\ci{baselineskip} ustawionym 
na 1,5 dotychczasowej warto¶ci. 
Zwróæmy uwagê na wyst±pienie 
\ci{par} na koñcu akapitu.\par}

Przeznaczenie tego akapitu 
jest jasne. Ilustruje on, 
¿e po zamykaj±cym nawiasie 
klamrowym nastêpuje powrót 
do normalnego sk³adu.
\end{example}

\subsection{Odstêpy wokó³ akapitów\label{parsp} }

Dwa dodatkowe parametry okre¶laj± w~\LaTeX{}u wielko¶æ, odpowiednio,
wciêcia akapitowego oraz odstêpu miêdzy akapitami. Wpisuj±c na przyk³ad
do preambu³y dokumentu:
%
\begin{code}
\ci{setlength}\verb|{|\ci{parindent}\verb|}{0pt}| \\
\verb|\setlength{|\ci{parskip}\verb|}{1ex plus 0.5ex minus 0.2ex}|
\end{code}
%
\noindent
ustalamy wielko¶æ wciêcia akapitowego na 0~pt
(co powoduje, ¿e akapity bêd± siê zaczynaæ bez wciêæ), a~odstêp miêdzy
akapitami ustalamy na 1~ex plus 0,5~ex minus 0,2~ex. Drugi zapis
oznacza, ¿e normalny odstêp miêdzy akapitami, wynosz±cy 1,0~ex 
(jednostki miary w~{\LaTeX}u podaje tabela~\ref{units} na
stronie~\pageref{units}), mo¿e siê zwiêkszyæ do $1{,}0 + 0{,}5 =
1{,}5$~ex lub zmniejszyæ do $1{,}9 - 0{,}2 = 0{,}8$~ex. W~Europie
kontynentalnej akapity sk³ada siê czasami bez wciêcia akapitowego, a~jedynie
z~dodatkowym odstêpem miêdzy nimi. Ale uwaga! Ten efekt pojawi
siê tak¿e w~spisie tre¶ci, tabel i~rysunków, gdzie poszczególne
pozycje spisu bêd± od siebie bardziej oddalone (w~spisach wiêkszo¶æ
akapitów jest jednowierszowa). Aby unikn±æ tego trochê ¶miesznego
efektu, nale¿y usun±æ powy¿sze instrukcje \ci{setlength} z~preambu³y
dokumentu i~wstawiæ je w~czê¶ci g³ównej, po poleceniach
\verb+\tableofcontents+ itp. Najlepiej jednak wcale nie korzystaæ
z~tego sposobu, gdy¿ znakomita wiêkszo¶æ ksi±¿ek jest sk³adana
z~wciêciem akapitowym, a~nie z~dodatkowymi odstêpami miêdzy
akapitami\footnote{%%
% Pomijaj±c wszystkie inne argumenty, oszczêdzamy tak¿e trochê drzew nie
% wstawiaj±c odstêpów miêdzy akapity.
  Jednoczesne u¿ycie wciêæ i~powiêkszonych odstêpów miêdzy akapitami
  uwa¿a siê w~Polsce za powa¿ny b³±d typograficzny.}.

Wciêcie akapitowe na pocz±tku akapitu wstawiamy
poleceniem\footnote{Dla uzyskania efektu
wciêcia w~pierwszym akapicie po tytule rozdzia³u, punktu itd.
nale¿y do³±czyæ do dokumentu pakiet \pai{indentfirst}
z~zestawu pakietów ,,tools''.}:
%
\begin{command}
\ci{indent}
\end{command}
%
\noindent
Wstawienie \verb+\indent+, kiedy warto¶æ \verb|\parindent| wynosi
zero, nie przyniesie oczywi¶cie ¿adnego efektu.

Aby uzyskaæ akapit bez wciêcia, nale¿y przed nim umie¶ciæ polecenie:
%
\begin{command}
\ci{noindent}
\end{command}


\subsection{Odstêpy poziome\label{sec:hspace} }

Wielko¶æ odstêpów miêdzy s³owami oraz miêdzy zdaniami \LaTeX{} ustala
automatycznie. Dodatkowy odstêp poziomy\index{odstêp!poziomy} (przez
\emph{odstêp poziomy\/} rozumiemy odstêp miêdzy wyrazami, przez
\emph{odstêp pionowy\/} -- odstêp miêdzy wierszami i~akapitami) mo¿emy
wstawiæ poleceniem:
%
\begin{command}
\ci{hspace}\verb|{|\emph{odleg³o¶æ}\verb|}|
\end{command}
%
\noindent
Je¿eli taki odstêp, w~wyniku z³amania akapitu na wiersze, wypadnie na
pocz±tku lub na koñcu wiersza, to zostanie on usuniêty -- aby zapobiec
justowaniu akapitu ,,w~chor±giewkê''. Je¿eli {\LaTeX} ma wstawiæ odstêp
tak¿e na pocz±tku lub na koñcu wiersza, to zamiast \verb+\hspace+ nale¿y
u¿yæ ,,gwiazdkowej'' wersji \ci{hspace*}. Argument \emph{odleg³o¶æ}
oznacza wymiar {\LaTeX}owy. W~najprostszej postaci jest to liczba wraz
z~jednostk± odleg³o¶ci. Wykaz wa¿niejszych spo¶ród dostêpnych w~{\LaTeX}u
jednostek odleg³o¶ci znajduje siê w~tabeli~\ref{units}.
%
\begin{example}
To jest \hspace{1.5cm}odstêp 
równy 1,5~cm.
\end{example}

%\suppressfloats % ?? --tp??--
\begin{table}[!hbt]
\caption{{\LaTeX}owe jednostki miary\label{units}}
\index{jednostki miary}%
\begin{lined}{10.5cm}
\begin{tabular}{@{}ll@{}}
\texttt{mm} & milimetr $\approx 1/25$~cala \quad \demowidth{1mm} \\
\texttt{cm} & centymetr = 10~mm \quad \demowidth{1cm} \\
\texttt{in} & cal $=$ 25,4~mm \quad \demowidth{1in} \\
\texttt{pt} & punkt $\approx 1/72$~cala $\approx \frac{1}{3}$~mm
\quad\demowidth{1pt}\\
\texttt{em} & w~przybli¿eniu szeroko¶æ ,,M'' w~bie¿±cym foncie \quad
\demowidth{1em}\\
\texttt{ex} & w~przybli¿eniu wysoko¶æ ,,x'' w~bie¿±cym foncie \quad
\demowidth{1ex}
\end{tabular}
%%\bigskip %% po kiego grzyba?? --tp--
\end{lined}
\end{table}

%%<PLext>
Czêsto wygodnie jest u¿yæ odleg³o¶ci ,,elastycznej'',
zostawiaj±c {\LaTeX}owi nieco swobody doboru 
takiej odleg³o¶ci, jak± uzna za najlepsz± z~punktu widzenia
jako¶ci sk³adu. Tak±
elastyczn± odleg³o¶æ zapisujemy nastêpuj±co:
\emph{n}~\verb+plus+~\emph{p} \verb+minus+~\emph{m}.
Czê¶ci ,,\verb+plus+~\emph{p}'' i~,,\verb+minus+~\emph{m}'' s±
opcjonalne (ka¿d± z~nich mo¿na pomin±æ).
Tego typu odleg³o¶ci maj± naturaln± wielko¶æ \emph{n} i~mog± siê
kurczyæ lub~rozci±gaæ w~zakresie od $\emph{n} - \emph{m}$ 
do  $\emph{n} + \emph{p}$.

Omawiany wcze¶niej odstêp miêdzy akapitami (\verb+\parskip+) jest
przyk³adem {\LaTeX}owego wymiaru o~zmiennej wielko¶ci. Czê¶æ wymiarów
mo¿e mieæ warto¶ci zmienne, czê¶æ jednak musi mieæ warto¶æ sta³±.
Powinno byæ na przyk³ad zrozumia³e, ¿e wciêcie akapitowe musi byæ
wielko¶ci± sta³±, podobnie jak szeroko¶æ i~wysoko¶æ ³amu.
%%</PLext>

Polecenie\label{cmd:stretch}:
%
\begin{command}
\ci{stretch}\verb|{|\emph{n}\verb|}|
\end{command}
%
\noindent
wstawia specjalny rozci±gliwy odstêp, który potrafi wype³niæ ca³± woln±
przestrzeñ w~pionie lub w~poziomie. Je¿eli na przyk³ad wstawimy
w~wierszu dwa lub wiêcej poleceñ
\verb|\hspace{\stretch{|\emph{n}\verb|}}|, to odstêpy dziêki nim
uzyskane bêd± mia³y wielko¶æ wed³ug proporcji zadanych przez
argument~\emph{n}. 
W~poni¿szym przyk³adzie odstêp miêdzy~\emph{x\/} a~\emph{y\/}~jest trzy
razy mniejszy od odstêpu miêdzy~\emph{y\/}~a~\emph{z}.
 %
\begin{example}
x\hspace{\stretch{1}}
y\hspace{\stretch{3}}z
\end{example}
 %
\noindent
Wielko¶æ odstêpów towarzysz±cych tekstowi warto dostosowaæ do aktualnego
rozmiaru czcionki. Mo¿na do tego u¿yæ wzglêdnych jednostek miary
\texttt{em} oraz \texttt{ex}:
 %
\begin{example}
{\Large{}big\hspace{1em}y} \quad
{\tiny{}tin\hspace{1em}y}
\end{example}
 %
\noindent
\label{quad:def}%%
Przypominamy, ¿e polecenia \ci{quad} i~\ci{qquad} wstawiaj±  
odstêp poziomy o~szeroko¶ci, odpowiednio, 1\,em oraz 2\,em.

\subsection{Odstêpy pionowe}

Odstêpy pionowe miêdzy akapitami, rozdzia³ami, punktami itp. {\LaTeX}
wstawia automatycznie. Je¶li zachodzi potrzeba wstawienia dodatkowego
odstêpu pionowego, to nale¿y zastosowaæ polecenie:
%
\begin{command}
\ci{vspace}\verb|{|\emph{odleg³o¶æ}\verb|}|
\end{command}
%
\noindent
Polecenie to nale¿y oddzieliæ pustymi liniami od otaczaj±cego je tekstu.
Je¿eli w~wyniku z³amania strony odstêp taki znajdzie siê na pocz±tku lub
na koñcu strony (bêdzie zaczyna³ lub te¿ koñczy³ kolumnê tekstu), to
zostanie on usuniêty. Je¿eli ma zostaæ wstawiony tak¿e na pocz±tku lub
koñcu strony, to nale¿y u¿yæ wersji ,,gwiazdkowej''
\ci{vspace*}\footnote{Zwróæmy uwagê, ¿e w~takim wypadku
    wysoko¶æ kolumny tekstu na s±siednich stronach nie bêdzie jednakowa,
    stosujmy zatem polecenie \ci{vspace*} z~pewn±
    ostro¿no¶ci±.}. Argument \emph{odleg³o¶æ} oznacza
{\LaTeX}owy wymiar.

Do rozmieszczania tekstu kolumny w~pionie mo¿na u¿ywaæ
polecenia \ci{stretch}, ³±cznie z~\ci{pagebreak}. W~poni¿szym
przyk³adzie tekst zostanie rozmieszczony tak, ¿e odstêp u~do³u bêdzie
dwa razy mniejszy od odstêpu u~góry strony:
%
\begin{code}
\begin{verbatim}
\vspace{\stretch{1}}
Tytu³ i~autor
\vspace{\stretch{2}}\pagebreak
\end{verbatim}
\end{code}
%
\noindent
Dodatkowy odstêp miêdzy dwoma wierszami tego samego akapitu lub
miêdzy wierszami tabeli mo¿emy uzyskaæ poleceniem:
%
\begin{command}
\ci{\bs}\verb|[|\emph{odleg³o¶æ}\verb|]|
\end{command}
\noindent
 %%
Polecenia \ci{bigskip}, \ci{medskip} i~\ci{smallskip} wstawiaj±
odpowiednio odstêpy ,,elastyczne'' o~nastêpuj±cych wielko¶ciach: 12pt
$\pm$~4pt, 6pt $\pm$~2pt oraz 3pt $\pm$~1pt\footnote{Nie s± to wielko¶ci
  przypadkowe: 12~punktów to typowa odleg³o¶æ miêdzy liniami
  podstawowymi wierszy przy sk³adzie pismem w~stopniu 10~punktów.}.


\section{Uk³ad graficzny strony}

Wymiary papieru mo¿na podaæ jako argumenty instrukcji
\verb+\documentclass+. Na podstawie zadeklarowanych wymiarów
{\LaTeX} oblicza szeroko¶æ i~wysoko¶æ kolumny, marginesy i~inne parametry.
Na rysunku~\ref{fig:layout} przedstawiono dostêpne parametry
graficznego uk³adu strony. Do przygotowania rysunku u¿yli¶my
pakietu \pai{layout} z~zestawu ,,tools''%
\footnote{\CTAN{macros/latex/packages/tools}.}.
Je¿eli obliczone przez {\LaTeX}a warto¶ci s± z~pewnych wzglêdów
nieodpowiednie, to mo¿na je zmieniæ.

\begin{figure}[!hp]
\centering
\makeatletter\@layout\makeatother
%%
\vspace*{1.8cm}
\caption{Parametry uk³adu graficznego strony \label{fig:layout}}
\cih{footskip}
\cih{headheight}
\cih{headsep}
\cih{marginparpush}
\cih{marginparsep}
\cih{marginparwidth}
\cih{oddsidemargin}
\cih{paperheight}
\cih{paperwidth}
\cih{textheight}
\cih{textwidth}
\cih{topmargin}
\end{figure}

Zanim jednak zaczniemy eksperymentowaæ, zwiêkszaj±c na przyk³ad
szeroko¶æ szpalty, chwilê pomy¶lmy. Jak dla wiêkszo¶ci rzeczy w~{\LaTeX}u,
istniej± wa¿ne powody, dlaczego szeroko¶æ szpalty jest
taka a~nie inna.

Z~pewno¶ci± w~porównaniu z~wydrukiem przygotowanym za pomoc± ¶wie¿o
kupionego programu {\MSWord} strona {\LaTeX}owa ma denerwuj±co w±sk±
szpaltê. Ale spójrzmy na ksi±¿kê z~renomowanego wydawnictwa i~policzmy
na niej liczbê znaków w~przeciêtnym wierszu. Oka¿e siê, ¿e wynosi ona
oko³o 66. Je¶li porównamy j± z~wydrukiem z³o¿onym przez {\LaTeX}a, to
zapewne i~tym razem bêdzie ona zbli¿ona do 66.  Z~do¶wiadczeñ wynika bowiem, 
¿e w~miarê wzrostu liczby znaków w~wierszu czytanie staje siê
mêcz±ce. Dzieje siê tak, gdy¿ przy d³ugich wierszach naszym
oczom trudniej jest przenosiæ wzrok z~koñca jednego wiersza na
pocz±tek nastêpnego. Jest to jedna z~przyczyn stosowania sk³adu
wielo³amowego w~gazetach i~czasopismach.

Tak wiêc, je¶li zwiêkszamy szeroko¶æ kolumny, to pamiêtajmy, ¿e mo¿e to 
utrudniæ odbiorcom czytanie naszej pracy. 
No, ale do¶æ ju¿ kazañ.
Obiecali¶my przecie¿ wyja¶niæ, jak mo¿na te rzeczy robiæ\dots

W~{\LaTeX}u mamy dwie instrukcje do zmiany wielko¶ci wymiarów,
u¿ywane zazwyczaj w~obrêbie preambu³y dokumentu.
Pierwsza z~nich \emph{nadaje} parametrowi okre¶lon± wielko¶æ:%
 %%
\begin{command}
\ci{setlength}\verb|{|\emph{parametr}\verb|}{|\emph{wielko¶æ}\verb|}| \par
\end{command}
 %%
\noindent
Drugie polecenie \emph{zwiêksza} warto¶æ parametru 
o~okre¶lon± wielko¶æ:
\noindent
\begin{command}
\ci{addtolength}\verb|{|\emph{parametr}\verb|}{|\emph{wielko¶æ}\verb|}|
\end{command}
%
\noindent
Z~tej pary czê¶ciej stosowana
jest druga instrukcja, poniewa¿ pozwala zmieniaæ wymiary. Przyk³adowo, aby
zwiêkszyæ szeroko¶æ szpalty o~jeden centymetr, umieszczamy w~preambule
dokumentu nastêpuj±ce polecenia:
%
\begin{code}
\verb|\addtolength{\hoffset}{-0.5cm}|\\
\verb|\addtolength{\textwidth}{1cm}|
\end{code}

Zmianê parametrów uk³adu graficznego strony u³atwia pakiet
\pai{geometry}. W~wykonywaniu operacji arytmetycznych na wymiarach pomaga
pakiet \pai{calc}.

%%
\section{Wiêcej o~odleg³o¶ciach}

Kiedy to tylko mo¿liwe, unikajmy stosowania wymiarów
zdefiniowanych w~jednostkach absolutnych, takich jak punkty czy
milimetry. Starajmy siê raczej odnosiæ wymiary do ju¿
istniej±cych, takich jak wysoko¶æ czy szeroko¶æ kolumny. W~poni¿szym
przyk³adzie szeroko¶æ rysunku jest definiowana jako po³owa szeroko¶ci
bie¿±cej szpalty:
%
\begin{code}
\verb+\includegraphics[width=0.5\textwidth]{sowauszata.eps}+
\end{code}
%
\noindent
Nastêpuj±ce trzy polecenia pozwalaj± okre¶liæ szeroko¶æ,
wysoko¶æ i~g³êboko¶æ \emph{tekstu}:
%
\begin{command}
\ci{settoheight}\verb|{|\emph{nazwa}\verb|}{|\emph{tekst}\verb|}|\\
\ci{settodepth}\verb|{|\emph{nazwa}\verb|}{|\emph{tekst}\verb|}|\\
\ci{settowidth}\verb|{|\emph{nazwa}\verb|}{|\emph{tekst}\verb|}|
\end{command}
%
\noindent
Oto przyk³ad ilustruj±cy zastosowanie tych poleceñ:
%
\begin{example}
\newenvironment{vardesc}[1]{%
\settowidth{\parindent}{#1:\ }
\makebox[0pt][r]{#1:\ }}{}

\begin{displaymath} a^2+b^2=c^2
\end{displaymath}

\begin{vardesc}{gdzie}%
$a$, $b$ -- przyprostok±tne, \par
$c$ -- przeciwprostok±tna.
\end{vardesc}
\end{example}

\section{Pude³ka \label{sec:boxes}}

Ka¿d± stronê {\LaTeX} tworzy z~pude³ek\index{pude³ko}, które odpowiednio
skleja. Elementarnymi pude³kami s± litery, z~których sklejane s± s³owa.
S³owa s± nastêpnie ³±czone w~wiersze, a~wiersze -- w~akapity. Do ³±czenia
u¿ywany jest specjalny klej, który dziêki elastyczno¶ci pozwala wyrazy
¶cisn±æ lub rozci±gn±æ tak, by dok³adnie wype³nia³y wiersze na stronie.

Trzeba przyznaæ, ¿e takie ujêcie jest mocno uproszczon± wersj± tego, co
siê naprawdê dzieje, chocia¿ zasadniczo bior±c, dzia³anie {\TeX}a mo¿na
jednak wyja¶niæ w³a¶nie w~terminach pude³ek oraz kleju\index{klej}
(odstêpu wstawianego miêdzy pude³kami). Pude³kami s± nie tylko litery.
Do pude³ka mo¿na w³o¿yæ praktycznie wszystko, tak¿e inne pude³ka. Ka¿de
pude³ko {\LaTeX} traktuje jak pojedyncz± literê.

Chocia¿ nie mówili¶my o~tym wprost, pude³ka pojawia³y siê ju¿
w~poprzednich rozdzia³ach. Na przyk³ad polecenie \ci{includegraphics}
albo otoczenie \ei{tabular} tworz± pude³ka. Dziêki temu dwa rysunki albo
tabele mo¿na ³atwo zestawiæ obok siebie. Trzeba jedynie zadbaæ o~to, by
³±czna szeroko¶æ po³±czonych obiektów nie przekracza³a szeroko¶ci
szpalty.

To samo odnosi siê do akapitów, które -- je¶li tego potrzebujemy -- 
mo¿emy sk³adaæ w~pude³ka o~zadanej szeroko¶ci:
%
\begin{command}
\ci{parbox}\verb|[|\emph{pos}\verb|]{|\emph{szeroko¶æ}%
\verb|}{|\emph{tekst}\verb|}|
\end{command}
%
\noindent
Do tego samego celu mo¿na wykorzystaæ otoczenie:
%
\begin{command}
\verb|\begin{|\ei{minipage}\verb|}[|\emph{pos}\verb|]{|%
\emph{szeroko¶æ}\verb|}| \emph{tekst} \verb|\end{|\ei{minipage}\verb|}|
\end{command}
%
\noindent
Argument \emph{szeroko¶æ} to wymiar okre¶laj±cy szeroko¶æ pude³ka.
Argument \emph{pos\/} jest jednoliterowy i~mo¿e przyjmowaæ jedn±
z~warto¶ci: \texttt{c}, \texttt{t} lub \texttt{b}. Warto¶ci te
okre¶laj±, jak {\LaTeX} ma umie¶ciæ pude³ko wzglêdem otaczaj±cego
tekstu. Warto¶æ \verb|c| oznacza umieszczenie ¶rodka wysoko¶ci pude³ka
na linii podstawowej\index{linia podstawowa}, \verb|t| -- umieszczenie
linii podstawowej pierwszego wiersza w~pude³ku na linii
podstawowej\index{linia podstawowa} otaczaj±cego tekstu, natomiast
\verb|b| -- umieszczenie dolnej krawêdzi pude³ka na linii
podstawowej\index{linia podstawowa}. Wynik zastosowania parametrów
ilustruje poni¿szy przyk³ad (liniê podstawow±\index{linia podstawowa}
oznaczono kresk±):
%%
\iffalse
%% JG
G³ówna ró¿nica miêdzy \ci{parbox} a~\pai{minipage} polega na tym, ¿e
wewn±trz \verb|parbox| nie wszystkie polecenia i~otoczenia s± dozwolone,
w~przeciwieñstwie do otoczenia \verb|minipage|. 
\fi
%%
%%
\begin{example}
\makebox[0pt][l]{\rule{66mm}{.4pt}}%
\parbox[c]{9mm}{5 5 5 5 5 5 5 5 5}
\parbox[t]{9mm}{6 6 6 6 6 6 6 6 6}
\parbox[b]{9mm}{8 8 8 8 8 8 8 8 8}
\end{example}

\bigskip
\noindent
Polecenie \ci{parbox} sk³ada tekst w~pude³ku, w~razie potrzeby dziel±c
tekst na linijki. Inaczej jest z~pude³kami uzyskiwanymi 
poleceniem \ci{mbox}, których zawarto¶æ nigdy nie jest dzielona na
wiersze. Polecenia tego u¿ywamy, gdy trzeba zapobiec dzieleniu wyrazu
lub sekwencji wyrazów na wiersze. Polecenie \verb+\mbox+ jest
uproszczon± wersj± instrukcji \ci{makebox}, o~sk³adni:
%
\begin{command}
\ci{makebox}\verb|[|\emph{szeroko¶æ}\verb|][|\emph{pos}\verb|]{|%
\emph{tekst}\verb|}|
\end{command}
%
\noindent
W~opcjonalnym argumencie \emph{szeroko¶æ} mo¿emy zadaæ szeroko¶æ
pude³ka. Mo¿e siê ona ró¿niæ od naturalnej szeroko¶ci tekstu w~pude³ku;
mo¿e wynosiæ zero, a~nawet byæ wielko¶ci± ujemn±! W~obrêbie argumentu
\emph{szeroko¶æ} mo¿emy siê te¿ pos³ugiwaæ wielko¶ciami \ci{width}
(szeroko¶æ), \ci{height} (wysoko¶æ), \ci{depth} (g³êboko¶æ) oraz
\ci{totalheight} (suma wysoko¶ci i~g³êboko¶ci). Ponadto argument
\emph{pos} okre¶la sposób umieszczenia tekstu. Litera \texttt{c}~oznacza
wy¶rodkowanie, \texttt{l}~-- dosuniêcie do lewej, \texttt{r}~--
dosuniêcie do prawej, a~\texttt{s}~-- wyspacjowanie zawarto¶ci.

Poni¿szy przyk³ad ilustruje u¿ycie polecenia \verb+\width+
w~obrêbie argumentu \emph{szeroko¶æ}. Pierwsze pude³ko ma szeroko¶æ
równ± po³owie naturalnej szeroko¶ci tekstu:
%
\begin{example}
\makebox[.5\width][l]{oooooooo}%
\makebox{xxxxxxxx}
\end{example}

\bigskip
\noindent
Polecenie \ci{framebox} dzia³a dok³adnie jak \ci{makebox},
z~tym ¿e naoko³o pude³ka kre¶lona jest ramka.

Oto przyk³ad zastosowania poleceñ \ci{makebox} i~\ci{framebox}:
%
\begingroup
\hbadness 10000
\begin{example}
\makebox[\textwidth]{%
p o ¶ r o d k u}\par
\makebox[\textwidth][s]{%
r o z s t r z e l o n y}\par
\framebox[1.1\width]{Teraz jestem
obramowany!} \par
\framebox[0.8\width][r]{Trochê
tu jest za szeroko} \par
\framebox[1cm][l]{Nie
ma sprawy}
Da siê to czytaæ?
\end{example}
\endgroup

\bigskip
\noindent
Pude³ka mo¿na te¿ przesuwaæ w~pionie. S³u¿y do tego polecenie:
%
\begin{command}
\ci{raisebox}\verb|{|\emph{przesuniêcie}\verb|}[|%
\emph{wysoko¶æ}\verb|][|\emph{g³êboko¶æ}\verb|]{|\emph{tekst}\verb|}|
\end{command}
%
\noindent
Argument \emph{przesuniêcie} okre¶la wielko¶æ przesuniêcia w~górê (lub
w~dó³, je¿eli wielko¶æ przesuniêcia jest ujemna). Ponadto za pomoc±
parametrów opcjonalnych \emph{wysoko¶æ} oraz \emph{g³êboko¶æ} mo¿na
zadaæ nominaln± wysoko¶æ oraz g³êboko¶æ pude³ka (\LaTeX{} bêdzie traktowa³
pude³ko tak, jakby mia³o zadane wymiary, bez wzglêdu na wymiary
naturalne). Wewn±trz parametrów mo¿na skorzystaæ z~wielko¶ci
\ci{width}, \ci{height}, \ci{depth} oraz \ci{totalheight}.

\begin{example}
\raisebox{0pt}[0pt][0pt]{\Large%
\textbf{Aaaa\raisebox{-0.3ex}{a}%
\raisebox{-0.7ex}{aa}%
\raisebox{-1.2ex}{r}%
\raisebox{-2.2ex}{g}%
\raisebox{-4.5ex}{h}}}
Krzycza³a, ale nikt nie zauwa¿y³, 
¿e co¶ siê jej przytrafi³o.
\end{example}

\section{Kreski i~podpory \label{sec:rule}}

W~wyniku wykonania polecenia \ci{rule}, postaci:
%
\begin{command}
\ci{rule}\verb+[+\emph{przesuniêcie}\verb+]{+%
\emph{szeroko¶æ}\verb+}{+\emph{wysoko¶æ}\verb+}+
\end{command}
%
\noindent
otrzymujemy w~sk³adzie
czarny prostok±t:
%
\begin{example}
\rule{3mm}{.1pt}%
\rule[-1mm]{5mm}{1cm}%
\rule{3mm}{.1pt}%
\rule[1mm]{1cm}{5mm}%
\rule{3mm}{.1pt}
\end{example}
%
\noindent
Polecenie \ci{rule} s³u¿y zwykle do rysowania kresek pionowych
i~poziomych. Na przyk³ad gruba czarna krecha na stronie tytu³owej
niniejszego \emph{Wprowadzenia} to wynik zadzia³ania instrukcji:
%
\begin{code}
\verb+\rule[-1ex]{\textwidth}{5pt}+
\end{code}
%
Parametr \emph{przesuniêcie} okre¶la, jak wysoko przesun±æ kreskê
ponad liniê podstawow±\index{linia podstawowa} (lub opu¶ciæ 
poni¿ej linii podstawowej, je¶li parametr jest ujemny).

Specjalnym przypadkiem jest kreska o~zerowej szeroko¶ci, lecz
o~niezerowej wysoko¶ci. Tak± kreskê nazywamy \emph{podpor±}
(\USemph{strut}). Podpora to czêsto stosowana metoda nadawania
wszystkim elementom jednakowej wysoko¶ci. Spójrzmy na poni¿szy
przyk³ad. Dziêki wstawieniu podpory drugi wiersz ma tê sam± wysoko¶æ
co pierwszy. Zawarto¶æ wiersza trzeciego jest identyczna jak drugiego,
ale w~drugim wystêpuje niewidoczna podpora. Gdyby jej brakowa³o, to
wysoko¶æ drugiego wiersza by³aby mniejsza.

\begin{example}
\begin{tabular}{|c|} \hline
\rule{1pt}{4ex}Pittprop \ldots\\
\hline
\rule{0pt}{4ex}Strut\\ \hline
Strut\\ \hline
\end{tabular}
\end{example}

%%<PLext>
\section{Wiêcej o~sk³adaniu tabel~\label{more:tables}}
\subsection{Tabele o~zadanej szeroko¶ci}

W~otoczeniu~\ei{tabular} szeroko¶æ poszczególnych kolumn tabeli
jest ustalana automatycznie, a~szeroko¶æ tabeli jest sum± szeroko¶ci
kolumn i~odstêpów miêdzykolumnowych. 
Czasami jednak trzeba z³o¿yæ tabelê o~z~góry zadanej 
szeroko¶ci; jest to potrzebne przyk³adowo wtedy, gdy wszystkie tabele
w~dokumencie maj± mieæ tê sam± szeroko¶æ.

Do tego celu mo¿na u¿yæ albo otoczenia \ei{tabular*},
albo otoczenia \ei{tabularx} z~pakietu o~tej samej nazwie. Niestety
ka¿dy z~tych sposobów ma powa¿ne ograniczenia funkcjonalne. Rozpocznijmy
od otoczenia \ei{tabular*}, które ró¿ni siê od \ei{tabular} 
tylko jednym dodatkowym parametrem 
obowi±zkowym, okre¶laj±cym szeroko¶æ tabeli:
%
\begin{command}
\verb|\begin{tabular*}{|\emph{szeroko¶æ}\verb|}{|\emph{spec-kolumn}\verb|}|
\end{command}
%
\noindent
Rozwa¿my przyk³ad tabeli zawieraj±cej najwa¿niejsze ,,parametry'' 
s³ynnych wzniesieñ i~prze³êczy:
\begin{code}
\begin{verbatim}
\begin{tabular}{|l|r|r|r|r|r|}\hline
Nazwa   & \multicolumn{2}{|c|}{Wys. w~m~n.p.m.} &  
D³ugo¶æ & \multicolumn{2}{|c|}{Nachylenie \%}\\ 
 \cline{2-3} \cline{5-6}% \cline mo¿na wstawiaæ wielokrotnie
        &  pocz±tek & koniec & w~km & ¶r. & max    \\ \hline
Col du Galibier & 1401 & 2646 & 18,1 & 6,9\% & 14,5 \\
Alpe D'Huez     &  724 & 1815 & 14,2 & 7,7\% & 15,0 \\
Passo Gavia     & 1734 & 2618 & 13,5 & 6,5\% & 20,0 \\ \hline
\end{tabular}
\end{verbatim}
\end{code}
\noindent
Z³o¿one tabele wygl±daj± nastêpuj±co:
\par 
\medskip
\noindent%%<-- wa¿ne
\begin{tabular}{|l|r|r|r|r|r|}\hline
Nazwa   & \multicolumn{2}{c|}{Wys. w~m~n.p.m.} &  D³ugo¶æ & \multicolumn{2}{c|}{Nachylenie \%}\\ 
  \cline{2-3} \cline{5-6}
        &  pocz±tek & koniec & w~km & ¶r. & max    \\ \hline
Col du Galibier & 1401 & 2646 & 18,1 & 6,9\% & 14,5 \\
Alpe D'Huez     &  724 & 1815 & 14,2 & 7,7\% & 15,0 \\
Passo Gavia     & 1734 & 2618 & 13,5 & 6,5\% & 20,0 \\ \hline
\end{tabular}
\par
\medskip
 %%
\noindent
Je¿eli tabela ma byæ z³o¿ona na przyk³ad 
na szeroko¶æ ³amu, to zastêpujemy \ei{tabular}
jego wersj± z~gwiazdk± oraz modyfikujemy preambu³ê tabeli:
\begin{code}
\begin{verbatim}
\begin{tabular*}{\textwidth}%
{@{\extracolsep{\stretch{1}}}|l|r|r|r|r|r|}\hline ...
\end{tabular}
\end{verbatim}
\end{code}
 %%
\noindent
Z³o¿ona tabela wygl±da nastêpuj±co:
\par \medskip

\noindent%%<-- wa¿ne
\begin{tabular*}{\textwidth}%
{@{\extracolsep{\stretch{1}}}|l|r|r|r|r|r|}\hline
Nazwa   & \multicolumn{2}{c|}{Wys. w~m~n.p.m.} &  D³ugo¶æ & \multicolumn{2}{c|}{Nachylenie \%}\\ 
  \cline{2-3} \cline{5-6}
        &  pocz±tek & koniec & w~km & ¶r. & max \\ \hline
Col du Galibier & 1401 & 2646 & 18,1 & 6,9\% & 14,5 \\
Alpe D'Huez     &  724 & 1815 & 14,2 & 7,7\% & 15,0 \\
Passo Gavia     & 1734 & 2618 & 13,5 & 6,5\% & 20,0 \\ \hline
\end{tabular*}
\par
\medskip
\noindent
Wewn±trz otoczenia \ei{tabular} {\LaTeX} odziela poszczególne kolumny
sta³ym odstêpem równym \ci{tabcolsep}. Do sk³adania tabel o~okre¶lonej
szeroko¶ci nale¿y ten odstêp zamieniæ na taki, którego wielko¶æ mo¿e siê
zmieniaæ (por.~punkt~\ref{sec:hspace}). Do tego celu nale¿y u¿yæ
wspomnianej w~punkcie~\ref{sec:tabular} (s.~\pageref{sec:tabular-et}) 
instrukcji \verb+@+. Ponadto polecenie
\ci{extracolsep}, umieszczone wewn±trz instrukcji \verb+@{...}+, wstawia
\emph{dodatkowy odstêp\/} miêdzy kolejnymi kolumnami -- do odwo³ania 
poleceniem \ci{extracolsep} albo a¿ do koñca tabeli.

W~powy¿szym przyk³adzie polecenie \verb+@{...}+ usuwa domy¶lny odstêp
miêdzykolumnowy, zastêpuj±c go specjalnym odstêpem o~zmiennej wielko¶ci
(taki odstêp wstawia polecenie \ci{stretch}). Manipuluj±c odstêpem
miêdzykolumnowym, {\LaTeX} dopasowuje szeroko¶æ tabeli do ¿±danej
wielko¶ci. Otoczenie \ei{tabular*}
%do prawid³owego dzia³ania 
powinno zawieraæ w~specyfikacji formatu kolumn co najmniej jedn±
konstrukcjê \verb|@{\extracolsep{\stretch{1}}}|. Uwa¿ny czytelnik
dostrze¿e jednak, ¿e kreski poziome pod pierwszym wierszem miêdzy
kolumnami 2--3 oraz 5--6 nie s± ,,doci±gniête'' do lewego brzegu.
Niestety nie da siê tego naprawiæ -- przynajmniej nie w~prosty sposób.
Otoczenie \ei{tabular*} nadaje siê do sk³adania tabel, ale tylko wtedy,
gdy nie korzystamy zbyt czêsto z~polecenia \ci{cline}.

Spróbujmy teraz zastosowaæ otoczenie \ei{tabularx}. W~tym celu najpierw
do preambu³y dokumentu do³±czamy pakiet \pai{tabularx}. Nastêpnie
zmieniamy tabelê w~taki sposób (kolumny, których szeroko¶æ ma
byæ wyznaczona automatycznie, oznaczamy symbolem \verb@X@):
\begin{code}
\begin{verbatim}
\begin{tabularx}{\textwidth}{|X|X|X|X|X|X|}\hline
...
\end{tabularx}
\end{verbatim}
\end{code}

\noindent
Z³o¿ona tabela wygl±da nastêpuj±co:
\par 
\medskip
\begingroup
\hbadness10001 %%<-- 
\noindent%%<-- wa¿ne
\begin{tabularx}{\textwidth}{|X|X|X|X|X|X|}\hline
Nazwa   & \multicolumn{2}{c|}{Wys. w~m~n.p.m.} &  D³ugo¶æ & \multicolumn{2}{c|}{Nachylenie \%}\\ 
  \cline{2-3} \cline{5-6}
        &  pocz±tek & koniec & w~km & ¶r. & max    \\ \hline
Col du Galibier & 1401 & 2646 & 18,1 & 6,9\% & 14,5 \\
Alpe D'Huez     &  724 & 1815 & 14,2 & 7,7\% & 15,0 \\
Passo Gavia     & 1734 & 2618 & 13,5 & 6,5\% & 20,0 \\ \hline
\end{tabularx}
\par
\endgroup
 %%
\medskip
\noindent
Teraz wprawdzie wszystkie kreski s± elegancko doci±gniête, ale jest
problem z~pierwsz± kolumn±: jest ona zbyt w±ska, a przez to zawarto¶æ
rubryk ju¿ siê nie mie¶ci i~musi zostaæ przeniesiona\footnote{Ponadto
  lepiej, by kolumny 2--6 by³y wyrównane do prawego, a~nie
  do lewego brzegu rubryki.}. Otoczenie \ei{tabularx} automatycznie
dzieli bowiem tabelê wy³±cznie na kolumny \emph{o~równej szeroko¶ci}.
Jest to jego najwiêksze ograniczenie funkcjonalne.

Specyfikacja kolumn tabeli oprócz \verb@X@ mo¿e zawieraæ tak¿e warto¶ci
,,tradycyjne'', takie jak: \verb@l@, \verb@r@ lub \verb@c@. 
Odpowiadaj±cym tym specyfikacjom kolumny maj± naturaln± szeroko¶æ.  
Przyk³adowo:
 %%
\begin{code}
\begin{verbatim}
\begin{tabularx}{\textwidth}{|l|X|X|X|X|X|}\hline
...
\end{tabularx}
\end{verbatim}
\end{code}
 %%
\noindent
Akurat w~naszym przyk³adzie osi±gneli¶my zadowalaj±cy
rezultat, gotowa tabela wygl±da bowiem nastêpuj±co:
\par
\medskip
\noindent%%<-- wa¿ne
\begin{tabularx}{\textwidth}{|l|X|X|X|X|X|}\hline
Nazwa   & \multicolumn{2}{c|}{Wys. w~m~n.p.m.} &  D³ugo¶æ & \multicolumn{2}{c|}{Nachylenie \%}\\ 
  \cline{2-3} \cline{5-6}
        &  pocz±tek & koniec & w~km & ¶r. & max    \\ \hline
Col du Galibier & 1401 & 2646 & 18,1 & 6,9\% & 14,5 \\
Alpe D'Huez     &  724 & 1815 & 14,2 & 7,7\% & 15,0 \\
Passo Gavia     & 1734 & 2618 & 13,5 & 6,5\% & 20,0 \\ \hline
\end{tabularx}
\medskip

Tabele z³o¿one z~u¿yciem otoczenia \ei{tabular} nie s± automatycznie
dzielone miêdzy stronami. Do sk³adu tabel, które nie mieszcz± siê na
pojedynczej stronie, s³u¿y 
pakiet~\ei{longtable}, opisany w~nastêpnym punkcie.

\subsection{Pakiet \pai{longtable} \label{sec:longtable}}

Pakiet definiuje otoczenie \ei{longtable}, pozwalaj±ce sk³adaæ tabele
ci±gn±ce siê przez wiele kolejnych stron dokumentu. 
Aby zapewniæ jednakowe szeroko¶ci
rubryk na wszystkich stronach, wymagana jest 
dwukrotna kompilacja dokumentu. Oto przyk³ad:
 %%
\begin{verbatim}
\begin{longtable}{|l|r|r|r|}
\caption{Tytu³ tabeli}\\\hline
\multicolumn{4}{|c|}{To jest nag³ówek pierwszej strony}\\\hline 
  nazwa & wysoko¶æ & d³ugo¶æ & nachylenie \\ \hline
  k-1 & k-2  & k-3 & k-4 \\ \hline
\endfirsthead
\hline
\multicolumn{4}{|c|}{To jest nag³ówek nastêpnych stron}\\
\hline k-1 & k-2 & k-3 & k-4\\\hline
\endhead
\hline \multicolumn{4}{|c|}{Stopka tabeli}\\ \hline
\endfoot
\hline \multicolumn{4}{|c|}{Stopka na ostatniej stronie}\\
\hline
\endlastfoot
 Col du T\'el\'egraphe & 1,566 & 12,0 & 6,7\% \\
 Col du Galibier & 2,646 & 18,1 & 6,9\% \\
 Col de la Madeleine & 2,000 & 25,4 & 6,1\% \\
 %% ... 17 pominiêtych wierszy ... 
 La Bola del Mundo & 2257 & 21,8 & 6,2\% \\
\end{longtable}
\end{verbatim}
 %% http://www.salite.ch/struttura/salite.asp?stato=Francia
 %% co¶ tu dopisaæ nt toporno¶ci tego pakietu, tabular + longtable

Po z³o¿eniu efekt jest nastêpuj±cy\footnote{Dane z~tabeli pochodz±
  z~katalogu \url{http://www.salite.ch}.}:

\begin{longtable}{|l|r|r|r|}
 \caption{Tytu³ tabeli}\\\hline
 \multicolumn{4}{|c|}{To jest nag³ówek pierwszej strony}\\ \hline 
  nazwa & wysoko¶æ & d³ugo¶æ & nachylenie \\ \hline
  k-1 & k-2  & k-3 & k-4 \\ \hline
 \endfirsthead
 \hline
 \multicolumn{4}{|c|}{To jest nag³ówek nastêpnych stron}\\
 \hline k-1 & k-2 & k-3 & k-4\\\hline
 \endhead
 \hline \multicolumn{4}{|c|}{Stopka tabeli}\\ \hline
 \endfoot
 \hline \multicolumn{4}{|c|}{Stopka na ostatniej stronie}\\
 \hline
 \endlastfoot
 Col du T\'el\'egraphe & 1,566 & 12,0 & 6,7\% \\
 Col du Galibier & 2,646 & 18,1 & 6,9\% \\
 Col de la Madeleine & 2,000 & 25,4 & 6,1\% \\
 Alpe D'Huez & 1815 & 14,2 & 7,7\% \\
 Col de la Croix de Fer & 2067 & 22,0 & 7,0\% \\
 %see http://pl.wikipedia.org/wiki/Fabio_Casartelli
 %for the details concerning Fabio Casartelli
 Col de Portet d'Aspet\index{Casartelli Fabio} & 1069 & 4,4 & 9,6\% \\
 %see http://en.wikipedia.org/wiki/Tom_Simpson
 %for the details concerning Tom Simpson
 Mont Ventoux\index{Simpson Tom} & 1912 & 21,0 & 7,6\%  \\
 Col de l`Izoard & 2361 & 15.9  & 6,9\% \\
 Passo dello Stelvio & 2758 & 24.3 & 7.4\% \\
 Col du Tr\'ebuchet & 1143 & 14.6 & 4.3\% \\
 Passo Gavia & 2618 & 13.5 & 6.5\% \\
 Col du Grand Colombier & 1505 & 15.9 & 7.8\% \\
 Col de l`Iseran & 2770 & 48,0  & 4.1\% \\
 Courchevel & 2000 & 21,7 & 6,5\% \\
 Col de l`Aspin & 1489 & 12,0 & 6,5\% \\
 Col de la Croix de l`Homme Mort & 1163 & 18,0 & 4,3\% \\
 Col de Notre Dame des Abeilles & 1000 & 13,9 & 5,1\% \\
 Paso del Morredero & 1872 & 25,0 & 5,4\% \\
 Collado de la Caballar & 1308 & 14,5 & 7,5\% \\
 Capilla de la Magdalena & 1137 & 11,0 & 5,5\% \\
 La Bola del Mundo & 2257 & 21,8 & 6,2\% \\
\end{longtable}

\subsection{Pakiet \pai{array}}

Do sk³adu tabel o~bardziej skomplikowanym uk³adzie graficznym lepiej
u¿ywaæ pakietu \pai{array}. Pakiet ten nie wprowadza ¿adnego nowego
otoczenia, redefiniuje jedynie i~rozszerza standardowe otoczenie
\ei{tabular}.

W~,,standardowym'' otoczeniu \ei{tabular} konstrukcja
\verb|p{|\emph{szer-kolumn}\verb|}| deklaruje kolumnê, w~której
zawarto¶æ ka¿dej rubryki bêdzie sk³adana w~prostok±t o~zadanej
szeroko¶ci, z~wyrównywaniem obu marginesów (odpowiednik
\verb@\parbox[t]{szer}@).  Pakiet \pai{array} wprowadza ponadto
\verb@b{szer}@ -- odpowiednik \verb@\parbox[b]{szer}@ -- oraz
\verb@m{szer}@ -- odpowiednik \verb@\parbox{szer}@. 
Przyk³ad:
 %%
\begin{code}
\begin{verbatim}
\begin{tabular}{|p{8mm}|p{8mm}|p{8mm}|} \hline
x y z x y z x y z x y z x y z & x y z x y z x y y&
1 1 1 1 1 \\ \hline \end{tabular}
\begin{tabular}{|m{8mm}|m{8mm}|m{8mm}|} \hline
x y z x y z x y z x y z x y z & x y z x y z x y y&
2 2 2 2 2 \\ \hline \end{tabular}
\begin{tabular}{|b{8mm}|b{8mm}|b{8mm}|} \hline
x y z x y z x y z x y z x y z & x y z x y z x y y&
3 3 3 3 3 \\ \hline
\end{tabular}
\end{verbatim}
\end{code}
 %%
Z³o¿one tabele wygl±daj± nastêpuj±co:
 %%
\par 
\medskip
\noindent%%<-- wa¿ne
\begin{tabular}{|p{8mm}|p{8mm}|p{8mm}|} \hline
x y z x y z x y z x y z x y z & x y z x y z x y y&
1 1 1 1 1 \\ \hline
\end{tabular}
\quad
\noindent
\begin{tabular}{|m{8mm}|m{8mm}|m{8mm}|} \hline
x y z x y z x y z x y z x y z & x y z x y z x y y&
2 2 2 2 2 \\ \hline
\end{tabular}
\quad
\noindent
\begin{tabular}{|b{8mm}|b{8mm}|b{8mm}|} \hline
x y z x y z x y z x y z x y z & x y z x y z x y y&
3 3 3 3 3 \\ \hline
\end{tabular}

\par
\bigskip
\noindent
Kolejnym u¿ytecznym rozszerzeniem zdefiniowanym w~\pai{array} jest
mo¿liwo¶æ bardziej szczegó³owego okre¶lenia sposobu formatowania rubryk
tabeli, ni¿ ma to miejsce w~standardowym otoczeniu \ei{tabular}, gdzie
w~zasadzie mo¿emy jedynie okre¶liæ sposób justowania zawarto¶ci rubryk
w~poszczególnych kolumnach. Wracaj±c do przyk³adu tabeli zawieraj±cej
ró¿ne ,,parametry'' dotycz±ce prze³êczy i~wniesieñ, za³ó¿my, ¿e 
nazwê wzniesienia chcemy z³o¿yæ kursyw±, a~d³ugo¶æ -- odmian± pó³grub±. 
Mo¿na to
oczywi¶cie osi±gn±æ, wstawiaj±c odpowiednie polecenia do ka¿dej rubryki
danej kolumny, ale sprawniej bêdzie zastosowaæ zdefinowane w~pakiecie
\pai{array} konstrukcje:
\begin{command}
\verb|>{|\emph{polecenia}\verb|}| lub  \verb|<{|\emph{polecenia}\verb|}|
\end{command}
 %%
\noindent
Konstrukcji \verb|>{|\emph{polecenia}\verb|}| mo¿na u¿yæ
w~preambule \emph{przed\/} \verb@c@, \verb@l@, \verb@r@, \verb@p@ oraz
\verb@m@ i~\verb@b@. Jej dzia³anie polega na wstawieniu 
\emph{poleceñ\/} na pocz±tku ka¿dej rubryki w~tej kolumnie.
Podobnie, \verb|<{|\emph{polecenia}\verb|}| mo¿na u¿yæ \emph{po\/}
\verb@c@, \verb@l@, \verb@r@, \verb@p@, \verb@m@ i~\verb@b@. W~rezultacie
\emph{polecenia} zostan± wstawione na koñcu ka¿dej
rubryki w~tej kolumnie.

Wracaj±c do przyk³adu, oto preambu³a tabeli wykorzystuj±ca
omawiane konstrukcje pakietu \pai{array}:
 %%
\begin{code}
\begin{verbatim}
\begin{tabular}{|>{\itshape}l|r|r|>{\bfseries}r|r|r|}\hline
Nazwa   & \multicolumn{2}{|c|}{Wys. w~m~n.p.m.} &  
D³ugo¶æ & \multicolumn{2}{|c|}{Nachylenie \%}\\
...
\end{verbatim}
\end{code}
 %%
Wynik jest nastêpuj±cy:
 %%
\par
\medskip
\noindent
\begin{tabular}{|>{\itshape}l|r|r|>{\bfseries}r|r|r|}\hline
Nazwa   & \multicolumn{2}{c|}{Wys. w~m~n.p.m.} &  
D³ugo¶æ & \multicolumn{2}{c|}{Nachylenie \%}\\
 \cline{2-3} \cline{5-6}% 
        &  pocz±tek & koniec & w~km & ¶r. & max    \\ \hline
Col du Galibier & 1401 & 2646 & 18,1 & 6,9\% & 14,5 \\
Alpe D'Huez     &  724 & 1815 & 13,5 & 7,7\% & 15,0 \\
Passo Gavia     & 1734 & 2618 & 13,5 & 6,5\% & 20,0 \\ \hline
\end{tabular}
\par

\medskip
\noindent
Do zmiany g³êboko¶ci konkretnego wiersza s³u¿y 
opcjonalny argument polecenia~\verb@\\@, np.
\verb@\\[2pt]@. 
Wysoko¶æ i~g³êboko¶æ wiersza mo¿na zmieniæ za pomoc± 
niewidzialnej kreski, np.
\verb@\rule[-3mm]{0mm}{8mm}@. Przyk³adowo, w~powy¿szym
przyk³adzie tabela bêdzie wygl±da³a lepiej, je¿eli
dodamy do pierwszego wiersza:
\begin{code}
\begin{verbatim}
Col du Galibier\rule[-3.5pt]{0pt}{15pt}
\end{verbatim}
\end{code}
Spowoduje to wstawienie dodatkowego odstêpu miêdzy
kresk± nad pierwszym wierszem tabeli a~zawarto¶ci± wiersza.

\subsection{Pakiet \pai{tap}}
% --------------------

Pakiet \pai{tap} (autorzy: Bogus³aw Jackowski\index{Jackowski Bogus³aw},
Piotr Pianowski\index{Pianowski Piotr} i~Piotr
Strzelczyk\index{Strzelczyk Piotr}) pozwala na eleganckie sk³adanie
nawet najbardziej ekstrawaganckich (jednostronicowych) tabel, z~tym ¿e
stosuje niestandardowy zapis\footnote{Tak naprawdê, nie jest to nawet
  pakiet w~rozumieniu {\LaTeX}a i~zamiast poleceniem \ci{usepackage}
  nale¿y go do³±czaæ poleceniem \ci{input}.}, co mo¿e powodowaæ problemy
w~integracji z~innymi pakietami {\LaTeX}a, np. pakietem \pai{colortbl},
s³u¿±cym do kolorowania rubryk w~tabelach. Oto przyk³ad:
\par
\medskip
\noindent
\begin{code}
\begin{verbatim}
\input{tap.tex} %% <- do³±czenie pakietu
\desiredwidth=\textwidth %% sk³ad na szeroko¶æ ³amu
\begintable
\begintableformat \left " &\right \endtableformat
\=
\B!^  | @2\center{Wys. w~m~n.p.m.} | D³ugo¶æ |
     @2\center{Nachylenie \%} \E! 
\B"- \center{Nazwa} " @2\- "  " @2\- \E"
\B"_       | pocz±tek | koniec | w~km | ¶r.   | max  \E!
\B! Col du Galibier | -- |  2645 | 17,5 | 6,9\% | 14,5 \E!
\B! Alpe D'Huez     | -- |  1839 | 13,0 | 8,5\% | 15,0 \E!
\B! Passo Gavia     | -- |  2621 | 17,3 | 7,9\% | 20,0 \E!
\=
\endtable
\end{verbatim}
\end{code}
 %%
Wynik jest imponuj±cy:
 %%
\par
\medskip
\begingroup
\input{tap.tex}
\desiredwidth=\textwidth %% sk³ad na szeroko¶æ ³amu
\begintable
\begintableformat \left " &\right \endtableformat
\=
\B!^  | @2\center{Wys. w~m~n.p.m.} | D³ugo¶æ | @2\center{Nachylenie \%} \E! 
\B"- \center{Nazwa}      " @2\- "  " @2\- \E"
\B!_       | pocz±tek | koniec | w~km | ¶r.   | max  \E! \=
\B!^ Col du Galibier | 1401 |  2646 | 18,1 | 6,9\% | 14,5 \E!
\B!+ Alpe D'Huez     |  724 |  1815 | 14,2 | 7,7\% | 15,0 \E!
\B!_ Passo Gavia     | 1734 |  2618 | 13,5 | 6,5\% | 20,0 \E!
\=
\endtable
\endgroup

\medskip
\noindent
Wiêcej informacji mo¿na odnale¼æ w~(polskojêzycznej) dokumentacji
pakietu (\CTAN{macros/generic/tables/tap077.zip}).

%% doda³em akapit, ¿eby siê tak nie koñczy³o gwa³townie:-) [tp]:
\medskip
\noindent
Na zakoñczenie uwaga: sk³adanie tabel w~{\LaTeX}u nie jest mo¿e a¿ tak
proste jak w~edytorach {\WYSIWYG}, ale za to mo¿na tworzyæ konstrukcje
niezwykle trudne lub wrêcz niemo¿liwe do wykonania w~innych programach.
Ponadto zadanie sk³adania tabel mo¿na sobie znakomicie u³atwiæ, stosuj±c
skryptowe jêzyki programowania, w~rodzaju Perla czy Pythona. Ju¿
stosunkowo niewielka umiejêtno¶æ programowania w~wymienionych jêzykach
pozwala na szybk± konwersjê generowanych przez zewnêtrzne aplikacje
danych tabelarycznych do formatu {\LaTeX}a.

% To jest teraz wstawione do indeksu!
% \label{verylast}\mbox{}%% przeniesione do xtables
% </PLext>
%
\endinput
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "lshort2e"
%%% case-fold-search: nil
%%% coding: latin-2
%%% LocalWords: ghostscript acrobat makeindex plmindex kiepsko¶ci
%%% ispell-local-dictionary: "polish"
%%% End: