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
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
|
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-2">
<TITLE>Jak udìlám <I>X</I> v TeXu nebo LaTeXu?</TITLE>
<STYLE TYPE="text/css">
<!--
ol.section li { font-size:large;font-weight:bold;margin-top:1em; }
ul.question li { font-size:medium;font-weight:normal;margin-top:.2em; }
-->
</STYLE>
</HEAD>
<BODY BACKGROUND="images/back_narrow.gif"
BGCOLOR="#ffffff"
TEXT="#000000"
LINK="#900000"
ALINK="#C14242"
VLINK="#D30000">
<TABLE BORDER=0>
<TR><TD width=30> </TD>
<TD><TABLE width="100%" BORDER=0>
<TR><TD valign="middle" align="center"><FONT SIZE="+2"><B>Jak udìlám <I>X</I> v TeXu nebo LaTeXu?</FONT></TD><TD align="right">
<a href="http://www.cstug.cz/"><IMG BORDER=0 SRC="images/logo.gif" ALT="CSTUG" HEIGHT=51 WIDTH=165 ALIGN="right"></a><BR>
</TD></TR></TABLE></TD></TR>
<TR><TD></TD><TD></TD></TR>
<TR><TD></TD><TD><HR></TD></TR>
<TR><TD></TD><TD>
<P>
<P>
Dlho sa pova¾ovalo za nemo¾né vytvovi» prostredie <CODE>proof</CODE>, ktoré by automaticky
vkladalo symbol konca dôkazu. Niektoré dôkazy konèia vysádzaním matematiky, iné
nie. Ak vstupný súbor obsahuje <CODE>...\] \end{proof}</CODE>, potom LaTeX ukonèí
vysádzanú matematiku a je pripravený na nový riadok bez toho, aby preèítal
akúkoµvek informáciu o ukonèení dôkazu. Kód je teda celkom zlo¾itý. Symbol
<EM>mô¾ete</EM> vlo¾i» ruène, ale balík <CODE>ntheorem</CODE> tento problém rie¹i
za pou¾ívateµov LaTeXu: skutoène poskytuje automatický spôsob znaèenia konca
dôkazu.
<P>
AMSLaTeXovský balík <CODE>amsthm</CODE> tie¾ poskytoju prostredie <CODE>proof</CODE>, ktoré
toto doká¾e, hoci ak dôkaz konèí rovnicou, musíte vlo¾i» príkaz csx{qedhere}:
<PRE>
\begin{proof}
text...
\begin{equation*}
matematika... \tag*{\qedhere}
\end{equation*}
\end{proof}
</PRE>
Kon¹trukcia <CODE>\tag*{\qedhere}</CODE> mô¾e by» pou¾itá v µubovolnom èíslovacom prostredí
AMSLaTeXu.<BR>
<CODE>amsthm.sty</CODE>: distribuované ako súèas» sady AMSLaTeX <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/amslatex">amslatex</A><BR>
<CODE>ntheorem</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/ntheorem">ntheorem</A>
<P>
<P>
<P><A NAME="Q-theorems"><HR><H3>Matematické vìty a definice sázené antikvou</H3></A>
<P>
Chceme-li vyu¾ít výhod pøíkazu <CODE>\newtheorem</CODE>, a pøitom nechceme
být omezeni na to, ¾e obsah bude vysázen sklonìným fontem
(napø. k vytvoøení poznámek,
pøíkladù, dùkazù,...) pak pou¾ijeme styl <CODE>theorem.sty</CODE>
(<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A>). Popøípadì mù¾eme definovat prostøedí, napø. <CODE>remark</CODE>,
jeho¾ obsah bude sázen antikvou (roman):
<PRE>
\newtheorem{preremark}{Poznámka}
\newenvironment{remark}%
{\begin{preremark}\upshape}{\end{preremark}}
</PRE>
<P>
Balík <CODE>ntheorem</CODE> (<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A>) poskytuje matematické vìty
a definice sázené antikvou pøímo.
<P>
<P>
<P><A NAME="Q-numbersets"><HR><H3>Oznaèení èíselných mno¾in a dvojitì psané písmo</H3></A>
<P>
Je dobré mít pøíkazy typu <CODE>\R</CODE> pro standardní mno¾inu reálných èi
jiných èísel. Tradiènì byly tyto mno¾iny sázeny tuènì.
Matematici v¹ak obvykle nemají pøístup k tlustým køídám, a proto
si vymysleli speciální symboly, které se nyní bì¾nì pou¾ívají pro oznaèení
<CODE>\R</CODE>, <CODE>\C</CODE>,
atd. Tyto symboly jsou oznaèovány jako „zdvojená latinka“
(blackboard bold). Døíve, ne¾
zaèneme trvat na pou¾ití tìchto symbolù, bylo by dobré se zamyslet, zda by
nebylo lépe se navrátit k pùvodnímu oznaèování èíselných mno¾in
prostým tuèným písmem, co¾ by èinilo vìc daleko jednodu¹¹í.
<P>
<P>
Sada velkých písmen zdvojené latinky je souèástí AMS-fontù
„msam“ (napø. „msam10“ pro velikost 10pt) a „msbm“.
Fonty obsahují veliké mno¾ství matematických symbolù, které podstatnì
roz¹iøují sadu symbolù dodávanou ve standardní distribuci TeXu v Type 1
formátu. K dispozici jsou podpùrné soubory pro bìh pod Plain TeXem
a LaTeXem (balíky <CODE>amssymb</CODE> a <CODE>amsfonts</CODE>).
<P>
Souèástí balíku jsou i dva soubory, z nich¾ jeden usnadòuje vkládání fontù do
dokumentu a ve druhém jsou definovány pøíkazy pro jednotlivé symboly.
Oba lze pou¾ít jak v TeXu tak v LaTeXu.
Otázky a doporuèení tykající se tìchto fontù smìrujte na
<CODE>tech-support@math.ams.org.</CODE>
<P>
Jiná úplná sada fontù zdvojené latinky, rodina fontù bbold,
je dostupná ve zdrojových souborech pro METAFONT v adresáøi <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/fonts/bbold">bbold</A>.
Zajímavostí je, ¾e tyto fonty obsahují kromì velkých i malá
písmena, které jsou
na skuteèných tabulích vidìt jen zøídka. Zdrojový adresáø fontu obsahuje také
zdrojové soubory LaTeXovského balíku umo¾òujícího pou¾ívaní fontu. Fonty
nejsou dostupny v Type 1 formátu.
<P>
Alternativním zdrojem Type 1 fontù se znaky zdvojené latinky mù¾ou být poøád
se roz¹iøující sady kompletních rodin (jak komerèní, tak volnì dostupné), které
byly pøipraveny pro pou¾ití s TeXem/LaTeXem ( <A HREF="sectL.html#Q-pschoice">Výbìr zvìt¹ovatelných obrysových fontù</A>).
Z volnì dostupných sad poskytujý repliky <CODE>msam</CODE> and <CODE>msbm</CODE>
rodiny <CODE>txfonts</CODE> a <CODE>pxfonts</CODE>, rodina <CODE>mathpazo</CODE>
obsahuje „matematicky dùle¾itý“ výbìr zdvojené latinky.
<P>
<P>
V pøípadì, ¾e font nemáme, lze vytvoøit také jednoduchá makra pro tvorbu
zdvojených znakù:
<PRE>
\newcommand{\R}{{\sf R\hspace*{-0.9ex}%
\rule{0.15ex}{1.5ex}\hspace*{0.9ex}}}
\newcommand{\N}{{\sf N\hspace*{-1.0ex}%
\rule{0.15ex}{1.3ex}\hspace*{1.0ex}}}
\newcommand{\Q}{{\sf Q\hspace*{-1.1ex}%
\rule{0.15ex}{1.5ex}\hspace*{1.1ex}}}
\newcommand{\C}{{\sf C\hspace*{-0.9ex}%
\rule{0.15ex}{1.3ex}\hspace*{0.9ex}}}
\newcommand{\openone}{\leavevmode\hbox{\small1\kern-2.8pt\normalsize1}}
</PRE>
která lze s úspìchem pou¾ít v pøípadì, ¾e okolní text je sázen <CODE>cmr10</CODE>.
Av¹ak, jeliko¾ se nejedná o øádné matematické fonty, nelze je
u¾ít v matematických indexech. Krom toho velikost a poloha vertikální
linky je ovlivnìna výbìrem fontu okolního textu (makra obsahují
<CODE>ex</CODE>).
<P>
<P>
<P><A NAME="Q-degree"><HR><H3>Jak vysázím znaèku stupnì v TeXu</H3></A>
<P>
Pomocí makra <CODE>\degree</CODE> definovaného takto:<BR>
<CODE>\newcommand{\degree}[1][]{\ensuremath{{#1}^\circ}}</CODE>
<P>
<P>
<P><A NAME="Q-quotes"><HR><H3>Jak vysázím „støedoevropské“ uvozovky</H3></A>
<P>
Uvozovky v èe¹tinì, sloven¹tinì, jako¾ i jiných støedoevropských
jazycích, mají jiný tvar ne¾ anglické “”, které TeX sází
implicitnì.
Nejjednodu¹¹í zpùsob, jak vysázet text v „na¹ich“ uvozovkách, je
pomocí makra <CODE>\uv</CODE>: <CODE>v~\uv{na¹ich} uvozovkách</CODE>.
Makro <CODE>\uv</CODE> je souèástí balíkù <CODE>czech.sty</CODE> a <CODE>slovak.sty</CODE>.
<P>
Lep¹ím a obecnìj¹ím øe¹ením je makro Tomá¹e Hály <CODE>\uviq</CODE>, které
dovoluje uvozované texty vnoøovat. Toto makro je souèástí distribuce
CSTeX.
<P>
<P>
<P>
<P><A NAME="Q-comma"><HR><H3>Chci desetinnou èárku místo teèky</H3></A>
<P>
TeX implicitnì pøedpokládá, ¾e v zápisu desetinných èísel
oddìluje desetiny od jednotek desetinná teèka.
Èárku zapsanou v matematickém módu TeX pova¾uje za oddìlovaè polo¾ek
v posloupnostech, mno¾inách apod., a proto za ni sází malou mezeru.
<P>
Chceme-li jednorázovì vysázet desetinné èíslo s desetinnou èárkou,
staèí èárku uzavøít do skupiny: <CODE>$3{,}14159$</CODE>.
<P>
Takové øe¹ení je v¹ak nevýhodné pro texty, kde je desetinných èísel
mnoho. V takovém pøípadì lze nastavit globálnì, ¾e za èárkou
v matematickém módu se mezera sázet nemá:
<PRE>
\mathcode`,="002C
$3,14159$
</PRE>
Pokud pøi tomto globálním nastavení pøesto nìkde mezeru udìlat
potøebujeme, musíme ji napsat explicitnì:
<CODE>$(m,\,n)$</CODE> nebo <CODE>$\{0,\:1,\:2\}$</CODE>.
<P>
Jiným øe¹ením je ponechat ve vstupním souboru desetinné teèky,
ale pøemapovat na èárky (to se hodí tøeba tehdy, kdy¾ máme velké soubory
desetinných èísel z jiných výstupù).
<PRE>
\mathcode`.="002C
$3.14159$
</PRE>
<P>
Snad nejjednoduch¹ím øe¹ením je pou¾ití balíku <CODE>icomma</CODE>. Balík
zajistí, ¾e za èárkou nebude mezera sázena, pokud ji za èárku nenapí¹ete (jako
napøíklad u <CODE>f(x, y)</CODE>), jinak se za èárku vysází obvyklá malá mezera.<BR>
<CODE>icomma.sty</CODE>: distribuováno jako souèást <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/was">was</A>
<P>
<P><A NAME="Q-breakbox"><HR><H3>Zalamovanie textových boxov</H3></A>
<P>
TeXovské/LaTeXovské boxy nemô¾u by» pri be¾nom pou¾ití zalamované. Keï raz
nieèo vysádzate do boxu, zostane to tam a box bude preènieva» niektorý z okrajov
stránky (v prípade, ¾e sa nezmestí do oblasti, kam má by» vysádzaný).
<P>
Ak chcete ma» podstatnú èas» textu orámovanú (alebo zafarbenú), obmedzenia
zaèínajú predstavova» skutoèné bremeno. Na¹»astie sa problém dá obís».
<P>
Balík <CODE>framed</CODE> poskytuje prostredia <CODE>framed</CODE> a <CODE>shaded</CODE>. Obe vkladajú
svoj obsah do nieèoho, èo vyzerá ako orámovaný (alebo farebný) box, ale podµa
potreby sa na konci stránky láme. Prostrediam chýbajú poznámky pod èiarou,
marginpar, head-line polo¾ky a nebudú fungova» s balíkom <CODE>multicol</CODE>
alebo inými makrami na vyva¾ovania ståpcov. Trieda <CODE>memoir</CODE> zahàòa
funkcionalitu balíku <CODE>framed</CODE>.
<P>
Balík <CODE>boites</CODE> poskytuje prostredie <CODE>breakbox</CODE>. Príklady pou¾itia
nájdete v distribúcii, <CODE>README</CODE> súbor obsahuje hutnú dokumentáciu.
Prostredia mô¾u by» vnorované a mô¾u sa objavi» v prostrediach <CODE>multicols</CODE>.
Plávajúce prostredia, poznámky pod èiarou a marginpar sa v¹ak stratia.
<P>
Pre pou¾ívateµov <CODE>plain</CODE> TeXu mô¾u by» u¾itoèné prostriedky balíku
<CODE>backgrnd</CODE>. Tento balík prinúti výstupnú rutinu poskytnú» vertikálne
èiary na oznaèenie textu, makrá sú jasne oznaèené a ukazujú, kde mô¾u by»
zavedené farebné pozadia (toto vy¾aduje balík <CODE>shade</CODE>, ktorý
je distribuovaný ako TeXovské makrá a pre tieòovanie METAFONT nezávislý
na zariadení). Autor <CODE>backgrnd</CODE> tvrdí, ¾e balík pracuje v prostredí
LaTeX 2.09, ale existujú dôvody domnieva» sa, ¾e pri práci s aktuálnym LaTeXom
mô¾e by» nestabilný.<BR>
<CODE>backgrnd.tex</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/generic/backgrnd.tex">backgrnd</A><BR>
<CODE>boites.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/boites">boites</A><BR>
<CODE>framed.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/framed.sty">framed</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
<CODE>shade.tex</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/generic/shade.sty">shade</A>
<P>
<P><A NAME="Q-upquot"><HR><H3>Realistické úvodzovky pre doslovné výpisy programov</H3></A>
<P>
Font <CODE>cmtt</CODE> má „okrúhle“ úvodzovky
, ktoré lahodia oku, ale nesúhlasia s tým, èo mô¾eme vidie» na modernom
termináli <EM>xterm</EM>.
<P>
Vzhµad je kritický vo výpisoch programov, hlavne shellovských skriptoch Unixu.
Balík <CODE>upquote</CODE> modifikuje chovanie prostredia <CODE>verbatim</CODE> tak, aby bol
výstup jasnej¹ou reprezentáciou toho, èo musí pou¾ívateµ napísa» (napr.
do skriptu).<BR>
<CODE>upquote.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/upquote/upquote.sty">upquote</A>
<P>
<P><A NAME="Q-the-commands"><HR><H3>Predefinovanie csx{the-}príkazov poèítadiel</H3></A>
<P>
Kedykoµvek po¾adujete od LaTeXu nové poèítadlo, LaTeX vytvorí mnoho
„zákulisných“ príkazov ako aj poèítadlo samotné.
<P>
csx{newcounter{fred}} okrem iného vytvorí príkaz csx{the}<CODE><EM>fred</EM></CODE>,
ktorý sa pri sádzaní expanduje na hodnotu poèítadla „<CODE>fred</CODE>“.
<P>
Definícia csx{the}<CODE><EM>fred</EM></CODE> by mala vyjadrova» hodnotu poèítadla.
Je takmer v¾dy chybou pou¾íva» príkaz na vytvorenie nieèoho iného. Hodnota mô¾e
by» rozumne vyjadrená ako arabské, rímske, prípadne grécke èíslo, ako abecedný
výraz alebo dokonca ako postupnos» (alebo vzor) symbolov. Ak sa potrebujete
rozhodnú», èi príkaz csx{the}<CODE><EM>fred</EM></CODE> predefinova», zvá¾te, èo by
sa mohlo sta», ak sa tak rozhodnet uèini».
<P>
Tak¾e ak napríklad chcete, aby èísla sekcií boli ukonèené bodkou, mô¾ete upravi»
csx{thesection} tak, aby sa expandoval s ukonèovacou bodkou. Takáto zmena
csx{thesection} v¹ak má vplyv na definúciu csx{thesubsection}: budete musie»
predefinova» kopu iných vecí. Rad¹ej pou¾ite ¹tandardné techniky
na prispôsobenie a prezentáciu èísel sekcií (viï
Otázku <A HREF="sectR.html#Q-seccntfmt">Úprava prezentácie èísel sekcií</A>).
<P>
Teraz predpokladajme, ¾e chcete, aby èíslo stránky bolo na konci ka¾dej stránky
obklopené pomlèkami („–nnn–“). Chcete to dosiahnu»
predefinovaním csx{thepage} (v¹etky èísla stránok v obsahu budú pravdepodobne
rovnakého tvaru) alebo predefinovaním csx{pageref} referencií? V tomto
prípade je najlep¹ie spravi» modifikáciu predefinovaním ¹týlu strany, napríklad
balíkom <CODE>fancyhdr</CODE>.
<P>
<P>
<P><A NAME="Q-tocloft"><HR><H3>Formát obsahov, ...</H3></A>
<P>
Formát polo¾iek obsahu je ovládaný niekoµkými internými príkazmi (spomínané
v sekcii 2.4 <I>The LaTeX Companion</I> — viï
Otázku <A HREF="sectC.html#Q-books">Knihy o TeXu a pøíbuzná literatura</A>). Príkazy csx{@pnumwidth},
csx{@tocrmarg} a csx{@dotsep} ovládajú priestor pre èísla strán,
odsadenie od praváho okraju a separáciu bodiek v bodkovaných vodiacich linkách.
Séria príkazov csx{l@<EM>xxx</EM>}, kde <CODE><EM>xxx</EM></CODE> je meno nadpisu
sekcie (ako <CODE>kapitola</CODE> alebo <CODE>sekcia</CODE>, ...@), ovláda
rozvrhnutie príslu¹ného nadpisu vrátane miesta pre èíso sekcie. V¹etky tieto
interné príkazy mô¾u by» individuálne predefinované, aby mali po¾adovaný efekt.
<P>
Balík <CODE>tocloft</CODE> poskytuje sadu príkazov pou¾ívatelskej úrovne, ktoré
mô¾ete pou¾i» na zmenu formátovania obsahu. Ked¾e pre zoznamy obrázkov
a zoznamy tabuliek sú pou¾ité presne rovnaké mechanizmy, rozvrhnutie týchto
sekcií mô¾ete ovláda» rovnakým spôsobom.
<P>
Triedy <CODE>KOMA-Script</CODE> poskytujú voliteµne variantu ¹truktúry obsahu a poèítajú
priestor potrebný pre èísla automaticky. Trieda <CODE>memoir</CODE> obsahuje funkcionalitu
<CODE>tocloft</CODE>.<BR>
sada <CODE>KOMA script</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/koma-script">koma-script</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
<CODE>tocloft.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/tocloft">tocloft</A>
<P>
<P><A NAME="Q-enumerate"><HR><H3>Pekne èíslované zoznamy</H3></A>
<P>
Balík <CODE>enumerate</CODE> vám dovoµuje kontrolova» zobrazenie poèítadla
zoznamu. Balík pridáva prostrediu <CODE>enumerate</CODE> voliteµný paramater, ktorý sa
pou¾íva na ¹pecifikáciu rozvrhnutia návestí. Parameter obsahuje typ èíslovania
(`<CODE>1</CODE>' pre arabské èíslice, `<CODE>a</CODE>' alebo `<CODE>A</CODE>' pre abecedné
„èíslovanie“ a `<CODE>i</CODE>' alebo `<CODE>I</CODE>' pre rímske èíslice)
a dekorácie èíslovania. Tak¾e napríklad
<P>
<PRE>
\usepackage{enumerate}
...
\begin{enumerate}[(a)]
\item ... ...
\end{enumerate}
</PRE>
</P>
zaène zoznam, ktorého návestia sú (a), (b), (c), ..., zatiaµ èo
<P>
<PRE>
\usepackage{enumerate}
...
\begin{enumerate}[I/]
\item ... ...
\end{enumerate}
</PRE>
</P>
zaène zoznam, ktorého návestia sú I/, II/, III/, ...
<P>
Balík <CODE>paralist</CODE>, ktorého hlavným úèelom je
kompaktnos» zoznamov (viï Otázku <A HREF="sectO.html#Q-complist">Ako zredukova» medzery v zoznamoch</A>), poskytuje rovnaké
prostriedky pre svoje prostredia podobné <CODE>enumerate</CODE>.
<P>
Ak potrebujete netradièný dizajn balík, <CODE>enumitem</CODE> vám poskytne
flexibilitu na vytvorenie vlastného. Hlúpy „rímsky“ príklad dosiahneme
nasledovne:
<P>
<PRE>
\usepackage{enumitem}
...
\begin{enumerate}[label=\Roman{*}/]
\item ... ...
\end{enumerate}
</PRE>
</P>
V¹imnite si, ¾e „<CODE>*</CODE>“ v hodnote kµúèa znaèí poèítadlo zoznamu
tejto úrovne. Mô¾ete tie¾ manipulova» s formátom odkazov na návestia polo¾iek
zoznamu:
<P>
<PRE>
\usepackage{enumitem}
...
\begin{enumerate}[label=\Roman{*}/,
ref=(\roman{*})]
\item ... ...
\end{enumerate}
</PRE>
</P>
aby formát odkazov na polo¾ky zoznamu vyzeral ako (i), (ii),
(iii) a tak ïalej.
<P>
Trieda <CODE>memoir</CODE> obsahuje funkcie, ktoré zodpovedajú funkciám v balíku
<CODE>enumerate</CODE> a obsahuje podobnú funkcionalitu aj pre zoznamy <CODE>itemize</CODE>.<BR>
<CODE>enumerate.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A><BR>
<CODE>enumitem.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/bezos">bezos</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
<CODE>paralist.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/paralist">paralist</A>
<P>
<P><A NAME="Q-complist"><HR><H3>Ako zredukova» medzery v zoznamoch</H3></A>
<P>
Lamportova kniha (viï Otázku <A HREF="sectC.html#Q-books">Knihy o TeXu a pøíbuzná literatura</A>) udáva rozlièné parametre pre
rozvrhnutie zoznamu (ako napríklad csx{topsep}, csx{itemsep} a csx{parsep}),
ale nespomína u¾, ¾e sú nastavované automaticky v zozname samotnom. Funguje to
tak, ¾e ka¾dý zoznam vykoná príkaz csx{@list}<CODE><håbka></CODE> (håbka sa
objavuje vo forme malých rímskych èíslic). csx{@listi} je naviac zvyèajne
resetované pri zmene veµkosti fontu. Výsledok je, ¾e pre u¾ívateµa je dos»
zlo¾ité kontrolova» medzery v zoznamoch (medzery medzi polo¾kami zoznamu).
Správnym rie¹ením je samozrejme pou¾ívanie dokumentovej triedy navrhnutej
s miernej¹ími medzerami v zoznamoch, ale v¹etci vieme, ¾e k takýmto
veciam sa »a¾ko dosta». Trieda <CODE>memoir</CODE> nebola navrhnutá pre kompaktnej¹ie
zoznamy, ale poskytuje kontrolu nad medzerami v zoznamoch.
<P>
Existujú balíky poskytujúce urèitú kontrolu nad medzerami v zoznamov, málokedy
v¹ak adresujú oddelenie od okolitého textu (definované príkazom csx{topsep}).
Balík <CODE>expdlist</CODE>, spomedzi v¹etkých svojich ovládacích prvkov vzhµadu
<CODE>description</CODE> zoznamov poskytuje parameter kompaktnosti (viï dokumentáciu);
balík <CODE>mdwlist</CODE> poskytuje príkaz csx{makecompactlist} pre u¾ivateµské
definície zoznamov a pou¾íva ho na definície kompaktných zoznamov <CODE>itemize*</CODE>,
<CODE>enumerate*</CODE> a <CODE>description*</CODE>. V skutoènosti mô¾ete celkom jednoducho
definova» podobné zoznamy — napríklad:
<P>
<PRE>
\newenvironment{itemize*}%
{\begin{itemize}%
\setlength{\itemsep}{0pt}%
\setlength{\parskip}{0pt}}%
{\end{itemize}}
</PRE>
</P>
Balík <CODE>paralist</CODE> poskytuje veµa prístupov pre kompaktnej¹ie zoznamy:
<UL>
<LI> jeho prostredie <CODE>asparaenum</CODE> formátuje ka¾dú polo¾ku, ako keby to bol
odstavec zavedený poèítadlovým návestím (èo v prípade, ¾e texty polo¾iek sú
dlhé, ¹etrí miesto),
<LI> jeho prostredie <CODE>compactenum</CODE> je rovnakým druhom kompaktného zoznamu
ako v <CODE>expdlist</CODE> a <CODE>mdwlist</CODE>, a
<LI> jeho prostredie <CODE>inparaenum</CODE> vytvára zoznam „v odstavci“, t.j. bez
zlomov medzi polo¾kami, èo veµmi dobre ¹etrí miesto, ak sú texty polo¾iek
krátke.
</UL>
Balík manipuluje s návestiami svojho prostredia <CODE>enumerate</CODE> ako balík
<CODE>enumerate</CODE> (viï Otázku <A HREF="sectO.html#Q-enumerate">Pekne èíslované zoznamy</A>).
<P>
<CODE>Paralist</CODE> taktie¾ poskytuje ekvivalenty <CODE>itemize</CODE> (<CODE>asparaitem</CODE>,
...) a <CODE>description</CODE> (<CODE>asparadesc</CODE>, ...).
<P>
Maximum v kompaktnosti (ka¾dého druhu) je poskytované balíkom
<CODE>savetrees</CODE>, zahrnutá je aj kompaktnos» zoznamov. Hlavnou úlohou
balíku je ¹etrenie miestom na ka¾dom kroku: ak máte nejaké dizajnové
obmedzenia, nepou¾ívajte ho!
<P>
Balíky <CODE>expdlist</CODE>, <CODE>mdwlist</CODE> a <CODE>paralist</CODE> poskytujú
iné prostriedky konfigurácie zoznamov. Ak potrebujete niektorý z balíkov pre
inú konfiguráciu zoznamu ne¾ kompaktnos», pravdepodobne by ste nemali skú¹a»
ni¾¹ie uvedené postupy.
<P>
Balík <CODE>enumitem</CODE> pre maximálnu flexibilitu (vrátane manipulácie
s csx{topsep}) povoµuje prispôsobenie parametrov zoznamu pomocou formátu
„<EM>kµúè</EM>{=}<hodnota>“. Mô¾ete teda napísa»
<P>
<PRE>
\usepackage{enumitem}
...
\begin{enumerate}[topsep=0pt, partopsep=0pt]
\item ... ...
\end{enumerate}
</PRE>
</P>
èím potlaèíte v¹etky medzery pod a nad va¹ím zoznamom. <CODE>Enumitem</CODE> tie¾
dovoµuje manipulova» s formátom návestia (základnej¹ím spôsobom ako balík
<CODE>enumerate</CODE> — Otázka <A HREF="sectO.html#Q-enumerate">Pekne èíslované zoznamy</A>).<BR>
<CODE>enumerate.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A><BR>
<CODE>enumitem.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/bezos">bezos</A><BR>
<CODE>expdlist.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/expdlist">expdlist</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
<CODE>mdwlist.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/mdwtools">mdwtools</A><BR>
<CODE>paralist.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/paralist">paralist</A><BR>
<CODE>savetrees.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/savetrees">savetrees</A>
<P>
<P><A NAME="Q-interruptlist"><HR><H3>Preru¹enie èíslovaných zoznamov</H3></A>
<P>
Èasto je vhodné ma» vysvetµujúci text mimo zoznamu, medzi za sebou idúcimi
polo¾kami. V prípade <CODE>itemize</CODE> zoznamov to nie je problém, keï¾e neexistuje
niè, èo by odlí¹ilo za sebou idúce polo¾ky. V prípade <CODE>description</CODE> zoznamov sú
návestia polo¾iek pod kontrolou u¾ívateµa, tak¾e automatická kontinuita
neexistuje.
<P>
Pri <CODE>enumerate</CODE> zoznamoch sú návestia generované automaticky a sú citlivé
na kontext, tak¾e kontext (v tomto prípade je to stav poèítadla) musí zosta»
zachovaný.
<P>
Jedným z prístupov je zapamäta» si stav èíslovania do vlastnej premennej
a neskôr (pri pokraèovaní èíslovania) ho obnovi»:
<P>
<PRE>
\newcounter{saveenum}
...
\begin{enumerate}
...
\setcounter{saveenum}{\value{enumi}}
\end{enumerate}
<vysvetµujúci text>
\begin{enumerate}
\setcounter{enumi}{\value{saveenum}}
...
\end{enumerate}
</PRE>
</P>
<P>
Toto je rozumné v malých dávkach. Problémom (okrem „ukecanosti“ rie¹enia) je
správne nastavenie úrovne (
„mám pou¾i» èítaè <CODE>enumi</CODE>,
<CODE>enumii</CODE>, ...“) a zapamätanie si, ¾e nemáme vnorova» preru¹enia
(t.j. nema» ïal¹í zoznam, ktorý je »ie¾ preru¹ený) do vysvetµujúceho textu.
<P>
Balík <CODE>mdwlist</CODE> definuje príkazy csx{suspend} a csx{resume}, ktoré
proces zjednodu¹ujú:
<P>
<PRE>
\begin{enumerate}
...
\suspend{enumerate}
<vysvetµujúci text>
\resume{enumerate}
...
\end{enumerate}
</PRE>
</P>
Balík povoµuje zada» voliteµný názov (ako pri <CODE>\suspend[id]{enumerate}</CODE>), aby
ste mohli identifikova» konkrétne preru¹enie, a tým poskytuje mo¾nos»
manipulovania s vnorenými preru¹eniami.
<P>
Ak preru¹ujete pekne èíslované zoznamy (viï Otázku <A HREF="sectO.html#Q-enumerate">Pekne èíslované zoznamy</A>),
musíte pri pokraèovaní v zozname znovu doda» voliteµné parametre
„item label layout“ (polo¾ka, návestie, rozvrhnutie) vy¾adované balíkom
<CODE>enumerate</CODE>, nezávisle na tom, ktorý z uvedených postupov ste pou¾ili.
Úloha je v prípade balíku <CODE>mdwlist</CODE> trochu zdåhavá, keï¾e voliteµný
parameter musí by» celý zapuzdrený vo vnútri voliteµného parametru pre
csx{resume}, èo vy¾aduje zátvorky naviac:
<P>
<PRE>
\begin{enumerate}[\textbf{Item} i]
...
\suspend{enumerate}
<vysvetlivky>
\resume{enumerate}[{[\textbf{Item} i]}]
...
\end{enumerate}
</PRE>
</P>
<CODE>enumerate.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A><BR>
<CODE>mdwlist.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/mdwtools">mdwtools</A>
<P>
<P>
<P><A NAME="Q-destable"><HR><H3>Dizajn tabuliek</H3></A>
<P>
V poslených rokov mno¾stvo autorov argumentovalo, ¾e príklady vytvorené
Lamportom v jeho LaTeX manuálu (viï Otázku <A HREF="sectC.html#Q-books">Knihy o TeXu a pøíbuzná literatura</A>) obmedzovali ¹týl autorov
a viedli k extrémne úbohému dizajnu tabuliek. V skutoènosti je »a¾ke èo i len
zisti», èo mnohé z príkladov Lamportovej knihy znamenajú.
<P>
Kritika sa zameriava na prehnané pou¾itie liniek (horizontálnych aj vertikálnych)
a na slabé vertikálne odstupy poskytované Lamportovymi makrami.
<P>
Problém vertikálnych odstupov je hocikým jednoducho viditeµný a je rie¹ený
v mnohých balíkoch — viï
Otázku <A HREF="sectO.html#Q-struttab">Rozostupy riadkov v tabuµkách</A>.
<P>
Argument týkajúci sa liniek je prezentovaný v skvelej eseji, ktorá tvorí
predslov dokumentácie balíku <CODE>booktabs</CODE> od Simona Feara.
<P>
Lamportov LaTeX neflexibilne trval na tom, ¾e popisky majú by» na spodku
tabuµky. Ked¾e sa tabuµka mô¾e rozprestiera» na viacerých stranách, tradièná
typografia umiestòuje popisky navrch plávajúceho prostredia tabuµky. Príkaz
csx{caption} bude ma» zlú pozíciu (o <CODE>10pt</CODE>), ak napí¹ete:
<P>
<PRE>
\begin{table}
\caption{Uká¾ková tabuµka}
\begin{tabular}{...}
...
\end{tabular}
\end{table}
</PRE>
</P>
Balík <CODE>topcapt</CODE> tento problém rie¹i:
<P>
<PRE>
\usepackage{topcaption}
...
\begin{table}
\topcaption{Uká¾ková tabuµka}
\begin{tabular}{...}
...
\end{tabular}
\end{table}
</PRE>
</P>
Triedy <CODE>KOMA-script</CODE> poskytujú podobný príkaz csx{captionabove}, obsahujú tie¾
voµbu triedy, ktorá zaistí, ¾e v prostredí tabuliek csx{caption}
<EM>znamená</EM> csx{captionabove}.
<P>
Manuálny postup je celkom jednoduchý: <CODE>topcapt</CODE> prepne hodnoty
parametrov systému LaTeXe{} csx{abovecaptionskip} (¹tandardne <CODE>10pt</CODE>)
a csx{belowcaptionskip} (¹tandardne <CODE>0pt</CODE>), tak¾e:
<P>
<PRE>
\begin{table}
\setlength{\abovecaptionskip}{0pt}
\setlength{\belowcaptionskip}{10pt}
\caption{Uká¾ková tabuµka}
\begin{tabular}{...}
...
\end{tabular}
\end{table}
</PRE>
</P>
spraví to, èo chceme. (Balík je sám o sebe mierne komplikovanej¹í...)<BR>
<CODE>booktabs.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/booktabs">booktabs</A><BR>
sada <CODE>KOMA script</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/koma-script">koma-script</A><BR>
<CODE>topcapt.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/topcapt.sty">topcapt</A>
<P>
<P><A NAME="Q-fixwidtab"><HR><H3>Tabuµky pevnej ¹írky</H3></A>
<P>
Existujú dva základné spôsoby na tvorbu tabuliek pevnej ¹írky v LaTeXu:
mô¾ete roztiahnu» úseky (medzery) medzi ståpcami, alebo mô¾ete roztiahnu» urèité bunky
tabuµky.
<P>
Základný LaTeX mô¾e roztiahnu» medzery. Prostredie <CODE>tabular*</CODE> si vezme jeden
parameter navy¹e (pred parametrom rozvrhnutia <CODE>clpr</CODE>), ktorý akceptuje popis
då¾ky (mô¾ete vlo¾i» veci ako „<CODE>15cm</CODE>“ alebo „csx{columnwidth}“).
V parametri rozlo¾enia <CODE>clpr</CODE> musíte ma» v direktíve <CODE>@{}</CODE> príkaz
csx{extracolsep}. Príklad:
<PRE>
\begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}}lllr}
</PRE>
csx{extracolsep} je tie¾ pou¾itý na v¹etky medziståpcové medzery napravo. Ak
nechcete roztiahnu» v¹etky medzery, pridajte <CODE>\extracolsep{0pt}</CODE>, èím zru¹íte
pôvodné.
<P>
Balík <CODE>tabularx</CODE> definuje extra ¹pecifikáciu <CODE>clpr</CODE> ståpca, <CODE>X</CODE>.
Ståpce <CODE>X</CODE> sa správajú ako <CODE>p</CODE> ståpce, ktoré sa roz¹irujú, aby zabrali dostupné
miesto. Ak je v tabuµke prítomný viac ne¾ jeden <CODE>X</CODE> ståpec, voµné miesto je
medzi tieto ståpce rozdelené .
<P>
Balík <CODE>tabulary</CODE> (od rovnakého autora) poskytuje spôsob
„vyva¾ovania“ miesta zabraného ståpcami tabuµky. Balík definuje
¹pecifikácie ståpcov zdieµajúcich priestor <CODE>C</CODE>, <CODE>L</CODE>, <CODE>R</CODE> a <CODE>J</CODE> so zarovnaniami
na stred, vµavo, vpravo a zarovnaním na obe strany. Balík skúma, aký by bol
ka¾dý zo ståpcov prirodzene dlhý (t.j. na papiery nekoneènej ¹írky) a alokuje
príslu¹né miesto pre ka¾dý ståpec. Prítomné sú aj kontroly, ktoré dohliadajú
na to, aby veµké polo¾ky nespôsobili kolaps zvy¹ných ståpcov (pre ka¾dý ståpec
existuje maximálna ¹írka) a aby sa drobné veci nezmen¹ili pod ¹pecifikovanú
hodnotu minima. Táto práca samozrejme znamená, ¾e balík musí vysádza» ka¾dý
riadok niekoµkokrát, tak¾e veci s vedµaj¹ími efektami (napríklad èítaè
produkujúci èíslo riadku) sú nespoµahlivé a nemali by rad¹ej by» pou¾ívané.
<P>
<CODE>ltxtable</CODE> kombinuje vlastnosti balíkov <CODE>longtable</CODE>
a <CODE>tabularx</CODE>. Rad¹ej si preèítajte dokumentáciu, preto¾e pou¾itie
balíku je znaène odli¹né.<BR>
<CODE>ltxtable.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/carlisle">carlisle</A><BR>
<CODE>tabularx.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A><BR>
<CODE>tabulary.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/carlisle">carlisle</A>
<P>
<P><A NAME="Q-struttab"><HR><H3>Rozostupy riadkov v tabuµkách</H3></A>
<P>
TeXovské/LaTeXovské mechanizmy správy medzier medzi riadkami (tzv.
„leading“) sa spoliehajú na TeXovský algoritmus výstavby odstavcov, ktorý
porovnáva tvary za sebou idúcich riadkov a upravuje medzeru medzi nimi.
<P>
Tieto mechanizmy nemô¾u pri vytváraní tabuµky fungova» rovnakým spôsobom,
preto¾e tvorba odstavcov samotné riadky nevidí. Výsledkom je, ¾e tabuµky sú
obèas vysádzané s riadkami nepríjemne blízko pri sebe (alebo obèas aj veµmi
ïaleko).
<P>
Tradièný typograf by upravil medzeru medzi riadkami tabuµky
pomocou podpery („strut“; jedná sa o kovový oddelovaè). Pou¾ívateµ TeXu
mô¾e spravi» presne to isté: väè¹ina balíkov makier definuje príkaz csx{strut},
ktorý udáva vhodnú medzeru vzhµadom na aktuálnu veµkos» textu. Umiestnenie
príkazu csx{strut} na koniec problémového riadku tabuµky je najjednoduch¹ie
rie¹enie problému (ak funguje). Ïal¹ie uvedené rie¹enia sú ¹pecifické pre
LaTeX, ale niektoré sa dajú jednoducho prelo¾i» na príkazy <CODE>Plain</CODE> TeXu.
<P>
Ak sa vo va¹ej tabuµke ukazuje systematický problém (t.j. ka¾dý riadok je
posunutý o rovnaký úsek) pou¾ite príkaz csx{extrarowheight} definovaný balíkom
<CODE>array</CODE>:
<PRE>
\usepackage{array}% v preambule
...
\setlength{\extrarowheight}{length}
\begin{tabular}{....}
</PRE>
<P>
Na napravenie jediného riadku, ktorého zlé nastavenie príkaz csx{strut}
neopravuje, mô¾ete postupova» vlastnou definíciou pomocou
<CODE>\rule{0pt}{length}</CODE> — èo sa podobá definícii príkazu csx{strut}.
Balík <CODE>bigstrut</CODE> definuje podobný príkaz, ktorý mô¾ete na tento úèel
pou¾i»: csx{bigstrut} sa sám odkryje nad aj pod aktuálnym riadkom,
<CODE>\bigstrut[t]</CODE> iba nad riadkom a <CODE>\bigstrut[b]</CODE> iba pod riadkom.
<P>
Dostupné sú v¹ak aj obecné rie¹enia. Balík <CODE>tabls</CODE> na konci ka¾dého
riadku tabuµky automaticky generuje podperu správnej veµkosti. Nevýhodou je
pomalos» (ked¾e stojí v ceste v¹etkému vo vnútri tabuµky) a (nedostatoèná)
kompatibilita s inými balíkmi.
<P>
Balík <CODE>booktabs</CODE> obsahuje provokatívnu úvahu o tom, ako by mali by»
navrhované tabuµky. Ked¾e problém rozostupov riadkov v tabuµkách sa
najèastej¹ie objavuje pri kolíziách s èiarami, autorova my¹lienka, ¾e
pou¾ívatelia LaTeXu majú vo zvyku veµmi èasto linkova» svoje tabuµky, je
zaujímavá. Balík na podporu autorovej schémy poskytuje linkovacie príkazy, ale
stará sa aj o medziriadkové medzery. Najnov¹ie vydania <CODE>booktabs</CODE> sa
pý¹ia kompatibilitou s balíkmi ako <CODE>longtable</CODE>.
<P>
Dokumentáciu <CODE>bigstrut</CODE> aj <CODE>tabls</CODE> mô¾ete nájs» v podobe
komentárov v samotných súboroch týchto balíkov.<BR>
<CODE>array.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A><BR>
<CODE>bigstrut.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/multirow">multirow</A><BR>
<CODE>booktabs.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/booktabs">booktabs</A><BR>
<CODE>tabls.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/tabls.sty">tabls</A>
<P>
<P><A NAME="Q-longtab"><HR><H3>Tabuµky dlh¹ie ne¾ jedna strana</H3></A>
<P>
Tabuµky sú ¹tandardne sádzané do svojich vlastných boxov, èo má za následok, ¾e
sa na hranici stránky nerozdelia. Bohu¾iaµ ná¹ svet produkuje tabuµky dlh¹ie
ne¾ jedna strana a my ich potrebujeme vysádza».
<P>
Pre jednoduché tabuµky (ktorých tvar je veµmi pravidelný) mô¾e by»
najjednoduch¹ím rie¹ením prostredie <CODE>tabbing</CODE>, ktorého nastavenie je trochu
zdåhavé, ale nevy¾aduje v¹etko na jednu stranu.
<P>
Balík <CODE>longtable</CODE> v prvom behu vybuduje celú tabuµku (po kúskoch),
a potom pou¾ije informáciu, ktorú zapísal do <CODE>.aux</CODE> súboru, aby dostal správne
umiestnenie (obvykle sa mu to podarí v dvoch priechodoch). Ked¾e balík má
v èase koneèného umiestòovania prehµad o celej tabuµke, tabuµka je vysádzaná
jednotne po celej svojej då¾ke (ståpce na jednotlivých stranách si navzájom
zodpovedajú). O <CODE>longtable</CODE> je známe, ¾e nespolupracuje s inými balíkmi,
spolupracuje v¹ak s balíkom <CODE>colortbl</CODE>. Autor poskytol balík
<CODE>ltxtable</CODE>, ktorý obsahuje väè¹inu prostriedkov balíku
<CODE>tabularx</CODE> (viï
Otázku <A HREF="sectO.html#Q-fixwidtab">Tabuµky pevnej ¹írky</A>) aj pre dlhé tabuµky: majte sa
na pozore pred zvlá¹tnymi obmedzeniami jeho pou¾itia — ka¾dá dlhá tabuµka by
mala by» vo vlastnom súbore a mala by by» vlo¾ená csx{LTXtable{width}{file}}.
Ked¾e viacstranové tabuµky balíku <CODE>longtable</CODE> nemô¾u existova» vo vnútri
plávajúcich prostredí, poskytuje balík mo¾nosti nadpisov v samotnom prostredí
<CODE>longtable</CODE>.
<P>
Zdanlivou alternatívou k <CODE>ltxtable</CODE> je <CODE>ltablex</CODE>. Je v¹ak
zastaralý a nie je úplne funkèný. Jeho najväè¹í problém je prísne obmedzená
kapacita pamäte (<CODE>longtable</CODE> nie je tak obmedzený, za èo platí
komplikovaným kódom). <CODE>ltablex</CODE> spracuje iba relatívne malé tabuµky, ale
jeho pou¾ívateµské rozhranie je oveµa jednoduch¹ie ako u <CODE>ltxtable</CODE>,
tak¾e ak pre vás obmedzenia nie sú problémom, mô¾ete to skúsi».
<P>
Balík <CODE>supertabular</CODE> zaène a ukonèí prostredie <CODE>tabular</CODE> preka¾dú stranu
tabuµky. Výsledkom je, ¾e ka¾dá „strana tabuµky“ sa skompiluje nezávisle
a ¹írky navzájom si zodpovedajúcich ståpcov sa mô¾u li¹i». Ak v¹ak príslu¹nos»
ståpcov nehrá úlohu alebo va¹e ståpce majú pevnú ¹írku, <CODE>supertabular</CODE>
má vo va¹om prípade veµkú výhodu v tom, ¾e veci spracuje v jednom priechode.
<P>
<CODE>Longtable</CODE> aj <CODE>supertabular</CODE> dovoµujú pre tabuµku definova»
nadpisy a poznámky pod èiarou. <CODE>longtable</CODE> odli¹uje nadpisy a poznámky
pri prvej a poslednej èasti.
<P>
Balík <CODE>xtab</CODE> opravuje niektoré neblahosti <CODE>supertabular</CODE>
a taktie¾ poskytuje prostriedok pre „posledný nadpis“ (hoci toto zru¹í výhodu
<CODE>supertabular</CODE> — spracovanie v jednom behu).
<P>
Balík <CODE>stabular</CODE> poskytuje jednoducho pou¾iteµné roz¹írenie prostredia
<CODE>tabular</CODE>, ktoré umo¾òuje sadzbu tabuliek be¾iacich cez koniec strany. Balík
obsahuje aj rôzne u¾itoèné roz¹irenia, ale neobsauje prostriedky nadpisov
a poznámok pod èiarou ako väè¹ie balíky.
<P>
Dokumentáciu <CODE>ltablex</CODE> mô¾ete nájs» v súbore balíku.<BR>
<CODE>longtable.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A><BR>
<CODE>ltablex.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/ltablex/ltablex.sty">ltablex</A><BR>
<CODE>ltxtable.sty</CODE>: generované pou¾itím <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/carlisle/ltxtable.tex">ltxtable</A><BR>
<CODE>stabular.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/sttools">sttools</A><BR>
<CODE>supertabular.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/supertabular">supertabular</A><BR>
<CODE>xtab.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/xtab">xtab</A>
<P>
<P><A NAME="Q-tabcellalign"><HR><H3>Ako zmeni» zarovnanie buniek tabuµky</H3></A>
<P>
Èasto je potrebné zmeni» zarovnanie <CODE>p</CODE> (odstavcovej; „paragraph“)
bunky tabuµky, obvykle v¹ak nastávajú na konci konci riadku tabuµky problémy.
S takouto <CODE>p</CODE> bunkou:
<P>
<PRE>
... & \centering blah ... \\
</PRE>
</P>
sa µahko stretnete s chybami s»a¾ujúcimi sa na „misplaced csx{noalign}“
(zle umiestnený csx{noalign}), „extra alignment tab“ (zarovnávací
tabulátor navy¹e), prípadne na nieèo podobné.
Problém je, ¾e príkaz <CODE><CODE>\bs\bs</CODE></CODE> znamená rozlièné veci za rozlièných
okolností: prostredie <CODE>tabular</CODE> prepína jeho význam na hodnotu pou¾iteµnú
v tabuµke, csx{centering}, csx{raggedright} a csx{raggedleft} ju menia
na nieèo nekompatibilné. V¹imnite si, ¾e problém vzniká iba v poslednej bunke
riadku: ked¾e ka¾dá bunka je sádzaná do boxu, jej nastavenia sa strácajú u
<CODE>&</CODE> (alebo <CODE><CODE>\bs\bs</CODE></CODE>), ktorý ho ukonèuje.
<P>
Jednoduchým (starým) rie¹ením je zachovanie významu <CODE><CODE>\bs\bs</CODE></CODE>:
<P>
<PRE>
\newcommand\PBS[1]{\let\temp=\\%
#1%
\let\\=\temp
}
</PRE>
</P>
èo pou¾ijete napríklad nasledovne:
<P>
<PRE>
... & \PBS\centering blah ... \\
</PRE>
</P>
<P>
Technika pou¾ívajúca csx{PBS} bola vyvinutá v dobe LaTeX 2.09, preto¾e skutoèná
hodnota <CODE><CODE>\bs\bs</CODE></CODE>, ktorú pou¾ívalo prostredie <CODE>tabular</CODE>, bola dostupná iba
ako interný príkaz. V súèasnosti je hodnota príkaz verejný a v princípe ju
mô¾ete pou¾i» explicitne:
<P>
<PRE>
... & \centering blah ... \tabularnewline
</PRE>
</P>
Toto mô¾e by» zakomponované do jednoduchého makra:
<P>
<PRE>
\newcommand{\RBS}{\let\\=\tabularnewline}
...
... & \centering\RBS blah ... \\
</PRE>
</P>
Pou¾itie:
<P>
<PRE>
... & \centering\RBS blah ... \\
</PRE>
</P>
(zapamätajte si, ¾e spätné lomítko zachovávate s csx{PBS} <EM>pred</EM> príkazom,
ktorý ju mení a obnovujete s csx{RBS} <EM>po</EM> príkaze; csx{RBS} je
v skutoènosti mierne preferovaný, ale starý trik tu zostáva).
<P>
Fígle csx{PBS} a csx{RBS} nám dobre slú¾ia tie¾ v ¹pecifikáciach formátu poµa
(„field format“) v preambule pri balíku <CODE>array</CODE>:
<P>
<PRE>
\begin{tabular}{...>{\centering\RBS}%
p{50mm}}
...
</PRE>
</P>
alebo
<P>
<PRE>
\begin{tabular}{...>{\PBS\centering}%
p{50mm}}
...
</PRE>
</P>
<P>
</P>
<CODE>array.sty</CODE>: distribuované ako súèast <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A>
<P>
<P><A NAME="Q-wholerow"><HR><H3>Ako zmeni» celý riadok tabuµky</H3></A>
<P>
Ka¾dá bunka tabuµky je sádzaná do boxu, tak¾e zmena ¹týlu fontu (prípadne
nieèoho iného) platí iba po koniec bunky. Ak máte tabuµku s mnohými bunkami
alebo dlhú tabuµku, v ktorej potrebujete zvýrazni» mno¾stvo riadkov, pridávanie
¹týlu fontu do ka¾dej bunky bude veµmi zdåhavé.
<P>
S balíkom <CODE>array</CODE> mô¾ete definova» modifikátory ståpcov, ktoré zmenia
¹týl písma pre celý <EM>ståpec</EM>. S trochou jemnosti mô¾ete zmeni»
modifikátory tak, aby upravovali riadky namiesto ståpcov. Postupujeme
nasledovne:
<P>
<PRE>
\usepackage{array}
\newcolumntype{$}{>{%
\global\let\currentrowstyle\relax}%
}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{%
\gdef\currentrowstyle{#1}%
#1\ignorespaces
}
</PRE>
</P>
Teraz pred prvý ¹pecifikátor ståpcu vlo¾íme „<CODE>$</CODE>“ a „<CODE>^</CODE>“ pred
modifikátory nasledujúcich. Potom pou¾ijeme csx{rowstyle} na zaèiatku ka¾dého
riadku, ktorý chceme modifikova»:
<P>
<PRE>
\begin{tabular}{|$l|^l|^l|} \hline
\rowstyle{\bfseries}
Nadpis & Veµký a & Tuèný \\ \hline
Text & text & text \\
Text & text & text \\
\rowstyle{\itshape}
Text & text & v~kurzíve \\
Text & text & text \\ \hline
\end{tabular}
</PRE>
</P>
Balík <CODE>array</CODE> funguje s rôznymi inými prostrediami typu <CODE>tabular</CODE>
z iných balíkov (napríklad <CODE>longtable</CODE>), tento trik v¹ak bohu¾iaµ nefunguje
v¾dy.<BR>
<CODE>array.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A><BR>
<P>
<P><A NAME="Q-multirow"><HR><H3>Spájanie buniek v ståpci tabuµky</H3></A>
<P>
Nie je »a¾ké vymyslie» dizajn tabuµky, ktorý bude vy¾adova», aby sa urèitá bunka
rozprestierala na viacerých riadkoch. Príkladom mô¾e by» tabuµka, v ktorej
najµavej¹í ståpec oznaèuje zbytok tabuµky. Toto mô¾ete spravi» (v jednoduchých
prípadoch) pou¾itím diagonálneho rozdelenia v rohových bunkách. Spomenutá
technika vás v¹ak prísne obmedzuje v tom, èo mô¾e by» pou¾ité ako obsah bunky.
<P>
Balík <CODE>multirow</CODE> vám umo¾òuje vytvára» viacriadkové bunky veµmi
jednoducho. Pre najjednoduch¹ie pou¾itie mô¾ete napísa»:
<P>
<PRE>
\begin{tabular}{|c|c|}
\hline
\multirow{4}*{Be¾ný text g}
& Ståpec g2a\\
& Ståpec g2b \\
& Ståpec g2c \\
& Ståpec g2d \\
\hline
\end{tabular}
</PRE>
</P>
a <CODE>multirow</CODE> umiestni „Be¾ný text g“ na vertikálny stred priestoru
definovaného ostatnými riadkami. V¹imnite si, ¾e riadky neobsahujúce
¹pecifikáciu „multi-row“ musia ma» prázne bunky, v ktorých sa viacriadková
bunka objaví.
<P>
„<CODE>*</CODE>“ mô¾ete nahradi» ¹pecifikáciou ¹írky ståpcu. Parameter v tomto prípade
mô¾e obsahova» nepodmienené zlomy riadku:
<P>
<PRE>
\begin{tabular}{|c|c|}
\hline
\multirow{4}{25mm}{Be¾ný\\text g}
& Ståpec g2a\\
& Ståpec g2b \\
& Ståpec g2c \\
& Ståpec g2d \\
\hline
\end{tabular}
</PRE>
</P>
Podobný efekt (s mo¾nos»ou trochu väè¹ej sofistikovanosti) mô¾eme dosiahnu»
vlo¾ením men¹ej tabuµky, ktorá zoradí text, do <CODE>*</CODE>-deklarovaného csx{multirow}.
<P>
Príkaz csx{multirow} mô¾e by» pou¾itý aj na písanie vertikálneho textu oboma
smermi (s pomocou balíkov <CODE>graphics</CODE> alebo <CODE>graphicx</CODE>, ktoré
poskytujú príkaz csx{rotatebox}):
<P>
<PRE>
\begin{tabular}{|l|l|}
\hline
\multirow{4}*{\rotatebox{90}{ahoj}}
& Ståpec g2a\\
& Ståpec g2b \\
& Ståpec g2c \\
& Ståpec g2d \\
\hline
\end{tabular}
</PRE>
</P>
Takto dostanete text be¾iaci nahor; pre opaèný smer pou¾ite uhol <CODE>-90</CODE>.
<P>
<CODE>Multirow</CODE> je nastavený tak, aby spolupracoval s balíkom
<CODE>bigstrut</CODE> (ktorý je spomenutý v odpovedi
na Otázku <A HREF="sectO.html#Q-struttab">Rozostupy riadkov v tabuµkách</A>). Na vyjadrenie poètu
riadkov vo viacriadkovom prostredí, ktoré boli otvorené pomocou csx{bigstrut},
pou¾ijete voliteµný parameter príkazu csx{multirow}.
<P>
Dokumentácia <CODE>multirow</CODE> a <CODE>bigstrut</CODE> sa dá nájs» v súboroch
balíkov v podobe komentárov.<BR>
<CODE>bigstrut.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/multirow">multirow</A><BR>
<CODE>multirow.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/multirow">multirow</A>
<P>
<P>
<P><A NAME="Q-mcfloat"><HR><H3>Plávajúce prostredia v prostredí multicolumn</H3></A>
<P>
Ak pou¾ijete
<PRE>
\begin{figure}
...
\end{figure}
</PRE>
v prostredí <CODE>multicols</CODE>, obrázok (figure) sa neobjaví. Ak namiesto toho
pou¾ijete
<PRE>
\begin{figure*}
...
\end{figure*}
</PRE>
obrázok sa roztiahne na ¹írku stránky (ako prostredie <CODE>figure*</CODE> v ¹tandardnej
mo¾nosti LaTeXu, <CODE>twocolumn</CODE>).
<P>
Pomocou umiestnenia „<CODE>[H]</CODE>“ zavedeného balíkom <CODE>float</CODE> mô¾eme ma»
jednoståpcové obrázky a tabuµky s popiskami. Mo¾no sa v¹ak bude treba pohra»
s umiestnením, preto¾e nebudú „pláva»“ a budú javi» iné zvlá¹tne znaky
chovania (ako nenápadné „pretekanie“ mimo koniec ståpca na konci prostredia
<CODE>multicols</CODE>).<BR>
<CODE>float.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/float">float</A><BR>
<CODE>multicol.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A>
<P>
<P><A NAME="Q-vertposfp"><HR><H3>Vertikálne rozlo¾enie strán obsahujúcich floaty</H3></A>
LaTeX ¹tandardne centruje floaty na plávajúcej strane (floatovej) vertikálne;
nie sme sami, komu sa to nepáèi. Ovládanie umiestnenia je bohu¾iaµ
„zakopané“ v interných príkazoch LaTeXu, tak¾e pri zmene rozlo¾enia je
nutná opatrnos».
<P>
Plávajúce strany pou¾ívajú tri LaTeXovské då¾ky (t.j. TeXovské skipy)
na definíciu svojho rozlo¾enia:
<UL>
od zaèiatku strany k zaèiatku prvého floatu,
floatmi,
od konca posledného floatu na strane ku koncu strany.
</UL>
(Výstupná rutina v skutoènosti umiestòuje csx{@fpsep} nad ka¾dý float, tak¾e
csx{@fptop} obvykle obsahuje opravu.)
<P>
LaTeXovské ¹tandardy sú:<BR>
csx{@fptop} = (<CODE>0pt + 1fil</CODE>) ensuremath{-} csx{@fpsep}<BR>
csx{@fpsep} = <CODE>8pt + 2fil</CODE><BR>
csx{@fpbot} = <CODE>0pt + 1fil</CODE><BR>
tak¾e medzery sa roz¹irujú, aby vyplnili priestor, ktorý nie je zabraný
floatami, ale ak je na strane viac ne¾ jeden float, medzera medzi nimi sa
roz¹íri na dvojnásobok horného a spodného priestoru.
<P>
Najèastej¹ia potreba, aby floaty zaèínali na zaèiatku strany, sa dá jednoducho
uspokoji»:
<PRE>
\makeatletter
\setlength{\@fptop}{-\@fpsep}
\makeatother
</PRE>
Pamätajte si, ¾e toto je „globálne“ nastavenie (najlep¹ie vykonané v súbore
triedy alebo prinajhor¹om v preambule dokumentu). Zmena pre jediný float bude
pravdepodobne (prinajlep¹om) celkom komplikovaná.
<P>
<P><A NAME="Q-secnumdep"><HR><H3>Neèíslované oddíly v obsahu</H3></A>
<P>
Nejjednodu¹¹ím zpùsobem, jak vytvoøit v obsahu polo¾ku pro takové zvlá¹tní
èásti textu jako jsou napøíklad pøedmluvy, je u¾ití èítaèe
<CODE>secnumdepth</CODE>, který je popsán v dodatku C manuálu LaTeXu.
Napøíklad:
<PRE>
\setcounter{secnumdepth}{-1}
\chapter{Pøedmluva}
</PRE>
Samozøejmì, ¾e pøed opìtovným pou¾itím èíslovaného oddílu
je potøeba nastavit parametr <CODE>secnumdepth</CODE>
zpìt na jeho obvyklou hodnotu (ve standardních stylech 2).
<P>
Podobná nastavení jsou provedena automaticky v kni¾ní tøídì LaTeXu pøíkazy
csx{frontmatter} a csx{backmatter}.
<P>
Následuje vysvìtlení.
Pou¾ije-li se <CODE>\chapter</CODE> bez hvìzdièky:
<OL>
<LI> vlo¾í se nìco do <CODE>.toc</CODE> souboru;
<LI> je-li èítaè <CODE>secnumdepth</CODE> vìt¹í nebo roven nule,
zvìt¹í se èítaè kapitoly o jednièku a vysází se jeho hodnota.
<LI> vysází se název kapitoly.
</OL>
Ostatní pøíkazy na rozdìlování textu
(<CODE>\section</CODE>, <CODE>\subsection</CODE>,...) pracují obdobnì, av¹ak
testují jinou hodnotu.
<P>
<P>
Hodnota èítaèe <CODE>tocdepth</CODE> ovlivòuje, který nadpis bude vyti¹tìn v obsahu.
Bì¾nì se má jeho hodnota nastavit v preambuli dokumentu, pak je pro
celý dokument konstantní. Balík <EM>tocvsec2</EM>
(<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/tocvsec2">tocvsec2</A>) nabízí celkem vyhovující
rozhraní umo¾òující mìnit hodnotu èítaèe <CODE>secnumdepth</CODE> a/nebo <CODE>tocdepth</CODE>
kdekoliv v tìle dokumentu. To nabízí docela slu¹nou nezávislou kontrolu
nad èíslováním polo¾ek v obsahu.
<P>
Balík <EM>abstract</EM> (viz Otázku <A HREF="sectO.html#Q-1abstract2">Jednosloupcový výtah v dvousloupcovém dokumentu</A>) zahrnuje
volbu pro pøidání abstraktu do obsahu, zatímco balík <EM>tocbibind</EM>
(<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/tocbibind">tocbibind</A>) má volbu pro vlo¾ení
samotného obsahu, bibliografie, rejstøíku atd. do obsahu.
<P>
<P><A NAME="Q-minitoc"><HR><H3>Obsahy a iné veci po kapitolách</H3></A>
<P>
Èastý ¹týl „malého“ obsahu pre ka¾dú èas», kapitolu alebo dokonca sekciu
je podporovaný balíkom <CODE>minitoc</CODE>. Balík podporuje tie¾ mini-zoznamy
tabuliek a obrázkov; ale mini-bibliografie sú (èo si v¹íma aj dokumentácia)
iným problémom — viï Otázku <A HREF="sectM.html#Q-bibkap">Lze zpracovat bibliografii pro ka¾dou kapitolu zvlá¹»</A>.
<P>
Základný princíp balíku spoèíva v generovaní malého <CODE>.aux</CODE> súboru pre ka¾dú
kapitolu a jeho spracovaní v kapitole. Jednoduché pou¾itie mô¾e by»:
<P>
<PRE>
\usepackage{minitoc}
...
\begin{document}
...
\tableofcontents
\dominitoc \listoffigures \dominilof ...
\chapter{blah blah}
\minitoc \mtcskip \minilof ...
</PRE>
</P>
hoci je mo¾ných veµa mo¾ností rozvíjania (napríklad csx{minitoc} pre ka¾dú
kapitolu nie je potrebné).
<P>
<CODE>Babel</CODE> <CODE>minitoc</CODE> nepozná, ale <CODE>minitoc</CODE> sa stará aj
o dokumenty v iných jazykoch ne¾ v angliètine — dostupný je ¹iroký výber.
Aktuálne verzie balíku <CODE>hyperref</CODE> v¹ak s csx{minitoc} zaobchádzajú
ako so „skutoènými“ obsahmi.
<P>
Dokumentácia je dos» rozsiahla a celko dobre èitateµná: spracujte súbor
distribúcie <CODE>minitoc.tex</CODE>.<BR>
<CODE>babel.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/babel">babel</A><BR>
<CODE>hyperref.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/hyperref">hyperref</A><BR>
<CODE>minitoc.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/minitoc">minitoc</A>
<P>
<P><A NAME="Q-multind"><HR><H3>Viacnásobné indexy</H3></A>
<P>
©tandardné indexovacie schopnosti LaTeXu (tie, èo sú poskytované balíkom
<CODE>makeidx</CODE>) umo¾òujú ma» vo va¹om dokumente iba jeden index. Dokonca aj
neveµké dokumenty mô¾u by» vylep¹ené samostatnými indexami pre rozdielne témy.
<P>
Balík <CODE>multind</CODE> poskytuje jednoduché a priamoèiare viacnásobné
indexovanie. Oznaèkujete ka¾dý príkaz csx{makeindex}, csx{index}
a csx{printindex} názvom súboru a indexovacie príkazy sú zapísané do (alebo
èítané z) príslu¹ného mena súboru s pripojenou zodpovedajúcou príponou
(<CODE>.idx</CODE> alebo <CODE>.ind</CODE>). Príkaz csx{printindex} je modifikovaný
oproti ¹tandardnej verzii z LaTeXu tak, aby nevytváral vlastný názov kapitoly
alebo sekcie, vy rozhodujete, aké názvy (alebo dokonca úrovene sekcií) sa
pou¾ijú, csx{indexname} je úplne ignorované (viï Otázku <A HREF="sectO.html#Q-zmenaslov">Zmìna slov pou¾ívaných LaTeXem</A>).
<P>
Na vytvorenie „obecného“ indexu a indexu „autorov“ mô¾ete napísa»:
<P>
<PRE>
\usepackage{multind}
\makeindex{general}
\makeindex{authors}
...
\index{authors}{Robin Fairbairns}
...
\index{general}{FAQs}
...
\printindex{general}{Obecný index}
\printindex{authors}{Index autorov}
</PRE>
</P>
Pre dokonèenie úlohy spustite LaTeX na va¹om súbore dostatoène mnohokrát, aby
návestia a iné veci boli stabilné, a potom spustite príkazy
<P>
<PRE>
makeindex general
makeindex authors
</PRE>
</P>
pred ïal¹ím spustením LaTeXu. V¹imnite si, ¾e názvy indexových súborov,
ktoré sa spracúvajú, nemusia ma» ¾iadny vz»ah k názvu LaTeXovského súboru,
ktorý spracúvame. (K balíku sa nedodáva ¾iadna dokumentácia. Lep¹í popis, ne¾
vidíte hore, nedostanete.)
<P>
Balík <CODE>index</CODE> poskytuje vyèerpávajúcu sadu indexovacích prostriedkov,
vrátane príkazu csx{newindex}, ktorý dovoµuje definíciu nových ¹týlov indexu.
csx{newindex} si vezme „znaèku“ (pre pou¾itie v indexovacích príkazoch),
náhrady za prípony súborov <CODE>.idx</CODE> a <CODE>.ind</CODE> a názov indexu.
Mô¾e tie¾ zmeni» polo¾ku, voèi ktorej sa indexuje (mô¾ete ma» napríklad index
umelcov referencovaných èislami obrázkov, na ktorých sú uká¾ky ich práce).
<P>
Pre pou¾itie balíku <CODE>index</CODE> na vytvorenie indexu autorov spolu
s „normálnym“ indexom, zaènite príkazmi v preambule:
<P>
<PRE>
\usepackage{index}
\makeindex
\newindex{aut}{adx}{and}{Index mien}
</PRE>
</P>
Príkazy nahrajú balík, definujú a „hlavný“ index (pôvodný ¹týl) a následne
definujú index autorov. V tele dokumentu mô¾eme nájs» príkazy ako:
<P>
<PRE>
\index[aut]{Robin Fairbairns}
...
\index{FAQs}
</PRE>
</P>
Príkazy ulo¾ia záznam do indexu autorov, potom záznam do hlavného indexu.
Na konci dokumentu máme dva príkazy:
<P>
<PRE>
\printindex
\printindex[aut]
</PRE>
</P>
Tieto vytlaèia hlavný index, a potom index autorov. Za predpokladu, ¾e sa
príkazy budú nachádza» v súbore <CODE>myfile.tex</CODE>, spustite po dostatoènom
mno¾stve behov LaTeXu, aby boli návestia stabilné, nasledujúce príkazy
(tu sú ukázané shellovské príkazy z Unixu, ale princíp je rovnaký nezávisle
na pou¾itom systéme):
<P>
<PRE>
makeindex myfile
makeindex myfile.adx -o myfile.and
</PRE>
</P>
Potom znovu spustite LaTeX. Príkazy <EM>makeindex</EM> spracujú
<CODE>myfile.idx</CODE> do <CODE>myfile.ind</CODE> (¹tandardná akcia), a potom
<CODE>myfile.adx</CODE> do <CODE>myfile.and</CODE>. Tie dva súbory sú potrebné ako vstup pre
dva príkazy csx{printindex} v súbore <CODE>myfile.tex</CODE>.
<P>
Balík <CODE>splitidx</CODE> mô¾e pracova» rovnakým spôsobom ako ostatné: nahrajte
balík s voµbou <CODE>split</CODE> a deklarujte ka¾dý index príkazom csx{newindex}:
<P>
<CODE>\newindex[<názov_indexu>]{<skratka>}</CODE>
</P>
a <CODE>splitidx</CODE> vygeneruje súbor csx{jobname}<CODE>.<skratka></CODE> pre
polo¾ky indexu generované príkazmi ako <CODE>\sindex[<skratka>]{<polo¾ka>}</CODE>.
Ako pri ostatných balíkoch, aj tu je táto metóda limitovaná celkovým poètom
výstupných súborov TeXu. <CODE>splitindex</CODE> je v¹ak dodávaný s malým
spustiteµným súborom <EM>splitindex</EM> (dostupný pre mno¾stvo operaèných
systémov). Ak tento doplnkový program pou¾ijete (a nepou¾ijete voµbu <CODE>split</CODE>),
nebudete limitovaní poètom indexov. Okrem tohto triku podporuje
<CODE>splitidx</CODE> rovnaké veci ako <CODE>index</CODE>. Príklad pou¾itia nájdete
v dokumentácii.
<P>
Trieda <CODE>memoir</CODE> má vlastné funkcie pre viacnásobné indexy (ako aj voµby
rozvrhnutia indexu, ktoré ostatné balíky delegujú na indexové ¹týly pou¾ívané
programom <EM>makeindex</EM>).<BR>
<CODE>index.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/index">index</A><BR>
<CODE>makeidx.sty</CODE>: súèas» distribúcie LaTeXu<BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
<CODE>multind.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex209/contrib/misc/multind.sty">multind</A><BR>
<CODE>splitidx.sty</CODE> a <CODE>splitindex</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/splitindex">splitindex</A>
<P>
<P>
<P><A NAME="Q-nameref"><HR><H3>Odkazovanie na veci podµa mena</H3></A>
<P>
LaTeXovský mechanizmus návestí je navrhnutý pre neosobný svet akademických
publikácií, v ktorých v¹etko má èíslo. Ak si máme zaznamena» <EM>názvy</EM> vecí,
ktorým sme priradili návestie, je potrebné roz¹írenie. Sú dostupné dva balíky
roz¹irujúce príkazy LaTeXu na tvorbu sekcií, aby poskytli mo¾nos» odkazovania
názvom sekcie.
<P>
Balík <CODE>titleref</CODE> je jednoduchým roz¹írením poskytujúcim príkaz
csx{titleref}. Je to samostatný balík — nepou¾ívajte ho v dokumente, v ktorom
potrebujete aj <CODE>hyperref</CODE>.
<P>
Balík <CODE>byname</CODE>, hoci pracuje so svojím „priateµom“
<CODE>smartref</CODE>, funguje (do urèitej miery) s balíkom <CODE>hyperref</CODE>, ale
odkazy, ktoré definuje, nie sú hyperlinky.
<P>
Trieda <CODE>memoir</CODE> zahàòa funkcionalitu <CODE>titleref</CODE>, ale zrejme nefunguje
s <CODE>byname</CODE> (i keï hµadaním v Newsgroup{comp.text.tex}
na URL{groups.google.com} nájdete úpravu <CODE>byname</CODE> na vyrie¹enie
problému).
<P>
Sada <CODE>hyperref</CODE> obsahuje balík <CODE>nameref</CODE>, ktorý funguje
samostatne (t.j. bez <CODE>hyperref</CODE>: v tomto móde, samozrejme, nie sú jeho
odkazy hyperlinkované). Ak nahráte samotný <CODE>hyperref</CODE>,
<CODE>nameref</CODE> sa nahrá automaticky.
<CODE>Memoir</CODE> vy¾aduje <CODE>memhfixc</CODE> pri behu s <CODE>hyperref</CODE>. Av¹ak
po uvedenej postupnosti príkazov mô¾u by» <CODE>nameref</CODE> príkazy pou¾ité
v <CODE>memoir</CODE> dokumente:
<P>
<PRE>
\documentclass[...]{memoir}
...
\usepackage[...]{hyperref}
\usepackage{memhfixc}
</PRE>
</P>
<P>
<P>
V¹etky tri balíky pre odkazy podµa mena definujú odkazovacie príkazy rovnakého
názvu ako balík: csx{titleref}, csx{byname} a csx{nameref}. Balík
<CODE>nameref</CODE> tie¾ definuje príkaz csx{byshortnameref}, ktorý pou¾íva
voliteµný „krátky“ parameter nadpisu pre príkazy kapitol a sekcií.<BR>
<CODE>byname.sty</CODE>: distribuovaný s <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/smartref">smartref</A><BR>
<CODE>hyperref.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/hyperref">hyperref</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
<CODE>nameref.sty</CODE>: distribuovaný s <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/hyperref">hyperref</A><BR>
<CODE>smartref.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/smartref">smartref</A><BR>
<CODE>titleref.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/titleref.sty">titleref</A>
<P>
<P><A NAME="Q-extref"><HR><H3>Odkazovanie na návestia v iných dokumentoch</H3></A>
<P>
Pri tvorbe sady vzájomne súvisiacich dokumentov sa budete èasto chcie» odkazova»
na návestia v druhých dokumentoch sady, ale samostatný LaTeX toto nepovoµuje.
<P>
Z toho dôvodu bol napísaný balík <CODE>xr</CODE>: ak napí¹ete
<P>
<PRE>
\usepackage{xr}
\externaldocument{volume1}
</PRE>
</P>
do vá¹ho súèasného dokumentu nahrajú sa v¹etky odkazy z <CODE>volume1</CODE>.
<P>
Èo v¹ak v prípade, ¾e majú oba dokumenty sekciu s návestím „introduction“
(úvod; je to celkom pravdepodobné)? Balík poskytuje prostriedky
na transformáciu v¹etkých importovaných návestí, tak¾e ich nemusíte meni»
v ¾iadnom dokumente. Napríklad:
<P>
<PRE>
\usepackage{xr}
\externaldocument[V1-]{volume1}
</PRE>
</P>
nahrá odkazy zo súboru <CODE>volume1</CODE>, ale pred ka¾dý vlo¾í predponu
<CODE>V1-</CODE>. Tak¾e na úvod v dokumente „volume 1“ by ste sa odkazovali:
<P>
<PRE>
\usepackage{xr}
\externaldocument[V1-]{volume1}
...
... úvod dokumentu volume1
(\ref{V1-introduction})...
</PRE>
</P>
Aby prostriedky <CODE>xr</CODE> fungovali s balíkom <CODE>hyperref</CODE>, potrebujete
balík <CODE>xr-hyper</CODE>. Pre jednoduché krí¾ové hyperodkazy (t.j. na lokálny
PDF súbor, ktorý ste práve skompilovali) napí¹te:
<P>
<PRE>
\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[V1-]{volume1}
...
... the \nameref{V1-introduction})...
</PRE>
</P>
a pomenovaný odkaz sa objaví ako aktívny link na kapitolu „úvod“ súboru
<CODE>volume1.pdf</CODE>.
<P>
Pre link na PDF dokument na webe, pre ktorý máte .aux súbor, napí¹te:
<P>
<PRE>
\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[V1-]{volume1}%
[http://mybook.com/volume1.pdf]
...
... the \nameref{V1-introduction})...
</PRE>
</P>
<CODE>xr.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A><BR>
<CODE>xr-hyper.sty</CODE>: distribuované s <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/hyperref">hyperref</A>
<P>
<P>
<P><A NAME="Q-varwidth"><HR><H3>Automatická veµkos» <CODE>minipage</CODE></H3></A>
<P>
Prostredie <CODE>minipage</CODE> vy¾aduje, aby ste ¹pecifikovali ¹írku „stránky“, ktorú
chcete vytvori». Toto je obèas nepohodlné: chceli by ste (ak je to mo¾né)
zabra» menej miesta, ale <CODE>minipage</CODE> vytvorí box presne podµa ¹pecifikovanej
¹írky.
<P>
Balík <CODE>pbox</CODE> definuje csx{pbox}, ktorého ¹írka je presne ¹írkou
najdlh¹ieho obsiahnutého riadku (závislé od maximálnej ¹irky, ktorú zadáte).
Tak¾e kým <CODE>\parbox{2cm}{Hello\\world!}</CODE> vytvotí box ¹írky presne <CODE>2cm</CODE>,
<CODE>\pbox{2cm}{Hello\\world!}</CODE> vytvorí box so ¹írkou <CODE>1.79cm</CODE> (ak
pou¾ívate ¹tandardný font <CODE>cmr</CODE>). Balík poskytuje aj
<CODE>\settominwidth[min]{length}{text}</CODE> (èo vyzerá takmer ako ¹tandardný príkaz
csx{settowidth}) a csx{widthofpbox} funkène analogické príkazu csx{widthof}
pre pou¾itie s balíkom <CODE>calc</CODE>.
<P>
Balík <CODE>eqparbox</CODE> my¹lienku balíku <CODE>pbox</CODE> roz¹iruje tak, ¾e vám
dovoµuje vysádza» sériu boxov s rovnakou (minimalizovanou) ¹írkou. (Príkaz
neprijíma parameter limitujúci maximálnu ¹írku.) Dokumentácia balíku ukazuje
nasledujúci príklad z humorného <EM>¾ivotopisu</EM>:
<P>
<PRE>
\noindent%
\eqparbox{place}%
{\textbf{Widgets, Inc.}}
\hfill
\eqparbox{title}%
{\textbf{Senior Widget Designer}}
\hfill
\eqparbox{dates}{\textbf{1/95--present}}
<P>
...
<P>
\noindent%
\eqparbox{place}%
{\textbf{Thingamabobs, Ltd.}}
\hfill
\eqparbox{title}%
{\textbf{Lead Engineer}}
\hfill
\eqparbox{dates}{\textbf{9/92--12/94}}
</PRE>
</P>
Kód zabezpeèí, ¾e v¹etky tri polo¾ky majú rovnakú ¹írku, tak¾e riadky vyzerajú
pravidelne. Príkaz csx{eqboxwidth} vám dovoµuje pou¾i» zmeranú ¹írku skupiny:
dokumentácia ukazuje, ako mô¾e by» príkaz pou¾itý na vytvorenie rozumne
vyzerajúcich ståpcov mie¹ajúcich riadky <CODE>c</CODE>, <CODE>r</CODE> alebo
<CODE>l</CODE>, s ekvivalentnou polo¾kou <CODE>p{...}</CODE> tým, ¾e z riadkov s pevnou ¹írkou
spravíte skupinu <CODE>eqparbox</CODE> a nakoniec pou¾ijete csx{parbox} so ¹írkou,
ktorá bola pre skupinu zmeraná.
<P>
Balík <CODE>varwidth</CODE> definuje prostredie <CODE>varwidth</CODE>, ktoré sádza obsah boxu
tak, aby zodpovedal „u¾¹ej prirodzenej ¹írke“, ak nejakú nájde.
(Poskytujete rovnaké parametre ako pri <CODE>minipage</CODE>.) <CODE>Varwidth</CODE>
poskytuje svoj vlastný príkaz csx{narrowragged}, ktorého úlohou je zú¾i»
riadky a dosta» viac textu do posledného riadku odstavcu (teda vytvorenie
riadkov s väè¹ou mierou zhody då¾ky riadkov, ne¾ je to typicky pri
csx{raggedright}).
<P>
Dokumentácia (v samotnom súbore balíku) vypisuje rozlièné re¹trikcie a veci,
ktoré je e¹te treba spravi», ale balík sa ukázal ako u¾itoèný pre rozlièné
úlohy.<BR>
<CODE>eqparbox.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/eqparbox">eqparbox</A><BR>
<CODE>pbox.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/pbox">pbox</A><BR>
<CODE>varwidth.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/varwidth.sty">varwidth</A>
<P>
<P>
<P><A NAME="Q-pozntab"><HR><H3>Poznámky pod èarou v tabulkách</H3></A>
<P>
Standardní LaTeXový pøíkaz <CODE>\footnote</CODE> neumí pracovat v prostøedí
tabulek. Toto prostøedí toti¾ poznámkám neumo¾ní „uniknout“ a¾ na
konec stránky. Pokud je tabulka plovoucí, nejlep¹í øe¹ení je
umístit tabulku do prostøedí <CODE>minipage</CODE> a umístit pak poznámky na spodní
okraj stránky nebo pou¾ít balík
<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/threeparttable.sty">threeparttable</A> od
Donalda Arsenaua.
<P>
Balík <CODE>ctable</CODE> roz¹iøuje model <CODE>threeparttable</CODE> a takté¾ pou¾ívá
my¹lenky balíku <CODE>booktabs</CODE>. Pøíkaz csx{ctable} dìlá v¹echnu práci:
sázení tabulky, umístnìní popiskù a definování poznámek. „Tabulka“ mù¾e
obsahovat diagramy a volitelný parametr csx{ctable} udìlá vytvoøený float
obrázkem místo tabulky.
<P>
Pokud není tabulka plovoucí, pak mù¾ete pou¾ít jednu z mo¾ností:
<OL>
<LI> Pomocí <CODE>\footnotemark</CODE> mù¾ete vhodnì umístit do textu znaèku
poznámky pøed ukonèením prostøedí <CODE>tabular</CODE> vlo¾te pøíkaz
<CODE>\footnotetext</CODE>. Tento
zpùsob je popsán v Lamportovì knize, mù¾ete v¹ak pou¾ít pouze jednu
poznámku.
<LI> Vlo¾te tabulku do prostøedí <CODE>minipage</CODE>. To vám umo¾òuje pou¾ít
v¹echny vlastnosti poznámek bez vìt¹ího úsilí.
<LI> Pou¾ijte
<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/threeparttable.sty">threeparttable</A>. Balík je
sice vytvoøen pro plovoucí tabulky, ale mù¾ete ho pou¾ít i v tomto
pøípadì.
<LI> Pou¾ijte <CODE>tabularx</CODE> nebo <CODE>longtable</CODE> z LaTeXové distribuce
(<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A>). Klasické poznámky sice zvládá
o poznání hùøe ne¾ prostøedí <CODE>tabular</CODE>, av¹ak povoluje poznámky pod èarou.
<LI> Stáhnìte balík <EM>footnote</EM> (skrýtá se v archivu na <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/mdwtools">mdwtools</A>.
Pak vlo¾te va¹i
tabulku do prostøedí <CODE>savenotes</CODE>. Alternativnì mù¾ete do preambule
dokumentu napsat <CODE>\makesavenoteenv{tabular}</CODE> a tabulka zvládne poznámky
pod èarou korektnì.
<LI> Pou¾ijte <EM>mdwtab</EM> ze stejného adresáøe. Ten umí nejen
správnì zvládat poznámky pod èarou, ale navíc je¹tì umí va¹i tabulku
zkrá¹lit. Ten v¹ak mù¾e být nekompatibilní s jinými balíky.
</OL>
<P>
Dokumentace <CODE>threeparttable</CODE> je obsa¾ena v souboru balíku samém,
dokumentace <CODE>ctable</CODE> je distribuována jako PDF soubor.
<P>
<P><A NAME="Q-captsty"><HR><H3>©týly popiskov</H3></A>
<P>
Zmeny ¹týlov popiskov mô¾ete spravi» opätovnou definíciou príkazov, ktoré
popisky vytvárajú. Tak¾e napríklad <CODE>\fnum@figure</CODE> mô¾e by» predefinovaný
vo va¹om vlastnom balíku alebo medzi
viï Otázku <A HREF="sectQ.html#Q-atsigns"><CODE>\@</CODE> a <CODE>@</CODE> ve jménech maker</A>
:
<P>
<PRE>
\renewcommand{\fnum@figure}%
{\textbf{Fig.~\thefigure}}
</PRE>
</P>
èo spôsobí, ¾e èíslo bude vysádzané tuèné. (V¹imnite si, ¾e v pôvodnej
definícii bolo pou¾ité
viï Otázku <A HREF="sectO.html#Q-zmenaslov">Zmìna slov pou¾ívaných LaTeXem</A>.) Prepracovanej¹ích zmien mô¾eme dosiahnu»
úpravou príkazu <CODE>\caption</CODE>, ked¾e v¹ak na túto prácu neexistujú balíky, nie sú
takéto zmeny (ktoré mô¾u by» dos» nároèné) odporúèané be¾ných pou¾ívateµom.
<P>
Balík <CODE>float</CODE> poskytuje urèitú konkrolu na vzhµadom popiskov, aj keï je
urèený hlavne na vytváranie ne¹tandardných floatov (plávajúcich tabuliek
a obrázkov). Balíky <CODE>caption</CODE> a <CODE>ccaption</CODE> (v¹imnite si násobné
'<EM>c</EM>') poskytujú rôzne formátovacie mo¾nosti.
<P>
<CODE>ccaption</CODE> poskytuje „predå¾ené“ popisky a popisky, ktoré mô¾ete
umiestni» mimo prostredí float. Balík <CODE>capt-of</CODE> povoµuje taktie¾ popisky
mimo prostredia float. Pri zaobchádzaní s vecami predpokladajúcimi postupnos»
floatov (ako v predå¾ených popiskoch), alebo prípadným mie¹aním neplávajúcich
popiskov s plávajúcimi, je potrebné dba» na opatrnos».
<P>
Trieda <CODE>memoir</CODE> zahàòa mo¾nosti balíku <CODE>ccaption</CODE>. Triedy
<CODE>KOMA-script</CODE> tie¾ poskytujú ¹iroký rozsah príkazov na formátovanie popiskov.
<P>
Dokumentácia <CODE>caption</CODE> je dostupná po spracovaní súboru
<CODE>manual.tex</CODE> vytvoreného pri rozbalovaní <CODE>caption.dtx</CODE>.
<P>
V minulosti odporúèaný balík <CODE>caption2</CODE> bol znovu prevzatý balíkom
<CODE>caption</CODE>. <CODE>caption2</CODE> v¹ak zostáva dostupný pre star¹ie
dokumenty.<BR>
<CODE>caption.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/caption">caption</A><BR>
<CODE>capt-of.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/capt-of.sty">capt-of</A><BR>
<CODE>ccaption.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/ccaption">ccaption</A><BR>
<CODE>float.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/float">float</A><BR>
balík <CODE>KOMA script</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/koma-script">koma-script</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A>
<P>
<P><A NAME="Q-titlsty"><HR><H3>©týly nadpisov dokumentov</H3></A>
<P>
Balík <CODE>titling</CODE> poskutuje mnoho prostriedkov umo¾òujúcich manipuláciu
so vzhµadom príkazu <CODE>\maketitle</CODE> (vrátane <CODE>\thanks</CODE> atï.). Balík definuje
prostredie <CODE>titlingpage</CODE>, ktoré je konfigurovateµné. Poskytuje nieèo medzi
voµbou <CODE>titlepage</CODE> ¹tandardných tried a prostredím <CODE>titlepage</CODE>.<BR>
<CODE>titling.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/titling">titling</A>
<P>
<P>
<P><A NAME="Q-titles"><HR><H3>Vzhled nadpisù</H3></A>
<P>
Pøedpokládejme, ¾e editor na¹eho oblíbeného èasopisu vy¾aduje,
aby nadpisy oddílù byly centrované a vysázené kapitálkami a pododdíly
byly zarovnány vpravo a vysázeny kurzívou. Nechce se nám v¹ak zaplétat do
takového druhu programování jaký je popsán v <EM>The LaTeX Companion</EM>
(viz <A HREF="sectC.html#Q-books">Knihy o TeXu a pøíbuzná literatura</A>;
<A HREF="sectQ.html#Q-atsigns"><CODE>\@</CODE> a <CODE>@</CODE> ve jménech maker</A> samotné je diskutováno pod `@').
Následující trik pravdìpodobnì editory uspokojí.
Novì definované pøíkazy <CODE>\ssection</CODE> a <CODE>\ssubsection</CODE>:
<PRE>
\newcommand{\ssection}[1]{%
\section[#1]{\centering\textsc{#1}}}
\newcommand{\ssubsection}[1]{%
\subsection[#1]{\raggedright\textit{#1}}}
</PRE>
se pak pou¾ijí namísto obvyklých <CODE>\section</CODE> a <CODE>\subsection</CODE>.
Není to v¹ak nejhezèí øe¹ení. Èísla v nadpisech oddílù
zùstávají vysázena tuènì a hvìzdièkovaná forma pøíkazù musí
být pøedefinována zvlá¹».
Uvedené definice nebudou správnì fungovat
v pøípadì, ¾e se pou¾ije
<A HREF="sectT.html#Q-NFSS">Makro NFSS (The New Font Selection Scheme)</A> mimo <A HREF="sectT.html#Q-latex2e">LaTeX 2e (nový standard LaTeXu)</A>,
jeliko¾ v takovém pøípadì se pøíkazy mìnící typ písma chovají odli¹nì.
<P>
Balík <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/sectsty">sectsty</A> nabízí jednodu¹e
pou¾itelnou sadu pøíkazù pro tuto práci, zatímco balík
<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/titlesec">titlesec</A> umo¾òuje pokroèilej¹í øe¹ení
této problematiky (<EM>titlesec</EM> pøichází s druhým balíkem –
<EM>titletoc</EM> –
který je pou¾íván pro úpravu formátu celého obsahu.
<P>
Záhlaví pøíkazù <CODE>\chapter</CODE> a <CODE>\part</CODE> jsou vytváøena jiným
mechanismem, balík <EM>sectsty</EM> umí zacházet s obìma, zatímco
<EM>titlesec</EM>
umí upravit pouze <CODE>\chapter</CODE>. Balík
<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/fncychap">fncychap</A> nabízí ¹irokou
¹kálu pøedem definovaných designù nadpisù kapitol.
<P>
Balík <CODE>fncychap</CODE> poskytuje pìknou kolekci upravených nadpisù kapitol.
Balík <CODE>anonchap</CODE> poskytuje jednoduché nástroje pro sazbu nadpisù kapitol
„jako nadpisù kapitol“ (tedy bez èásti „Kapitola“). Balík
<CODE>tocbibind</CODE> poskytuje stejné pøíkazy, av¹ak za úèelem dosa¾ení jiného
cíle. <CODE>fncychap</CODE> bohu¾el není sladìný s pøítomností front a backmatter
v dokumentech tøídy <CODE>book</CODE>.
<P>
<P><A NAME="Q-appendix"><HR><H3>Prílohy</H3></A>
<P>
LaTeX poskytuje výnimoène jednoduchý mechanizmus príloh: príkaz <CODE>\appendix</CODE>
prepína dokument zo stavu generovania sekcií (v triede <CODE>article</CODE>) alebo kapitol
(v triedach <CODE>report</CODE> a <CODE>book</CODE>) do stavu produkovania príloh. Èíslovanie sekcie
alebo kapitoly je re¹tartované a reprezentácia poèítadla sa prepne do abecedného
módu. Tak¾e:
<P>
<PRE>
\section{Moja in¹pirácia}
...
<P>
\section{Rozvíjanie in¹pirácie}
...
<P>
\appendix
\section{Ako ma kopla múza}
...
</PRE>
</P>
sa vysádza (v dokumente triedy <CODE>article</CODE>) nasledovne:
<P>
textbf{1 Moja in¹pirácia}
<P>
...
<P>
textbf{2 Rozvíjanie in¹pirácie}
<P>
...
<P>
textbf{A Ako ma kopla múza}
<P>
...
</P>
èo je väè¹inou dostaèujúce. V¹imnite si, ¾e po tom, èo ste zapli sádzanie
príloh, LaTeX vám neumo¾òuje cestu spä» — po prílohe nemô¾e nasledova»
normálna sekcia (<CODE>\section</CODE>) alebo kapitola (<CODE>\chapter</CODE>).
<P>
Balík <CODE>appendix</CODE> poskytuje viacero spôsobov ako túto jednoduchú situáciu
spracova». Priame pou¾itie balíku vám dovoµuje ma» oddelené nadpisy v tele
dokumentu a obsahu. Dosiahnete to pomocou
<P>
<PRE>
\usepackage{appendix}
...
\appendix
\appendixpage
\addappheadtotoc
</PRE>
</P>
Príkaz <CODE>\appendixpage</CODE> pridáva nad prvú prílohu oddelený nadpis
„Appendices“ (prílohy) a príkaz <CODE>\addappheadtotoc</CODE> pridáva podobný nadpis
do obsahu. Tieto jednoduché modifikácie pokrývajú potreby mnohých µudí týkajúce
sa príloh.
<P>
Balík tie¾ poskytuje prostredie <CODE>appendices</CODE>, ktoré poskytuje pestrej¹ie
vyu¾itie Prostredie sa najlep¹ie ovláda voµbami balíku. Hore vedený príklad
by sme dosiahli takto:
<P>
<PRE>
\usepackage[toc,page]{appendix}
...
\begin{appendices}
...
\end{appendices}
</PRE>
</P>
Skvelé je, ¾e keï prostredie <CODE>appendices</CODE> skonèí, mô¾ete v sekciách a kapitolách
pokraèova» ako predtým — èíslovanie nie je ovplyvnené.
<P>
Balík poskytuje aj ïal¹iu mo¾nos» sádzania príloh — vo forme podriadených
úsekov v dokumente. Prostredie <CODE>subappendices</CODE> dovoµuje vklada» prílohy pre
konkrétnu sekciu oddelene (pou¾íte <CODE>\subsection</CODE> pre sekcie, alebo
<CODE>\section</CODE> pre kapitoly). Mô¾ete teda napísa»:
<P>
<PRE>
\usepackage{appendix}
...
\section{Moja in¹pirácia}
...
\begin{subappendices}
\subsection{Ako ma kopla múza}
...
\end{subappendices}
<P>
\section{Rozvíjanie in¹pirácie}
...
</PRE>
</P>
Výsledkom bude nieèo podobné:
<P>
textbf{1 Moja in¹pirácia}
<P>
...
<P>
textbf{1.A Ako ma kopla múza}
<P>
...
<P>
textbf{2 Rozvíjanie in¹pirácie}
<P>
...
</P>
<P>
S balíkom sa dá robi» e¹te veµa zaujímavých vecí, pre detaili sú u¾ívatelia
odkazovaný na dokumentáciu.
<P>
Trieda <CODE>memoir</CODE> obsahuje mo¾nosti balíku <CODE>appendix</CODE>. Triedy
<CODE>KOMA-script</CODE> poskytujú príkaz <CODE>\appendixprefix</CODE> na manipuláciu so vzhµadom
príloh.<BR>
<CODE>appendix.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/appendix">appendix</A><BR>
balík <CODE>KOMA script</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/koma-script">koma-script</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A>
<P>
<P>
<P><A NAME="Q-widefigs"><HR><H3>©iroké obrázky v dvojståpcových dokumentoch</H3></A>
<P>
Plávajúce obrázky a tabuµky obyèajne vychádzajú v rovnakej ¹írke ako stránka,
ale v dvojståpcových dokumentoch sú obmedzené ¹írkou ståpca. Toto ale obèas
nie je dostaèujúce, tak¾e existujú alternatívne verzie prostredí float —
v dvojståpcových dokumentoch poskytuje <CODE>figure*</CODE> plávajúci obrázok ¹írky stránky
(a <CODE>table*</CODE> tabuµku ¹írky stránky), ktorý sa postará o v¹etko potrebné.
<P>
Hviezdièkové plávajúce (float) prostredia sa mô¾u objavi» iba na vrchu stránky
alebo na celej stránke — direktívy float rozlo¾enia <CODE>h</CODE> alebo <CODE>b</CODE> sú
jednoducho ignorované.
<P>
Rovnice ¹írky celej strany mô¾u by» bohu¾iaµ prispôsobené iba vnútru float
prostredí. Mali by ste ich zahàòa» do prostredí <CODE>figure</CODE>, alebo pou¾íva» balík
<CODE>float</CODE>, prípadne <CODE>ccaption</CODE> na definíciu nového typu floatu.<BR>
<CODE>ccaption.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/ccaption">ccaption</A><BR>
<CODE>float.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/float">float</A>
<P>
<P>
<P><A NAME="Q-parindent"><HR><H3>Odsazení odstavce po nadpisu</H3></A>
<P>
LaTeX pou¾ívá stylù, je¾ neodsazují první odstavec za nadpisem.
Je mnoho dùvodù proè tomu tak je, ale ne ka¾dému to vyhovuje
(napø. to neodpovídá tradicím èeské typografie).
U¾ijeme-li styl
<CODE>indentfirst.sty</CODE>
(<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A>),
pak se tento mechanismus potlaèí, tak¾e první odstavec bude odsazen.
<P>
<P><A NAME="Q-poznnadp"><HR><H3>Poznámky v LaTeXových nadpisech</H3></A>
<P>
Umístìní pøíkazu <CODE>\footnote</CODE> v argumentu pøíkazu <CODE>\section</CODE> není
dostaèující.
Jeliko¾ jsou argumenty pøíkazu <CODE>\section</CODE> pou¾ívány v obsahu a potenciálnì
i v záhlaví stránky, není pou¾ití <CODE>\protect\footnote</CODE> také dobrý nápad.
<P>
Bohu¾el neexistuje rozumný zpùsob, jak zamezit zobrazování tìchto
poznámek v záhlaví pøi povolení zobrazování v obsahu. K jejich potlaèení musíte
udìlat toto:
<UL>
<LI> Vyu¾ijte toho, ¾e povinné argumentu nejsou volány, pokud se zde
vyskytují volitelné: <CODE>\section[title]{title\footnote{title ftnt}}</CODE>
<LI> Pou¾ijte balík <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/footmisc">footmisc</A>
s volbou balíku <CODE>stable</CODE> – ten upraví poznámky pod èarou tak, ¾e lehce
a ti¹e zmizí, pokud jsou pou¾ité jako nepovinné argumenty.
</UL>
<P>
<P><A NAME="Q-ftncapt"><HR><H3>Poznámky v popiskoch</H3></A>
<P>
Poznámky v popiskoch sú obzvlá¹» komplikované: predstavujú samostatný problém
(navy¹e k problémom
poznámok v nadpisoch a tabuµkách spomínaných v predchádzajúcich otázkach).
<P>
Tak¾e okrem pou¾ívania voliteµného parametru príkazu csx{caption} (alebo
podobného), aby sme sa vyhli migrácii poznámky do Zoznamu ... (List of
...), a vlo¾enia objektu, ktorého popisky obsahujú poznámku, do minipage,
musíme <EM>naviac</EM> èeli» tendencii príkazu csx{caption} vytvára» text
poznámky dvakrát. Pre tento posledný problém neexistuje èisté rie¹enie, ktorého
by si bol autor vedomý. Ak týmto problémom trpíte, dobre vytvorený príkaz
csx{caption} v prostredí <CODE>minipage</CODE> vo vnútri floatu ako:
<PRE>
\begin{figure}
\begin{minipage}{\textwidth}
...
\caption[Popisky pre LOF]%
{Skutoèné popisky\footnote{blah}}
\end{minipage}
\end{figure}
</PRE>
mô¾e vytvori» <EM>dve</EM> kópie tela poznámky „blah“. (Efekt sa objavuje
pri popiskoch, ktoré sú dos» dlhé, aby na sadzbu vy¾adovali dva riadky, a teda
pri takom krátkom popisku by sa neobjavil.) Dokumentácia balíku
<CODE>ccaption</CODE> popisuje skutoène stra¹ný spôsob, ako problém obís».<BR>
<CODE>ccaption.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/ccaption">ccaption</A>
<P>
<P><A NAME="Q-repfootnote"><HR><H3>Poznámky s rovnakým textom</H3></A>
<P>
Ak sa <EM>rovnaká</EM> poznámka objaví na rozlièných miestach v dokumente, je
èasto nevhodné opakova» celú poznámku znovu. Opakovaniu sa mô¾eme vyhnú»
poloautomatickou cestou alebo jednoduchým oznaèovaním poznámok, o ktorých
vieme, ¾e ich budeme opakova», a následným odkazovaním na výsledok. Plne
autmatické rie¹enie (také, èo detekuje a potláèa) neexistuje.
<P>
Ak viete, ¾e budete ma» iba jednu opakovanú poznámku, rie¹enie je jednoduché:
iba pou¾ite voliteµný parameter csx{footnotemark} na zdôraznenie opakovania:
<P>
<PRE>
...\footnote{Opakujúca sa poznámka}
...
...\footnotemark[1]
</PRE>
</P>
...@ èo je veµmi jednoduché, ked¾e vieme, ¾e bude existova» iba poznámka
èislo 1. Podobná technika mô¾e by» pou¾itá, keï u¾ sú poznámky stabilné,
pou¾ijete èíslo, ktoré LaTeX alokoval. Toto v¹ak mô¾e by» únavné, ked¾e
µubovolná zmena sadzby by mohla zmeni» vz»ahy medzi poznámkou a opakovaním:
znaèkovanie je nevyhnuteµne lep¹ie.
<P>
Mô¾eme pou¾i» jednoduché ruèné znaèkovanie poznámok pomocou dedikovaného
poèítadla:
<P>
<PRE>
\newcounter{fnnumber}
...
...\footnote{Opakovaný text}%
\setcounter{fnnumber}{\thefootnote}%
...
...\footnotemark[\thefnnumber]
</PRE>
</P>
Je to ale trochu zdåhavé. Na pomoc si mô¾eme privola» znaèkovacie mechanizmy
LaTeXu, ale pred vyhodnotením csx{ref} poèas druhého priebehu LaTeXom
sa objavujú nepekné chybové hlásenia:
<P>
<PRE>
...\footnote{Opakovaný text\label{fn:repeat}}
...
...\footnotemark[\ref{fn:repeat}]
</PRE>
</P>
Alternatívne mô¾ete pou¾i» príkaz csx{footref}, ktorého výhodou je schopnos»
fungova», dokonca aj keï nie je znaèka poznámky vyjadrená ako èíslo. Príkaz je
definovaný v balíku <CODE>footmisc</CODE> a v triede <CODE>memoir</CODE> (prinajmen¹om).
csx{footref} zredukuje predchádzajúci príklad na:
<P>
<PRE>
...\footnote{Opakovaný text\label{fn:repeat}}
...
...\footref{fn:repeat}
</PRE>
</P>
Toto je najèistej¹ie rie¹enie. V¹imnite si, ¾e príkaz csx{label} <EM>musí</EM>
by» vo vnútri parametru csx{footnote}.
<P>
Balík <CODE>fixfoot</CODE> nám to trochu uµahèuje: pomocou príkazu
csx{DeclareFixedFoot} deklarujete poznámky (typicky v prambule dokumentu),
ktoré budete opakova», a potom pou¾ijete deklarovaný príkaz v tele dokumentu:
<P>
<PRE>
\DeclareFixedFootnote{\rep}{Opakovaný text}
...
...\rep{}
...\rep{}
</PRE>
</P>
Balík zaruèuje, ¾e opakovaný text sa objavuje na strane najviac raz: obvykle
zrejme bude potrebný viac ne¾ jeden beh LaTeXu, aby ste sa opakovaní
zbavili.<BR>
<CODE>fixfoot.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/fixfoot">fixfoot</A><BR>
<CODE>footmisc.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/footmisc">footmisc</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A>
<P>
<P><A NAME="Q-footnpp"><HR><H3>Èíslovanie poznámok „po stránkach“</H3></A>
<P>
Oèividným rie¹ením je resetovanie poèítadla v¾dy, keï zmeníme stranu,
pomocou interných mechanizmov LaTeXu (viï Otázku <A HREF="sectR.html#Q-addtoreset">„Master“ a „slave“ poèítadlá</A>).
Miesto zmeny stránky bohu¾ial nie je predvídateµné (nie na konci tlaèenej
stránky, tak¾e takéto spojenie funguje iba so ¹»astím).
<P>
Výsledkom je, ¾e resetovanie poznámok je nevyhnuteµne dvojprechodový proces
pou¾ívajúci urèitý druh návestí. Návestia sú tak èi tak dôle¾ité, ked¾e sa
be¾ne vyskutuje po¾iadavka na znaèkovanie poznámok symbolmi (s veµmi malými
mno¾inami symbolov). Existujú tri balíky, ktoré toto doká¾u.
<P>
Balík <CODE>footnpag</CODE> robí iba èíslovanie poznámok po stránkach a niè iné.
<P>
Balík <CODE>perpage</CODE> poskytuje obecný mechanizmus resetovania poèítadiel
po jednotlivých stránkach, tak¾e zjavne mô¾e by» na túto úlohu pou¾itý.
Rozhranie je jednoduché: <CODE>\MakePerPage{footnote}</CODE> spraví, èo
potrebujeme. Ak chcete nastavi» poèítadlo na inú hodnotu ne¾ 1 (napríklad aby
ste sa vyhli nieèomu v LaTeXovskom zozname symbolov poznámok), pou¾ite:
<CODE>\MakePerPage[2]{footnote}</CODE>.
<P>
Balík <CODE>footmisc</CODE> poskytuje rozlièné spôsoby kontroly vzhµadu poznámok,
medzi ktorými je aj voµba balíku <CODE>perpage</CODE>, ktorá upravuje èíslovanie
po stránkach.
<P>
Dokumentácia <CODE>footnpag</CODE> je dodávaná ako <CODE>.dvi</CODE> súbor
<CODE>footnpag-user</CODE> distribúcie. Dokumentácia <CODE>perpage</CODE> je iba v súbore
balíku (neobsahuje ale viac, ne¾ bolo uvedené hore...).<BR>
<CODE>footmisc.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/footmisc">footmisc</A><BR>
<CODE>footnpag.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/footnpag">footnpag</A><BR>
<CODE>perpage.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/perpage.sty">perpage</A>
<P>
<P><A NAME="Q-changemargin"><HR><H3>Zmena okrajov v LaTeXu</H3></A>
<P>
Zmena veµkosti tela textu LaTeXovského je prekvapujúco »a¾ká úloha, najlep¹ia
rada pre zaèiatoèníkov je, aby to neskú¹ali. Medzi fundamentálnymi obmedzeniami
TeXu, obmedzeniami spojenými s návrhom LaTeXu a dobrými dizajnovými
a sádzaèskými zvykmi existuje urèitá spojitos». Ka¾dá zmena musí by» teda dobre
premyslená a musí by» zaistené, ¾e funguje a zároveò je oku príjemná.
<P>
Lamportove varovanie v jeho sekcii „Customizing the Style“ nesmie by» brané
na µahkú váhu. Jednopalcové okraje papieru formátu A4 sú prijateµné pre písacie
stroje, ale nie pre sadzbu desa»bodovým (prípadne väè¹ím) písmom, preto¾e sa
takéto ¹iroké, husté riadky »a¾ko èítajú. Ideálne by na riadok nemalo by» viac
ako 75 znakov (pre dvojståpcový text sa obmedzenie mení).
Ovládacie prvky LaTeXu dovoµujú zmeni» vzdialenos» od okajov stránky k µavému
a hornému okraju vá¹ho textu, ako aj vý¹ku a ¹írku textu.
Zmena vý¹ky a ¹írky vy¾aduje viac zruènosti, ne¾ by ste èakali. Vý¹ka by si mala
zachova» urèitý vz»ah k vzdialenostiam po sebe nasledujúcich úèiarí
(<CODE>\baselineskip</CODE>), ¹írka by mala by» obmedzená podµa u¾ spomenutého pravidla.
<P>
Ovládacie prvky sú vyjadrené mno¾inou parametrov stránky. V istom zmysle sú
komplexné a pri predefinovávaní rozvrhnutia stránky si mô¾eme µahko poplies» ich
vzájomné vz»ahy. Balík <CODE>layout</CODE> definuje príkaz <CODE>\layout</CODE> kresliaci
diagram aktuálneho rozvrhnutia stránky s rozmermi (av¹ak bez ich závislostí).
Toto FAQ odporúèa pou¾íva» balík na vytvorenie konzistentného nastavenia
parametrov, o závislosti sa postarajú balíky.
<P>
Definitívnym nástrojom pre zmenu rozmerov a pozície tlaèeného materiálu
na stránke je balík <CODE>geometry</CODE>. Relatívne priamoèiaro mô¾e by»
naprogramovaných mno¾stvo nastavení rozvrhnutia. Dokumentácia
Otázku <A HREF="sectD.html#Q-dtx">Dokumentované LaTeXovské zdroje (<CODE>.dtx</CODE> soubory)</A>
je kvalitná a obsiahla.
<P>
Pou¾ítie balíku <CODE>vmargin</CODE> je trochu jednoduch¹ie. Balík obsahuje
mno¾inu rozmerov papierov (nadmno¾ina toho, èo poskytuje LaTeX 2e), opatrenia
pre vlastné rozmery, nastavenia okrajov a opatrenia pre dvojstrannú tlaè.
<P>
Ak to stále chcete spravi» sami, zaènite sa zoznamova» s parametrami LaTeXu
pre rozlo¾enie stránky. Pozrite si napríklad sekciu C.5.3 LaTeX manuálu
(str. 181–182) alebo príslu¹né sekcie v iných manuáloch LaTeXu
(viï Otázku <A HREF="sectC.html#Q-books">Knihy o TeXu a pøíbuzná literatura</A>).
Parametre <CODE>\oddsidemargin</CODE> a <CODE>\evensidemargin</CODE> vïaèia za svoje názvy
skutoènosti, ¾e obvyle sú nepárne stránky na pravej strane dvojstranného
rozlo¾enia („recto“) a párne na µavej strane („verso“). Oba parametre
odkazujú na <EM>µavý</EM> okraj. Pravý okraj je potom vydedukovaný z veµkosti
<CODE>\textwidth</CODE>. Zaèiatok je v DVI koordinátoch jeden palec od horného
okraja a jeden palec od µavého okraja. Kladné horizontálne hodnoty postupujú
smerom doprava, kladné vertikálne smerom nadol. Tak¾e pre okraje bli¾¹ie ne¾
jeden palec k µavému a hornému kraju stránky mô¾ete príslu¹né parametre
(<CODE>\evensidemargin</CODE>, <CODE>\oddsidemargin</CODE>, <CODE>\topmargin</CODE>) nastavi» na záporné
hodnoty.
<P>
Ïal¹ím prekvapením je, ¾e jednoduchou modifikáciou parametrov veµkosti textu
nemô¾ete zmeni» ¹írku a vý¹ku textu v dokumente. Parametre by mali by» menené
iba v preambule dokumentu, teda pred výrazom <CODE>\begin{document}</CODE>. Pre zmenu
v dokumente definujeme prostredie:
<PRE>
\newenvironment{changemargin}[2]{%
\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{#1}%
\setlength{\rightmargin}{#2}%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{\parskip}%
}%
\item[]}{\end{list}}
</PRE>
Toto prostredie akceptuje dva parametre a odsadí µavý a pravý okraj podµa
hodnôt príslu¹ných parametrov. Záporné hodnoty spôsobia zú¾enie okrajov, tak¾e
<CODE>\begin{changemargin}{-1cm}{-1cm}</CODE> zú¾i µavý a pravý okraj o 1cm.
<P>
Balík <CODE>chngpage</CODE> poskytuje na vytvorenie predchádzajúceho stavu hotové
príkazy. Obsahuje opatrenia na zmenu posunov aplikovaných na vá¹ text podµa
toho, èi ste na nepárnej alebo párnej stránke dvojstránkového dokumentu.
Dokumentácia balíku (v súbore samotnom) navrhuje stratégiu zmeny rozmerov textu
medzi stranami — ako bolo spomenuté vy¹¹ie, zmena rozmerov textu v tele
stránky mô¾e vies» k nepredvídateµným výsledkom.<BR>
<CODE>chngpage.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/chngpage.sty">chngpage</A><BR>
<CODE>geometry.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/geometry">geometry</A><BR>
<CODE>layout.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A><BR>
<CODE>vmargin.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/vmargin">vmargin</A>
<P>
<P><A NAME="Q-nopageno"><HR><H3>Ako sa zbavi» èísel strán</H3></A>
<P>
Balík <CODE>nopageno</CODE> potlaèí èísla strán v celom dokumente.
<P>
Pre potlaèenie iba na jednej strane pou¾ite <CODE>\thispagestyle{empty}</CODE>
niekde v texte strany. <CODE>\maketitle</CODE> a <CODE>\chapter</CODE> pou¾ívajú
<CODE>\thispagestyle</CODE> interne, tak¾e to musíte zavola» po tom, èo ste zavolali
<CODE>\maketitle</CODE> alebo <CODE>\chapter</CODE>.
<P>
Pre potlaèenie èíslovania postupnosti strán mô¾ete pou¾i»
<CODE>\pagestyle{empty}</CODE> na zaèiatku postupnosti strán a obnovte pôvodný ¹týl
stránky na konci (postupnosti). Bohu¾iaµ, stále musíte pou¾i» <CODE>\thispagestyle</CODE>
po ka¾dom príkaze <CODE>\maketitle</CODE> alebo <CODE>\chapter</CODE>.
<P>
Problémové príkazy triedy <CODE>memoir</CODE> (<CODE>\maketitle</CODE>, <CODE>\chapter</CODE> atï@)
vyvolajú vlastný ¹týl stránky (<CODE>title</CODE>, <CODE>chapter</CODE> atï.@), ktorý mô¾ete
predefinova» pou¾itím techník triede vlastných, aby boli ekvivaletné prostrediu
„<CODE>empty</CODE>“. Triedy <CODE>KOMA-script</CODE> majú príkazy ¹týl stránky, ktorý má by»
pou¾itý, tak¾e mô¾ete napísa»:
<P>
<PRE>
\renewcommand*{\titlepagestyle}{empty}
</PRE>
</P>
<P>
Alternatívou (vo v¹etkých triedach) je pou¾itie celkom príjemného
<CODE>\pagenumbering{gobble}</CODE>. Má to za následok, ¾e ka¾dý pokus o tlaè èisla
strany niè nevyprodukuje, tak¾e nie je problém zabráni» µubovolnej èasti
LaTeXu v tlaèi èísla strany. Príkaz <CODE>\pagenumbering</CODE> v¹ak má vedµaj¹í
efekt — nastavuje (resetuje) èíslo stránky na 1, èo nemusí by» príjemné.
<P>
Balík <CODE>scrpage2</CODE> oddeµuje reprezentáciu od resetovania, tak¾e mô¾ete
napísa»:
<P>
<PRE>
\renewcommand*{\pagemark}{}
</PRE>
</P>
aby ste dosiahli to isté ako pri triku s <CODE>gobble</CODE>, bez resetovania èísla
stránky.<BR>
<CODE>nopageno</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/carlisle/nopageno.sty">nopageno</A><BR>
balík <CODE>KOMA script</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/koma-script">koma-script</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
<CODE>scrpage2.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/koma-script">koma-script</A>
<P>
<P><A NAME="Q-stringwidth"><HR><H3>Zji¹tìní ¹íøky písmene, slova nebo sousloví</H3></A>
<P>
Slovo se vlo¾í do boxu a poté se zjistí ¹íøka tohoto boxu.
Napøíklad:
<PRE>
\newdimen\stringwidth
\setbox0=\hbox{hi}
\stringwidth=\wd0
</PRE>
Je tøeba v¹ak mít na pamìti, ¾e je-li v <CODE>\hbox</CODE>u sousloví,
hodnota, kterou urèíme, bude pouze pøibli¾nou ¹íøkou, kterou bude
vysázené zaujímat ve skuteèném textu, nebo» mezislovní mezery se
pøi sazbì odstavce mohou zmìnit.
<P>
V LaTeXu lze problém øe¹it takto:
<PRE>
\newlength{\gnat}
\settowidth{\gnat}{\textbf{small}}
</PRE>
Hodnota <CODE>\gnat</CODE> se v tomto pøípadì nastaví na hodnotu ¹íøky
„small“ vysázeného tuènì.
<P>
<P>
<P><A NAME="Q-filename"><HR><H3>Aký je názov tohto súboru</H3></A>
<P>
Toto zistenie mô¾ete potrebova» pre automatické generovanie záhlavia alebo päty
stránky zaznamenávajúceho práve spracúvaný súbor. Nie je to jednoduché...
<P>
TeX si pamätá iba to, èo pova¾uje za názov <EM>práce</EM> (<EM>job</EM>),
v primitíve csx{jobname}. Predstavuje názov súboru, ktorý bol prvý predaný
TeXu, orezaný o meno adresáru a µubovolnú príponu (ako napríklad <CODE>.tex</CODE>).
Ak nebol predaný ¾iadny súbor (t.j. pou¾ívate TeX interaktívne),
csx{jobname} má hodnotu <CODE>texput</CODE> (v tomto prípade názov daný <CODE>.log</CODE> súboru).
<P>
Toto je v prípade malých dokumentov udr¾iavaných v jednom súbore. Väè¹ina
významných dokumentov bude v¹ak udr¾iavaná vo viacerých súboroch a TeX sa
nesna¾í dr¾a» si prehµad vstupných súborov práce. Prehµad si teda musí
udr¾iava» u¾ívateµ sám — jediným spôsobom je úprava vstupných príkazov, aby si
pamätali detaily názvov súborov. Toto je práve v prípade <CODE>Plain</CODE> TeXu
zlo¾ité, ked¾e syntax príkazu csx{input} je „svojrázna“.
<P>
V prípade LaTeXu majú vstupné príkazy pekne pravidelnú syntax. Staèí na ne
teda pou¾i» najjednoduch¹ie upravovacie techniky:
<PRE>
\def\ThisFile{\jobname}
\newcounter{FileStack}
\let\OrigInput\input
\renewcommand{\input}[1]{%
\stepcounter{FileStack}
\expandafter\let
\csname NameStack\theFileStack\endcsname
\ThisFile
\def\ThisFile{#1}%
\OrigInput{#1}%
\expandafter\let\expandafter
\ThisFile
\csname NameStack\theFileStack\endcsname
\addtocounter{FileStack}{-1}%
}
</PRE>
(Podobne aj pre csx{include}.) Kód predpokladá, ¾e budete v¾dy pre csx{input}
pou¾íva» syntax LaTeXu, t.j. v¾dy pou¾ijete parameter uzavretý do zlo¾ených
zátvoriek.
<P>
Balík <CODE>FiNK</CODE> („File Name Keeper“) poskytuje v makre csx{finkfile}
be¾ný prostriedok na udr¾anie si prehµadu o názve aktuálneho súboru (spolu
s jeho príponou). Sada zahàòa súbor <CODE>fink.el</CODE> poskytujúci podporu
pre <EM>emacs</EM> s AUC-TeXom.<BR>
<CODE>fink.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/fink">fink</A>
<P>
<P><A NAME="Q-filesused"><HR><H3>V¹etky súbory pou¾ité v tomto dokumente</H3></A>
<P>
Keï zdielate dokument s niekým iným (mo¾no v rámci spoloèného vývoja), je
vhodné, aby obaja kore¹pondenti mali rovnaký dokument, ako aj rovnakú sadu
pomocných súborov. Vá¹ kore¹pondent zjavne potrebuje rovnakú sadu súborov
(ak napríklad pou¾ívate balík <CODE>url</CODE>, druhá strana tie¾ musí ma»
<CODE>url</CODE>). Predpokladajme, ¾e vy máte bezchybnú verziu balíku
<CODE>skvelybalik</CODE>, ale na druhej strane majú stále nestabilnú verziu. Kým
obe strany zistia, èo sa deje, mô¾e by» takáto situácia veµmi mätúca.
<P>
Najjednoduch¹ím rie¹ením je LaTeXovský príkaz csx{listfiles}. Ten do súboru
logu umiestòuje zoznam pou¾itých súborov a ich verzií. Ak tento zoznam
vypreparujete a po¹lete ho so svojím súborom, mô¾e by» pou¾itý ako kontrolný
zoznam v prípade problémov.
<P>
Majte na pamäti, ¾e csx{listfiles} zaregistruje iba veci vlo¾ené
„¹tandardnými“ LaTeXovskými mechanizmami (csx{documentclass},
csx{usepackage}, csx{input}, csx{include}, csx{includegraphics} atï.). Ak
v¹ak pou¾ijete primitívnu syntax TeXu:
<PRE>
\input mymacros
</PRE>
<CODE>mymacros.tex</CODE> <EM>nebude</EM> príkazom csx{listfiles} zahrnutý do zoznamu,
ked¾e ste obi¹li mechanizmus zaznamenávajúci jeho pou¾itie.
<P>
Balík <CODE>snapshot</CODE> pomáha vlastníkovi LaTeXovského dokumentu získa»
zoznam externých závislostí dokumentu (vo forme, ktorá mô¾e by» zaèlenená
na zaèiatok dokumentu). Balík je urèený na tvorbu archívnych kópií dokumentov,
ale má nasadenie aj pri situáciach výmeny dokumentov.
<P>
Systém <EM>bundledoc</EM> pou¾íva csx{listfiles} na tvorbu archívu (napríklad
<CODE>.tar.gz</CODE> alebo <CODE>.zip</CODE>) súborov vy¾adovaných va¹im dokumentom. Je dodávaný
s konfiguraènými súbormi pre<EM>teTeX</EM> a <EM>mikTeX</EM>. Je u¾itoèný,
hlavne keï posielate prvú kópiu dokumentu.<BR>
<CODE>bundledoc</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/support/bundledoc">bundledoc</A><BR>
<CODE>snapshot.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/snapshot">snapshot</A>
<P>
<P><A NAME="Q-changebars"><HR><H3>Oznaèovanie zmien v dokumente</H3></A>
<P>
Èasto potrebujeme zreteµne vyznaèi», ako ná¹ dokument zmenil. Najèastej¹í
postup, „pruhy zmien“ (change bars; tie¾ známe ako „pruhy revízií“ —
revision bars), v¹ak vy¾aduje od programátora prekvapivo veµkú lstivos» (problém
je, ¾e TeX poriadne neposkytuje programátorovi ¾iadne informácie o aktuálnej
pozícii, z ktorej by mohol by» vypoèítaný domnelý zaèiatok alebo koniec pruhu;
PDFTeX informácie <EM>poskytuje</EM>, ale nie sme si zatiaµ vedomí o ¾iadnom
programátorovi, ktorý by to vyu¾il na napísanie changebar balíku zalo¾eného
na PDFTeXu).
<P>
Najjednoduch¹í balík poskytujúci pruhy zmien je <CODE>backgrnd.tex</CODE> od Petra
Schmitta. Bol napísaný ako aplikácia <CODE>Plain</CODE> TeX upravujúca výstupnú rutinu,
ale zrejme funguje aspoò na jednoduchých LaTeXovských dokumentoch. Múdri
pou¾ívatelia LaTeXu budú po informácii o úprave ich výstupnej rutiny pomocou
<CODE>backgrnd</CODE> ostra¾ití a veµmi pozorne budú sledova» jeho chovanie (úprava
LaTeXovskej rutiny nie je nieèo, na èo sa dá µahko poduja»...).
<P>
Najstar¹ím rie¹ením je balík <CODE>changebar</CODE>, ktorý pou¾íva príkazy
csx{special} poskytované ovládaèom, ktorý pou¾ívate. Z tohto dôvodu potrebujete
balíku poveda», pre ktorý ovládaè má generova» príkazy csx{special} (rovnakým
spôsobom ako pri balíku <CODE>graphics</CODE>); zoznam dostupných ovládaèov je dos»
obmedzený, zahàòa v¹ak <EM>dvips</EM>. Balík je dodávaný so shellovským
skriptom <EM>chbar.sh</EM> (pre pou¾itie na Unixe), ktorý porovnáva dva
dokumenty a generuje tretí, oznaèený makrami <CODE>changebar</CODE> pre zvýraznenie
zmien. Skvelý shareware editor <EM>WinEDT</EM> má makro generujúce makrá
<CODE>changebar</CODE> (alebo iné) na zviditeµnenie zmien voèi predchádzajúcej
verzii va¹eho súboru ulo¾eného v <EM>RCS</EM> repozitári — viï
URL{http://www.winedt.org/Macros/LaTeX/RCSdiff.php}.
<P>
Balík <CODE>vertbars</CODE> pou¾íva techniky balíku <CODE>lineno</CODE> (musí by»
prítomný) a je teda najmen¹í z balíkov na znaèenie pruhov zmien, ked¾e v¹etko
zlo¾itej¹ie necháva inému balíku. Balík <CODE>framed</CODE> je ïal¹ím z balíkov
poskytujúcich pruhy, tentoraz ako vedµaj¹í efekt poskytovanie iných funkcií:
jeho prostredie <CODE>leftbar</CODE> je iba „chudobnej¹í“ frame (pamätajte si v¹ak, ¾e
prostredie vytvára pre svoj obsah vlastný odstavec, tak¾e je najlep¹ie pou¾íva»
ho pri konvencii oznaèovania <EM>celého</EM> zmeneného odstavcu).
<P>
Trieda <CODE>memoir</CODE> dovoµuje okrajové redakèné poznámky, ktoré mô¾ete pou¾i»
na ohranièenie oblastí zmeny textu.<BR>
<CODE>backgrnd.tex</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/generic/backgrnd.tex">backgrnd</A><BR>
<CODE>changebar.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/changebar">changebar</A><BR>
<CODE>framed.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/framed.sty">framed</A><BR>
<CODE>lineno.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/lineno">lineno</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
<CODE>vertbars.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/vertbars.sty">vertbars</A>
<P>
<P><A NAME="Q-conditional"><HR><H3>Podmienená kompilácia a komentáre</H3></A>
<P>
Aj keï LaTeX (alebo µubovolný iný balík odvodený z TeXu) nie je
v skutoènosti kompilátor, µudia èasto chcú, aby robil veci pre kompilátor
typické. Èastou po¾iadavkou je podmienená „kompilácia“ a blokové komentáre.
Na tento úèel je dostupných viacero LaTeXu ¹pecifických prostriedkov.
<P>
Jednoduché príkazy <CODE>\newcommand{\csx{gobble}}[1]{}</CODE> a
csx{iffalse}<CODE> ... </CODE>csx{fi} nie sú pre komentáre (ako obecné rie¹enie)
dostaèujúce, ked¾e vynechané veci sú TeXom aj tak preskúmané. Skúmanie
zavádza obmedzenia na veci, ktoré mô¾ete vynecha». Toto nemusí by» problémom
<EM>dnes</EM>, ale v budúcnosti sa to mô¾e vypomsti». csx{gobble} je naviac pre
netriviálne parametre dos» neefektívny, ked¾e v¹etko, èo sa má vynecha», je pred
vynechaním skopírované do zásobníku parametrov.
<P>
Ak sa va¹a po¾iadavka týka dokumentu, z ktorého chýbajú celé kapitoly, zvá¾te
LaTeXovský systém csx{include}/csx{includeonly}. Ak vlo¾íte va¹e súbory
pomocou csx{include} (namiesto csx{input} — viï
Otázku <A HREF="sectR.html#Q-include">Co se dìje pøi pou¾ití pøíkazu <CODE>\include</CODE>?</A>), LaTeX zapisuje informácie o tom, èo sa deje
na konci ka¾dej kapitoly do <CODE>.aux</CODE> súboru.
Pomocou csx{includeonly} mô¾ete LaTeXu doda» vyèerpavajúci zoznam potrebných
súborov. Súbory, ktoré nie sú vlo¾ené pomocou csx{include}, sú celé
preskoèené, ale spracovanie dokumentu pokraèuje, ako keby tam <EM>boli</EM>.
Strany, poznámky a iné èísla nie sú ovplyvnené. Pamatajte si, ¾e sekcie, ktoré
chcete vlo¾i», si mô¾ete vybra» interaktívne pomocou balíku <CODE>askinclude</CODE>.
<P>
Pomocou balíku <CODE>excludeonly</CODE> mô¾ete dosiahnu» presný opak: dovoµuje vám
z dokumentu vynecha» zoznam súborov vlo¾ených pomocou csx{include} pou¾itím
príkazu csx{excludeonly}.
<P>
Ak si chcete vybra» konkrétne stránky dokumentu, pou¾ite balík <CODE>pagesel</CODE>
Heika Oberdieka alebo balík <CODE>selectp</CODE>. Nieèo podobné mô¾ete spravi»
s existujúcim PDF dokumentom (ktorý ste mohli skompilova» pomocou
<EM>pdflatex</EM>u) pou¾itím balíku <CODE>pdfpages</CODE>. Spravíte to
s podobne vyzerajúcim dokumentom:
<PRE>
\documentclass{article}
\usepackage[final]{pdfpages}
\begin{document}
\includepdf[pages=30-40]{yoursource.pdf}
\end{document}
</PRE>
(Na vlo¾enie celého dokumentu mô¾ete napísa»
<PRE>
\includepdf[pages=-]{yoursource.pdf}
</PRE>
vynechajúc zaèiatoènú a koncovú stranu dokumentu vo voliteµnom parametri.)
<P>
Ak chcete by» pri vkladaní alebo vynechávaní malých èastí súboru, zvá¾te balíky
<CODE>comment</CODE>, <CODE>version</CODE> alebo <CODE>optional</CODE>.
<P>
<CODE>comment</CODE> dovoµuje deklarova» oblasti dokumentu, ktoré majú by» vlo¾ené
alebo vynechané; tieto deklarácie robíte v preambule súboru. Príkaz
<CODE>\includeversion{version-name}</CODE> deklaruje prostredie <CODE>version-name</CODE>, ktorého
obsah bude zahrnutý vo va¹om dokumente, zatiaµ èo príkaz
<CODE>\excludeversion{version-name}</CODE> definuje prostredie, ktorého obsah bude vynechaný. Balík pou¾íva celkom
robustnú metódu vynechávania a doká¾e si poradi» aj so zle formovaným textom
(napríklad s nespárovanými zlo¾enými zátvorkami alebo príkazmi csx{if}).
<P>
<CODE>version</CODE> poskytuje podobné prostriedky ako <CODE>comment.sty</CODE>
(t.j., príkazy csx{includeversion} a csx{excludeversion}); je oveµa
jednoduch¹í, ale aj menej robustný (a hlavne si nevie poradi» s veµmi
rozsiahlymi oblas»ami vypú¹»aného/vkladaného textu).
<P>
Dôle¾itým rozvojom <CODE>version</CODE>, je balík zavádzajúco pomenovaný
<CODE>versions</CODE> (t.j. iba plurál pôvodneho názvu).
<CODE>Versions</CODE> pridáva príkaz <CODE>\markversion{version-name}</CODE>, ktorý definuje
prostredie pre tlaè vlo¾eného textu so zreteµnou znaèkou okolo neho.
<P>
Balík <CODE>optional</CODE> definuje príkaz csx{opt}; jeho prvý parameter je
„príznak vlo¾enia“, druhým je vkladaný alebo vynechaný text. Vkladaný alebo
vynechávaný text musí by» dobre utvorený (¾iadne syntaktické chyby) a nemal by
by» príli¹ veµký — ak je potrebný dlhý text, v parametri by mal by»
csx{input}. Dokumentácia (samotnom súbore balíku) vám prezradí, ako deklarova»,
ktoré sekcie majú by» vlo¾ené: toto mô¾ete spravi» v preambule dokumentu, ale
dokumentácia navrhuje tie¾ spôsoby, ktorými to mô¾ete spravi» na príkazovom
riadku vyvolávajúcom LaTeX alebo interaktívne.
<P>
Koneène balík <CODE>verbatim</CODE> (ktorý by mal by» dostupný v ka¾dej
distribúcii) definuje prostredie <CODE>comment</CODE>, ktoré umo¾òuje dedikovanému
pou¾ívateµovi editoru potlaèi» èasti LaTeXovského zdrojového súboru. Trieda
<CODE>memoir</CODE> poskytuje rovnaké prostredie.<BR>
<CODE>askinclude.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/askinclude.sty">askinclude</A><BR>
<CODE>comment.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/comment">comment</A><BR>
<CODE>excludeonly.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/excludeonly.sty">excludeonly</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
<CODE>optional.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/optional.sty">optional</A><BR>
<CODE>pagesel.sty</CODE>: distribuované s balíkmi Heika Oberdieka <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/oberdiek">oberdiek</A><BR>
<CODE>pdfpages.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/pdfpages">pdfpages</A><BR>
<CODE>selectp.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/selectp.sty">selectp</A><BR>
<CODE>verbatim.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A><BR>
<CODE>version.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/version.sty">version</A><BR>
<CODE>versions.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/versions/versions.sty">versions</A>
<P>
<P><A NAME="Q-docotherdir"><HR><H3>Èasti dokumentu z rozlièných adresárov</H3></A>
<P>
Be¾ným spôsobom zostavovania veµkých dokumentov je ich rozdelenie na sadu
men¹ích súborov (napr. jeden na ka¾dú kapitolu) a uchovávanie v¹etkého, èo
súvisí s jedným z týchto súborov, v podadresári.
<P>
TeX bohu¾iaµ nemá mo¾nos» zmeny aktuálneho adresáru, tak¾e v¹etky súbory,
na ktoré sa odkazujete, musíte uviest relatívne voèi adresáru hlavného súboru.
Väè¹ina µudí toto pokladá za neintuitívne.
<P>
Vhodným rie¹ením mô¾e by» pou¾itie techniky roz¹írenia cesty
z Otázky <A HREF="sectE.html#Q-tempinst">„Doèasné“ in¹talácie súborov TeXu alebo LaTeXu</A>. Ak v¹ak v dokumente pou¾ívate viacero súborov
rovnakého názvu (napr. <CODE>chapter1/fig1.eps</CODE> a <CODE>chapter2/fig1.eps</CODE>),
pri vyvolaní <CODE>\input{sect1}</CODE> v hlavnom súbore nedávate TeXu ¾iadnu
informáciu, na ktorý súbor sa odkazujete. Tento problém je jednoducho rie¹iteµný
pri súboroch vytváraných µuïmi (pou¾ívajte rozlièné názvy). Názvy automaticky
vytvorených súborov sú èasto rovnaké a ich zmena je procedúra náchylná
k vytvoreniu chýb.
<P>
Balík <CODE>import</CODE> vám v tomto prípade prichádza na pomoc. Definuje príkaz
csx{import}, ktorý akceptuje úplnú cestu a názov súboru v tomto adresári,
zabezpeèí pritom, aby veci fungovali správne. Tak¾e napríklad súbor
<CODE>/home/friend/results.tex</CODE> mô¾e obsahova»
<PRE>
Graph: \includegraphics{picture}
\input{explanation}
</PRE>
<CODE>\import{/home/friend/}{results}</CODE> potom vlo¾í oba súbory. Príkaz
csx{subimport} robí to isté pre podadresár (relatívna cesta rad¹ej ne¾
absolútna), existujú zodpovedajúce príkazy csx{includefrom}
a csx{subincludefrom}.<BR>
<CODE>import.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/import.sty">import</A>
<P>
<P><A NAME="Q-make"><HR><H3>Súbory Makefile pre LaTeXovské dokumenty</H3></A>
<P>
Pou¾itie <EM>make</EM> s LaTeXom je komplikované. Potreba viacnásobného
spustenia LaTeXu (napr. pre ustálenie obsahu, návestí, pridanie
bibliografie, indexu atï.) sa »a¾ko vyjadruje obvyklým druhom grafu závilostí,
ktorý kon¹truujeme pre <EM>make</EM>.
<P>
Z tochto dôvodu bol jediným balíkom podobným <EM>make</EM> na CTANe
(dlhú dobu) <EM>latexmk</EM>, èo je skript pre <EM>Perl</EM> analyzujúci
závislosti vá¹ho dokumentu, v prípade potreby spú¹»ajúci BibTeX alebo
<EM>makeindex</EM> (v prípade zmeny súborov, ktoré uvedené programy pou¾ívajú
ako vstup) atï. <EM>Latexmk</EM> je dobrým rie¹ením, nedávno bol
aktualizovaný a obsahuje mno¾stvo skvelých vlastností dovoµujúcich mu pracova»
ako veµmi jednoduchý WYSIWYG systém.
<P>
Systém <CODE>texinfo</CODE> (viï Otázku <A HREF="sectB.html#Q-texinfo">Co je to Texinfo</A>) je dodávaný
s utilitou nazvanou <EM>texi2dvi</EM>, ktorá umo¾òuje konvertovanie súborov
LaTeXu alebo <CODE>texinfo</CODE> do DVI (alebo pomocou PDFTeXu
do PDF).
<P>
Nov¹ím prírastkom je balík <CODE>latexmake</CODE> poskytujúci mno¾inu pravidiel
pre <EM>make</EM> podµa potreby vyvolávajúcich <EM>texi2dvi</EM>.<BR>
<CODE>latexmake</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/support/latexmake">latexmake</A><BR>
<CODE>latexmk</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/support/latexmk">latexmk</A><BR>
<CODE>texi2dvi</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/texinfo/texinfo">texinfo</A>
<P>
<P><A NAME="Q-howmanypp"><HR><H3>Koµko stránok je v mojom dokumente?</H3></A>
<P>
Jednoduché dokumenty (tie, èo zaèínajú stranou 1 a nemajú v èíslovaní strán
nijaké zlomy a¾ po poslednú stranu) nepredstavujú pri hµadaní odpovede na túto
otázku ¾iadny problém. Poèet strán hlási balík <CODE>lastpage</CODE> v svojom
návestí <CODE>LastPage</CODE>.
<P>
Pre komplikovanej¹ie dokumenty (napríklad knihy s inak èislovanou úvodnou
èas»ou) tento jednoduchý prístup nestaèí.
<P>
Balík <CODE>count1to</CODE> definuje návestie <CODE>TotalPages</CODE>. Toto je
hodnota jeho kópie csx{count1} (rezervovaný TeXovský poèítací
register) na konci dokumentu.
<P>
Balík <CODE>totpages</CODE> definuje návestie <CODE>TotPages</CODE>, ale tie¾
sprístupòuje svoj register na pou¾itie ako LaTeXovské poèítadlo
<CODE>TotPages</CODE>, na ktoré sa mô¾ete odkazova» cez csx{theTotPages}.
<CODE>TotPages</CODE> je samozrejme asynchrónny rovnakým spôsobom ako èísla strán, ale
„snapshoty“ mô¾u by» vo výstupnej rutine bezpeène uskutoènené.
<P>
Trieda <CODE>memoir</CODE> definuje dve poèítadlá (<CODE>lastpage</CODE>
a <CODE>lastsheet</CODE>), ktoré sú nastavené (po prvom spracovaní dokumentu)
na ekvivalent návestí <CODE>LastPage</CODE> a <CODE>TotalPages</CODE>).
<P>
Balíky <CODE>count1to</CODE> a <CODE>totpages</CODE> potrebujú podporu balíku
<CODE>everyshi</CODE>.<BR>
<CODE>count1to.sty a everyshi.sty</CODE>: distribuované v <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/ms">ms</A><BR>
<CODE>lastpage.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/lastpage">lastpage</A><BR>
<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
<CODE>totpages.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/totpages">totpages</A>
<P>
<P><A NAME="Q-inclplain"><HR><H3>Vlo¾enie TeXovských súborov do LaTeXu</H3></A>
<P>
Napriek tomu, ¾e je LaTeX pôvodne zalo¾ený na Plain TeXu (viï
Otázku <A HREF="sectB.html#Q-LaTeXandPlain">Aký je vz»ah medzi LaTeXom a <CODE>plain</CODE> TeXom?</A>), neobsahuje v¹etky príkazy Plain TeXu. Èo
je v¹ak hor¹ie, niektoré príkazy Plain TeXu sa v LaTeXu objavujú
s odli¹nou sémantikou. Dôsledkom toho je, ¾e pre sadzbu dokumentov
Plain TeXu (alebo ich èastí) LaTeXom musia by» vykonané ¹peciálne
opatrenia.
<P>
Skutoène spoµahlivé rie¹enia je prelo¾enie príkazov Plain TeXu tak, aby
produkovali ekvivalent pôvodnej sémantiky. Toto v¹ak v mnohých prípadoch nie
je praktické a pre tieto prípady si èasto musíte pomôc» balíkom
<CODE>plain</CODE>. Balík definuje prostredie <CODE>plain</CODE>, v ktorom mô¾e by»
spracovaný dokument Plain TeXu:
<PRE>
\begin{plain}
\input{plain-doc}
\end{plain}
</PRE>
Je známe, ¾e balík zlyháva napríklad pri dokumentoch pou¾ívajúcich AMSTeX,
urèite by zlyhal aj pri po¾iadavke o naèítanie Eplainu.
V¹etky tieto problémy sa dajú prekona» (aj keï to niekedy nie je µahké), ale
nám v mnohých prípadoch ¹etrí mnoho práce.<BR>
<CODE>plain.sty</CODE>: distribuované ako súèas» <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/carlisle">carlisle</A>
<P>
<P><A NAME="Q-nohyph"><HR><H3>Moje slová sa nerozdeµujú</H3></A>
<P>
Predpokladajme, ¾e ste si vybrali správny TeXovský „jazyk“ (viï
Otázku <A HREF="sectD.html#Q-hyphen">Ako funguje v TeXu rozdeµovanie slov?</A>), pravdepodobne nedosiahnete po¾adovaný výsledok
sadzbou jedného jazyka a pou¾itím rozdeµovacích pravidiel jazyka druhého.
(Ak ste pou¾ívateµ LaTeXu, vyberte si správny jazyk pomocou <CODE>babel</CODE>.
Takto mô¾ete odhali» potrebu ïal¹ej sady rozdeµovacích vzorov, viï
Otázku <A HREF="sectO.html#Q-babeljaz">Pou¾ívání nových jazykù v babelu</A>).
<P>
Èo iné sa e¹te mô¾e pokazi»?
<UL>
<LI> Od TeXu verzie 3.0 boli medze povolenej vzdialenosti rozdelenia
od zaèiatku alebo konca slova programovateµné (viï
Otázku <A HREF="sectQ.html#Q-weirdhyphenation">Nezvykle rozdìlená slova</A>) a dotyèné hodnoty mohli by» z nejakého
dôvodu v niektorých makrách, ktoré pou¾ívate, nesprávne nastavené. TeX
nebude rozdeµova» menej ne¾ csx{lefthyphenmin} znakov od zaèiatku slova, ani
menej ne¾ csx{righthyphenmin} pred koncom slova, tým pádom nebude rozdeµova»
slová krat¹ie ne¾ súèet týchto dvoch hodnôt.
Napríklad pre angliètinu sú tieto hodnoty 2 a 3, tak¾e TeX nebude
rozdeµova» slová krat¹ie ne¾ 5 písmen, ak si o slove myslí, ¾e je anglické.
<LI> {tolerance=200 emergencystretch=0pt
TeX nebude rozdeµova» slová, ktoré u¾ boli rozdelené.
Napríklad anglické priezvisko Smyth-Postlethwaite nebude rozdelené,
èo mô¾e spôsobova» problémy.
Toto je správny sadzobný ¹týl pre angliètinu (nemusí by» správny pre iné
jazyky), ak v¹ak naozaj rozdelenie potrebujete, mô¾ete nahradi» spojovník
v priezvisku príkazom csx{hyph} definovaným
<PRE>
\def\hyph{\penalty0\hskip0pt\relax}
</PRE>
Tento spôsob ale obvykle neodporúèame. Balík <CODE>hyphenat</CODE> definuje sadu
príkazov na vlo¾enie rozdelenia na miesto rozlièných interpunkèných znamienok.}
<LI> Slová mô¾u by» akcentované. Príèiny a rie¹enia sú uvedené
v Otázke <A HREF="sectQ.html#Q-accenthyphen">Akcentovaná slova se nedìlí</A>.
<LI> Rozdelenie mohlo by» prehliadnuté. TeXovský algoritmus je dobrý, ale
nie je neomylný a v niektorých jazykoch prehliadne vhodné rozdelenia.
V takomto prípade musíte da» TeXu <EM>explicitné</EM> in¹trukcie pre
rozdelenie.
</UL>
Príkaz csx{hyphenation} vám dovoµuje zada» explicitné in¹trukcie.
Ak je slovo vôbec rozdelené (teda rozdeleniu nebráni nijaké z uvedených
obmedzení), príkaz anuluje hocièo, èo prikazujú rozdeµovacie vzory. Príkaz
akceptuje ako parametre jedno alebo viac rozdeµovaných slov —
<CODE>\hyphenation{ana-lysis pot-able}</CODE> (anglické príklady); v¹imnite si, ¾e
(v tomto prípade pre slovo „analysis“) mô¾ete anulova» TeXom navrhované
rozdelenie (ana-lysis je britské etimologické rozdelenie; niekomu sa zdá
americké rozdelenie „ne¹»astné“...).<BR>
<CODE>hyphenat.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/hyphenat">hyphenat</A>
<P>
<P><A NAME="Q-hyphoff"><HR><H3>Zastavenie v¹etkých rozdeµovaní</H3></A>
<P>
Táto akcia sa mô¾e zda» nezvyèajnou (jednou z veµmi propagovaných vlastností
TeXu je kvalita rozdeµovania), ale niekedy je potrebná. Skutoèným problémom
je, ¾e kvalita TeXovského výstupu je ¹tandardne do veµkej miery závislá
na prítomnosti rozdeµovania.
<P>
TeX (zmätoène) ponúka ¹tyri mechanizmy na potlaèenie rozdeµovania (pred
roz¹íreniami TeXu verzie 3 to boli iba dve).
<P>
Prvou mo¾nos»ou je nastavenie pokút za rozdeµovanie csx{hyphenpenalty}
a csx{exhyphenpenalty} na „nekoneènú“ hodnotu (t.j. napríklad 10000).
Toto znamená, ¾e ka¾dý riadok, ktorý by obsahoval rozdelenie, bude pokutovaný
dostatoène na to, aby k nemu nedo¹lo. Nevýhodou metódy je nutnos»
opätovného vyhodnocovania odstavcov, a teda pomalos» celej metódy.
<P>
Ïal¹ím spôsobom je výber jazyka, pre ktorý neexistujú rozdeµovacie vzory.
Niektoré distribúcie vytvárajú jazyk <CODE>nohyphenation</CODE> a balík <CODE>hyphenat</CODE>
túto techniku pou¾íva pre svoj príkaz csx{nohyphens}, ktorý svoj parameter
vysádza bez rozdelenia.
<P>
Tretia alternatíva je nastavenie csx{left-} a/alebo csx{righthyphenmin}
na dostatoène veµkú hodnotu, aby sa zabránilo akémukoµvek rozdeµovaniu,
ked¾e hodnota minima bude väè¹ia ako då¾ka najdlh¹ieho slova, ktoré je TeX
ochotný rozdeli» (vhodnou hodnotou je 62).
<P>
Poslednou mo¾nos»ou z násho zozname je potlaèenie rozdeµovania celého textu
pou¾itím aktuálneho fontu príkazom
<PRE>
\hyphenchar\font=-1
</PRE>
Toto nie je práve praktický spôsob potlaèenia rozdeµovania, ked¾e príkaz musí
by» pou¾itý pre ka¾dý font v dokumente, ale práve týmto spôsobom zabraòuje
rozdeµovaniu LaTeX samotný v <CODE>tt</CODE> a iných fontoch pevnej ¹írky.
<P>
Výber konkrétnej techniky zále¾í na tom, èo chcete robi». Ak text, ktorého
rozdelenie chcete potlaèi», nie je celý odstavec, va¹ou jedinou voµbou je
pou¾itie nerozdeµovaného jazyka: hodnota jazyku je zachovaná s textom (rovnakým
spôsobom ako aktuálny font); na poèítanie rozdeµovania sú pou¾ité hodnoty
rozdeµovacích limitov a pokút aktívne na konci odstavca.
<P>
Na druhú stranu, pri písaní viacjazyèného dokumentu pou¾itím balíku
<CODE>babel</CODE> nerozdeµovaný jazyk alebo rozdeµovacie minimum na potlaèenie
rozdeµovania pou¾i» <EM>nemô¾ete</EM>. V¹etky tieto hodnoty sa menia pri prepnutí
jazyka balíkom <CODE>babel</CODE>. V tomto prípade pou¾ite rozdeµovacie pokuty.
<P>
Ak jednoducho vypnete rozdeµovanie pre dlh¹í úsek textu, výstup bude ma»
nerovný okraj (s mnohými pretekajúcimi riadkami) a ka¾dý beh TeXu vás bude
bombardova» hlá¹kami o preteèení (overfull) a podteèení (underfull) riadkov.
Aby ste sa tomuto vyhli, máte dve mo¾nosti. Mô¾ete pou¾i» csx{sloppy} (alebo
jeho verziu v podobe prostredia <CODE>sloppypar</CODE>) a necha» TeX roztiahnu» riadky
s podteèením a zalomi» riadky s preteèením pred tým, ne¾ nastane (a samozrejme
roztiahnu» zbytok). Alternatívne mô¾ete text vysádza» text zarovnaný vpravo
a aspoò sa tak zbavi» riadkov s preteèením.<BR>
<CODE>hyphenat.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/hyphenat">hyphenat</A>
<P>
<P><A NAME="Q-bold-extras"><HR><H3>Ako spravi» bold-tt alebo bold-sc</H3></A>
<P>
LaTeX ¹tandardne neposkytuje ¾iadne prostriedky spracovania tuèných
„teletype“ alebo „small-caps“ fontov. Existuje pre to praktický dôvod
(Knuth nikdy takéto fonty nenavrhol), ale existujú aj typografické dôvody
(polotuèný font <CODE>cmtt</CODE> je v skutoènosti celkom tuèný (v porovnaní s inými
fontami pevnej ¹írky) a tuèné fonty „small-caps“ nie sú u mnohých
profesionálnych typografov populárne).
<P>
Na CTANe existuje „extra“ sada súborov METAFONTu, ktoré poskytujú tuèné
verzie <CODE>cmtt</CODE> a <CODE>cmcsc</CODE> („small-caps“ font). V moderných distribúciach
TeXu mô¾ete zaèa» tieto fonty vyu¾íva» po umiestnení na vhodné miesto
do <EM>texmf</EM> stromu (viï Otázku <A HREF="sectD.html#Q-TDSwhat">Co je to TDS?</A>). Po opätovnom
vybudovaní potrebných indexov súborov TeX (a priatelia) automaticky vybudujú
v¹etky potrebné súbory fontov pri prvom odkaze na ne. Balík
<CODE>bold-extra</CODE> vybuduje potrebne dátové ¹truktúry fontov, aby ste fonty
mohli vyu¾íva» z LaTeXu.
<P>
Ak potrebujete pou¾i» Type 1 fonty, nemô¾ete postupova» s fontami Knuthovho
¹týlu, ked¾e neexistujú Type 1 verzie <CODE>mf-extra</CODE> sady. Komerèné fonty
pevnej ¹írky (vrátane ¹tandardného balíku <CODE>Courier</CODE>) takmer v¾dy
obsahujú tuènú verziu, tak¾e tu problém nie je. PSNFSS (viï
Otázku <A HREF="sectL.html#Q-usepsfont">Pou¾ití PostScriptových fontù v TeXu</A>) typicky poskytuje „nepravé“ „small-caps“
fonty a nemá výèitky svedomia ani z ich poskytovania v tuènej forme.<BR>
<CODE>bold-extra.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/bold-extra.sty">bold-extra</A><BR>
<CODE>bold tt a small caps fonty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/fonts/cm/mf-extra/bold">bold</A>
<P>
<P><A NAME="Q-boldgreek"><HR><H3>Sazba tuèných øeckých písmen</H3></A>
<P>
Jednoduchým øe¹ením tohoto problému je pøíkaz <CODE>\mathbf</CODE>, který v¹ak
nefunguje ve v¹ech pøípadech, proto¾e malá øecká písmena chovají jinak
ne¾ velká (z dùvodu Knuthova esoterického kódování fontù). Nicménì
za normálních okolností mù¾eme <CODE>\mathbf</CODE> pou¾ít pro øecké verzálky, ale
AMSLaTeXový balík <CODE>amsmath.sty</CODE> nepovoluje toto pøepínání fontù
a pak tedy musíte pou¾ít jednu z ní¾e popsaných technik. V nìkterých
pøípadech funguje plainTeXové øe¹ení <CODE>{\boldmath$\theta$}</CODE>, ale
<CODE>\boldmath</CODE> nemù¾e být pou¾it v matematickém módu, pak to musíte
vyøe¹it následovnì:<BR>
<CODE>$...\mbox{\boldmath$\theta$}...$</CODE>, <BR>
to pùsobí problémy v superskriptech a podobnì. Tyto problémy mohou být
pøièítány pou¾ití balíku <CODE>\boldmath</CODE>.
<UL>
<LI> balík <EM>bm</EM>, který je souèástí distribuce LaTeXových
nástrojù (<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A>) definuje pøíkaz <CODE>\bm</CODE>,
který lze pou¾ít kdekoliv v matematickém re¾imu.
<LI> balík <EM>amsbsy</EM>, který je souèástí AMSLaTeXu
(<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/amslatex">amslatex</A>) definuje pøíkaz
<CODE>\boldsymbol</CODE>, který pokrývá témìø v¹echny základní problémy. V¹echna
tato øe¹ení mù¾ete pou¾ít na v¹echny matematické symboly, nejen na øecká
písmena.
</UL>
<P>
<P><A NAME="Q-underscore"><HR><H3>Ako pou¾íva» znak podèiarknutia</H3></A>
<P>
Znak podèiarknutia <CODE>_</CODE> sa v TeXu obvykle pou¾íva na oznaèenie dolných indexov
v matematickom móde. Ak napí¹ete znak <CODE>_</CODE> uprostred be¾ného textu, TeX sa
bude s»a¾ova». Ak pí¹ete dokument obsahujúci veµké mno¾stvo týchto znakov,
predstava písania csx{_} (alebo e¹te hor¹ie csx{textunderscore}) pre ka¾dý
z nich vystra¹í väè¹inu be¾ných µudí.
<P>
Stredne pokroèilý programátor makier mô¾e vygenerova» rýchly „hack“
na povolenie sadzby <CODE>_</CODE> vo význame znaku podèiarknutia. Kód je v¹ak trochu
komplikovaný a hlavne existuje mno¾stvo bodov, na ktorých sa dá µahko pokazi».
Existuje v¹ak balík <CODE>underscore</CODE>, ktorý poskytuje obecné rie¹enie
tejto po¾iadavky.
<P>
Existuje tu v¹ak jeden problém. Textové fonty OT1 obsahujú znak <CODE>_</CODE>
iba vo typewriter verzii kódovania (pou¾ívanej fontami pevnej ¹írky ako
<CODE>cmtt</CODE>). Tak¾e sa musíte uisti», ¾e sa znaky podèiarknutia objavujú iba
v texte sádzanom fontom písacieho stroja, alebo musíte pou¾íva» bohat¹ie
kódovanie, ako napríklad T1, ktoré obsahuje daný znak pre ka¾dý font.
<P>
Ak je po¾iadavkou iba obèasné pou¾itie znaku <CODE>_</CODE>, je mo¾né pou¾i» nasledujúcu
kon¹trukciu:
<PRE>
\def\us{\char`\_}
...
\texttt{create\us process}
</PRE>
Táto kon¹trukcia nie je ani najmenej robustná (v be¾nom hovorovom význame),
ale je robustná pri expanzii (t.j. v LaTeXovskom význame slova), tak¾e ju
pou¾ívajte opatrne (nemusíte sa v¹ak stara» o nadpisy sekcii a podobné veci).<BR>
<CODE>underscore.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/underscore.sty">underscore</A>
<P>
<P><A NAME="Q-atsign"><HR><H3>Ako vysádza» znak `@'?</H3></A>
<P>
Pre dlhým èasom robili niektoré balíky znak `@' aktívnym, tak¾e pre jeho sadzbu
boli potrebné ¹peciálne opatrenia. Aj keï sú tieto balíky e¹te stále dostupné,
pou¾íva ich málo µudí a tí, èo ich pou¾ívajú, majú prístup k veµmi dobrej
dokumentácii.
<P>
Be¾ným µuïom (ako sú napríklad autori originálneho anglického FAQ) staèí
jednoducho napísa» znak `@'.
<P>
<P><A NAME="Q-compjobnam"><HR><H3>Porovnávanie „job name“</H3></A>
<P>
Token csx{jobname} produkuje postupnos» znakov s kódom kategórie 12
(„iné“) bez ohµadu na to, èo danými znakmi v skutoènosti je. Keï¾e je
nevyhnutne potrebné porovna» makro s obsahom iného makra (pou¾itím
csx{ifx}), je potrebné vytvori» makro, ktorého expanzia vyzerá rovnako ako
expanzia csx{jobname}. Toto mô¾eme spravi» pomocou csx{meaning}, ak
„odre¾eme“ prefix príkazu csx{show}.
<P>
Celý príkaz vyzerá nasledovne:
<P>
<PRE>
\def\StripPrefix#1>{}
\def\jobis#1{FF\fi
\def\predicate{#1}%
\edef\predicate{\expandafter\StripPrefix
\meaning\predicate}%
\edef\job{\jobname}%
\ifx\job\predicate
}
</PRE>
</P>
A je pou¾itý nasledovne:
<P>
<PRE>
\if\jobis{mainfile}%
\message{YES}%
\else
\message{NO}%
\fi
</PRE>
</P>
Zapamätajte si, ¾e príkaz csx{StripPrefix} nemusí by» definovaný, ak pou¾ívate
LaTeX — tu u¾ interný príkaz (viï Otázku <A HREF="sectQ.html#Q-atsigns"><CODE>\@</CODE> a <CODE>@</CODE> ve jménech maker</A>)
csx{strip@prefix}, ktorý mô¾ete pou¾i», existuje.
<P>
<P><A NAME="Q-euro"><HR><H3>Sadzba znaku Euro</H3></A>
<P>
Európska mena „Euro“ je reprezentovaná symbolom s mierne pochybným dizajnom,
ale je to dôle¾itá mena a pou¾ívatelia TeXu/LaTeXu ju potrebujú sádza».
<P>
Európska komisia najskôr po¾adovala, aby symbol Euro bol v¾dy vysádzaný
grotesk fontom, táto po¾iadavka v¹ak bola na¹»astie zru¹ená a teda je
mo¾né najlep¹ie vyu¾i» sadzobné úsilie, aby symbol vyzeral aspoò trochu
solídne (typograficky).
<P>
Fonty v kódovaní TS1 poskytované ako súèas» distribúcie fontov EC
obsahujú glyfy pre Euro. Fonty sa nazývajú Text Companion (TC) fonty
a poskytujú rovnaký rozsah kresieb ako EC fonty samotné. Balík
<CODE>textcomp</CODE> poskytuje na prístup k symbolu príkaz csx{texteuro}, ktorý
vyberie symbol zodpovedajúci okolitému textu. Dizajn symbolu v TC
fontoch nie je obecne v láske... Napriek tomu, ak produkujete dokument
pomocou Knuthovych Computer Modern fontov, pou¾ívajte TC fontovú
verziu symbolu.
<P>
Vstupné kódovanie <CODE>latin9</CODE> definované balíkom <CODE>inputenc</CODE>
má znak Euro definovaný (pozícia 164, v iných ISO Latin znakových sadách
obsadená „symbolom meny“). Kódovanie pou¾íva pre symbol príkaz
csx{texteuro}. V súèasnosti je príkaz dostupný iba z balíku
<CODE>textcomp</CODE>. V kódovej stránke MicroSoftu je pozícia tie¾, ale
¹tandardizácia takýchto vecí prebieha dos» odli¹ným spôsobom a projektu
LaTeX neboli poskytnuté detaily o zmene.
<P>
Obrysové fonty obsahujúce iba symboly Eura sú (zadarmo) dostupné
z <A HREF="ftp://ftp.adobe.com/pub/adobe/type/win/all/eurofont.exe"><CODE>ftp://ftp.adobe.com/pub/adobe/type/win/all/eurofont.exe</CODE></A>
(súbor je zbalený ako samorozbalovací spustiteµný súbor pre
<EM>Windows</EM>, ale na iných operaèných systémoch mô¾e by» dekódovaný ako
archív formátu <CODE>.zip</CODE>). Sada <CODE>euro</CODE> obsahuje metriky,
<EM>dvips</EM> „map“ súbory a makrá (pre Plain TeX a LaTeX) pre
pou¾itie týchto fontov v dokumentoch. Pou¾ívatelia LaTeXu nájdu v sade dva
balíky: <CODE>eurosans</CODE> poskytuje iba grotesk verziu (pre dodr¾anie
zastaraného nariadenia o výhradne grotesk symboloch; balík poskytuje
príkaz csx{euro}), zatiaµ èo <CODE>europs</CODE> prispôsobí Euro symbol okolitému
textu (poskytujúc príkaz csx{EUR}). Pre pou¾itie niektorého z balíkov
s <CODE>latin9</CODE> kódovaním potrebujete definova» csx{texteuro} ako alias
pre Euro príkaz, ktorý definuje balík.
<P>
Adobe fonty sú pre prostredie bez Computer Modern fontov najlep¹ia voµba.
Zjavne sú navhrnuté tak, aby sedeli s Adobe Times, Helvetica a Courier, ale
sú zrejme pou¾iteµné s ¹ir¹ím rozsahom moderných fontov.
<P>
Balík <CODE>eurofont</CODE> poskytuje kompaktnú analýzu problému symbolu pre Euro
vo svojej dokumentácii a poskytuje makrá na konfiguráciu pou¾itého zdroja
glyfov. Balík je v¹ak príli¹ veµký na ka¾dodenné pou¾itie.
<P>
Sada <CODE>euro-ce</CODE> je celkom pote¹ujúcim METAFONTovským návrhom poskytujúcim
Euro symboly vo viacerých tvaroch. Súbor distribúcie <CODE>euro-ce.tex</CODE>
poskytuje rady, pomocou ktorých mô¾e fonty vyu¾i» pou¾ívateµ Plain TeXu.
<P>
Symboly Euro sa dajú nájs» na mno¾stve iných miest, ktoré tu pre úplnos»
spomenieme.
<P>
Fonty <CODE>marvosym</CODE> obsahujú medzi mno¾stvom dobrých vecí aj symbol Eura.
Font na CTANe nie je Adobe <EM>ATM</EM> kompatibilný, ale
kompatibilná verzia je zdarma k dispozícii
na <A HREF="http://www.YandY.com/download/marvosym.zip"><CODE>http://www.YandY.com/download/marvosym.zip</CODE></A>. Font na
CTANe je dodávaný so sadou makier na sadzbu v¹etkých symbolov, ktoré
obsahuje.
<P>
Iné sady zalo¾ené na METAFONTe obsahujúce Euro symboly mô¾ete nájs» v balíku
<CODE>china2e</CODE> (ktorého primárnym cieµom sú èínske dátumy a podobné veci)
a fontoch <CODE>eurosym</CODE>.<BR>
<CODE>china2e bundle</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/china2e">china2e</A><BR>
<CODE>EC fonts</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/fonts/ec">ec</A><BR>
<CODE>euro fonts</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/fonts/euro">euro-fonts</A><BR>
<CODE>euro-ce fonts</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/fonts/euro-ce">euro-ce</A><BR>
<CODE>eurofont.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/eurofont">eurofont</A><BR>
<CODE>eurosym fonts</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/fonts/eurosym">eurosym</A><BR>
<CODE>marvosym fonts</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/fonts/psfonts/marvosym">marvosym-fonts</A><BR>
<CODE>textcomp.sty</CODE>: súèas» distribúcie LaTeXu.
<P>
<P><A NAME="Q-tradesyms"><HR><H3>Ako získa» znaky copyright, trademark, ...</H3></A>
<P>
Obsiahly zoznam symbolov (viï Otázku <A HREF="sectC.html#Q-symbols">Kde nájdem symbol pre...</A>) obsahuje príkazy
pre symboly csx{textcopyright}, csx{textregistered} a csx{texttrademark},
ktoré sú dostupné vo fontoch v TS1 kódovaní a ich pou¾itie sa umo¾òuje
balíkom <CODE>textcomp</CODE>.
<P>
V skutoènosti sú v ¹tandardnom LaTeXu povolené v¹etky tri príkazy, ale
glyfy, ktoré dostanete, nie sú veµmi pekné. Konkrétne csx{textregistered}
sa správa zvlá¹tne pri vlo¾ení do tuèného textu (napríklad nadpis sekcie),
preto¾e sa skladá z „small-caps“ písmena, ktoré sa typicky pri po¾iadavke
na vysádzanie v tuènom fonte degraduje na písmeno normálneho tvaru.
Z glyfu sa teda stane `r' v krú¾ku, ale správnym symbolom malo by»
`R' v krú¾ku.
<P>
Tomuto efektu sa pou¾itím <CODE>textcomp</CODE> samozrejme vyhnete.
<P>
Ïal¹í problém nastáva, keï chcete csx{textregistered} v pozícii horného
indexu (aby symbol vyzeral podobne ako csx{texttrademark}). Pou¾itím horného
indexu matematického módu za týmto úèelom vyvolá mno¾stvo nezmyselných chýb,
tak¾e <EM>musíte</EM> pou¾i»
<P>
<PRE>
\textsuperscript{\textregistered}
</PRE>
</P>
<P>
<P><A NAME="Q-mathop"><HR><H3>Definice nových oznaèení matematických funkcí v LaTeXu</H3></A>
<P>
Pou¾ije se pøíkaz <CODE>\mathop</CODE> podobnì jako v tomto pøíkladì:
<PRE>
\newcommand{\diag}{\mathop{\rm diag}}
</PRE>
<P>
Spodní a horní indexy funkce <CODE>\diag</CODE>
budou umístìny obdobnì jako u <CODE>\lim</CODE> (limita).
K tomu, aby indexy byly v¾dy umístìny vpravo od oznaèení funkce,
se pou¾ije tato definice:
<PRE>
\newcommand{\diag}{\mathop{\mathrm{diag}}\nolimits}
</PRE>
<P>
AMSLaTeX (ve svém balíku <CODE>amsopn</CODE>) poskytuje pøíkaz
csx{DeclareMathOperator}, který udìlá stejnou práci jako první definice nahoøe.
Na vytvoøení na¹eho pùvodního pøíkazu csx{diag} napí¹eme:
<PRE>
\DeclareMathOperator{\diag}{diag}
</PRE>
csx{DeclareMathOperator*} deklaruje operátor tak, aby byly spodní a horní indexy
umístnìny v pozici csx{limits} (viz
Otázku <A HREF="sectO.html#Q-limits">Pozície horných a dolných indexov operátorov</A>).
<P>
<P>
<P><A NAME="Q-braket"><HR><H3>Zátvorky a symboly premenlivej veµkosti</H3></A>
<P>
Jedným z mála do oèí bijúcich nedostatkov v schopnostiach TeXu sádza»
matematiku je nemo¾nos» sadzby oddeµovaèov vo vnútri matematických výrazov.
TeX poskytuje primitíva nazvané csx{left} a csx{right}, ktoré mô¾u by»
pou¾ité na modifikáciu zátvoriek (akéhokoµvek druhu) okolo matematických
výrazov, ako napríklad:
<CODE>\left( <výraz> \right)</CODE> — veµkos» zátvoriek sa prispôsobí vertikálnemu
rozmeru výrazu.
<P>
V mnohých prípadoch pri matematike budete potrebova» príkaz csx{middle}
na pou¾itie vo výrazoch ako:
<PRE>
\left\{ x\in \mathbb{N} \middle| x \mbox{ párne} \right\}
</PRE>
na ¹pecifikáciu mno¾iny párnych prirodzených èísel
Systém e-TeX (viï <A HREF="sectT.html#Q-NTS">Projekt <I>NTS</I></A>) definuje presne takýto príkaz, ale
pou¾ívatelia Knuthovho pôvodného systému potrebujú pomoc. Balík Donalda
Arseneaua <CODE>braket</CODE> poskytuje príkazy pre ¹pecifikáciu mno¾ín (ako je
uvedené vy¹¹ie) a pre Diracovove zátvorky (a symboly „bra“ a „ket“).
Balík pou¾íva príkaz zabudovaný do e-TeXu (ak zistí, ¾e be¾í pod e-TeXom).<BR>
<CODE>braket.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/braket.sty">braket</A>
<P>
<P><A NAME="Q-mathsize"><HR><H3>Prispôsobenie veµkostí metematických fontov</H3></A>
<P>
V <CODE>plain</CODE> TeXu musíte pri zavádzaní novej veµkosti fontu deklarova», aké
veµkosti fontov majú by» pou¾ité v matematike. Dá sa to spravi» deklaráciou
csx{textfont}, csx{scriptfont} a csx{scriptscriptfont} pre matematické
rodiny fontov, ktoré pou¾ívate. V¹etky tieto veci sú popísané v kapitole 17
TeXbooku (Otázka <A HREF="sectC.html#Q-books">Knihy o TeXu a pøíbuzná literatura</A>) a iných knihách a tutoriáloch
(Otázka <A HREF="sectC.html#Q-LaTeXTut">Tutoriály k TeXu nebo LaTeXu</A>), ktoré sa <CODE>plain</CODE> TeXom zaoberajú dostatoène
detailne.
<P>
V LaTeXu je samozrejme v¹etko automatizované: pre ka¾dú veµkos» (textového)
fontu existuje schéma urèujúca, aké veµkosti matematických fontov sa majú pou¾i».
„Schéma“ najskôr skontroluje sadu „známych“ veµkostí textu, z ktorých pre
ka¾dú sú dopredu deklarované veµkosti matematiky. Ak veµkos» textu nie je
„známa“, sú veµkosti script- a scriptscriptfont vypoèítané ako fixné
násobky veµkostí textových fontov. (Pou¾ité koeficienty sú
csx{defaultscriptratio}ensuremath{=}0.7,
a csx{defaultscriptscriptratio}ensuremath{=}0.5.)
<P>
Vzorec pevného násobku mô¾e produkova» nepríjemné výsledky (hlavne ak pou¾ívate
fonty, o ktorých si LaTeX myslí, ¾e sú dostupné iba vo fixnej sade veµkostí).
Mô¾ete taktie¾ chcie» úplne zmeni» my¹lienky LaTeXu, napríklad sadzbou
matematiky citeµne men¹ej alebo väè¹ej, ne¾ je okolný text. Za týmto
úèelom mô¾e by» pou¾itý LaTeXovský príkaz:<BR>
csx{DeclareMathSizes{<tfs>}{<ts>}{<ss>}{<sss>}}<BR>
(tento príkaz pou¾íva aj
LaTeX na definíciu vlastnej sady veµkostí). Toto vytvorí (alebo
znovuvytvorí) veµkosti matematických fontov pre veµkos» textového fontu
<CODE><tfs></CODE> (ako csx{textsize} sa pou¾ije <CODE><ts></CODE>,
ako csx{scriptsize} <CODE><ss></CODE> a ako csx{scriptscriptsize} bude pou¾ité
<CODE><sss></CODE>).
<P>
csx{DeclareMathSizes} mô¾e by» pou¾itý iba v preambule dokumentu: dostupné je
iba jedno priradenie pre ka¾dú veµkos» textového fontu na celý dokument.
<P>
<P><A NAME="Q-mathlips"><HR><H3>Tri bodky</H3></A>
<P>
Tri bodky sú be¾ne po¾adované a LaTeX ich natívne poskytuje v celkom
slu¹nom rozsahu (csx{dots}, csx{cdots}, csx{vdots} a csx{ddots}). Pou¾itím
balíku <CODE>graphics</CODE> mô¾ete zmeni» sklon príkazu csx{ddots}:
<PRE>
$ ... \reflectbox{$\ddots$} ... $
</PRE>
Hoci postup funguje, nie je odpoúèaným spôsobom dosiahnutia ¾iadaného výsledku
(viï ni¾¹ie). LaTeXovský rozsah naviac nepostaèuje po¾iadavkám ka¾dého.
Tri balíky poskytujú roz¹írenie.
<P>
Sada AMSLaTeX poskytuje rozsah „sémanticky pomenovaných“ elíps na pou¾itie
v rôznych situáciach: csx{dotsb} pre pou¾itie medzi dvojicami binárnych
operátorov, csx{dotsc} medzi dvojicami èiarok a tak ïalej.
<P>
Balík <CODE>yhmath</CODE> definuje príkaz csx{adots}, ktorý je podobný príkazu
csx{ddots} (iba so sklonom nadol namiesto sklonu nahor). <CODE>yhmath</CODE>
obsahuje celkom zaujímavý font, ktorý roz¹iruje ¹tandardný <CODE>cmex</CODE>,
detaily nájdete v dokumentácii. Nevýhodou tohto nastavenia je (hoci csx{adots}
je iba makro), ¾e sa balík pokú¹a nahra» vlastný font a v prípade, ¾e font
nemáte nain¹talovaný, zapríèíòuje varovnú hlá¹ku substitúcie „missing font“
(chýbajúci font).
<P>
Balík <CODE>mathdots</CODE> (okrem opravy chovania TeXovských/LaTeXovských
csx{ddots} a csx{vdots} pri zmene veµkosti fontu) poskytuje
„inverzne diagonálne“ elipsy csx{iddots} (fungujú podobne ako csx{adots}
balíku <CODE>yhmath</CODE>, len lep¹ie).
<P>
Dokumentácia <CODE>yhmath</CODE> je v distribúcii spracovaná (nemusíte teda balík
in¹talova» iba pre èítanie dokumentácie). Documentácia <CODE>mathdots</CODE> je
na konci samotného súboru balíku.<BR>
<CODE>amslatex</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/amslatex">amslatex</A><BR>
<CODE>graphics.sty</CODE>: súèas» sady <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/graphics">graphics</A><BR>
<CODE>mathdots.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/generic/mathdots.sty">mathdots</A><BR>
fonty <CODE>yhmath</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/fonts/yhmath">yhmath-fonts</A><BR>
makrá <CODE>yhmath</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/yhmath">yhmath-macros</A>
<P>
<P><A NAME="Q-limits"><HR><H3>Pozície horných a dolných indexov operátorov</H3></A>
<P>
Najbe¾nej¹ím ruène písaným ¹týlom pre výrazy je umiestnenie limitných výrazov
operátorov ako csx{sum} a csx{int} fyzicky nad a pod operátor.
V TeXu/LaTeXu pí¹eme tieto výrazy pomocou horných a dolných indexov
aplikovaných na operátor, ale nie v¾dy sa vo výstupe TeXu objavia ako
v „ruène písanej“ podobe.
<P>
Dôvod je ten, ¾e keï sa výraz objaví v normálnom texte (je teda v ¹týle
csx{textstyle}), umiestnenie hraníc operátoru by mohlo vies» k nerovnému
riadkovaniu (a teda k »a¾ko èitateµnému textu). Je preto obvyklé
(v csx{textstyle}) umiestòova» tieto hranice ako horné a dolné indexy
premenných.
<P>
Toto v¹ak nie je obecne dostaèujúce, tak¾e je poskytované primitívum
csx{limits}:
<PRE>
$\sum\limits_{n=1}^{m} ...$
</PRE>
ktoré umiestni hranice priamo nad a pod symbol.
<P>
Naopak, mô¾ete chcie» zmeni» usporiadanie hraníc v csx{displaystyle}.
Za týmto úèelom existuje príslu¹ný príkaz csx{nolimits}:
<PRE>
\[\sum\nolimits_{n=1}^{m} ...\]
</PRE>
ktorý umiestni hranice ako v csx{textstyle}.
<P>
(Zapamätajte si, ¾e makro csx{int} má obyvkle csx{nolimits} zabudované
do definície. V TeXbooku existuje príklad, ktorý ukazuje, ako zvlá¹tne
vyzerá csx{int}csx{limits} vysádzané.)
<P>
<P><A NAME="Q-mathstext"><HR><H3>Text vo vnútri matematiky</H3></A>
<P>
Keï v TeXu/LaTeXu pí¹eme matematiku, majú písmená, z ktorých tvoríme be¾ný
text, ¹peciálny význam: v¹etky sa stanú jednopísmenovými názvami premenných.
Písmená sú sádzané kurzívou, ale nie rovnakou kurzívou ako v be¾nom texte:
postupnos» písmen v matematike (napríklad „here“) vyzerá zvlá¹te
„zvlnená“ oproti tomu istému slovu v texte vysádzanom kurzívou. Rozdiel je,
¾e text v kurzíve je podrezaný (kerned), aby sa písmená k sebe dobre zmestili,
ziatiaµ èo matamtika je sádzaná, aby vyzerala, ako keï navzájom násobíte
<EM>h</EM>, <EM>e</EM>, <EM>r</EM> a písmeno <EM>e</EM>. Ïal¹ou zvlá¹tnos»ou
matematiky v TeXu je ingorovanie medzier: prinajlep¹om mô¾eme v tomto
zvlá¹tnom fonte písa» slová.
<P>
Ak chceme ma» dobre vyzerajúci text medzi matematikou, musíme zavies» urèité
opatrenia. Ak pou¾ívate LaTeX, nasledujúca rada by vám mala pomôc».
<P>
Najjednoduch¹ie je pou¾i» csx{mbox} alebo csx{textrm}:
<P>
<PRE>
$e = mc^2 \mbox{here we go again}$
</PRE>
</P>
Problém je, ¾e veµkos» textu zostane toto¾ná s okolitým textom, tak¾e
<P>
<PRE>
$z = a_{\mbox{other end}}$
</PRE>
</P>
vyzerá veµmi zle.
<P>
Ïal¹í jednoduchý postup vyu¾íva csx{textrm} a vyzerá sµubnej¹ie:
<P>
<PRE>
$z = a_{\textrm{other end}}$
</PRE>
</P>
je urèite v poriadku. Okolitý text v¹ak nemusí by» v na¹ej antikve. Ak vám
zále¾í na rovnakom texte, musíte si vybra» medzi csx{textrm}, csx{textsf}
a tak ïalej.
<P>
(Matematická in¹tancia va¹ej antikvy (csx{mathrm}) má správnu veµkos», ale
keï¾e je urèená na pou¾itie v matematike, medzery sú ignorované — pou¾ívajte
csx{mathrm} iba pre názvy premenných v kolmej rímskej abecede.)
<P>
Tieto problémy mô¾ete opravi» výbermi veµkosti písma v texte, napr.:
<P>
<PRE>
$z = a_{\mbox{\scriptsize other end}}$
</PRE>
</P>
Príklad bude fungova», ak je okolitý text ¹tandardnej dokumentovej veµkosti,
inak dostanete nesprávnu veµkos».
<P>
Tieto skratky sú (takmer) v poriadku pre „obèasného“ matematika, ale
skutoèní matematici ¾iadajú postup, ktorý odbremeòuje sádzaèa od my¹lienok
vy¾adovaných pri predchádzajúcich postupoch. AMSLaTeX, ako obvykle,
poskytuje v¹etko potrebné — príkaz csx{text}. Príkaz v skutoènosti balík
<CODE>amstext</CODE>, ale ten je nahratý „globálnym“ balíkom <CODE>amsmath</CODE>,
tak¾e kdokoµvek správne pou¾íva AMSLaTeX, má príkaz poruke, tak¾e aj vtipný
matematici mô¾u napísa»:
<P>
<PRE>
\usepackage{amsmath}
...
$z = a_{\text{other end}}$
</PRE>
</P>
a text bude rovnakej veµkosti a v rovnakom fonte ako text okolitý.
<P>
AMSLaTeX tie¾ prostredníctvom príkazu csx{intertext} poskytuje opatrenia
pre komentáre vlo¾ené do niektorej z jeho viacriadkových zobrazovacích
¹truktúr. Napríklad:
<P>
<PRE>
\begin{align}
A_1&=N_0(\lambda;\Omega')-
\phi(\lambda;\Omega'),\\
A_2&=\phi(\lambda;\Omega')-
\phi(\lambda;\Omega),\\
\intertext{a koneène} A_3&=\mathcal{N}(\lambda;\omega).
\end{align}
</PRE>
</P>
umiestni text „a koneène“ na samostatný riadok pred posledný riadok
zobrazenia. Príkaz mô¾e by» pou¾itý iba bezprostredne po príkaze <CODE>\\</CODE>.
<P>
Vyèerpávajúcu dokumentáciu AMSLaTeXu nájdete v súbore <CODE>amsldoc</CODE>
(v distribúcii), ktorý je dostupný aj na webe:
URL{ftp://ftp.ams.org/pub/tex/doc/amsmath/amsldoc.pdf}<BR>
<CODE>amsldoc.tex</CODE>,<BR>
<CODE>amsmath.sty</CODE> a<BR>
<CODE>amstext.sty</CODE> sú distribuované ako súèas» AMSLaTeXu<BR>
<CODE>\AMSLaTeX{}</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/amslatex">amslatex</A>
<P>
<P><A NAME="Q-reuseq"><HR><H3>Opätovné pou¾itie rovnice</H3></A>
<P>
Pri opakovaní existujúcej rovnice nechcete iba rovnakú matematiku, chcete aj
opätovne pou¾i» pôvodné návestie.
Balík <CODE>amsmath</CODE> nám prichádza na pomoc:
<P>
<PRE>
\usepackage{amsmath}
...
\begin{equation}
a=b
\label{eq1}
\end{equation}
...
Nezabudnite, ¾e
\begin{equation}
a=b
\tag{\ref{eq1}}
\end{equation}
</PRE>
</P>
Druhá in¹tancia ensuremath{a=b} tu bude vysádzaná s kópiou návestia prvej
in¹tancie vytvorenou príkazom csx{tag}.
<P>
Vyèerpávajúcu dokumentáciu AMSLaTeXu nájdete v súbore <CODE>amsldoc</CODE>
(v distribúcii), ktorý je dostupný aj na webe:
URL{ftp://ftp.ams.org/pub/tex/doc/amsmath/amsldoc.pdf}<BR>
<CODE>amsldoc.tex</CODE> a<BR>
<CODE>amsmath.sty</CODE> sú distribuované ako súèas» AMSLaTeXu
(<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/amslatex">amslatex</A>)
<P>
<P>
<P><A NAME="Q-pictures"><HR><H3>Obrázky v TeXovém dokumentu</H3></A>
<P>
Souèástí TeXových dokumentù mohou být obrázky. Proto¾e pro obrázky
existuje mnoho formátù, existuje i více zpùsobù, jak zaøídit, aby se nám
na daném místì dokumentu obrázek objevil. Obrázek se v¹ak nevkládá
„pøímo do zdrojového textu“. Do zdrojového textu se umístí volání
makra, které vytvoøí místo pro obrázek. Skuteèný import obrazových dat
provede posléze TeXový ovladaè.
<P>
Obvykle pou¾ívaný formát obrázkù je <CODE>eps</CODE> (zapouzdøený PostScript).
Pro vlo¾ení takového obrázku lze pou¾ít balík <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex209/contrib/epsfig">epsfig</A>.
Dal¹í informace o vkládání postscriptových obrázkù a odkazy na star¹í
balíky viz <A HREF="sectL.html#Q-postscriptpics">Vkládání PostScriptových obrázkù v LaTeXu</A>.
<P>
Vkládání bitmapových obrázkù ve formátu <CODE>pcx</CODE> podporují ovladaèe
v emTeXu (viz <A HREF="sectD.html#Q-specials">Pøíkazy typu <CODE>\special</CODE></A>).
<P>
<P>
<P><A NAME="Q-picinp"><HR><H3>Obtékání obrázkù</H3></A>
<P>
Nìkdy je tøeba umístit obrázek dovnitø odstavce, na jednu stranu
textového zrcadla – takovým obrázkùm øíkáme obtékané.
Balík <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex209/contrib/picinpar">picinpar</A> definuje prostøedí <CODE>window</CODE>, kterým lze obrázek
umístit na levou nebo pravou stranu odstavce (nebo dokonce doprostøed).
<P>
Dal¹í podobné balíky mù¾ete v pøípadì zájmu najít na CTANu
(<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/wrapfig">wrapfig</A> nebo <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex209/contrib/window">window</A>).
<P>
<P>
<P><A NAME="Q-logos"><HR><H3>Sazba názvù programù pou¾ívaných spolu s TeXem</H3></A>
<P>
Donald Knuth definoval logo TeXu jako konkrétní ukázku toho,
co TeX umí.
®el, mnozí si v¹ak myslí, ¾e tím pøivodil záplavu rùzných log,
jako napøíklad AMSTeX, PiCTeX, BibTeX atd. vytvoøených pomocí
velkého mno¾ství rùzných fontù, velikostí i základních linek — jistì
vám to znepøíjemní ètení.
Lamport vymyslel logo LaTeX, co¾ pak pøirozenì vedlo ke vzniku
nynìj¹ího loga LaTeX 2e.
<P>
Není v¹ak nutnì tøeba uvádìt tato loga v jejich
komplikovaném tvaru v¹ude tam, kde se pøíslu¹ný název
vyskytne, av¹ak pro ty, kdo trvají na
jejich pou¾ití, existuje v souboru <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/info/biblio/texnames.sty">texnames</A> veliké mno¾ství
pøeddefinovaných log. Fonty loga METAFONTu
mohou být pøidány k fontùm, které LaTeX 2e ji¾ zná
(tak, ¾e se pak mù¾e mìnit jeho rozmìr spolu s okolním textem) pou¾itím
balíku <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/mflogo">mflogo</A>. Pøi pou¾ití Knuthova fontu pro MetaPost v¹ak mù¾ou
nastat problémy (mù¾ete dostat
nìco jako „META O T“).
Nezoufejte, autor samotný pou¾ívá jenom „MetaPost“.
<P>
Pro ty, kdo nepotøebují mít v dokumentu vysázená ta „správná“ loga,
staèí pou¾ít
<CODE>AMS-\TeX{}</CODE> (AMS-TeX) namísto AMSTeX,
<CODE>Pic\TeX{}</CODE> (PicTeX) namísto PiCTeX, <CODE>Bib\TeX{}</CODE> (BibTeX)
namísto BibTeX atp.
<P>
<P><A NAME="Q-1abstract2"><HR><H3>Jednosloupcový výtah v dvousloupcovém dokumentu</H3></A>
<P>
Obèas je tøeba dvousloupcový èlánek opatøit jednosloupcovým výtahem.
Nejlep¹ím zpùsobem je pou¾ít následující trik:
<PRE>
\documentclass[twocolumn]{article}
...
\begin{document}
... % \author, etc
\twocolumn[
\begin{@twocolumnfalse}
\maketitle
\begin{abstract}
...
\end{abstract}
\end{@twocolumnfalse}
]
</PRE>
<P>
Takto v¹ak nebude pracovat správnì, pou¾ijete-li <CODE>\thanks</CODE> v seznamu
<CODE>\author</CODE>. Pokud potøebujete takto speciálnì èíslovaný seznam,
docílíte toho následovnì:
<PRE>
\title{Demonstration}
\author{Me, You\thanks{}}
\twocolumn[
... to samé, co vý¹e ...
]
{
\renewcommand{\thefootnote}%
{\fnsymbol{footnote}}
\footnotetext[1]{Thanks for nothing}
}
</PRE>
atd.
<P>
Alternativnì mù¾ete pou¾ít balík <EM>abstract</EM> (dostupný
z <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/abstract">abstract</A>), který (kromì jiných
usnadnìní práce s abstrakty) poskytuje k pou¾ití pøíkaz <CODE>\saythanks</CODE> a prostøedí
<CODE>onecolabstract</CODE>, které odstraní potøebu „¹vindlovat“ s <CODE>\thanks</CODE>
a poznámkami. Mù¾ete to pou¾ít následovnì:
<PRE>
\twocolumn[
\maketitle
\begin{onecolabstract}
... text
\end{onecolabstract}
]
\saythanks
</PRE>
<P>
<P><A NAME="Q-zmenaslov"><HR><H3>Zmìna slov pou¾ívaných LaTeXem</H3></A>
<P>
LaTeX pou¾ívá nìkolik symbolických jmen, které vytváøejí automatický
text (nadpisy, tituly atd.). Napø. èást textu vysázená pøíkazem
<CODE>\tableofcontents</CODE> je v¾dy volána pøíkazem <CODE>\contentsname</CODE>.
Umo¾òuje v¹ak bì¾nému u¾ivateli zmìnit jména pou¾ívaná standardními
tøídami, co¾ je u¾iteèné hlavnì pøi tvorbì neanglických dokumentù.
Pokud tøeba daný dokument pí¹e èeský autor, chce, aby
byl obsah nazván opravdu „Obsah“ a ne „Table of Contents“, v tom
pøípadì musí do preambule dokumentu vlo¾it text<BR>
<CODE>\renewcommand{\contentsname}{obsah}</CODE>
<P>
Nicménì pro neanglického u¾ivatele je pøirozené pou¾ívat
<EM>babel</EM>, proto¾e nabízí mnoho výhod a zpøíjemòuje vytváøení
dokumentù v jejich pøirozeném jazyce. Zvlá¹tì pokud v <EM>babel</EM>u
vyberete
jiný jazyk, tak vám zajistí, ¾e LaTeXová symbolická jména budou vhodnì
pøekládána do vybraného jazyka podle va¹eho poøadavku.
<P>
Bohu¾el výbìr jmen v <EM>babel</EM>u nevyhoví v¾dy po¾adavkùm u¾ivatele,
proto je
tøeba mechanismus pro náhradu standardních jmen. Kdykoliv
<EM>babel</EM>
vybere jiný jazyk, pak jsou v¹echna standardní jména pøelo¾ena právì do
tohoto jazyka. <EM>Babel</EM> zvlá¹tì vybírá hlavní jazyk dokumentu,
kdy¾ je
vykonán pøíkaz <CODE>\begin{document}</CODE>, který ihned znièí ve¹keré zmìny
standardních jmen, která byla provedena v preambuli dokumentu
pou¾ívajícího <EM>babel</EM>. Proto <EM>babel</EM> definuje pøíkaz,
který u¾ivateli
umo¾ní zmìnit definice symbolických jmen na základní výrazy jeho
mateø¹tiny:<BR>
<CODE>\addto\caption<language></CODE>, kde <CODE><language></CODE> znaèí jazyk,
který <EM>babel</EM> bude pou¾ívat jako primární. Napø.
<PRE>
\addto\captionczech{%
\renewcommand{\contentsname}{Obsah}%
}
</PRE>
<P>
<P><A NAME="Q-vypiskod"><HR><H3>Výpisy zdrojových kódù v LaTeXu</H3></A>
<P>
Nìkteøí neuroticky estetiètí programátoøi pova¾ují „krásné“ zdrojové
kódy za nìco k nezaplacení. Správnì strukturované zdrojové kódy v¹ak
mají své místo pøi psaní disertaèních prací studenty informatických i
jiných vìd, od kterých se oèekává, ¾e v budoucnosti budou
programovat. Bì¾nì se pou¾ívá doslovné citování kódù.
<P>
Doslovné vkládání kódù je v¹ak rozebíráno jinde (viz
Otázku <A HREF="sectN.html#Q-verbatim">Doslovné (verbatim) vlo¾ení souboru v LaTeXu</A>). Problém sazby specifikací algoritmù
(otázka <A HREF="sectO.html#Q-algorithms">Sadzba pseudokódu v LaTeXu</A>) je v tomto FAQ uveden také na jiném
místì.
<P>
„Krásné“ kódy jsou generovány pomocí pre-compileru, av¹ak balík <CODE>listings</CODE>
toto pøevádí na LaTeX.
<P>
Dobrým pre-compilerem je systém <CODE>lgrind</CODE> (<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/nonfree/support/lgrind">lgrind</A>), který
obsahuje mnoho výhodných vylep¹ení, která se vám mohou hodit, a také má
velice ¹iroký výbìr jazykù.
<P>
Systém <CODE>tiny_c21</CODE> (<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/support/tiny_c21">tiny_c21</A>) je o nìco novìj¹í, u¾ivatelé
si zde mohou vygenerovat vlastní ovládací soubory pro daný jazyk, jeho¾
kódy zpracovávají.
<P>
Systém <CODE>C++2LaTeX</CODE> (<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/support/C++2LaTeX-1_1">C++2LaTeX-1_1</A>) pøiná¹í mnoho
doporuèení pro pou¾ívání s jazyky C a C++.
<P>
Systém <EM>highlight</EM> (<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/support/highlight">highlight</A>) je obecný konvertor
produkující formáty HTML, RTF a také TeX/LaTeX. Tvrdí
o sobì, ¾e je vysoce pøispùsobitelný, distribuce obsahuje definice mnoha
jazykù. Dokumentace je poskytována jako <CODE>README</CODE> soubor v distribuci,
který se sám nazýva manuálem.<BR>
<CODE>listings</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/listings">listings</A>
<P>
<P><A NAME="Q-algorithms"><HR><H3>Sadzba pseudokódu v LaTeXu</H3></A>
<P>
Konsenzus týkajúci sa správnosti sadzby pseudokódu neexistuje. Máme teda na výber
z mno¾stva balíkov LaTeXu urèených na tvorbu esteticky príjemných výpisov
pseudokódu.
<P>
Pseudokód sa od výpisu skutoèného programu lí¹i v tom, ¾e nemá striktnú syntax
ani sémantiku. Pseudokód má predstavova» èistú interpretáciu algoritmu, tak¾e
mô¾e potrebova» pou¾i» matematické zápisy, obrázky, tabuµky a iné vlastnosti
LaTeXu, ktoré sa v tradièných programovacích jazykoch neobjavujú.
Sadzba výpisov programov je opísaná na inom mieste (viï
Otázku <A HREF="sectO.html#Q-vypiskod">Výpisy zdrojových kódù v LaTeXu</A>).
<P>
Urèite si mô¾ete na sadzbu pseudokódu vytvori» vlastné prostredie, napríklad
pomocou prostredia <CODE>tabbing</CODE> alebo <CODE>list</CODE> — nie je to »a¾ké, ale mô¾e to by»
nudné. Oplatí sa teda vyskú¹a» nasledujúce balíky (v¹etky ¹pecificky navrhnuté
pre sadzbu pseudokódu).
<P>
Sada <CODE>algorithms</CODE> (obsahujúca balíky <CODE>algorithm</CODE>
a <CODE>algorithmic</CODE>, oba potrebné pre be¾né pou¾itie) má jednoduché
rozhranie a produkuje celkom pekný výstup. Poskytuje primitíva pre príkazy,
ktoré mô¾u obsahova» µubovolné príkazy LaTeXu, komentáre a sadu iteratívnych
a podmienených kon¹trukcií. Tieto primitíva mô¾u by» µahko predefinované, aby
na výstupe produkovali odli¹ný text. Podpora pre pridávanie nových primitív
v¹ak neexistuje. Samotná sadzba pseudokódu sa koná v balíku
<CODE>algorithmic</CODE>. Balík <CODE>algorithms</CODE> pou¾íva prostriedky balíku
<CODE>float</CODE> na sekvenèné èíslovanie algoritmov, umo¾nenie algoritmom
„pláva»“ (float) ako obrázky alebo tabuµky a na podporu vlo¾enia zoznamu
algoritmov na úvod dokumentu.
<P>
Balík <CODE>alg</CODE>, podobne ako <CODE>algorithms</CODE>, poskytuje plávajúce
prostredie algoritmov spolu so v¹etkými ïal¹ími drobnos»ami. <CODE>alg</CODE> ale
mô¾e svojim plávajúcim prostrediam vytvori» nadpis v mno¾stve (prirodzených)
jazykov. <CODE>alg</CODE> naviac (narozdiel od <CODE>algorithms</CODE>), umo¾òuje
jednoducho pridáva» nové kon¹trukcie.
<P>
Balík <CODE>newalg</CODE> má tak trochu podobné rozhranie ako <CODE>algorithms</CODE>,
ale jeho výstup má pripomína» celkom príjemnú sadzbu pou¾itú v knihe
„Introduction to Algorithms“ od Cormana, Leisersona, Rivesta a Steina.
<CODE>newalg</CODE> bohu¾iaµ nepodporuje plávajúce prostredie ani prispôsobenie
výstupu.
<P>
Poctivé pou¾itie ¹týlu „Introduction to Algorithms“ dosiahneme Cormenovým
vlastným balíkom <CODE>clrscode</CODE>: tento balík bol pou¾itý v druhom vydaní
knihy.
<P>
Balík <CODE>algorithm2e</CODE> existuje u¾ veµmi dlho a je ¹iroko pou¾ívaný
a odporúèaný. Pou¾íva balík <CODE>float</CODE> na poskytnutie mo¾nosti plávajúcich
popisov algoritmov, stále v¹ak mô¾ete pou¾i» voµbu „<CODE>H</CODE>“ balíku
<CODE>float</CODE>, ak chcete, aby sa algoritmus obajvil tam, „kde ho napí¹ete“.
<P>
Pou¾itie balíku <CODE>program</CODE> sa trochu lí¹i od pou¾itia iných balíkov.
Namiesto textového módu pou¾íva pri sadzbe programov matematický mód, zlomy
riadkov sú dôle¾ité. <CODE>program</CODE> neobsahuje plávajúce prostredie, ale
èísluje algorithmy ako <CODE>alg</CODE> a <CODE>algorithms</CODE>. Prispôsobovanie
a roz¹irovanie nie je podporované.
<P>
®iadny z uvedených balíkov nie je dokonalý. Faktory, ktoré by mali ovplyvni»
vá¹ výber, sú preferovaný ¹týl výstupu, potreba roz¹írenia alebo modifikácie
kµúèových slov a potreba umiestni» algoritmy do plávajúceho prostredia ako
obrázky a tabuµky .
<P>
Dostupnos» dokumentácie:
<UL>
<LI><B>sady <CODE>algorithms</CODE></B>
je poskytovaná v súbore <CODE>algorithms.ps</CODE>
(tie¾ dostupný ako zdrojový súbor LaTeX{}u). Dokumentácia spomína balíky, ako
by boli v skutoènosti jeden nazvaný <CODE>algorithms</CODE>.
<LI><B>balíku <CODE>program</CODE></B>
(v stave, v akom je) sa nachádza v súbore
<CODE>program.msg</CODE>.
<LI><B>balíku <CODE>clrscode</CODE></B>
sa nachádza v súbore <CODE>clrscode.pdf</CODE>
v distribúcii.
<LI><B>balíku <CODE>algorithm2e</CODE></B>
mô¾ete nájs» v distribúcii v súbore
<CODE>algorithm2e.tex</CODE> (pre spracovanie potrebuje balík samotný).
</UL>
<CODE>algorithm2e.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/algorithm2e">algorithm2e</A><BR>
sada <CODE>algorithms</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/algorithms">algorithms</A><BR>
<CODE>alg.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/alg">alg</A><BR>
<CODE>clrscode.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/clrscode">clrscode</A><BR>
<CODE>float.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/float">float</A><BR>
<CODE>newalg.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/newalg">newalg</A><BR>
<CODE>program.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/program">program</A>
<P>
<P><A NAME="Q-integral"><HR><H3>Sazba symbolu hlavní hodnoty integrálu</H3></A>
<P>
Tento symbol („pøe¹krtnutý“ znak integrálu) není obsa¾en v ¾ádném
fontu, který by byl be¾nì dostupný u¾ivatelùm TeXu nebo LaTeXu,
mù¾e v¹ak být vytvoøen pomocí následujícího makra:
<PRE>
\def\Xint#1{\mathchoice
{\XXint\displaystyle\textstyle{#1}}%
{\XXint\textstyle\scriptstyle{#1}}%
{\XXint\scriptstyle\scriptscriptstyle{#1}}%
{\XXint\scriptscriptstyle\scriptscriptstyle{#1}}%
\!\int}
\def\XXint#1#2#3{{\setbox0=\hbox{$#1{#2#3}{\int}$}
\vcenter{\hbox{$#2#3$}}\kern-.5\wd0}}
\def\ddashint{\Xint=}
\def\dashint{\Xint-}
</PRE>
Pro sazbu jednou pøe¹krtnutého znaku integrálu se pou¾ije pøíkaz
<CODE>\dashint</CODE>, pro sazbu dvakrát pøe¹krtnutého znaku pou¾ijeme
<CODE>\ddashint</CODE>.
<P>
<P><A NAME="Q-babeljaz"><HR><H3>Pou¾ívání nových jazykù v babelu</H3></A>
<P>
<EM>Babel</EM> umí pracovat se ¹irokou øadou jazykù, av¹ak obèas se
stane, ¾e nový
u¾ivatel chce pou¾ívat jazyk, který jeho instalace TeXu neumí
pou¾ívat.
Napø. po¾adavek<BR> <CODE>\usepackage[catalan]{babel}</CODE> <BR>vyvolá chybové
hlá¹ení
<PRE>
Package babel Warning: No hyphenation patterns
... were loaded fo the language `Catalan'.
... I will use the patterns loaded for
... \language=0 instead.
</PRE>
Problém je v tom, ¾e TeX neví, jak dìlit katalánská slova:
musíte mu to øíct døíve, ne¾ <EM>babel</EM> zaène
pracovat. V LaTeXové
instalaci musíte pøidat do souboru <CODE>language.dat</CODE>, který je souèástí
babelovké
instalace, øádek <BR>
<CODE>catalan cahyphen.tex</CODE><BR>
který, pokud odstraníte komentovací znaménko <CODE>(%)</CODE>, øekne LaTeXu, ¾e
má
nahrát vzor pro katalánské dìlení slov, pokud mu øeknete, aby vytvoøil
nový formát. Bohu¾el, v mnoha babelovských distribucích právì tento
øádek není správný – musíte zkontrolovat jména souborù, obsahující
vzory, které se chystáte pou¾ít. Jak mù¾ete vidìt, v autorovì systému
je oèekáván soubor <CODE>cahyphen.tex</CODE>, aèkoliv jméno souboru, který je
v systému, je <CODE>cahyph.tex</CODE>. V lep¹ích distribucích je vìt¹ina
tìchto souborù obsa¾ena, chybìjící soubory si mù¾ete najít na CTANovském
archívu. Pokud si stáhnete nový soubor, zajistìte jeho korektní
instalaci (viz Otázku <A HREF="sectE.html#Q-instal">Instalace nových balíèkù</A>). Nakonec musíte obnovit
formáty,
které pou¾íváte (ve skuteènosti vìt¹ina u¾ivatelù pou¾ívá
<EM>babel</EM>
v LaTeXových dokumentech, tak¾e zde bude dost formátù, které bude
nutno upravit; nicménì u¾ivatelé èasto opravují soubory, které s tímto
nemají nic spoleèného).
<UL>
<LI><B>teTeX, fpTeX</B>
:
pro obnovu v¹ech formátu pou¾ijte toto:
<CODE>fmtutil –all</CODE>
Pokud si chcete být jisti, co dìláte, (to není pro zbabìlé), mù¾ete si
vybrat posloupnost formátù, které chcete upravovat, a pro ka¾dý z nich
spustit
<CODE>fmtutil –byfmt <formatname></CODE>, kde <CODE><formatname></CODE> je nìco
jako LaTeX nebo
<CODE>fmtutil –byhyphen <hyphenfile></CODE>, kde <CODE><hyphenfile></CODE> je
soubor specifikující dìlení slov do formátu – obvykle <CODE>language.dat</CODE>.
<LI><B>MikTeX</B>
V MikTeXovské distribuci do verze 2.0 udìlejte:
<CODE>Start</CODE> –> <CODE>Programs</CODE> –> <CODE>Miktex</CODE> –> <CODE>Maintenance</CODE> –>
<CODE>Create all format files</CODE> nebo otevøete DOSovské okno a napi¹te
<CODE>initexmf –dump</CODE>.
V MikTeXovských distribucích verze 2.0 a vy¹¹í mù¾e být celá procedura
provedena pomocí GUI. Nový jazyk vyberete takto:
<CODE>Start</CODE> –> <CODE>Programs</CODE> –> <CODE>Miktex 2</CODE> –> <CODE>Miktex options</CODE>
a vyberte <CODE>Languages</CODE>. Vyberte jazyk ze seznamu a stisknìte tlaèítko
<CODE>Apply</CODE> a svou volbu potvrïte stiskem tlaèítka <CODE>OK</CODE>. Pak vyberte
<CODE>general</CODE> a stisknìte tlaèítko <CODE>Update Now</CODE>. Dal¹í mo¾ností je
vyeditování souboru <CODE>language.dat</CODE> jak bylo popsáno vý¹ a spus»te
<CODE>initexmf –dump</CODE>
jako u verzí ni¾¹ích ne¾ 2.0.
</UL>
<P>
POZOR: Je mo¾né, ¾e vá¹ TeX skonèí s chybovou hlá¹kou týkající se
nedostatku pamìti pøi vytváøení nových formátù. Vìt¹ina TeXových
implementací má na uchování dat týkajících se tohoto problému vyhrazeno
pole fixní délky. Pokud shledáte, ¾e vám pøetekla pamì», mù¾e
to být zásluha prohledávání seznamu dostupných jazykù ve va¹em souboru
<CODE>language.dat</CODE>, pak se tedy podívejte, který z jazykù mù¾e být odstranìn.
<P>
<P>
<P><HR></TD></TR>
<TR><TD></TD><TD><TABLE BORDER=0><TR>
<TD valign=middle align=left>
<a href="http://www.cstug.cz/">
<IMG BORDER=0 SRC="images/logo.gif"
ALT="CSTUG" HEIGHT=51 WIDTH=165 ALIGN="right"><BR>
</TD><TD valign=top align=left><FONT SIZE="-1">
(c) 1997, 1998, 2003
Tomá¹ Hudec, Libor ©karvada
<BR>
Poslední aktualizace: 13.11.2004 23:15
</FONT></TD></TR></TABLE></TD></TR></TABLE>
</BODY>
</HTML>
|