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
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
|
% -*- mode: latex; coding: utf-8-unix; TeX-PDF-mode: t; fill-column: 78 -*-
\documentclass[a4paper,11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english,spanish]{babel}
\usepackage{mathptmx}
\usepackage{helvet}
\usepackage{enumerate}
\usepackage{url}
\usepackage[pdftex]{hyperref}
\parskip=3pt\clubpenalty=10000\widowpenalty=10000
\footnotesep=\baselineskip
\addtocounter{tocdepth}{-1}
\def\btx-{\textsc{Bib\TeX}}
\def\ltx-{\LaTeX}
\def\ltr#1-{<<\texttt{#1}>>}
\def\tpf#1-{\ltr.#1-}
\def\cmd#1-{``\texttt{\textbackslash#1}''}
\newcommand{\flecha}{\ensuremath{\rightarrow}}
\hypersetup{
colorlinks = true,
pdftitle = {Guía casi completa de BibTeX},
pdfauthor = {Joaquin Ataz López},
pdfsubject = {Uso de BibTeX para la gestión de las referencias
bibliográficas en LaTeX.},
pdfkeywords = {LaTeX BibTeX},
}
\begin{document}
\renewcommand{\thefootnote}{\fnsymbol{footnote}}
\title{Guía \emph{casi} completa de \btx-\footnotemark}
\footnotetext[1]{Copyright \copyright{} 2006. Joaquín Ataz López.\\
\selectlanguage{english} Permisssion is granted to copy, distribute and/or
modify this document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by de Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
Copy of the license is included in the section entitled ``GNU Free
Documentation License''.\\\selectlanguage{spanish} \emph{Se otorga permiso
para copiar, distribuir o modificar este documento en los términos de la
Licencia GNU para Documentación Libre, versión 1.2 o cualquier versión
postrior publicada por la Free Software Foundation; sin secciones
invariantes, sin textos de la cubierta frontal y sin textos de la cubierta
posterior. Una copia completa de la licencia (en inglés) se incluye en el
apéndice titulado ``GNU Free Documentation License''}. }
\author{Joaquín Ataz López}
\date{Versión 1, \today\\\footnotesize Para sugerencias y correcciones:
\texttt{jal@um.es}}
\maketitle
\renewcommand{\thefootnote}{\arabic{footnote}}
\begin{abstract}
\btx- es un programa auxiliar de \ltx-, diseñado para facilitar el manejo de
la bibliografía. Pero es más que eso: es también una herramienta que permite
a \ltx- extraer datos de una base de datos e insertarlos adecuadamente
formateados en un documento.
Este texto pretende abordar todos los aspectos de \btx-, desde los más
básicos a los más complejos, haciendo además hincapié en su
\emph{españolización}, pues \btx-, como tantas otras herramientas, presupone
que será usada para trabajar con documentos en inglés.
\end{abstract}
{\parskip=0pt\small\tableofcontents}
\section*{Preliminar}
\label{sec:preliminar}
\addcontentsline{toc}{section}{Preliminar}
\btx- es un programa que amplia notablemente las capacidades de \ltx- con el
manejo de la bibliografía. Las grandes ventajas que ofrece su uso\footnote{
\btx- nos ayuda a gestionar nuestra bibliografía de manera independiente a
los documentos en los que debe aparecer, al tiempo que nos permite generar
listas de referencias bibliográficas formateadas de manera consistente y
cambiar fácilmente determinadas características de las mismas. } se
incrementan cuando se maneja una lista bibliográfica amplia y cuando con la
misma bibliografía hay que escribir varios documentos.
No hay mucha documentación sobre \btx- en español. Publicadas en papel sólo
conozco dos obras, ambas de los mismos autores. La primera, \cite{cascales00},
sin duda constituye la más completa información sobre \btx- en nuestro idioma:
mas de 40 páginas en las que se incluyen incluso los aspectos más avanzados.
La segunda, \cite{cascales03}, no es tan extensa, pero constituye una buena
introducción en la que se cubren todos los aspectos básicos y algunos aspectos
avanzados.
En formato electrónico y en nuestro idioma conozco otros dos documentos. Uno
de Luis Seidel, \cite{seidel98} que es una buena introducción, aunque no
resulta muy extenso. Otro de José Manuel Mira, \cite{mira04}, que no está
pensado para quienes se aproximen por primera vez a esta herramienta, pues en
él se explica un \emph{paquete} (\ltr flexbib-) cuyo uso presupone que ya
conocemos lo básico del trabajo con \btx-.
Como es lógico, en inglés hay mucha más documentación. Los textos principales
son el apéndice B del Libro sobre \ltx- de Lamport, \cite{lamport86}, y los
dos documentos que sobre \btx- escribió su autor, Oren Patashnik:
\cite{patashnik88} y \cite{patashnik88-2}. El primero se ocupa de los aspectos
más básicos, y está concebido como una \emph{corrección} del mencionado
apéndice B, y el segundo se ocupa de los aspectos más avanzados. El problema
que tienen estos documentos es que el trabajo de Lamport es difícil de
localizar para el público español.
Además de los documentos anteriores, en Internet pueden localizarse varios
textos, la mayoría en inglés, algunos introductorios y otros no tanto. De
entre ellos me parecen destacables \cite{young02} (un documento bastante
equilibrado) y \cite{markey05}, dirigido a un público más avanzado que los
otros textos mencionados.
\begin{center}***\end{center}
El objetivo fundamental de este documento es el de, partiendo de la
documentación que se acaba de citar, salvo \cite{lamport86} al que no he
tenido acceso, y alguna otra que no se ha mencionado todavía, como
\cite{kopla}, poner al alcance del público hispanoparlante un documento en el
que se aborden todos los aspectos de \btx-, desde los más básicos a los más
avanzados. De ahí el título que he elegido, que tal vez a alguien le suene a
pretencioso. Desde luego esta guía no es completa, porque hay aspectos sobre
los que se pasa casi de puntillas\footnote{Como por ejemplo las herramientas
para gestionar ficheros \tpf bib-, numerosos estilos bastante extendidos, o
los paquetes de ampliación para trabajar con \btx-.}. Tal vez ni siquiera
sea \emph{casi} completa. Pero sí es la más completa que
conozco\footnote{Quizás con la salvedad de \cite{cascales00}. Aunque el
problema de ese libro es que hoy no es ya fácil de localizar.}.
La materia a tratar ha sido distribuida en tres partes, atendiendo a su nivel
de complejidad y detalle:
% \btx- es un programa escrito originalmente por Oren Patashnik, que amplía
% notablemente las capacidades de \ltx- en relación con el manejo de
% bibliografía. Resulta especialmente adecuado cuando se maneja una amplia
% lista bibliográfica y cuando con la misma bibliografía hay que escribir
% varios documentos.
% Documentación sobre \btx- en el idioma español apenas hay. Publicado en
% papel sólo conozco dos obras, las dos de los mismos autores,
% \cite{cascales00} y \cite{cascales03}: en ambas se dedican varias páginas a
% exponer los aspectos principales de \btx-; aunque la información de la
% primera es bastante más extensa y muy posiblemente merezca ser considerada
% la más amplia información en español existente sobre \btx- hasta ahora. En
% formato electrónico, conozco dos trabajos en español: uno de Luis Seidel,
% \cite{seidel98}, accesible desde el ftp que dedicado a TeX existe en la
% Universidad de la Rioja (<<\url{ftp://ftp.tex.unirioja.es}>>), y en el que
% se explican las ideas básicas, pero poco más, y un trabajo publicado en el
% número 6 de TeXemplares, \cite{mira04}, (accesible desde la página Web de
% CervanTeX), obra de José Manuel Mira y que explica el funcionamiento del
% paquete \ltr flexbib-, diseñado para remediar alguno de los principales
% problemas que el uso de \btx- plantea en relación con su falta de
% estandarización y parametrización. Es un artículo muy interesante pero no
% está dirigido a quienes se aproximen por primera vez al uso de esta
% herramienta.
% En inglés existe una más amplia documentación electrónica. Fundamentalmente
% los dos documentos que sobre \btx- escribió el autor del programa,
% \cite{patashnik88} y \cite{patashnik88-2} y que se instalan como
% documentación del mismo. El primero se dedica a los aspectos
% básicos\footnote{A este documentos puede reprochársele el que en él se asume
% que el lector ha tenido acceso a \cite{lamport86}, y está redactado como
% \emph{modificaciones} o cambios sobre lo que allí se dice. Es decir: no
% plantea una explicación \emph{completa} y ordenada de \btx-.} y el
% segundo cubre los más avanzados. Pero también es posible localizar por
% Internet algunos otros documentos entre los que es de destacar el texto de
% Young, \cite{young02}, disponible en
% <<\url{wwwmaths.anu.edu.au/\~{}chrisw/LaTeX/}>>, así como el trabajo de
% Markey, \cite{markey05}, disponible en la CTAN y que es sin duda el
% documento más extenso que conozco sobre \btx-; además de, claro está, la
% documentación que acompaña a los paquetes que amplían las posibilidades de
% \btx-, y que suele encontrarse en inglés.
% El objetivo fundamental de este documento es el de reunir toda la
% documentación que acabo de citar y a partir de ella, y de algún otro texto
% como \cite{kopla}, generar un documento en español que cubra todos los
% aspectos de \btx-, desde los más simples a los más avanzados. De ahí el
% título que he elegido, que tal vez suene a pretencioso. Desde luego esta
% guía no es completa y es posible que tampoco sea \emph{casi} completa;
% aunque desde luego es la más completa que conozco, si bien para algunos
% aspectos, fundamentalmente los más avanzados de programación de estilos, es
% superada por \cite{cascales00} y por \cite{markey05}\footnote{Porque en
% ambos textos se recogen ejemplos de programación de estilos, cosa que yo
% no hago. Pero en lo relativo a la información sobre la programación de
% estilos en sí misma considerada, no hay en este documento menos
% información que en aquellos, aunque aquí la información es ordenada a mi
% modo y explicada a mi manera. }.
% La materia tratada la he distribuido en tres partes, atendiendo a su nivel
% de complejidad y detalle:
\begin{enumerate}
\item \textbf{\btx- básico:} Cubre los aspectos básicos del funcionamiento de
\btx- que afectan a las instrucciones que hay que incluir en el documento
principal de \ltx-, al diseño y mantenimiento de la base de datos, y a los
distintos estilos estándar existentes, así como a los procedimientos para
\emph{españolizarlos}. Es la parte más extensa del documento. Se supone que
sólo con leer esta parte estaremos totalmente preparados para trabajar con
\btx-.
\item \textbf{\btx- intermedio:} En esta parte se describen aspectos que no
son imprescindibles para trabajar con \btx-, pero cuyo conocimiento nos
proporcionará un mayor control. En particular se aborda el uso de makebst
para generar nuestro propio fichero de estilo.
\item \textbf{\btx- avanzado:} Esta última parte entra a fondo en los ficheros
de estilo de \btx-. En ella se describe el lenguaje que estos ficheros usan
internamente.
\end{enumerate}
Para entender este documento no hay que ser un La\TeX perto, pero sí hay que
saber lo suficiente de \ltx-, y del procedimiento estándar que en él se
implementa para trabajar con referencias bibliográficas.
En general el contenido de este documento valdrá para cualquier distribución
de \ltx- que incluya \btx- (o sea, todas las distribuciones). Pero hay
algunos aspectos que dependen de la concreta instalación que se haya hecho del
sistema como, por ejemplo, la localización de los directorios en los que \btx-
lee las bases de datos o los ficheros de estilo. En tales casos la
explicación que doy no vale para cualquier sistema, sino exclusivamente para
el mío, que es una instalación estándar de \ltx- hecha en un sistema donde
funciona Ubuntu versión 6.06. Aunque, en general, estos aspectos dependientes
del concreto sistema utilizado son tratados en nota a pie de página.
Asimismo, a lo largo del presente documento se citan en ocasiones determinados
paquetes para \ltx- o ficheros con estilos adicionales para \btx-. Salvo que
se diga lo contrario, todos los paquetes y estilos citados están disponibles
en la CTAN, (<<\emph{Comprehensive TeX Archives Network}>>) y deben buscarse
en:
\begin{itemize}
\item <<\url{http://www.ctan.org/tex-archive/macros/latex/contrib/}>>
\item <<\url{http://www.ctan.org/tex-archive/biblio/bibtex/contrib/}>>
\end{itemize}
\clearpage
\part{\btx- básico}
\label{part:btx-basico}
\section{Dinámica general del sistema}
\label{sec:entender-la-dinamica}
\subsection{Preparar nuestro documento principal para usar \btx-}
\label{sec:prep-nuestro-docum}
\paragraph{Las órdenes bibliography y bibliographystyle:\\[\baselineskip]}
\label{sec:las-orden-bibl}
Para usar \btx- necesitamos dos cosas:
\begin{enumerate}
\item Tener almacenadas en un fichero aparte, las referencias bibliográficas
que pensemos usar.
\item En el lugar del documento principal en el que queramos que aparezca la
lista con las referencias bibliográficas, debemos insertar las siguientes
dos órdenes de \ltx-:
{\small
\begin{verbatim}
\bibliography{MiBiblio}
\bibliographystyle{MiEstilo}
\end{verbatim}
}
Estas órdenes provocan que tras las oportunas compilaciones (véase la
sección \ref{sec:como-generar-la}, página \pageref{sec:como-generar-la}), se
genere una lista con las referencias bibliográficas usadas en el documento
en la que, además, a cada una de ellas se le asignará una \emph{etiqueta}
identificativa\footnote{\textbf{NOTA TERMINOLÓGICA:} En la documentación en
castellano de \ltx- el término etiqueta se suele usar para hacer
referencia a la cadena de texto que usan en las órdenes que sirven para
tratar con referencias cruzadas tales como \cmd cite-, \cmd label-, \cmd
index- o \cmd glosary-. Este tipo de \emph{etiquetas} son de uso
puramente interno, es decir: \ltx- las usa como marcadores para apuntar a
distintas partes del documento, pero no se imprimen en él. Junto a estas
\emph{etiquetas} también se usa a veces el mismo término para hacer
referencia al rótulo identificador de una entrada concreta de la lista de
referencias bibliográficas, que se imprime en el documento. Para evitar
confusiones, en este documento he reservado el término \emph{etiqueta}
para las que llegan a imprimirse en el documento final, mientras que para
referirme a las usadas internamente como marcadores, he reservado el
término \emph{clave}. }. Los datos correspondientes a tales referencias
serán buscados en el fichero \ltr MiBiblio.bib-, y la lista se formateará de
acuerdo con las indicaciones de estilo que se contengan en el fichero de
estilo \ltr MiEstilo.bst- y se insertará en el lugar del documento en el que
se encuentre \cmd bibliography-. Las instrucciones de estilo controlarán
asimismo el tipo de etiqueta identificativa que se asignará a las obras
incluidas en la lista de referencias. Si queremos usar más de una base de
datos podemos indicarlas, separadas por comas, como argumento de \cmd
bibliography-. El efecto de esto último será que las distintas bases de
datos indicadas se concatenerán en el orden en el que se
indicaron\footnote{Lo que tiene importancia, porque en los ficheros \tpf
bib- hay utilidades que sólo funcionan si el orden en el que ciertos
elementos se encuentran dentro del fichero es el correcto. Por ejemplo,
las abreviaturas deben estar definidas antes de ser usadas, de modo que si
tenemos un fichero que recoja una serie de abreviaturas para \btx- y una
base de datos que las use, siempre habrá que indicar el fichero de
abreviaturas antes que la base de datos.}.
\end{enumerate}
\subsubsection*{Nombres de ficheros y directorios:}
\label{sec:nombres-de-ficheros}
El argumento de \cmd bibliography- y el de \cmd bibliographystyle- es el
nombre de un fichero. Ambos nombres deben indicarse sin especificar la
extensión, pues se asume que esta será la asignada al tipo de fichero de que
se trate. De hecho \btx- no funciona correctamente cuando el nombre de la
base de datos no tiene la extensión \tpf bib-, ni tampoco cuando en dicho
nombre existe un espacio en blanco o algún carácter no anglosajón como eñes o
vocales acentuadas\footnote{Así ocurre en mi sistema. Es posible que en otros
sistemas operativos no exista este problema, aunque creo que ocurrirá lo
mismo, al menos en lo relativo a la extensión de los ficheros; porque \cmd
thebibliography- se limita a copiar en el fichero \tpf aux- el texto que
recibe como argumento, y \btx- le añade a dicho texto la extensión \tpf
bib-, salvo en el caso de que ya termine así.}.
Los ficheros, el de bibliografía y el de estilo, deben encontrarse en el
directorio de trabajo (el mismo en el que se encuentre el documento
principal), o en alguno de los directorios en los que \ltx- busca por defecto,
los cuales varían dependiendo de la distribución de \ltx- concreta de que se
disponga\footnote{\label{nota:cnf}En \ltr web2c-, que es la distribución de
\ltx- estándar para sistemas Unix/Linux, el árbol de ficheros de \TeX{} se
encuentra en \ltr /usr/share/texmf- Allí hay un fichero denominado \ltr
texmf.cnf- en el que se almacenan las variables que controlan las rutas de
búsqueda por defecto de \ltx- y sus programas auxiliares. Aunque a veces
dicho fichero se encuentra en el directorio \ltr web2c-, o en \ltr
/etc/texmf/-. En dicho fichero se encuentran las dos variables que afectan
a los directorios relativos a \btx-: BIBINPUTS (directorios en los que se
buscarán los ficheros \tpf bib-) y BSTINPUTS (directorios en los que se
buscarán los ficheros de estilo). }. Si los ficheros que queremos usar no
están en alguno de estos directorios deberemos incluir, junto con el nombre
del fichero, la ruta de acceso al mismo, en cuyo caso para dicha ruta se
aplican las mismas reglas que para el nombre de los ficheros: no podrá
contener espacios en blanco ni caracteres no anglosajones.
\paragraph{Contenido de la lista de referencias a generar:\\[\baselineskip]}
\label{sec:contenido-de-la}
Las características \emph{formales} y de ordenación de la lista bibliográfica
que se generará, dependen del estilo concreto usado, y se explican en la
sección \ref{sec:los-estil-bibl}. Aquí me concentraré exclusivamente en los
siguientes dos aspectos de la misma:
\begin{description}
\item[Qué referencias se incluyen en la lista:] En ella se contendrán todas
las referencias bibliográficas que, a lo largo de nuestro documento, se
hayan referenciado mediante los comandos \cmd cite- y \cmd nocite-:
\begin{itemize}
\item El comando \cmd cite[DatosAdicionales]\{clave\}- produce un doble
efecto. En primer lugar, la referencia bibliográfica identificada en la
base de datos mediante la clave recibida como parámetro, se incluirá en la
lista bibliográfica. En segundo lugar, en el punto del documento donde se
encontrara el comando, se imprimirá la etiqueta asignada a tal referencia
en la lista de referencias junto con los datos adicionales que
eventualmente hayamos incluido en el argumento opcional del comando.
\item El comando \cmd nocite\{clave\}- produce el primero de los efectos
indicados, pero no el segundo, es decir: la obra identificada por la clave
será incluida en la lista bibliográfica final, y en ella se le asignará
asimismo una etiqueta (como a todas las obras de la lista), pero en el
lugar del documento en el que se encuentra el comando \cmd nocite- no se
imprimirá nada.
\end{itemize}
Ambos comandos pueden recibir, como parámetro, las claves de varias
referencias distintas, separadas mediante comas. Y en el caso concreto de
\cmd nocite-, si se escribe \cmd nocite\{*\}- el efecto será incluir en la
lista bibliográfica final todas las referencias bibliográficas incluidas en
la base de datos.
\item[Qué título tendrá la lista de referencias:] Dependiendo del tipo de
documento de que se trate, el título de la lista de referencias está
controlado por dos variables de nombre distinto\footnote{Lo que, en mi
opinión, es una inconsistencia del sistema. El paquete \ltr chbibref-
incluye un comando que permite cambiar el título de la lista de
referencias con independencia de que se trate de un documento tipo \ltr
book- o de un documento tipo \ltr article-.}. En documentos tipo \ltr
book- para cambiar el título de la lista debe modificarse el comando \cmd
bibname-, mientras que en documentos tipo \ltr article- el comando \ltx- que
hay que modificar es \cmd refname-. El paquete \ltr babel-, por otra parte
asigna a cada uno de estos comandos un valor dependiente del idioma. En
español los nombres son ``Bibliografía'' para los libros y ``Referencias''
para los artículos.
Si, por ejemplo, deseamos que la lista de referencias se titule
``Bibliografía citada'' y nuestro documento es de tipo \ltr book- tendremos
incluir en el cuerpo de nuestro documento\footnote{Y es que, según mi
experiencia, esta orden no produce efectos si se incluye en el preámbulo.
Posiblemente por la interacción que la carga del paquete \ltr babel-
produce.} la siguiente orden:
\verb|\renewcommand{\bibname}{Bibliograf\'ia citada}|
Asimismo, si se desea que en el índice de contenido de nuestro documento
aparezca una entrada para la bibliografía, hay que incluirla a mano mediante
la orden \cmd addscontentline- de \ltx-\footnote{El paquete \ltr tocbibind-
hace que los índices y la lista de referencias se incluyan automáticamente
en la tabla de contenido.}, la cual debe insertarse \emph{antes} de \cmd
bibliography-, ya que si se inserta detrás, en el índice del documento
aparecerá como página de la bibliografía la página en la que esta termina, y
no la página en la que empieza\footnote{Véase más adelante en la sección
\ref{sec:elementos-preamble}, a propósito de los elementos \ltr @preamble-
de los ficheros \tpf bib-, cómo podemos incluir en un fichero \tpf bib- el
código necesario para cambiar automáticamente el título a la lista de
referencias y asegurarnos de que se incluye en la tabla de contenido.}.
\end{description}
\subsection{Cómo generar la lista de referencias bibliográficas}
\label{sec:como-generar-la}
Una vez que nuestro documento (llamémosle \ltr MiDoc.tex-) está preparado, en
los términos que se acaban de exponer, debemos seguir los siguientes pasos:
\begin{enumerate}[1º]
\item Compilar con \ltx- nuestro documento \tpf tex-. Ello hará que se genere
un fichero de extensión \tpf aux-, en el que se incluirá información sobre
la base de datos a usar, el fichero de estilo a usar, y las referencias
bibliográficas que hay que incluir en la lista de referencias.
\item Ejecutar, desde la línea de comandos\footnote{Numerosas herramientas
para \ltx- incorporan la posibilidad de ejecutar desde el mismo editor
tanto \ltx- como cualquiera de sus programas auxiliares, en cuyo caso no
sería preciso ejecutar \btx- \emph{desde la línea de comando}.}, la orden
\ltr bibtex MiDoc-. Ello hará que \btx- lea el fichero \tpf
aux-\footnote{De hecho \btx- se ejecuta sobre el fichero \tpf aux-, y no
sobre el fichero \tpf tex-. Este detalle puede escapársenos porque \btx-
no exige que se escriba la extensión. Pero si en el comando incluimos la
extensión comprobaremos que \ltr bibtex MiDoc.tex- generaría un error,
mientras que \ltr bibtex MiDoc.aux- funcionaría correctamente.}, generado
por la anterior compilación del documento, extrayendo de él la información
que necesita para trabajar: qué base de datos debe usar, qué estilo, y qué
referencias hay que buscar en la base. Y así, tras extraer de la base de
datos los registros precisos, y formatearlos de acuerdo con el estilo
indicado, \btx- genera un fichero de extensión \tpf bbl- en el que se
contienen los comandos de \ltx- necesarios para escribir la lista de
referencias bibliográficas que hay que insertar en el documento principal.
\btx- genera también un fichero adicional, de extensión \tpf blg- que es un
fichero \tpf log-\footnote{Es decir: en él se almacenan todas las salidas
generadas por \btx-, incluyendo los mensajes de advertencia o error. En
caso de que algo no haya funcionado como esperábamos es imprescindible la
consulta de este fichero para ver qué es lo que ha podido fallar.}.
\item Compilar de nuevo el documento principal con \ltx-. En esta segunda
compilación, al leer la orden \cmd bibliography-, se insertará en su lugar
el contenido del fichero \tpf bbl- generado en el paso anterior. Asimismo la
nueva compilación reescribe el fichero \tpf aux-, añadiendo a la información
que ya existía en él la generada ahora, que es más completa pues incluye los
datos de la lista bibliográfica final que se acaba de insertar en el
documento.
\item Esta última información es usada en una nueva compilación con \ltx- para
escribir correctamente los rótulos que hay que colocar en lugar de los
comandos \cmd cite-. Y eventualmente puede ser necesaria una nueva
compilación: cuando alguno de los campos de la base de datos contenga algún
comando de \ltx- que implique el uso de referencias cruzadas. En particular,
el comando \cmd cite-.
\end{enumerate}
¿Parece complicado? No lo es. Lo que ocurre es que lo he explicado incluyendo
detalles sobre cómo interactúan entre sí los distintos ficheros generados
durante las compilaciones de \ltx-. Simplificando y sin entrar en tales
detalles, lo que hay que hacer es, tras haber indicado en el documento
principal el nombre de la base de datos y del estilo, realizar una primera
compilación con \ltx-, ejecutar \btx- y luego compilar de nuevo con \ltx- dos
veces (o, en ciertos casos, tres). Esta doble (o triple) compilación final no
es ninguna especialidad de \btx-, sino que es requerida por \ltx- siempre que
trabaja con referencias cruzadas. Asimismo habrá que repetir el proceso cada
vez que incorporemos a nuestro documento principal un comando que suponga una
modificación de lista bibliográfica final, bien por cambiarle el estilo, bien
por incluir o eliminar referencias bibliográficas.
\section{Las bases de datos bibliográficas}
\label{sec:las-bases-de}
\subsection{Reglas generales sobre la escritura y codificación de los ficheros
\tpf bib-}
\label{sec:ficheros-.bib-1}
Los ficheros \tpf bib- usados por \btx- son ficheros de texto sometidos a las
siguientes reglas generales:
\begin{enumerate}
\item El tratamiento de los espacios en blanco, tabuladores y saltos de línea
es similar al que estos caracteres reciben en \ltx-\footnote{Hay, no
obstante, una diferencia, y es que en \ltx- una línea en blanco es
relevante pues sirve para indicar un cambio de párrafo. En los ficheros
\tpf bib-, una línea en blanco es tan irrelevante como un salto de línea
simple.}. Son simples delimitadores de palabras y la regla es que da igual
cuántos delimitadores haya entre dos palabras\footnote{Podríamos, en teoría,
escribir todo el fichero \tpf bib- como una sola e inmensa línea en la que
las palabras estuvieran separadas entre sí por un solo espacio en blanco.
Pero tal fichero sería, para los seres humanos, más difícil de leer que
otro en el que hayamos usado los tabuladores, espacios y saltos de línea
para mejorar el aspecto visual (llamado \emph{legibilidad}) del fichero.}.
\item \btx- no distingue entre mayúsculas y minúsculas\footnote{La no
distinción entre mayúsculas y minúsculas se aplica a los elementos de
\btx- (nombres de registros o campos, abreviaturas, etc), pero no al
contenido de los campos de los registros. }.
\end{enumerate}
\subsubsection*{Uso de caracteres españoles en los ficheros \tpf bib-}
\label{sec:uso-de-caracteres}
La versión original de \btx- no era capaz de trabajar con caracteres no
anglosajones (como eñes o vocales acentuadas). En la actualidad existe una
versión de \btx- que sí puede hacerlo. No obstante se suele recomendar que
para representar esos caracteres que requieren 8 bits se sigan las reglas
generales de \ltx- y así, por ejemplo, en lugar de escribir \ltr Pág-
escribamos ``\verb|P\'ag|''\footnote{El problema de representar caracteres no
anglosajones directamente en un fichero de texto, es que estos caracteres no
están incluidos en la tabla ASCII que todos los ordenadores reconocen, sino
en otras tablas o \emph{codificaciones}. Y, desgraciadamente para los
hablantes de idiomas distintos al inglés, existen \emph{muchas}
codificaciones distintas para representar los mismos caracteres: ``utf8'',
``latin1'', ``cp850'', etc.; y para trabajar con un documento que contenga
este tipo de caracteres es preciso saber exactamente qué codificación se usó
para almacenarlo pero, desgraciadamente, los ficheros de texto no guardan
información sobre su propia codificación. Además, en el caso concreto de los
ficheros \tpf bib-, el uso de una codificación u otra puede afectar a la
ordenación alfabética de los registros almacenados en la base de datos.}. Y
aunque es cierto que escribir de ese modo nuestro idioma es incómodo, hay
herramientas que lo facilitan\footnote{Como, por ejemplo \ltr pybliographer-,
una utilidad de gestión de ficheros \tpf bib- para sistemas Unix/Linux, en
la que podemos teclear normalmente cualquier carácter, pero antes de guardar
el fichero, los caracteres no anglosajones son convertidos a la secuencia
\ltx- necesaria para representarlos. De esta herramienta se vuelve a hablar
en la sección \ref{sec:herr-graf}.}.
En todo caso, si decidimos introducir caracteres no anglosajones directamente
en el fichero \tpf bib-, debemos tener en cuenta que como el contenido de este
fichero puede eventualmente incorporarse a un documento \tpf tex-, si en ambos
el tipo de codificación no coincidiera se generaría un error. Por ello, para
usar estos caracteres deben cumplirse los siguientes requisitos:
\begin{enumerate}[a)]
\item Debemos guardar el fichero \tpf bib- con la misma codificación con la
que vayamos a guardar el fichero \tpf tex- en el que se hará uso de la base
de datos.
\item En el fichero \tpf tex- debe usarse la orden \cmd
usepackage[cod]\{inputenc\}- donde ``cod'' significa una cadena
representativa de la codificación usada en el fichero \tpf bib- (y en el
\tpf tex-): \ltr utf8-, \ltr latin1-, etc.
\item Debemos asegurarnos de que estamos usando la versión de \btx- de 8 bits.
\end{enumerate}
\subsection{Registros y campos bibliográficos}
\label{sec:registros-y-campos}
Un fichero \tpf bib- almacena una base de datos bibliográfica. En toda base de
datos hay dos nociones fundamentales:
\begin{description}
\item[Campo:] Un dato aislado y básico. Por ejemplo, el año de edición de un
libro, o el nombre del autor de un artículo de revista, o la página del
libro de las actas de un congreso en donde empieza una determinada
ponencia...
\item[Registro:] Un conjunto de campos que permiten describir de forma
completa un ejemplar del tipo de realidades a que se refiere la base de
datos. En nuestro caso, tratándose de una base de datos bibliográfica, cada
registro describe una referencia bibliográfica concreta (y completa).
\end{description}
Es decir: todos los campos que contienen datos de una misma referencia
bibliográfica, constituirán un registro. Y la base de datos, en sí misma
considerada, no será sino un conjunto de registros, cada uno de los cuales
consta de varios campos.
\subsubsection{Formato general de los registros y los campos}
\label{sec:formato-general-de}
En los ficheros \tpf bib- se usa el carácter ``@'', seguido de una palabra
representativa del tipo de registro de que se trate, para indicar que empieza
un registro. Asimismo se usan llaves para delimitar el contenido del registro.
En consecuencia el formato de un registro es el siguiente:
{\small
\begin{verbatim}
@TipoRegistro{clave,
Campo1,
Campo2,
...
CampoN,
}
\end{verbatim}
}
Donde \emph{TipoRegistro} es el nombre que identifica a un concreto tipo de
registro, y puede escribirse indistintamente en mayúsculas o minúsculas. En
el contenido del registro, hay básicamente dos elementos:
\begin{description}
\item[La clave de identificación del registro] es siempre su primer elemento.
Se usa para distinguir a un registro concreto del resto de los registros de
la base de datos, y por ello en una misma base de datos no debe haber dos
registros que tengan claves iguales, y tampoco deben unirse o manejarse en
un mismo documento dos o más bases de datos si ello implica que alguna clave
vaya a repetirse\footnote{Digo que no \emph{deben} usarse claves iguales; no
que no pueda hacerse. Ello es porque \btx- no genera ningún error cuando
en un fichero dos o más registros tienen la misma clave. Simplemente, en
tal caso, toma en consideración exclusivamente la primera aparición de la
clave, ignorando las restantes. Y, a tales efectos, téngase en cuenta que
para el control de las claves \btx- no distingue entre mayúsculas y
minúsculas.}. La clave puede consistir en cualquier combinación de
letras, números y ciertos signos de puntuación. No se admiten ni los
caracteres no anglosajones (vocales acentuadas y los caracteres ``¡¿ñÑçÇ'')
ni ciertos signos de puntuación como la coma (que se usa para indicar que la
clave ha terminado).
En las citas hechas en el documento \tpf tex- habrá que usar esta clave para
identificar al registro al que se quiere hacer referencia.
\item[Los campos:] A \btx- le es indiferente en qué orden se escriban los
campos de un determinado registro, así como si se usan cero, uno o más
saltos de línea entre dos campos.
\end{description}
Para escribir un campo dentro de un registro podemos usar indistintamente
cualquiera de los dos formatos siguientes:
{\small
\begin{verbatim}
NombreCampo = { Contenido },
NombreCampo = " Contenido ",
\end{verbatim}
}
En ambos casos intervienen los siguientes elementos:
\begin{description}
\item[Nombre del campo:] Normalmente será uno de los campos, obligatorios u
opcionales, previstos para el tipo de registro de que se trate. Si el
nombre no coincide con ninguno de los que el estilo ha previsto para el tipo
de registro que sea, su contenido será ignorado. Si el mismo campo se
introduce más de una vez en el mismo registro, sólo será tomada en
consideración su primera aparición.
\item[Delimitadores de contenido:] Se exige el uso de delimitadores para el
contenido del campo siempre que este no tenga un valor puramente numérico o
consista en una abreviatura previamente definida como tal mediante la
función \ltr @String- (véase la sección \ref{sec:uso-de-abreviaturas}).
Como delimitadores se pueden usar las llaves o las comillas dobles. La
diferencia entre usar unas u otras es sólo una: cuando usamos comillas
dobles como delimitadores, dentro de la cadena delimitada no podemos usar
comillas dobles, salvo que las encerremos entre llaves. Por ejemplo:
{\small
\begin{verbatim}
title = {Comentarios a "El Buscón" de Quevedo},
title = "Comentarios a {"}El Buscón{"} de Quevedo",
\end{verbatim}
}
servirían para incluir un título que a su vez incluya dobles comillas.
\item[El contenido de los campos:] cualquier cosa que se incluya en un campo
puede, eventualmente, incorporarse a un documento \ltx-, y por lo tanto:
\begin{enumerate}
\item Es posible incluir, como contenido de un campo, comandos de \ltx-,
aunque ello sólo está recomendado en casos muy especiales, y nunca es una
buena idea que esos comandos sean de \emph{formato} de texto, pues la idea
que está detrás de \btx- es que el formateo de las listas de referencias
se haga depender del estilo usado.
\item Dentro del contenido del campo hay que respetar las reglas generales
de \ltx-, no usar sus caracteres reservados (salvo cuando se trate de un
uso legal) y recordar que \ltx-, a diferencia de \btx-, sí distingue entre
mayúsculas y minúsculas.
\item Las llaves que pueda haber en un campo deben estar equilibradas. Es
decir: toda llave abierta debe ser cerrada. Y ello se aplica incluso para
llaves que se deben imprimir\footnote{Lo que se debe a que \btx- no
interpreta los comandos de \ltx-, por lo tanto si en un campo se lee el
texto \ltr \textbackslash\{-, \btx- no ve un caracter imprimible, sino
una llave abierta que debe ser cerrada dentro del campo. Por ello en el
raro caso de que debamos incluir como contenido de un campo el carácter
``\{`` (o ``\}'') habría que usar el comando \ltx- \cmd leftbrace- (o
\cmd rightbrace-).}.
\end{enumerate}
Existen reglas especiales para el contenido de algunos campos concretos,
pero estas se exponen más adelante, cuando se explican los campos
reconocidos por los estilos estándar de \btx-.
\item[La coma final:] Indica que el contenido del campo ha terminado y
\emph{puede} empezar otro campo distinto. No es obligatoria en el último
campo de un registro; pero no se produce ningún error por el hecho de
introducirla también en él.
\end{description}
Desde el punto de vista de un concreto estilo bibliográfico, los campos
presentes en un registro se incluirán en uno de los siguientes grupos:
\begin{description}
\item[Campos obligatorios:] Son aquellos que el estilo en cuestión espera
encontrar en un determinado tipo de registro, de manera que si en un
registro concreto alguno de ellos no está presente, se generará una
advertencia en la salida estándar y en el fichero \tpf blg- generado por
\btx-. En algunas ocasiones la falta de uno de estos campos puede provocar
un error, aunque eso no debería ocurrir en un estilo bien diseñado.
\item[Campos opcionales:] Son aquellos para los que el estilo en cuestión ha
previsto algún tipo de acción, pero se ha previsto también su posible
ausencia, y esta no tiene especial trascendencia.
\item[Campos ignorados:] Cualquier otro campo presente para el que el estilo
en cuestión no ha previsto ningún tipo de acción.
\end{description}
\subsubsection{Tipos de registros bibliográficos}
\label{sec:registr-bibl}
Las referencias bibliográficas pueden ser de distinta naturaleza, y en
consecuencia se distinguen diferentes tipos de registros. A continuación
expondré los nombres de los distintos tipos de registro previstos en \btx-,
indicando para cada uno de ellos sus campos obligatorios y opcionales
específicos\footnote{Con \emph{específicos} quiero decir que, para evitar
repeticiones, en la relación que sigue no se ha incluido en cada uno de los
registros los nombres de dos campos opcionales que están presentes en todos
los registros, sean del tipo que sean: \ltr key- y \ltr note-. }. Para que
\btx- pueda reconocer adecuadamente los registros y campos, los nombres de
estos deben ser usados en inglés, y por ello los mencionaré en ese idioma.
Entre paréntesis añadiré, para los tipos de registro, lo que significa su
nombre. En la próxima sección se explica para qué sirve cada campo.
\begin{description}
\item[Article (artículo):] Un artículo publicado en una revista. Campos
obligatorios: \texttt{author}, \texttt{title}, \texttt{journal} y
\texttt{year}. Opcionales: \texttt{volume}, \texttt{number}, \texttt{pages}
y \texttt{month}.
\item[Book (libro):] Un libro \emph{normal}. Campos obligatorios:
\texttt{author} o \texttt{editor}, \texttt{title}, \texttt{publisher} y
\texttt{year}. Opcionales: \texttt{volume} o \texttt{number},
\texttt{series}, \texttt{address}, \texttt{edi\-tion} y \texttt{month}.
\item[Booklet (folleto):] Un trabajo impreso y distribuido pero sin que conste
la editorial o institución que lo patrocina. Campo obligatorio:
\texttt{title}. Campos opcionales: \texttt{author}, \texttt{howpublished},
\texttt{address}, \texttt{month} y \texttt{year}.
\item[Conference (conferencia):] Idéntico a InProceedings. Se incluye
exclusivamente para mantener la compatibilidad con el formato \emph{Scribe}.
\item[InBook (dentro de un libro):] Una parte de un libro, que puede ser un
capítulo (o sección o similar) o un rango de páginas, o ambas cosas. Campos
obligatorios: \texttt{author} o \texttt{editor}, \texttt{title},
\texttt{chapter} y/o \texttt{pages}, \texttt{publisher} y \texttt{year}.
Opcionales: \texttt{volume} o \texttt{number}, \texttt{series},
\texttt{type}, \texttt{address}, \texttt{edition} y \texttt{month}. El
campo \texttt{title}, en estas referencias, se refiere al título del libro,
no al título del capítulo o grupo de páginas a que se refiere el registro.
\item[InCollection (en una colección):] Una parte de un libro que tiene su
propio título. Campos obligatorios: \texttt{author}, \texttt{title},
\texttt{booktitle}, \texttt{publisher} y \texttt{year}. Opcionales:
\texttt{crossref}, \texttt{editor}, \texttt{volume} o \texttt{number},
\texttt{series}, \texttt{type}, \texttt{chapter}, \texttt{pages},
\texttt{address}, \texttt{edition} y \texttt{month}.
\item[InProceedings (en las actas):] Una conferencia, artículo o ponencia en
las actas de un congreso o, o, en general, en un libro que agrupe varios
trabajos de autores distintos y con títulos independientes. Campos
obligatorios: \texttt{author}, \texttt{title}, \texttt{booktitle},
\texttt{year}. Campo opcionales: \texttt{crossref}, \texttt{editor},
\texttt{volume} o \texttt{number}, \texttt{series}, \texttt{pages},
\texttt{address}, \texttt{month}, \texttt{organization} y
\texttt{publisher}.
\item[Manual:] Documentación técnica. Campo obligatorio: \texttt{title}.
Campos opcionales: \texttt{author}, \texttt{organization}, \texttt{address},
\texttt{edition}, \texttt{month} y \texttt{year}.
\item[MasterThesis (Proyecto fin de carrera):] Lo que en el mundo académico
norteamericano se denomina ``\emph{Master Thesis}'' o ``\emph{Minor
Thesis}'' y que en España equivale a las llamadas ``\emph{Tesinas de
licenciatura}'' y a los \emph{Proyectos de fin de carrera}; es decir: un
trabajo de investigación menor, leído en una institución académica. Campos
obligatorios: \texttt{author}, \texttt{title}, \texttt{school} y
\texttt{year}. Opcionales: \texttt{type}, \texttt{address} y
\texttt{month}.
\item[Misc (miscelánea):] Este tipo está previsto para ser usado cuando
ninguno de los otros tipos encaje bien. Su peculiaridad es que carece de
campos obligatorios. Campos opcionales: \texttt{author}, \texttt{title},
\texttt{howpublished}, \texttt{month} y \texttt{year}.
\item[PhdThesis (tesis doctoral):] Lo que en el mundo académico norteamericano
se denomina ``\emph{PhD Thesis}'', ``\emph{Major Thesis}'' y que equivale a
las tesis doctorales españolas, es decir: un trabajo de investigación
original y extenso que permite obtener el título de doctor que constituye la
más alta graduación académica existente. Campos obligatorios:
\texttt{author}, \texttt{title}, \texttt{school} y \texttt{year}.
Opcionales: \texttt{type}, \texttt{address} y \texttt{month}.
\item[Proceedings (libro de actas):] El libro de actas donde se encuentra una
conferencia o ponencia en un congreso, aunque yo lo uso con carácter general
para todos aquellos libros que agrupan trabajos, cada uno de ellos con
distintos autores. Campos obligatorios: \texttt{title} y \texttt{year}.
Opcionales: \texttt{booktitle}, \texttt{editor}, \texttt{volume} o
\texttt{number}, \texttt{series}, \texttt{address}, \texttt{month},
\texttt{organization} y \texttt{publisher}.
\item[TechReport (informe técnico):] Un informe publicado por un centro
académico o institución similar, normalmente numerado dentro de una serie.
Campos obligatorios: \texttt{author}, \texttt{title}, \texttt{institution} y
\texttt{year}. Campos opcionales: \texttt{type}, \texttt{number},
\texttt{address} y \texttt{month}.
\item[Unpublished (no publicado):] Un documento que tiene un autor y un título
pero que formalmente no ha sido publicado. Campos obligatorios:
\texttt{author}, \texttt{title} y \texttt{note}. Opcionales: \texttt{month}
y \texttt{year}.
\end{description}
A los campos mencionados hay que añadir, en todos los tipos de registro, un
campo \texttt{key} y un campo \texttt{note}, ambos opcionales, salvo en las
referencias tipo \ltr Unpublished-, donde \texttt{note} es obligatorio.
\subsubsection{Significado de los distintos campos bibliográficos}
\label{sec:campos-de-datos-1}
\begin{description}
\item[Address:] Este campo está pensado para almacenar la dirección de la
editorial o institución responsable de una publicación. Es siempre opcional
y conviene usarlo, sobre todo, cuando las editoriales sean pequeñas o poco
conocidas. En la mayor parte de los casos, además, no se incluye aquí la
dirección completa, sino exclusivamente la ciudad donde reside la editorial.
Hay especialidades científicas donde es costumbre identificar las obras
publicadas más bien por la ciudad que por la editorial, en cuyo caso puede
ser buena idea indicar la ciudad no en el campo \ltr address-, sino en \ltr
publisher-.
\item[Author:] Como este es el campo más complejo, dividiré su explicación en
varios apartados:
\paragraph{La autoría de las referencias:}
\label{sec:la-autoria-de}
Toda referencia bibliográfica ha de tener una \emph{autoría} y en tal
sentido, en todos los tipos de registros hay algún campo dirigido a
recogerla. Ese campo es normalmente \ltr author-, aunque:
\begin{enumerate}[a)]
\item En \ltr Proceedings- la autoría viene recogida por el campo \ltr
editor-, porque este tipo de registro recoge un libro sin autor
propiamente dicho, que recopila o agrupa varios trabajos que sí tienen
autor.
\item En los tipos \ltr Book- e \ltr InBook-, el campo \ltr author- puede
ser sustituido por \ltr editor-. Si se especifican ambos campos
simultáneamente, el contenido del campo \ltr editor- es ignorado.
\item En las referencias de tipo \ltr Manual-, a falta de campo \ltr
author-, la autoría se atribuirá al campo \ltr organization-.
\end{enumerate}
En cualquiera de estos casos, la recomendación es que el nombre del autor se
escriba tan completo como se conozca, es decir: que no se usen iniciales
para sustituir al nombre propio, ya que ese efecto podemos obtenerlo
mediante el estilo bibliográfico. Pero si en la base de datos no consta el
nombre completo no hay estilo bibliográfico que sea capaz de adivinarlo.
\paragraph{Varios autores:}
\label{sec:caso-en-el}
Si hay más de un autor, para separar unos de otros hay que usar
necesariamente la palabra ``and'' para que \btx- sepa donde empieza un autor
y donde acaba otro. Si usamos la conjunción española equivalente, ``y'',
\btx- no formateará correctamente el contenido de este campo porque no sabrá
separar a los distintos autores. El hecho de usar ``and'' dentro del fichero
\tpf bib- no significa que en nuestros documentos se vaya a usar dicha
palabra, pues eso depende del fichero de estilo.
Si \emph{dentro} del nombre de uno de los autores aparece la palabra
``and'', hay que encerrar entre llaves (distintas de las genéricas llaves
para delimitar el contenido del campo) el nombre completo. Así, en los
siguientes ejemplos:
{\small
\begin{verbatim}
author = "{McArthur And Inc.}",
author = {{McArthur And Inc.}},
author = {Thomas R. Delan And {McArthur And Inc.}},
\end{verbatim}
}
El nombre que contiene, como parte de él, la palabra ``And'' va siempre
entre llaves, con independencia de qué tipo de delimitador se haya escogido
para el campo y de si hay o no mas nombres.
\paragraph{Distinción entre nombre y apellidos:}
\label{sec:dist-entre-nombre}
El nombre de una persona tiene varias partes de las que las principales (en
los nombres españoles) son el nombre propio (también llamado nombre de pila,
o nombre a secas) y los apellidos. \btx- descompone los nombres para
determinar qué parte de los mismos hay que atribuir al nombre propio, cuál a
los apellidos, y cual a las restantes partes que \btx- reconoce en un
nombre\footnote{En realidad \btx- descompone los nombres en cuatro partes:
Nombre de pila (en inglés, \emph{First name)}, Partícula de separación,
Apellidos (en inglés \emph{Last name} o \emph{Surname} y partícula
``Jr.'', muy habitual en los nombres anglosajones. En las líneas que
siguen he omitido lo referente a esta última partícula, inexistente fuera
del mundo anglosajón. No obstante si en nuestra base de datos debe
introducirse algún nombre propio que incluya dicha partícula, normalmente
esta será reconocida por \btx- y su presencia no alterará las reglas que a
continuación se exponen.}. Para ello se siguen las siguientes reglas:
\begin{enumerate}[1ª.]
\item Si el texto introducido consta de una sola palabra, se asignará al
apellido.
\item \label{Regla:2} Si consta de dos o más palabras, se considerará que la
última es el apellido y el resto es el nombre de pila. Esta regla se basa
en que fuera de la Península Ibérica (y paises de tradición cultural
ibérica), es usual tener un solo apellido y varios nombres de pila.
\item En el caso de que el apellido conste de varias palabras y alguna de
las palabras interiores estuviera escrita con minúsculas, se considerará
que tal palabra es una partícula que separa el nombre del apellido por lo
que se asignará al apellido todo lo que esté detrás de tal partícula, y al
nombre lo que esté antes. Y así, por ejemplo, \btx- interpretará
correctamente el nombre
{\small\verb|Miguel de Cervantes Saavedra|}
siempre y cuando escribamos el ``de'' y lo hagamos en minúsculas. Pero si
escribimos:
{\small
\begin{verbatim}
Miguel Cervantes Saavedra
Miguel De Cervantes Saavedra
miguel de cervantes saavedra
\end{verbatim}
}
como \btx- no podrá identificar la partícula aplicará la regla
\ref{Regla:2}, y considerará que ``Saavedra'' es el apellido y el resto
nombre propio\footnote{Por ello si queremos que en nuestra lista
bibliográfica las partículas se impriman en mayúsculas, pero que \btx-
las reconozca correctamente, habría que escribir: ``\texttt{Miguel
\{\textbackslash uppercase\{d\}e\} Cervantes Saavedra}''.}.
\item Si solo conocemos el apellido, y este consta de varias palabras, para
evitar que las primeras se asignen al nombre de pila, hay que encerrar
todo el nombre entre llaves (además de las delimitadoras del campo). Por
ejemplo:
{\small\verb|author = "{Ortega y Gasset}",|}
\item Si en un nombre se usa una coma, \btx- asignará al apellido todo lo
que esté antes que la coma, y al nombre propio todo lo que esté detrás.
Esta regla prevalece sobre todas las anteriores.
\end{enumerate}
Para nombres españoles, con dos apellidos, lo más seguro es usar una coma
entre el apellido y el nombre para impedir que \btx- realice malas
interpretaciones. Porque aunque en ocasiones la partícula nos puede ayudar
(como en ``Miguel de Cervantes Saavedra'') la mayoría de los nombres carecen
de partícula, y en muchas ocasiones la partícula produciría un error, como
en ``Félix Lope de Vega y Carpio''.
\item[Booktitle:] Es el título de un libro, parte del cual está siendo citado.
Se usa, por lo tanto en las referencias que sirven para citar una parte de
un libro que tenga un título distinto del título del libro, es decir: \ltr
InCollection- e \ltr InProceedings-. Este campo también está presente en las
referencias de tipo \ltr Proceedings-, aunque en ellas se usa exclusivamente
para las referencias cruzadas (véase la sección \ref{sec:refer-cruz-entre}).
A este campo le son de aplicación las reglas que más adelante se exponen
sobre el campo \ltr title-.
\item[Chapter:] Contiene un número de capitulo, sección o unidad estructural
de un libro. Se usa en las referencias de tipo InBook e InCollection para
identificar una parte de un libro.
\item[Crossref:] Contiene una etiqueta en la base de datos para generar
referencias cruzadas internas (véase la sección \ref{sec:refer-cruz-entre}).
\item[Edition:] Se trata del número de edición de un libro. Es siempre un
campo opcional; y de hecho sólo suele rellenarse cuando no se trata de la
primera edición. Los estilos estándar presuponen que se escribirá con una
palabra en mayúsculas (y en inglés). Por ejemplo ``Second'', aunque si se
escribe en español (``Segunda''), o con un ordinal expresado en forma
numérica (``2ª''), no pasa nada\footnote{En los estilos estándar detrás de
este campo se añade la palabra ``edition'' y, si están españolizados, la
palabra ``edición'', por ello no conviene usar directamente un número que
no sea un ordinal, ya que entonces la referencia contendría la expresión
``2 edición'', que no es correcta.}. Lo que sí es importante, para
generar listas bibliográficas consistentes, es que siempre lo escribamos del
mismo modo.
\item[Editor:] Este campo ya ha sido mencionado a propósito del campo
``author''. El editor de un libro es el que, sin ser su autor propiamente
dicho, lo impulsa y hace nacer. Esta figura es importante hasta el punto de
que sobre él recae la \emph{autoría} (a efectos de la base de datos) en
determinado tipo de obras como puede ser una antología, un estudio crítico
de alguna obra antigua, etc. Por ejemplo: una edición crítica de la poesía
barroca española, o el conocido ``\emph{Las mil mejores poesías de la lengua
castellana}''. Las reglas relativas a este campo son similares a las del
campo ``author''.
\item[Howpublished:] Este campo se usa en las referencias de tipo ``Booklet''
y ``Misc'' que recogen libros que no han sido publicados por una editorial o
institución ``normal''. En este campo puede indicarse cómo se llegó a
publicar la obra de que se trate. La primera palabra debe ir en mayúsculas.
\item[Institution:] Este campo existe exclusivamente en los informes técnicos
(referencias \ltr TechReport-) y recoge el nombre de la institución que ha
financiado el informe de que se trate.
\item[Journal:] Para artículos publicados en revistas este campo recoge el
nombre de la revista. En determinados campos del conocimiento existen
abreviaturas estándar para las revistas más conocidas, por lo que puede
usarse la abreviatura en lugar del nombre completo de la revista. Sobre el
uso de abreviaturas en los ficheros \tpf bib- véase la sección
\ref{sec:uso-de-abreviaturas}.
\item[Key:] Está disponible como campo opcional en todos los tipos de
referencias. Se usa en relación con la generación de etiquetas, en aquellos
estilos en los que estas se generan a partir del nombre del autor, como por
ejemplo ocurre en el estilo \ltr alpha-. En tales casos, el valor del campo
\ltr key- será usado para la generación de la etiqueta si no consta ningún
valor para el campo \ltr author-, incluso aunque si conste algún valor para
alguno de los campos que en ciertos tipos de referencias pueden suplir a
dicho campo (véase lo que, al explicar el campo \ltr author- se dijo sobre
la autoría, en pág. \pageref{sec:la-autoria-de}).
\item[Month:] En artículos de revista se usa para designar el mes en el que
salió el número que contiene dicho artículo. En otro tipo de trabajos el mes
en el que fueron publicados o terminados (para trabajos no publicados). La
documentación oficial de \btx- recomienda introducir este campo mediante
unas abreviaturas estándar en inglés\footnote{\label{meses}Se trata de: \ltr
jan-, \ltr feb-, \ltr mar-, \ltr apr-, \ltr may-, \ltr jun-, \ltr jul-,
\ltr aug-, \ltr sep-, \ltr oct-, \ltr nov- y \ltr dec-.}, en cuyo caso
usando la abreviatura, no habría que usar delimitadores para el campo (por
las razones que se explican cuando se habla de las abreviaturas en la
sección \ref{sec:uso-de-abreviaturas}).
En teoría aquí ocurre igual que en el campo \ltr author-, respecto de la
partícula ``and'' usada para separar entre sí a los distintos autores, y es
que aunque hayamos introducido el mes en inglés (o mediante una abreviatura
del nombre inglés), luego, usando el estilo bibliográfico correcto, en las
referencias que se inserten en nuestros documentos aparecerá el nombre en
español. Aunque, a diferencia de lo que ocurre con el campo \ltr author-,
si aquí introducimos la información directamente en español, no se produce
ningún error.
\item[Note:] Cualquier tipo de información adicional que no tenga cabida en el
resto de los campos\footnote{Yo lo he usado, por ejemplo, para recoger el
nombre de los traductores (en traducciones), o en ediciones que han sido
actualizadas por personas distintas del autor original, para recoger el
nombre de estos últimos, o en documentación electrónica, para recoger la
dirección de Internet donde se encuentra. Aunque para esto último es
preferible usar un campo adicional de nombre \ltr url-, pues existen
varios estilos no estándar para \btx- que preven la existencia de este
campo y son capaces de formatearlo correctamente. Incluso el paquete
makebst es capaz de generar automáticamente un estilo bibliográfico que
reconozca este campo. Véase la sección \ref{sec:makebst}.}. En los
estilos bibliográficos estándar el contenido de este campo se transcribe al
final de la referencia y su primera palabra debería empezar en mayúsculas.
\item[Number:] Puede tener distintos significados. En los informes técnicos
recoge el número de informe de que se trate. En artículos de revista se usa
en revistas cuyos distintos ejemplares se identifiquan mediante un
\emph{número}, o mediante un número y un volumen. En libros sólo se usa si
el libro forma parte de una serie o colección. En los registros de tipo \ltr
Book- y \ltr Proceedings- (así como en sus derivados: \ltr InBook-, \ltr
InCollection- e \ltr InProceedings-) el contenido de este campo sólo es
tomado en consideración si el campo \ltr volume- se ha dejado en blanco.
\item[Organization:] La organización que financia una conferencia o que
publica un manual. En los registros de tipo \ltr Manual- este campo designa
la \emph{autoría} si \ltr author- carece de contenido.
\item[Pages:] Se usa en artículos y en partes de libro para designar las
páginas concretas en las que un trabajo se encuentra. Los estilos estándar
de \btx- esperan que se pongan aquí las páginas inicial y final, separadas
por uno o dos guiones. De hecho estos estilos convierten el guión sencillo
en uno doble, que es el utilizado en \ltx- para designar intervalos de
páginas. Si se quiere indicar sólo la primera página, se utiliza el carácter
``+'' que significa ``desde esa página en adelante''. Como los estilos
estándar suponen que se trata de más de una página, en la lista
bibliográfica final, a veces al número aquí puesto se le añade la palabra
``páginas'' (\emph{pages}), o la abreviatura ``págs.'' (pp) en plural.
\item[Publisher:] La editorial encargada de la publicación de un libro. Su
contenido suele complementarse con el del campo \ltr address-.
\item[School:] Nombre de la Escuela, Facultad o Instituto en donde se ha
confeccionado un trabajo académico (tesis doctoral o tesina de
licenciatura).
\item[Series:] En libros que forman parte de una colección, se usa para
recoger el nombre de la misma.
\item[Title:] Es un campo presente en todos los tipos de referencias
bibliográficas, y es siempre obligatorio (salvo en las referencias de tipo
\ltr Misc-). Designa el título del trabajo al que nos estamos refiriendo,
salvo en las referencias tipo \ltr InBook-, donde designa el título del
libro del que forma parte el capítulo o rango de páginas al que nos estamos
refiriendo.
En teoría los estilos bibliográficos estándar \emph{normalizan} (o pueden
normalizar) el uso de las mayúsculas y minúsculas en los títulos. Y por ello
en las referencias generadas a partir de nuestra base de datos no siempre se
escribirán los títulos tal y como aparecen en la base de datos. Para
preservar una letra en mayúsculas hay que encerrarla entre llaves. Las
llaves pueden ponerse también alrededor de una o varias palabras. Esto es
especialmente importante si en el título se usan comandos de \ltx-, ya que
en ellos una alteración de las mayúsculas y minúsculas se traduciría en un
error.
\item[Type:] Este campo existe en \ltr InBook-, \ltr InCollection-\footnote{La
documentación oficial de \btx- y los textos que he leído coinciden en que
en los registros \ltr InCollection- el campo \ltr type- es opcional. Las
pruebas que yo he hecho me llevan a pensar que en estos registros este
campo es ignorado. }, \ltr MasterThesis-, \ltr PhdThesis- y \ltr
TechReport-. En los tres últimos tipos mencionados los estilos estándar
añaden a la referencia, como texto aclaratorio, el nombre del registro. Por
ejemplo: en una tesis doctoral, se escribe: ``\emph{Tesis doctoral}''. Si en
el campo \ltr type- hay algún texto, se usará este texto en lugar del
predeterminado. En los registros \ltr InBook-, aunque por defecto no se
escribe ningún texto, sí se escribirá lo que se diga en este campo. Por lo
tanto aquí puede escribirse una pequeña aclaración respecto del tipo de
trabajo de que se trata, como: ``Conferencia'', ``Disertación'', etc.
\item[Volume:] En artículos de revista se usa para indicar en qué tomo de la
revista se ha publicado dicho artículo. En libros que formen parte de una
serie, para indicar el tomo o volumen, dentro de la serie en cuestión. En
este último caso si se da algún valor al campo \ltr volume- los estilos
estándar ignorarán el contenido del campo \ltr number-.
\item[Year:] El año de la edición del libro o de publicación del artículo. Es
otro de los datos presentes (de forma obligatoria u opcional) en todos los
tipos de registros. Hay incluso estilos bibliográficos en donde las
referencias se ordenan por el valor de este campo, y las citas en el texto
lo incluyen también.
\end{description}
\subsubsection{Algunos consejos sobre tipos de registros y campos}
\label{sec:algun-cons-sobre}
Cuando empezamos a manejar \btx- la gran cantidad de tipos de registros
existentes (catorce en total) puede abrumar. A continuación expongo algunos
consejos, dictados por la experiencia, sobre cómo debemos proceder.
\begin{enumerate}
\item Hay tres tipos de referencia básica: artículos de revista (\ltr
article-), libros completos (\ltr book-) y partes de libro. Para las partes
de libro a su vez hay tres posibilidades: Si la parte se identifica por un
número de sección o de páginas, la referencia correcta es \ltr InBook-, si
se identifica por un título, yo distingo, a su vez, según cada parte del
libro tenga un autor distinto, en cuyo caso utilizo \ltr InProceedings-, o
todo el libro pertenezca al mismo autor, en cuyo caso prefiero usar \ltr
InCollection-. Ello es porque no me tomo demasiado en serio el nombre del
tipo de referencia, y atiendo más bien al contenido de los campos\footnote{Y
no hay que escandilarse por ello. El propio autor de \btx- recomienda en
\cite{patashnik88} no tomarse excesivamente en serio los nombres de
registros y campos. }.
\item Tampoco hay que tomarse demasiado en serio el nombre de los campos. En
ocasiones puede ser conveniente, por ejemplo, incluir la ciudad de edición
junto con el campo reservado a la editorial, y en otros casos puede ser
preferible usar para ello el campo \ltr address-. Lo importante es que
seamos consistentes en nuestras decisiones.
\item La distinción entre campos obligatorios y opcionales es importante sólo
para confirmarnos que hemos elegido el tipo de registro adecuado. Pero
tampoco es una tragedia que en un caso concreto, algún campo obligatorio se
quede sin rellenar.
\item Para la información que consideremos relevante pero para la que no haya
ningún campo que la haya previsto, podemos usar el campo \ltr note-. Pero
también podemos usar campos específicos creados por nosotros. En tal caso
los estilos estándar de \btx- la ignorarán, pero podremos crear un estilo
bibliográfico propio que la tenga en cuenta. Yo, por ejemplo, utilizo muchas
traducciones, y estimo que el nombre del traductor es un dato importante
para la referencia. Empecé usando para ello el campo \ltr note-, pero al
final diseñé un campo opcional llamado \ltr traductor-. Sobre la escritura
de estilos bibliográficos propios, véase la última parte de este documento.
Aunque cuando decidamos crear un campo adicional, si el tipo de datos que
queremos incluir en él es relativamente corriente, puede merecer la pena que
antes de bautizar el campo, nos demos un paseo por Internet; porque es muy
posible que alguien haya ya sentido la necesidad de recoger tales datos,
haya creado ese campo y, lo que es más importante, haya escrito un estilo
bibliográfico que sepa qué hacer con él.
\item También es interesante la creación de campos adicionales para
información que es importante para nosotros tener recopilada, pero que no
importa a los lectores de nuestros documentos y no tiene por qué incluirse
en las referencias bibliográficas generadas. Por ejemplo yo uso para los
libros un campo llamado \ltr tejuelo- en el que almaceno la ``etiqueta'' o
``tejuelo'' asignada a determinado libro en la biblioteca de mi centro de
trabajo, lo que me ayuda a localizar físicamente el libro con rapidez.
\item Por último, aunque he señalado que no hay que tomarse demasiado en serio
ni los nombres de los tipos de registro, ni los de los campos, ni su
naturaleza obligatoria u opcional, y he añadido que puede ser interesante
crear campos propios, todo ello no debe llevarnos a diseñar y escribir una
base de datos que sólo nosotros seamos capaces de entender y utilizar. El
sentido último de las herramientas de \ltx- (y en general del software
libre) es el de \emph{compartir} el trabajo: Que lo que ya ha sido hecho no
tenga por qué repetirse (si está bien hecho y el autor autoriza su uso por
otros). Cuando empezamos a escribir nuestra base de datos no hay forma de
saber si terminará siendo tan importante que merezca la pena compartirla con
otros y por ello es mejor empezar a escribirla con la mente puesta en que
tal vez en el futuro debamos compartirla.
\end{enumerate}
\subsection{Otras cuestiones relativas a los ficheros \tpf bib-}
\label{sec:otras-cuest-relat}
\subsubsection{Uso de abreviaturas y concatenación de cadenas}
\label{sec:uso-de-abreviaturas}
En un fichero \tpf bib- es posible definir abreviaturas que simplifiquen la
escritura de los registros y eviten errores. Para usar una abreviatura,
primero hay que definirla de acuerdo con el siguiente formato:
\verb|@String{Abreviatura = "Texto sin abreviar"}|
El nombre de la abreviatura debe empezar por una letra y no puede contener
caracteres en blanco ni ninguno de los siguientes caracteres:
\verb|" # % ' ( ) , = { }|
El texto sin abreviar se debe especificar entre comillas. Las llaves para
delimitar el contenido de ``\texttt{@String}'' son obligatorias.
La definición se puede hacer en cualquier lugar del fichero \tpf bib- que no
sea el interior de un registro (o de algún otro elemento admitido en este tipo
de ficheros). El único requisito en este punto es el de que la definición de
una abreviatura debe hacerse \emph{antes} de que ésta sea usada en algún
campo.
Las abreviaturas no pueden usarse para los nombres de campo o de registro,
sino exclusivamente en el contenido del campo. Y como las abreviaturas no
pueden estar encerradas dentro de los delimitadores de campo, cuando todo el
contenido del campo es una abreviatura, ese campo no requerirá delimitadores
de contenido. Así en el siguiente ejemplo:
{\small
\begin{verbatim}
@STRING{TeX = "The {T}e{X} {B}ook"}
@Book{eijkhout,
author = {Victor Eijkhout},
title = {TeX by topic},
publisher = {Addison Wesley},
year = 1992,
}
@Book{knuth,
author = {Donald E. Knuth},
title = TeX,
publisher = {Addison Wesley},
year = 1986,
}
\end{verbatim}
}
\noindent Hemos definido la abreviatura ``TeX'' y dos registros, en el título
del primero de ellos aparece la cadena ``TeX'', pero \btx- no la toma como una
abreviatura, porque tal cadena se encuentra dentro de unas llaves que
delimitan el contenido de un campo. Por el contrario, en el segundo registro,
el texto ``TeX'' usado como contenido del campo título, es tomado como un uso
de la abreviatura, dado que no está dentro de ningún tipo de delimitadores de
contenido de campo\footnote{En el ejemplo he escrito para la abreviatura
``TeX'', pero, como \btx- no distingue entre mayúsculas y minúsculas,
habríamos obtenido el mismo resultado escribiendo ``TEX'' o ``tex'' tanto en
la definición de la abreviatura como más tarde cuando ésta es usada.
Podríamos también haber definido ``TEX'' y luego usar ``tex'' o ``TeX''. }.
Si la abreviatura no cubre todo el contenido del campo, entonces debemos
escribir entre delimitadores normales el contenido no cubierto por la
abreviatura, y \emph{concatenar} dicho contenido con el de la abreviatura.
En los ficheros \tpf bib- el carácter para concatenar cadenas de texto es
``\#''. Este carácter permite concatenar abreviaturas entre sí, cadenas de
texto entre sí y abreviaturas con cadenas de texto. Por ejemplo, si en el
fichero \tpf bib- de nuestro anterior ejemplo tuviéramos un libro llamado
``\emph{Comentarios a `The TeX Book' de Knuth}'', y quisiéramos aprovechar la
abreviatura que hemos definido para ``\emph{The TeX Book}'', podríamos
escribir el campo \ltr title- de dicho libro de la siguiente manera:
\verb|title = {Comentarios a `} # TeX # {' de Knuth},|
Hay tipos de datos, como el nombre de las revistas científicas, para los que
es muy corriente el uso de abreviaturas. De hecho en ciertos campos de
conocimiento circulan ficheros en el que se recogen las abreviaturas
corrientemente usadas para las revistas más importantes. En tales casos
podemos usar dichos ficheros simplemente indicando su nombre en la orden \cmd
bibliography- antes del nombre de nuestra base de datos bibliográfica, y
separando ambos nombre por una coma.
La siguiente línea, por ejemplo, provocaría que ``\texttt{MiBiblio.bib}'' (que
cabe suponer que es nuestra base de datos) se concatenara con el fichero
distribuido por la \emph{American Mathematical Society} que contiene las
abreviaturas habitualmente usadas para las revistas matemáticas:
\verb|\bibliography{mrabbrev,MiBiblio}|
En los estilos estándar de \btx- hay ya varias abreviaturas definidas por
defecto: Están definidos los nombres de los meses del año en inglés (véase las
abreviaturas que mencioné al hablar del campo \ltr month- en la nota
\ref{meses}), así como el nombre de varias revistas dedicadas al campo de la
informática\footnote{Las abreviaturas definidas en el estilo plain son las
siguientes: acmcs (ACM Computing Surveys), acta (Acta Informatica), cacm
(Communications of the ACM), ibmjrd (IBM Journal of Research and
Development), ibmsj (IBM Systems Journal), ieeese (IEEE Transactions on
Software Engineering), ieeetc (IEEE Transactions on Computers), ieeetcad
(IEEE Transactions on Computer-Aided Design of Integrated Circuits), ipl
(Information Processing Letters), jacm (Journal of the ACM), jcss (Journal
of Computer and System Sciences), scp (Science of Computer Programming),
sicomp (SIAM Journal on Computing), tocs (ACM Transactions on Computer
Systems), tods (ACM Transactions on Database Systems), tog (ACM Transactions
on Graphics), toms (ACM Transactions on Mathematical Software), toois (ACM
Transactions on Office Information Systems), toplas (ACM Transactions on
Programming Languages and Systems), tcs (Theoretical Computer Science)}.
\subsubsection{Referencias cruzadas entre registros}
\label{sec:refer-cruz-entre}
En los ficheros \tpf bib- se admiten dos tipos de referencias cruzadas:
\begin{enumerate}
\item Usando el comando de \ltx- \cmd cite-.
\item Mediante el campo \ltr crossref-.
\end{enumerate}
En cuanto al uso de \cmd cite-, podemos usarlo dentro de un campo para hacer
referencia a otro registro. Normalmente esto se hace en el campo \ltr note-,
pero se puede hacer en cualquier otro. Esto provocará que al citar en nuestro
documento \ltx- una referencia que a su vez cita a otra, ambas se consideren
citadas en el documento, y se incluyan las dos en la lista de referencias
bibliográficas\footnote{Este es uno de los casos en los que \btx- requerirá
una compilación adicional. Porque el comando \cmd cite- incorporado a un
registro bibliográfico no será compilado por \ltx- hasta que se compila una
versión que incorpore el contenido del fichero \tpf bbl-. E incluso es
posible que al incorporar esta nueva cita, sea preciso, tras la segunda
ejecución de \ltx-, ejecutar de nuevo \btx-.}.
Pero también es posible usar referencias cruzadas de otra manera: para que
\btx- sepa que el valor de ciertos campos que normalmente forman parte del
contenido de un determinado tipo de registro, pero que en un registro concreto
no han sido incluidos, debe ser tomado de otro registro distinto. Por
ejemplo, si tenemos un libro homenaje a cierto autor, en el que varios autores
han colaborado, cada uno de ellos con un artículo. Si quisiéramos volcar
todos estos artículos a nuestra base de datos, podríamos:
\begin{enumerate}
\item Crear tantos registros como artículos haya e incluir en cada uno de
ellos todos los datos requeridos, gran parte de los cuales serán idénticos
en todos los registros.
\item Abreviar mediante referencias cruzadas, para los datos idénticos
escribirlos una sola vez.
\end{enumerate}
Para seguir el segundo procedimiento, deberíamos empezar por crear un registro
del tipo ``Proceedings'' para el libro homenaje en sí mismo considerado,
rellenar en él el valor de todos los campos que podamos, y luego en el
registro correspondiente a cada uno de los artículos extraidos de dicho libro
(que serían referencias de tipo \ltr InProceedings-), usar como valor para el
campo \ltr crossref-, el de la clave que hayamos asignado al registro \ltr
Proceedings-\footnote{De hecho, si lo pensamos bien, el único sentido que
tiene la presencia del campo \ltr booktitle- en los registros de tipo \ltr
Proceedings- es el de que este campo se use para llenar el campo del mismo
nombre en los registros \ltr InProceedings- que apunten a este.}.
El efecto de todo ello será que:
\begin{enumerate}
\item En los registros \ltr InProceedings- que escribamos para cada uno de los
artículos contenidos en el libro, podremos no incluir los campos que ya
están en el registro correspondiente al libro general, pues al apuntar \ltr
Crossref- al registro correcto, \btx- sabrá que los datos que faltan en el
primer registro deben ser tomados del segundo. Esto, además de reducir el
tamaño de la base de datos, y ahorrar tiempo para la introducción de los
mismos, contribuye a garantizar que todas las veces que estos datos
aparezcan, estén escritos exactamente igual.
\item Si en un documento \ltx- citamos al menos dos artículos que apunten a un
mismo registro, automáticamente se incluirá en la lista final de referencias
bibliográficas, además de los trabajos directamente citados por nosotros, el
registro correspondiente al libro que los contiene.
\end{enumerate}
Para que lo anterior funcione correctamente, es preciso que el registro
\emph{referenciado} mediante el campo \ltr crossref- (el registro \ltr
Proceedings-) se encuentre en la base de datos \emph{después} de los registros
referenciadores (los registros \ltr InProceedings-).
Los estilos estándar de \btx- admiten referencias cruzadas en los siguientes
casos:
\begin{enumerate}
\item Los registros de tipo \ltr InProceedings- pueden hacer referencia a
registros \ltr Proceedings- o \ltr Book-.
\item Los registros de tipo \ltr InCollection- pueden hacer referencia a
registros \ltr Book-.
\end{enumerate}
\subsection{Herramientas para manejar ficheros \tpf bib-}
\label{sec:herr-para-manej}
Existen varias herramientas para la creación y mantenimiento de bases de datos
de \btx- cuya utilidad fundamental es la de asegurarse de que todos los
registros están correctamente escritos y de que no hemos cometido errores ni
en el nombre del tipo del registro ni en el de los campos.
Como yo trabajo exclusivamente en sistemas Linux, en este apartado me
concentraré en herramientas que funcionen en tales sistemas. Para sistemas
MS-DOS, Mac-OS o Microsoft Windows existen otras herramientas que yo no he
probado y sobre las que, en consecuencia, no puedo opinar. Existen asimismo
herramientas escritas en java que, en teoría, funcionan en cualquier
plataforma, aunque yo no las he probado. He leído buenos comentarios sobre dos
de ellas: ``jbibtexmanager'' y ``jabref'', ambas son fáciles de localizar en
Internet.
\subsubsection{Herramientas gráficas}
\label{sec:herr-graf}
Existen varias herramientas gráficas que permiten trabajar con ficheros \tpf
bib- mediante ventanas, botones, barras de herramientas, etc. Las utilidades
ofrecidas por estas herramientas son bastante similares. Entre ellas he
probado (porque están disponibles directamente en Debian):
\begin{description}
\item[pybliographer:] Posiblemente sea la más completa de todas las que
conozco (aunque admito que no es la que más me gusta, pues es muy difícil de
manejar sin el ratón, y yo tengo alergia al ratón). Frente a otras
herramientas ofrece las siguientes ventajas: que funciona también en modo de
consola, que además del formato \btx- puede manejar otros formatos de bases
de datos bibliográficas y, lo que es más importante: es capaz de convertir
bases de datos desde unos formatos a otros.
\item[Gbib:] Es mi herramienta favorita en este grupo\footnote{Lo que no es
mucho decir, pues yo soy usuario de GNU Emacs (del que me ocupo en la
próxima sección).}. Forma parte del proyecto Gnome, aunque no suele
instalarse por defecto. Posiblemente su principal inconveniente esté en el
hecho de que no permite controlar el tipo de codificación en el que hay que
grabar el fichero, sino que éste es guardado automáticamente en la
codificación preestablecida para el sistema\footnote{Esto puede ocasionar
una tediosa labor de \emph{reparación}. Sobre todo si se tiene en cuenta
que hasta hace poco la codificación estándar para sistemas Linux españoles
era \ltr latin1- o \ltr latin15- y en los últimos tiempos las
distribuciones empiezan a migrar a \ltr utf8-. De modo que si en un
sistema instalado recientemente abrimos una base de datos escrita hace
algún tiempo, introducimos cambios en ella y los guardamos, cabe la
posibilidad de que, si no tenemos control sobre las codificaciones usadas,
todos los caracteres no anglosajones del fichero se transformen en
caracteres ininteligibles que luego habrá que restuarar a mano. }, aunque
en realidad este defecto es predicable de las tres herramientas que recojo
en la presente sección.
\item[Tkbibtex:] Una herramienta muy parecida a las anteriores: permite crear
bases de datos nuevas, abrir bases existentes, añadir registros, hacer
búsquedas, etc. Apenas le he echado un vistazo.
\end{description}
\subsubsection{El modo \btx- de GNU Emacs}
\label{sec:el-modo-bibtex}
Dado que los ficheros \tpf bib- son ficheros de texto, otra posibilidad es
editarlos con algún editor de texto que esté provisto de alguna extensión que
facilite de alguna manera el trabajo con ellos.
Desde este punto de vista casi todos los editores de texto ``avanzados'' son
capaces de reconocer la sintaxis de un fichero \tpf bib-, y algunos
especialmente preparados para trabajar con el formato \ltx-, como por ejemplo
kile, incluyen incluso opciones de menú que permiten insertar registros
bibliográficos completos, ahorrándonos el tener que recordar de memoria los
campos obligatorios y opcionales de cada uno de los registros.
No obstante en este grupo mi favorito sin ningún género de dudas es GNU Emacs.
De hecho mi afición a dicho editor se puede comprobar en el hecho de que he
escrito y puesto en circulación por Internet dos documentos dirigidos a
facilitar su aprendizaje: \cite{ataz-emacs} y
\cite{ataz-auctex}\footnote{\cite{ataz-emacs} constituye una introducción
general a GNU Emacs, para quien se aproxime por primera vez a este potente
editor, y \cite{ataz-auctex} contiene una explicación completa de las
utilidades de GNU Emacs en relación con el formato \ltx-, dentro de la cual
se incluyen las facilidades para trabajar con ficheros de \btx-.}.
Sería demasiado largo recoger aquí todo lo que ya he dicho en
\cite{ataz-auctex} (donde dedico al trabajo con ficheros \tpf bib- casi diez
páginas) , y por lo tanto me remito a dicho documento.
\subsubsection{Otras herramientas disponibles en sistemas linux}
\label{sec:otras-herr-disp}
Además de las indicadas existen muchísimas otras herramientas disponibles. Si
nos centramos, por ejemplo, en una instalación estándar de Debian, las
herramientas que se incluyen para trabajar con ficheros \btx- son las
siguientes:
\begin{description}
\item[bib2bib:] Utilidad de consola que lee uno o varios ficheros
bibliográficos y filtra sus entradas con respecto a un determinado criterio,
generando un nuevo fichero bibliográfico que contenga exclusivamente los
registros filtrados.
\item[bibclean:] Utilidad de consola para imprimir en pantalla y comprobar la
sintaxis de una base de datos \btx-. También es muy útil para reformatear
todos los registros, unificando su aspecto visual.
\item[bibcursed:] Es un editor de ficheros \tpf bib- que funciona en modo de
consola (sin necesidad de tener cargado el sistema gráfico). Puede ser útil
para los poco amantes de las ventanas.
\item[bibindex:] Utilidad de consola que permite crear un índice binario que
acelere las búsquedas hechas en una base de datos con biblook.
\item[biblook:] Utilidad de consola que permite realizar búsquedas rápidas en
un fichero bibliográfico. Las búsquedas pueden además acelerarse mucho si se
genera un índice binario para el fichero mediante la utilidad bibindex.
\item[bibtex2html:] Utilidad de consola que permite convertir una base de
datos bibliográfica al formato HTML
\item[bibtool:] Utilidad de consola que permite realizar varias acciones sobre
un fichero \tpf bib-. Es una herramienta muy útil que incluye un muy
completo manual de referencia.
\end{description}
Junto con estas herramientas, que he destacado exclusivamente porque están
disponibles de modo directo para cualquier usuario de sistemas Debian (o
distribuciones basadas en Debian, como Ubuntu), por Internet circulan
numerosas utilidades o scripts para manipular bases de datos bibliográficas en
formato \btx-, y en la CTAN están disponibles varias de ellas: no todas
trabajan en todos los sistemas, y no todas son igual de útiles, pero merece la
pena echarles un vistazo, por lo que recomiendo la consulta del \emph{catálogo
general} de la CTAN, organizado por materias, en
<<\url{http://texcatalogue.sarovar.org/bytopic.html}>>.
\section{Los estilos bibliográficos}
\label{sec:los-estil-bibl}
\subsection{Descripción de los estilos estándar de \btx-}
\label{sec:los-estilos-estandar-1}
\btx- se acompaña de cuatro estilos llamados \ltr plain-, \ltr abbrv-, \ltr
alpha- y \ltr unsrt-. El estilo esencial es el primero, y los otros funcionan
como él en todo salvo en uno o dos puntos concretos.
A continuación describiré estos estilos atendiendo exclusivamente a sus
características principales y sin entrar en excesivos detalles (cuya
descripción con palabras, por otra parte, ocuparía demasiado espacio). Mi
consejo para ver exactamente las características de cada uno de los estilos es
escribir un fichero \tpf bib- de prueba, incluir un registro de cada uno de
los tipos admitidos, llenar \emph{todos} los campos posibles de cada registro,
e incluir dicha base de datos en un documento de prueba, en el que hayamos
incluido un comando \cmd nocite\{*\}-.
En la próxima explicación, menciono varias veces la noción \emph{autoría}.
Con ella me quiero referir a lo que ya se explicó en la página
\pageref{sec:la-autoria-de}.
\begin{description}
\item[Estilo ``plain''.] Sus características son:
\begin{enumerate}
\item La lista bibliográfica final se ordena alfabéticamente atendiendo a la
autoría, y si hubiera más de una obra del mismo autor, se toma en cuenta
al año de las mismas y después el título. Si sigue habiendo igualdad tras
aplicar los criterios anteriores, el último criterio es el del orden en el
que fueron citadas y, para obras citadas simultáneamente mediante \cmd
nocite\{*\}-, el orden que tengan en la base de datos.
\item Las obras incluidas en la lista son numeradas consecutivamente y el
número asignado a cada una de ellas, entre corchetes, se convierte en la
etiqueta identificativa de la misma que será impresa en el lugar en el que
se encuentren los comandos \cmd cite- existentes en el cuerpo del
documento.
\item Los datos de los campos se incluyen completos.
\item Para ciertos campos se añaden determinadas palabras o abreviaturas en
inglés. Por ejemplo, tras el contenido del campo \ltr edition- se añade
la palabra ``\emph{edition}'', y hay tipos de registro en los que el
nombre del campo (en inglés) forma parte de la referencia.
\end{enumerate}
\item[El estilo ``abbrv'':] Es idéntico al estilo \ltr plain- salvo en el
hecho de que para ciertos datos se usan abreviaturas y así el nombre de pila
de los autores es sustituido por sus iniciales y el nombre de ciertas
revistas (que están predefinidas en el estilo y que se refieren a la
informática) es sustituido por su abreviatura. Para la mayor parte de los
usuarios, que no usan las revistas predefinidas en el estilo, la única
diferencia con \ltr plain- es que del nombre propio del autor sólo se usan
las iniciales.
\item[El estilo ``alpha'':] Se distingue del estilo \ltr plain- exclusivamente
en el hecho de que la etiqueta de identificación de cada obra en la lista no
es un número, sino un texto generado automáticamente a partir de la
\emph{autoría} de la referencia, el año de publicación y, en ocasiones, el
inicio del título\footnote{Como regla se toman las tres primeras letras del
nombre del autor y las dos últimas cifras del año de publicación. En obras
con varios autores se toma la inicial de los tres primeros seguida de un
signo ``+'' en formato de superíndice, si hay más de tres autores. Si con
estos criterios a dos referencias se les asignara la misma etiqueta, las
obras se ordenan relativamente entre sí, atendiendo a los criterios de
ordenación del estilo \ltr plain-, y a las etiquetas se añade una letra
para diferenciarlas entre sí: una ``a'' a la primera, una ``b'' a la
segunda, etc.}. Asimismo la lista bibliográfica se ordena alfabéticamente
según las etiquetas asignadas, y el comando \cmd cite- imprime, en el lugar
en el que se encuentre, la etiqueta asignada a la obra citada.
\item[El estilo ``unsrt'':] Es igual al estilo \ltr plain- salvo en el hecho
de que en él la lista bibliográfica no se ordena alfabéticamente, sino según
el orden en el que las distintas obras que aparecen en ella fueron citadas
por primera vez. En este caso, para las obras incluidas en la lista de
referencias mediante un comando \cmd nocite- se considerará que fueron
citadas en el lugar en el que se encuentre tal comando. Y para el comando
\cmd nocite\{*\}-, se usará el orden en el que las referencias se encuentren
en el fichero \tpf bib-, pero sólo para las referencias que no hubieran sido
citadas antes de \cmd nocite\{*\}-.
\end{description}
En cuanto a las características concretas de formateo de los campos son
similares en todos estos estilos. Los aspectos más llamativos son:
\begin{enumerate}
\item Se escribe el nombre de pila antes que el apellido, lo que no deja de
ser chocante en aquellos casos en los que la lista de referencias se ordena
alfabéticamente a partir de los apellidos (estilos \ltr plain- y \ltr
abbrv-, ya que ello provoca una ordenación alfabética tomando como
referencia, no la primera palabra de cada párrafo, sino la segunda o la
tercera.
\item Los distintos elementos de la referencia se separan mediante un punto.
Lo que también provoca problemas cuando el contenido de un campo no es
numérico y no empieza con una mayúscula, pues los estilos sólo ajustan el
uso de las mayúsculas en el campo \ltr title-.
\item Todos los campos aparecen con letra normal, salvo el título de los
libros y trabajos académicos y el nombre de las revistas, que aparecen en
cursiva.
\end{enumerate}
\subsection{Estilos adicionales}
\label{sec:estilos-adicionales}
Junto con estos estilos estándar, existen multitud de estilos disponibles. En
la CTAN hay varios de ellos preparados para su descarga, y algunas
distribuciones de \ltx- incluyen por defecto ciertos estilos
adicionales\footnote{Por ello, antes de buscar estilos adicionales, conviene
que nos aseguremos de cuáles son los estilos incluidos en nuestra
distribución de \ltx-. Lo que se puede hacer por distintos procedimientos
que dependen de nuestra concreta instalación. A falta de algún otro
procedimiento específico, podemos buscar los ficheros de extensión \tpf bst-
existentes en nuestro sistema; o mejor: los existentes en alguno de los
directorios en los que \btx- busca los ficheros de estilo. En la nota
\ref{nota:cnf} se explica cómo localizar cuáles son esos directorios en un
sistema Unix/Linux.}.
Entre los estilos adicionales hay algunos cuya instalación es tan corriente
que son estilos \emph{casi} estándar. Otros no son tan conocidos, pero
resultan interesantes. Muchos de ellos consisten exclusivamente en uno o
varios estilos para \btx-, y otros incluyen también un \emph{paquete} que hay
que incluir en el documento principal, mediante \cmd usepackage-, para poder
usar el estilo.
No voy a explicar todos los estilos adicionales, porque ello sería tedioso,
sino exclusivamente los más conocidos e interesantes:
\begin{description}
\item[abstyles:] Son un conjunto de estilos llamados ``\emph{estilos
adaptables}''. Su principal peculiaridad es que ciertas características
del estilo están \emph{parametrizadas} de tal manera que pueden ser
cambiadas desde el documento \tpf tex- mediante ciertos comandos, aunque en
este punto la información que ofrece su fichero de ayuda es verdaderamente
críptica. Entre sus inconvenientes puede citarse el hecho de que sólo están
preparados para trabajar con documentos en alemán o en inglés. Aunque esto
tiene arreglo si en lugar de los \ltr abstyles- propiamente dichos usamos
``\texttt{abstyles-babel}'' que es una modificación de \ltr abstyles- para
que si en babel el idioma activo es ``spanish'' el estilo bibliográfico se
genere en español. Pero como los estilos que proporcionan ambos paquetes
tienen el mismo nombre, si tenemos instalados los dos paquetes en nuestro
sistema, sólo funcionará uno de ellos: el primero que sea localizado por
\btx- cuando busque el fichero de estilo\footnote{Cuál sea el primero
depende de la concreta distribución de \ltx- que tengamos instalada, y de
la ruta de búsqueda de ficheros que en ella se haya implementado. Cuando
\ltx- (o \btx-) busca un fichero, va mirando por orden en diferentes
directorios hasta que lo encuentra.}.
\item[achicago:] El estilo de citas basado en el ``\emph{Chicago Manual of
Style}'' está implementado por varios paquetes: \ltr achicago-, \ltr
achicago.bst-, \ltr chicago-, \ltr jas99-, \ltr jas99m- y \ltr newapa-.
También el paquete \ltr authordate- produce citas acordes con el manual de
estilo Chicago, aunque este último paquete tiene otras peculiaridades.
El estilo de citas Chicago es del tipo Autor-año y, personalmente, para
obtener citas de estas prefiero el paquete natbib (que se menciona en
seguida).
\item[Apalike:] Este estilo también fue escrito por Oren Patashnik (el autor
de \btx-). Es un estilo de tipo ``Autor-año'' y para su correcto
funcionamiento, hay que cargar en los documentos \ltx- el paquete del mismo
nombre que el estilo: \ltr apalike-.
\item[Harvard:] La familia de estilos Harvard implica también citas del tipo
Autor-año.
\item[Natbib:] Natbib es al mismo tiempo un estilo y un paquete, aunque quizás
en él destaque más la parte de paquete, por la cantidad de modificaciones
que incorpora al funcionamiento del comando \cmd cite-.
Durante mucho tiempo (hasta que conocí el trabajo de unos compañeros de la
Universidad de Murcia que han diseñado \ltr flexbib-), he considerado que
\ltr natbib- era la mejor opción. Permite elegir entre citas del tipo
Autor-año o citas numéricas. Incluye versiones adaptadas de los estilos
estándar (salvo el estilo \ltr alpha-) llamadas \ltr plainnat-, \ltr
abbrvnat- y \ltr unsrtnat-; añade un campo \ltr usr-, dispone de una
estupenda documentación e incorpora numerosas modificaciones y mejoras en el
procedimiento de las citas.
\item[Flexbib:] Este paquete ha sido diseñado en la Universidad de Murcia, y
no está disponible en la CTAN, sino en <<\url{http://www.latex.um.es/}>>.
Incorpora muchas de las ventajas de \ltr natbib- y a ellas añade dos muy
importantes: La primera es que este paquete es sensible a \ltr babel-, la
segunda es que muchas de las características esenciales del estilo están
\emph{parametrizadas}, es decir: pueden cambiarse sin necesidad de cambiar
de estilo, porque funcionan como \emph{opciones} del paquete. Una muy buena
descripción del paquete, además de en su página web, en \cite{mira04}.
\end{description}
\subsection{Cómo españolizar los estilos estándar}
\label{sec:como-espan-algun}
Los estilos estándar de \btx- están pensados para documentos que se vayan a
redactar en inglés y por lo tanto usan partículas, palabras y abreviaturas en
inglés. Para conseguir que nuestra lista de referencias figure totalmente en
español, sin palabras en inglés, existen varios procedimientos.
\begin{enumerate}
\item Lo más cómodo es usar algún estilo o paquete que añada a los paquetes
estándar la sensibilidad a \ltr babel-. Hay varios paquetes que hacen eso, y
más cosas. Podemos citar ``\texttt{abstyles-babel}'', diseñado por Tomás
Bautista y que es una adaptación de los abstyles, para que sean sensibles a
\ltr babel-, o los paquetes \ltr babelbib- y \ltr flexbib-.
\item Usar algún estilo diseñado para el idioma español. En Internet se pueden
localizar algunos, y en la CTAN está disponible el estilo ``spain.bst''
basado en las indicaciones que sobre referencias bibliográficas se contienen
en el ``Diccionario de ortografía técnica'' de J. Martínez de Sousa.
\item Podemos también generar nuestro propio estilo bibliográfico, preparado
para trabajar en un idioma concreto. Al respecto estúdiese lo dicho en la
sección \ref{sec:como-crear-estilos}.
\item Por último, podemos modificar el fichero donde se contiene algún otro
estilo, y prepararlo para que trabaje en español. Esta última posibilidad
exige un mayor conocimiento del funcionamiento interno de \btx-. Conviene
por lo tanto aprender muy bien lo que se expone en la parte
\ref{part:btx-avanzado} de este documento.
\end{enumerate}
Para esta parte de la guía, referida al nivel básico, el procedimiento más
adecuado es el primero de los mencionados.
\clearpage
\part{\btx- intermedio}
\label{part:btx-intermedio}
\section{Generación automatizada de estilos bibliográficos}
\label{sec:como-crear-estilos}
Si ninguno de los estilos bibliográficos que acompañan a \btx-, o que están
disponibles en la CTAN nos convence, podemos generar nuestro propio estilo
bibliográfico. Ello se puede hacer escribiendo a mano nuestro propio estilo,
lo que exige un profundo conocimiento del lenguaje usado por los ficheros de
estilo (véase la parte \ref{part:btx-avanzado}), o mediante algunas
herramientas dirigidas a la generación de ficheros \tpf bst-. Estas
herramientas, cuando son ejecutadas, empiezan preguntando al usuario por las
características que debe tener el nuevo estilo (preguntas en inglés, ¡of
course!), y, con las respuestas dadas, se genera un fichero \tpf bst- que
contiene el nuevo estilo o, lo que es más normal, un fichero intermedio a
partir del cual es posible generar el fichero \tpf bst-.
La herramienta que voy a analizar aquí funciona de esa segunda manera: el
fichero intermedio tiene la extensión \tpf dbj- y la herramienta se llama \ltr
makebst- y forma parte del paquete <<\texttt{custom-bib}>> (disponible en la
CTAN).
\subsection{Makebst}
\label{sec:makebst}
Makebst es un programa para \TeX{} diseñado por Patrick W. Daly que permite
generar ficheros bibliográficos personalizados. Para instalarlo\footnote{OJO:
Hay distribuciones de \ltx- que instalan por defecto este paquete, por lo
que lo mejor es, antes de nada mirar en el directorio predeterminado para
los paquetes incluidos con la distribución. En mi sistema ese es
<<\url{/usr/share/texmf-tetex/tex/latex/}>>. En el caso de que el paquete ya
esté instalado, muy posiblemente no sean precisos los pasos que se indican
en el texto.} hay que descargarlo desde la CTAN, descomprimirlo en algún
directorio y ejecutar, sucesivamente, los siguientes comandos
{\small
\begin{verbatim}
$> latex makebst.dtx
$> latex makebst.ins
\end{verbatim}
}
El primero de estos comandos extraerá del fichero \ltr makebst.dtx- la
documentación y el fichero \ltr makebst.ins-. El segundo comando genera un
fichero llamado \ltr makebst.tex- que será el que usaremos para generar
nuestros estilos personalizados.
En el paquete de instalación, junto con \ltr makebst.dtx- se encuentran varios
ficheros de extensión \tpf mbs-. El nombre MBS proviene de las siglas de
<<\emph{Master \btx- Style}>>. Para la generación de nuestro estilo
personalizado deberemos usar dos de esos ficheros: \ltr merlin.mbs- que es el
fichero maestro, y un segundo fichero \tpf mbs- que contenga las
especificaciones adecuadas al idioma en el que se generará el nuevo estilo.
Para que el nuevo estilo esté españolizado ese fichero debe ser \ltr
spanish.mbs-, pero podemos también generar estilos en otros idiomas: catalán,
esperanto, portugués... etc. También podemos generar un estilo sensible a
babel, aunque eso sólo funciona con algunos idiomas, entre los que
afortunadamente se encuentra el español.
Para generar un estilo, simplemente debemos ejecutar
\verb|latex makebst.tex|
Ello pondrá en marcha un proceso interactivo en el que se nos harán una serie
de preguntas respecto del estilo a generar. Las preguntas van en inglés y, una
vez que hemos empezado no es posible la marcha atrás, por lo que si nos
equivocamos en alguna respuesta, debemos elegir entre interrumpir el proceso y
volver a empezar desde el principio (lo que se hace pulsando primero CTRL-C y
después X), o seguir adelante para más tarde modificar a mano el error. Al
respecto véase la sección \ref{sec:uso-de-los}.
Explicar las distintas preguntas, por el orden en el que aparecen, es
complejo, puesto que las preguntas planteadas por makebst son interactivas, es
decir: dependiendo de la respuesta dada a cierta pregunta, se plantearán o no
otras preguntas adicionales. Además no todas las preguntas tienen la misma
importancia y las preguntas se plantean a veces de manera desordenada (en mi
opinión), lo que dificulta su tratamiento sistemático. Por ello a
continuación en lugar de referirme a todas y cada una de las preguntas que se
plantean durante el proceso, las agruparé temáticamente por el orden en el que
se plantean, explicando, para cada grupo, la utilidad general de las distintas
preguntas, y resaltando las que me parecen más importantes.
Como no voy a explicar el significado de todas las preguntas, lo que si haré
es dar un consejo general para el caso de que no sepamos que respuesta dar a
alguna de ellas: Aceptar la respuesta predeterminada, es decir: pulsar ENTER
para pasar a la próxima pregunta. Cuando se enumeran varias respuestas
posibles, la respuesta por defecto viene marcada con un asterisco. En los
demás casos la respuesta por defecto se indica entre paréntesis, tras la
pregunta. La única pregunta que no admite una respuesta por defecto es la
relativa al nombre del fichero de salida, es decir: el nombre que tendrá el
estilo que queremos crear.
Las preguntas que makebst nos hace son las siguientes:
\begin{enumerate}
\item \textbf{Preguntas generales.} En el primer grupo de preguntas (las cinco
primeras) se plantean una serie de cuestiones generales que afectan a
ciertos aspectos del funcionamiento de makebst, y al fichero de estilo que
se generará. De estas preguntas las más importantes son la 2ª y la 3ª que
plantean las siguientes cuestiones:
\begin{itemize}
\item Nombre del fichero maestro. El fichero maestro es el fichero con base
en el cual makebst planteará las próximas preguntas y generará el fichero
de estilo solicitado. El valor por defecto es merlin.bst, y este es el
valor que en el resto de esta sección asumo que hemos introducido. Si lo
cambiamos, las preguntas que se plantearán serán distintas a las que aquí
recojo\footnote{Además, para cambiarlo, deberíamos tener algún otro
fichero que cumpla su función. Yo no lo conozco, y quien sepa
escribirlo, con toda seguridad que no necesita ejecutar makebst para
crear su propio fichero de estilo.}.
\item Nombre del fichero a generar. Es decir: el nombre que tendrá el estilo
que estamos generando. Por ejemplo: ``MiEstilo''. El nombre que
indiquemos tiene que ser correcto para nuestro sistema operativo. No hay
que especificar la extensión que tendrá el fichero, ya que automáticamente
se añadirá la extensión \tpf bst-.
\end{itemize}
Para el resto de las cuestiones planteadas podemos dejar el valor por
defecto.
\item \textbf{Preguntas relativas a los ficheros externos.} Makebst utiliza (o
puede utilizar) dos ficheros externos, en conjunción con el fichero maestro
(que por defecto es merlin.bst). Estos ficheros son uno para la definición
de idioma, y otro con nombres extra de revistas:
\begin{itemize}
\item Fichero para la definición de idioma. Este fichero es esencial porque
de él depende el idioma en el que nuestro fichero de estilo generará las
listas de bibliográficas. Con el paquete custom-bib se incluyen varios
ficheros de definición de idioma (catalán, danés, holandés, inglés,
esperanto, finés, francés, etc). Para el español hay que usar el fichero
\ltr spanish.mbs-. Si aquí no se elige ningún fichero externo de
definición de lenguaje, más tarde se nos preguntará si queremos generar un
estilo en inglés (idioma por defecto) o un estilo sensible al idioma
activo en el paquete babel. Esta sería la vía para generar un estilo
multilingüe. Aunque para que este estilo multilingüe funcione, es preciso
disponer de un fichero llamado \ltr babelbst.tex-\footnote{En teoría \ltr
babel- debería proporcionar un conjunto de ficheros cada uno de los
cuales contuviera la traducción a un idioma de las cadenas de texto
usadas por \btx-, junto a un fichero general, \ltr babelbst.tex- que se
limitara a cargar el fichero correspondiente al idioma activo. Sin
embargo babel no proporciona el fichero \ltr makebst.tex- y además son
muy pocos los idiomas para los que existe un fichero de definición de
idioma para usar con \btx-. Se supone que el nombre de esos ficheros
consiste en el código del idioma correspondinte (por ejemplo: ``es''
para el español, ``fr'' para el francés, ``it'' para el italiano, etc)
seguido de ``bst.tex''. O sea, el fichero para el español se debe llamar
``esbst.tex''. Y aunque hay pocos ficheros de definición de idioma,
afortunadamente el español es uno de ellos. Es decir: el fichero \ltr
esbst.tex- existe. Normalmente se encontrará en el directorio en el que
tengamos instalado el paquete babel.
Pero seguimos sin tener un fichero llamado \ltr babelbst.tex-, necesario
para que el estilo creado con makebst funcione. Podemos crearlo de dos
formas: Escribiéndolo nosotros (difícil si no se sabe el bastante \TeX),
o cambiándole el nombre a \ltr esbst.tex- por \ltr babelbst.tex- (o
creando un enlace, o una copia). Si hacemos esto último, tendremos un
estilo sensible a babel pero que sólo será capaz de manejar dos idiomas:
el inglés y el español. No estoy seguro de que eso merezca el nombre de
``estilo multilingüe'', pero, afortunadamente, a los hispanoparlantes
nos sirve.}.
\item Ficheros extra con nombres de revista. Se trata de algunos ficheros
incluidos en el paquete custom-bib en los que se recogen abreviaturas
estándar para las revistas más importantes y conocidas de ciertos campos
científicos\footnote{Los ficheros son: \ltr geojour.mbs-: Revistas de
geografía física; \ltr photjour.mbs-: Revistas de óptica; \ltr
physjour.mbs-: Revistas de física y \ltr supjour.mbs-: Revistas
suplementarias.}. Si incluimos estos ficheros haremos que el estilo que
estamos generando incluya abreviaturas preestablecidas para las revistas
incluidas en tales ficheros.
\end{itemize}
\item \textbf{Preguntas relativas al estilo de las citas:} Este grupo de
preguntas posiblemente sea el que en mayor medida marque el tipo de estilo
que estamos generando. Las citas pueden ser básicamente de los siguientes
estilos:
\begin{enumerate}
\item Estilo estándar \ltx-. Es lo que se llama \emph{estilo numérico}: a
cada obra incluida en la lista bibliográfica final se le asigna un número,
el cual es el que se imprime en los lugares del texto donde dicha obra sea
citada mediante el comando \cmd cite-. Este es el estilo de citas que
usan tres de los cuatro estilos estándar de \btx-: \ltr plain-, \ltr
abbrv- y \ltr unsrt-. También es el estilo que usa \ltx- cuando la
bibliografía se construye sin la ayuda de \btx-. Este estilo es el estilo
por defecto para makebst.
\item Estilo Autor-año. Este estilo es un estándar en determinados campos
científicos y admite diferentes modalidades (natbib, apalike, harvard,
astronomy, chicago). Básicamente consiste en que para cada obra incluida
en la lista de referencias se genera una etiqueta que contiene el apellido
completo del autor y el año de publicación. Las distintas modalidades
inciden en cómo se separan ambos elementos, y afectan también a qué hacer
en el caso de que haya varios autores. Si el mismo autor tiene varias
obras el mismo año, se diferencian unas de otras añadiendo una letra al
año, como, por ejemplo, en \ltr Ataz 1980a-.
\item Estilo \ltr alpha-. En cierto modo se puede considerar una modalidad
del estilo Autor-año, porque para cada obra incluida se genera una
etiqueta a partir del apellido del autor, año de la obra y, en su caso,
inicio del título. Pero la diferencia está en que mientras el estilo
Autor-año pretende que el lector sólo con la lectura de la etiqueta se
haga una idea aproximada de qué obra se ha citado, en el estilo \ltr
alpha-, la etiqueta no pretende tener sentido, sino que simplemente sirve
para identificar a cada obra citada en el trabajo de manera única. Por
ello normalmente no se usa el apellido completo, ni este se separa del
año, el cual tampoco suele ponerse completo. Esta es la razón de que
cuando se habla de estilos tipo ``Autor-año'' el estilo \ltr alpha- nunca
se entienda incluido en tal expresión.
Para el estilo \ltr alpha- makebst admite tres modalidades, en las que la
etiqueta se construye de diferente manera. En la primera, cuando hay
varios autores, la etiqueta se construye a partir de la inicial de cada
autor. En la segunda modalidad, cuando hay varios autores, se usa el
apellido del primero, como si hubiera un solo autor. En la tercera
modalidad, el apellido del autor se incluye entero en la etiqueta.
\item Estilo en el que el contenido de la etiqueta identificativa de las
obras en la lista de referencias es igual a la clave interna de la
referencia en el fichero \tpf bib-. Este estilo está pensado
exclusivamente para cuando se quieran generar listados del contenido de
una base de datos bibliográfica.
\end{enumerate}
Pues bien: en la primera pregunta de este grupo de preguntas deberemos
elegir entre uno de estos seis estilos (cuatro estilos básicos de los que
uno de ellos admite tres modalidades).
Dependiendo del estilo elegido, las siguientes preguntas varían. Y así:
\begin{enumerate}
\item Si se eligió estilo tipo Autor-Año, se nos preguntará, de las
distintas variedades que este estilo tiene (natbib, apalike, harvard,
astronomy, chicago) cuál preferimos, pudiendo incluso elegir una variedad
innominada, siempre que dispongamos de un fichero \tpf sty- que la
implemente.
\item Si no se eligió el estilo Autor-Año, se nos preguntará si queremos que
se genere salida HTML. Se trata de una utilidad que permite que el fichero
de estilo, en lugar de generar un fichero \tpf bbl- construido con
comandos \ltx-, genere un fichero HTML, lo que sería una forma fácil de
escribir una página HTML que incluya un listado bibliográfico. Aunque la
verdad es que hay otras utilidades para eso que me gustan más. En todo
caso, si decidimos contestar que sí, podemos elegir tres modalidades para
el HTML. En la primera las referencias se separarán por párrafos; en la
segunda, las referencias se incluirán en una lista HTML, y en la tercera
se incluyen las claves internas de las referencias. Si aceptamos
cualquiera de estas posibilidades hay que tener en cuenta que cualquier
intento de compilar nuestro documento principal tras haber ejecutado \btx-
sobre él y generado el fichero \tpf bbl-, generará un error, porque el tal
fichero \tpf bbl- internamente no consta de comandos \ltx-, sino de
comandos HTML.
\end{enumerate}
\item \textbf{Preguntas relativas a campos adicionales:} Las siguientes dos
preguntas afectan a los campos en nuestra base de datos. Si hemos construido
un fichero \tpf bib- en el que sólo estén los campos estándar, hay que
contestar a ambas que no. Pero es posible que hayamos añadido dos campos
extra para los registros, y contestando ``y'' (de ``yes'') a estas dos
preguntas, conseguiríamos que tales campos sean reconocidos por el estilo.
Los campos a que se refieren estas preguntas son los siguientes:
\begin{enumerate}
\item Campo \ltr language-. Si en nuestra base de datos las referencias
tienen un campo llamado \ltr language- cuyo contenido es el nombre del
idioma en que está el título de la referencia en cuestión, tal y como hay
que referirse a dicho idioma en \ltr babel-, y contestamos que si a esta
pregunta, en nuestro estilo se activará el idioma correspondiente a cada
referencia antes de incluirla en la lista de referencias. Eso garantiza
que la partición en guiones del título sea correcta de acuerdo con las
reglas correspondientes al idioma en el que dicho título esté escrito. En
caso de que para alguna referencia no constara valor para este campo, se
usaría el idioma por defecto para el documento. Téngase en cuenta,
además, que para usar esta utilidad, en el encabezamiento de nuestro
fichero \tpf tex-, al incluir la orden \cmd usepackage\{babel\}- hay que
especificar como idiomas a cargar todos aquellos que se encuentren
representados en la base de datos.
\item Campo \ltr annote-. Este campo se puede haber incluido para
anotaciones extra sobre la referencia a que se refiere un registro. Si
disponemos de él, y contestamos que sí a la pregunta que nos haga makebst,
su contenido será incluido en la lista de referencias final.
\end{enumerate}
\item \textbf{Orden de las referencias:} La siguiente pregunta también es muy
importante, aunque sólo se hace en el caso de que no hayamos elegido el
estilo de citas \ltr alpha-. Se trata del orden en el que queremos que
aparezcan las referencias citadas en la lista de referencias. La ordenación
posible varía dependiendo del estilo de citas elegido. Si se eligió como
cita el estilo numérico (o el basado en la clave), podemos elegir entre:
\begin{itemize}
\item Orden alfabético de autores. Es la respuesta por defecto.
\item Orden de citas. Funciona del modo similar al estilo estándar \ltr
unsrt-.
\item Orden cronológico (por el valor del campo \ltr year-) y después por
autores.
\item Orden cronológico inverso, es decir: como el anterior, pero empezando
por las referencias más recientes.
\end{itemize}
Pero si elegimos el estilo de citas Autor-año, entonces la segunda opción es
la de ordenar por etiquetas, sistema este que es exigido por algunas
revistas y que provoca una ordenación más sensible que la alfabética pura
por autores. Las diferencias están en el caso de que haya autores con obras
firmadas por ellos solos y con obras en colaboración.
\item \textbf{Formateo de los autores y fechas}. A continuación se incluyen
varias preguntas (12 en total, creo) relativas a cómo formatear el nombre de
los autores y las fechas. Yo supongo que estos campos se tratan antes que
los demás, porque son los que se usan en el estilo de citas Autor-año, y
porque en la lista de referencias que se generará, el campo autor es siempre
el primero.
Las cuestiones aquí planteadas son muchas y, si quiero evitar que este
documento se haga interminable, no puedo ocuparme de todas de forma
pormenorizada. A título de ejemplo enunciaré las siguientes:
\begin{itemize}
\item Cómo tratar las partículas que separan el nombre de los apellidos. Es
decir: ``Miguel de Cervantes'' ¿debe clasificarse en la ``D'' como ``De
Cervantes, Miguel'', o en la ``C'' como ``Cervantes, Miguel De''?
Recordemos, a efectos de esta pregunta, que \btx- identifica que una parte
de un nombre es partícula que separa el nombre de pila de los apellidos en
el caso de que dicha parte esté escrita con minúsculas.
\item Cómo escribir el nombre de los autores. Podemos elegir entre varias
posibilidades que combinan varios factores, como si escribir o no el
nombre de pila completo, si colocar o no los apellidos antes que el
nombre, si poner o no un punto detrás de las iniciales, etc. En total se
ofrecen diez posibilidades para esta pregunta.
\item Tipo de letra para el nombre de los autores: Normal, versalitas,
negrita, etc.
\item Lugar en el que hay que imprimir la fecha.
\item Tipo de letra para la fecha.
\item Etc. La verdad es que las preguntas son exhaustivas y si me ocupara de
todas este documento llegaría al centenar de páginas. Hay preguntas para,
por ejemplo, la puntuación entre los nombres de los autores, qué hacer en
el caso de que se repitan en la lista dos obras del mismo autor, qué hacer
en el caso de que haya demasiados autores para una referencia, cómo debe
aparecer el nombre del autor en las etiquetas (si se eligió un estilo de
citas tipo Autor-año), qué hacer cuando en algún registro no conste la
fecha, qué uso dar al contenido del campo \ltr month-, cómo ordenar los
datos que componen la fecha, etc.
\end{itemize}
\item \textbf{Formateo de los distintos campos}: El siguiente grupo de
cuestiones (más de 30) afecta al formateo que recibirán los distintos campos
en los diferentes tipos de registro, aunque también se cuelan algunas
preguntas extra sobre ciertos campos adicionales a los estándar. Este grupo
de preguntas es el que me parece especialmente desordenado, o en el que yo
no he sabido descubrir cuál es el orden. Se empieza preguntando por el campo
título de los artículos, se sigue preguntando por otros datos sobre
artículos y, de pronto, se salta al título en las tesis doctorales, el
título y número en los informes técnicos, para volver otra vez a las
revistas... Las preguntas son numerosas, pero no muy difíciles de entender
si se tienen presentes los tipos de registro y los campos de cada uno de
ellos.
\item \textbf{Preguntas relativas a la puntuación entre las distintas partes
de la referencia bibliográfica}. En este grupo de preguntas (en total
cinco) podemos elegir el tipo de puntuación que, de modo general, separará a
unas partes de otras en la referencia bibliográfica (punto, coma, punto y
coma) y el tipo de puntuación que se usará para separar ciertos campos
específicos. Estos campos son:
\begin{itemize}
\item El campo \ltr author-. Es el primer dato de las referencias, y muchas
personas tienen la costumbre de separar este dato del resto mediante el
signo de los dos puntos, cuyo uso no tiene sentido para separar el resto
de los campos.
\item El campo \ltr note-. Suele ser el último dato y podemos elegir para
él que siempre vaya precedido de un punto, aunque el resto de los campos
se separen entre sí de otra manera.
\end{itemize}
\item \textbf{Opciones dependientes del idioma:} Si en la pregunta
correspondiente elegimos un fichero de definición de idioma, a partir de
aquí las preguntas serán extraidas de dicho fichero. En total las preguntas
son 9, y en ellas se nos plantea si se deben usar o no ciertas palabras y
abreviaturas tales como ``páginas'', ``editor'', etc. Ello implica en
ocasiones volver a temas ya tratados como, por ejemplo, el formateo de los
nombres de los autores, ahora para ver cómo usar la partícula separadora de
dos o más autores, la cual varía dependiendo del idioma.
Ese volver a temas anteriores, contribuye a que, como antes dije, se
produzca la sensación de que las preguntas se plantean de manera
desordenada.
\item \textbf{Otras preguntas:} Las siguientes preguntas (cuatro o cinco),
acentúan aun más la sensación de desorden de la que hablaba, porque se
vuelve otra vez a preguntar sobre posibles campos adicionales en nuestra
base de datos. En tal sentido se nos pregunta si usamos o no campos
adicionales para REVTeX\footnote{El paquete REVTeX, de la Sociedad Física
Americana (APS) da soporte para algunos campos adicionales en las bases de
datos: collaboration, eid, eprint, archive, numpages y url.}. Entre estas
preguntas es especialmente importante, en mi opinión, la relativa a si
usamos o no un campo \ltr url-. Si en nuestra base de datos hemos añadido,
para documentos electrónicos, un campo url destinado a almacenar su
dirección en Internet, constestamos que sí en esta pregunta el contenido de
este campo se incluirá en la referencia bibliográfica y se formateará
correctamente, aunque, para esto último, es preciso que en nuestro documento
\ltx- hayamos cargado el paquete \ltr url-.
\item \textbf{Preguntas relativas a la compatibilidad de los comandos a
utilizar en el fichero \tpf bbl-:} Las dos penúltimas preguntas se
refieren a qué comandos usar dentro del fichero \tpf bbl- que es generado
por \btx-. Ello afecta a la compatibilidad de dicho fichero con las
distintas versiones de \ltx-. En concreto las preguntas se refieren a cómo
generar la cursiva, y a la compatibilidad o no con plain \TeX.
\item \textbf{La última pregunta:} Finalmente se nos informa que se ha
generado un fichero \tpf dbj- y se nos pregunta si queremos ejecutarlo. Si
respondemos que sí se generará ya nuestro fichero de estilo. Si respondemos
que no (respuesta por defecto) para generar el fichero de estilo deberemos
ejecutar nosotros mismos el fichero \tpf dbj-, lo que se explica en la
próxima sección.
\end{enumerate}
\subsection{Uso de los ficheros \tpf dbj-}
\label{sec:uso-de-los}
Al terminar la ejecución de makebst, en el directorio desde donde se le
hubiera llamado un fichero con el nombre que hayamos indicado al principio del
proceso (en la tercera pregunta) y con extensión \tpf dbj-. Si a la última
pregunta respondimos que sí, tendremos además un fichero, del mismo nombre y
con extensión \tpf bst-. Este último fichero es nuestro fichero de estilo, y
por lo tanto para usarlo basta con copiarloa alguno de los directorios en los
que \btx- busca los ficheros de estilo\footnote{Lo que depende de nuestra
concreta distribución. En la distribución estándar para sistemas
Unix/Linux, ese directorio sería \ltr /usr/local/share/texmf/bibtex/-.}.
Pero de momento es mejor concentrarnos en el fichero \tpf dbj-. En él se
contiene la información necesaria para generar un fichero de estilo con las
características que hemos especificado a lo largo del proceso que se acaba de
ver. El fichero de estilo se generará simplemente ejecutando \ltx- sobre el
fichero \tpf dbj-. Así, por ejemplo, si nuestro estilo se llama \ltr
MiEstilo-, para generar el fichero \ltr MiEstilo.bst- nos basta con, en la
línea de comandos, ejecutar
\verb|latex MiEstilo.dbj|
Por lo tanto, si queremos generar un nuevo fichero de estilo, muy parecido al
que acabamos de generar, pero con alguna variante, es mucho más cómodo
\emph{modificar} el fichero \tpf dbj- que volver a ejecutar makebst. Asimismo,
si durante la ejecución de makebst, en algún momento nos equivocamos, en lugar
de interrumpir el proceso y volver a empezar, es más razonable terminarlo y
luego modificar el fichero \tpf dbj-.
En el fichero \tpf dbj- se almacenan todas las preguntas planteadas por
makebst, a partir de las relativas al uso de ficheros externos, con sus
correspondientes respuestas. Tanto las preguntas como las respuestas posibles
van, en general, precedidas de un signo de comentario (\%). Y para cada
pregunta se distingue entre la respuesta por defecto y las restantes. La
respuesta por defecto aparece sangrada con respecto a las demás, y en las
restantes respuestas, tras el signo \% al principio de la línea, hay una
cadena de texto, seguida de una coma y un nuevo signo \% tras el que se
contiene el texto de la respuesta.
Pues bien: para cada pregunta hecha por makebst y recogida en el fichero \tpf
dbj-:
\begin{enumerate}
\item Si todas las respuestas empiezan con una marca de comentario, significa
que la respuesta a esa pregunta coincide con el valor por defecto (siempre
la primera respuesta, algo más sangrada que las restantes).
\item Si alguna línea no empieza por una marca de comentario, significa que
esa fue la respuesta elegida.
\end{enumerate}
Por lo tanto, para cambiar algún detalle en un estilo, disponiendo del fichero
\tpf dbj- es más sencillo modificar a mano este fichero que volver a ejecutar
makebst. Tras modificar el fichero \tpf dbj-, ejecutando \ltx- sobre él se
generará un nuevo fichero de estilo con la nueva característica activada.
Por ejemplo: Imaginemos que tenemos un estilo, llamado ``MiEstilo'' en el que
el nombre de los autores se escribe en letra normal, y queremos que se escriba
en negrita. Debemos abrir el fichero \ltr MiEstilo.dbj- y buscar la pregunta
correspondiente al formato del nombre del autor. Una vez localizada veremos lo
siguiente:
{\small
\begin{verbatim}
%TYPEFACE FOR AUTHORS IN LIST OF REFERENCES:
%: (def) Normal font for author names
% nmft,nmft-sc,%: Small caps authors
% nmft,nmft-it,%: Italic authors
% nmft,nmft-bf,%: Bold authors
% nmft,nmft-def,%: User defined author font
\end{verbatim}
}
\noindent Para conseguir que los autores se escriban en negrita, simplemente
debemos quitar la primera marca de comentario en la línea 5ª, y, tras ello,
volver a ejecutar
\noindent\verb|latex MiEstilo.dbj|
\noindent Lo que nos generará un nuevo fichero de estilo llamado \ltr
MiEstilo.bst- idéntico al anterior salvo en el hecho de que ahora los nombres
de los autores se imprimen en negrita.
En ocasiones la activación de ciertas características puede implicar que haya
a su vez que modificar la respuesta dada a alguna otra. Por ejemplo: si se
eligió un estilo de cita numérico, y luego se quiere cambiar al estilo
Autor-año, no basta con cambiar esta respuesta en el fichero \tpf dbj-, sino
que el estilo Autor-año implica que se habrían planteado otras preguntas cuya
respuesta habrá que indicar en el fichero \tpf dbj-.
\section{Paquetes \ltx- relacionados con \btx-}
\label{sec:paqu-ltx-relac}
En la CTAN existen numerosos paquetes que añaden utilidades a \btx- o que de
alguna manera amplían las posibilidades del sistema.
No me es posible ocuparme de todos, y por ello seleccionaré los que me parecen
más interesantes.
\subsection{Referencias bibliográficas completas en el lugar donde son
citadas}
\label{sec:refer-bibl-compl}
En determinadas especialidades existe la costumbre de incluir los datos
completos de una referencia bibliográfica la primera vez que es citada en el
texto. Hay dos paquetes dirigidos a obtener ese efecto: bibentry y footbib.
Véamoslos por separado.
\paragraph{El paquete bibentry:}
\label{sec:el-paquete-bibentry}
Este paquete, que en la CTAN se incluye en el mismo directorio que \ltr
natbib-, ha sido desarrollado por Patrick W. Daly. Con él se pretende que
cuando se incluya en el texto una cita, se imprima no sólo la etiqueta
representativa de la misma, sino la referencia bibliográfica completa.
El paquete incorpora los siguientes comandos \ltx-:
\begin{itemize}
\item \cmd nobibliography\{BaseDatos\}- Indica el nombre de la base de datos
de la que debe extraer sus referencias el comando \cmd bibentry-. Por lo
tanto equivale al comando \cmd bibliography- con la salvedad de que no
imprime una lista de referencias. De hecho \cmd nobibliography- debe estar
definido antes de que se puedan usar los comandos \cmd bibentry-
\item \cmd bibentry\{clave\}- Imprime la referencia bibliográfica completa en
el lugar donde se encuentre, salvo el punto con el que la referencia termina
en los estilos estándar. Antes del uso de \cmd bibentry-, debe haberse
indicado la base de datos de la que se extraerá el registro, mediante el
comando \cmd nobibliography-. Asimismo, una referencia citada por este
procedimiento no será incluida en la lista de referencia final (que, si se
quiere generar, debe ser por el procedimiento normal).
\end{itemize}
Aunque no se si es por alguna circunstancia debida a mi instalación, o por un
defecto en el diseño del paquete, lo cierto es que el uso de este paquete me
genera errores (no críticos, pero errores), y, además, afecta al formateo de
la página donde se debe imprimir la referencia completa.
\paragraph{El paquete footbib:}
\label{sec:el-paquete-footbib}
Este paquete ha sido diseñado por Eric Domenjoub. Define un comando llamado
\cmd footcite-, similar a \cmd cite-, pero que provoca que la referencia en
cuestión se imprima al pié de la página donde se hizo, sin que estas notas
entren en conflicto con las notas a pie de página normales. Asimismo los
comandos \cmd cite- y \cmd nocite- pueden seguir usándose al modo habitual.
Las referencias generadas por \cmd footcite- usan su propia base de datos y
estilo bibliográfico, cuyos nombres le son indicados mediante \cmd
footbibliography- y \cmd footbibliographystyle-. El paquete incluye otros
comandos entre los que se puede citar \cmd footcite*- (que pone la marca en el
texto pero no imprime la nota) y \cmd footnocite- (que imprimer la nota, pero
sin poner marca alguna en el texto).
Lo que menos me gusta de este paquete es que las notas generadas por él
mantienen una numeración distinta del resto de las notas a pie y aunque las
distintas opciones del paquete ofrecen varias posibilidades respecto a su
formateo, lo cierto es que cuando las notas generadas por este paquete
coinciden con las notas normales, el resultado estético no es bueno.
\subsection{Generación de varias listas bibliográficas}
\label{sec:el-paquete-bibunits}
Existen varios paquetes para generar múltiples listas bibliográficas:
bibtopic\footnote{Permite generar listas bibliográficas diferentes, a partir
de bases de datos distintas. Se generará una lista para cada uno de los
ficheros \tpf bib- implicados. }, bibunits, chapterbib\footnote{Genera
listas bibligráficas independientes para cada fichero que haya sido incluido
en el documento principal mediante el comando \cmd include-.},
compactbib\footnote{Este paquete no está diseñado para trabajar con \btx-,
sino con el entorno estándar de \ltx- \ltr thebibliography-.},
multibbl\footnote{Fue diseñado pensando en referencias bibliográficas en
idiomas que, al manejar distintos alfabetos, no tenga sentido la ordenación
alfabética. Pero en la práctica sirve para generar cuantas listas
bibliográficas deseemos. } y multibib. De todos ellos, a mi modo de ver,
los más interesantes son bibunit y multibib. El primero permite generar varias
listas bibliográficas atendiendo al lugar del documento donde se produce la
cita, y el segundo permite hacerlo atendiendo al contenido de la cita.
\paragraph{El paquete bibunit:}
\label{sec:el-paquete-bibunit}
Este paquete, elaborado por José Alberto Fernández, y modificado por Thorsten
Hansen, permite trabajar con varias listas bibliográficas para distintas
unidades de un documento. Una vez cargado el paquete, podemos usar el entorno
bibunit cuyo formato es el siguiente:
{\small
\begin{verbatim}
\begin{bibunit}[Estilo]
... (texto normal)
\putbib[NombreBase]
\end{bibunit}
\end{verbatim}
}
Donde \emph{Estilo} es el nombre de alguno de los estilos estándar de \btx-, y
\emph{NombreBase} es el nombre de nuestra base de datos. El resultado será que
en el lugar donde se encuentre el comando \cmd putbib- se generará una lista
de referencias con las obras correspondientes a todos los comandos \cmd cite-
y \cmd nocite- incluidos dentro del entorno \ltr bibunit-, que no impide que
también pueda generarse una lista de referencias global para el documento,
mediante el procedimiento normal en \btx-.
El paquete también implementa el comando \cmd bibliographyunit[Unidad]- Donde
\emph{Unidad} (que debe ser introducido entre corchetes, no entre llaves),
puede asumir los valores \cmd chapter- o \cmd section-. El efecto de este
comando es el siguiente:
\begin{enumerate}
\item Para cada unidad de las indicadas en el comando (capítulos o secciones)
se generará una lista bibliográfica, si dentro de dicha unidad se incluye un
comando \cmd putbib-. La lista se incluirá precisamente donde se encuentre
tal comando.
\item Los comandos \cmd bibliography*- y \cmd bibliographystyle*- indican la
base de datos y el estilo para estas listas de referencias. Pero a falta de
estos comandos, se usarán los comandos normales para trabajar con \btx-:
\cmd bibliography- y \cmd bibliographystyle-.
\item \cmd bibliographyunit- es compatible con los entornos \ltr bibunit-. Y
si se encuentran los comandos \cmd bibliography*- y \cmd
bibliographystyle*-, la base de datos y el estilo allí indicados se usarán
también para los entornos bibunits.
\end{enumerate}
Por último, este paquete incluye también el comando \cmd cite*- cuyo efecto es
incluir una referencia tanto en la lista de referencias global como en la
local en donde se encuentre.
\paragraph{El paquete multibib:}
\label{sec:el-paquete-multibib-1}
Este paquete añade lo que el anterior no tenía. Mediante el anterior paquete
podíamos generar distintas listas bibliográficas atendiendo al \emph{lugar}
donde las citas tengan lugar, pero no había manera de diferenciar las obras
que se incluirán en cada lista atendiendo a la materia de que cada obra trate.
Multibib sí nos permite hacer eso.
Para entender bien el funcionamiento de este paquete empezaré por recordar lo
que ya sabemos: Los cuatro comandos de \ltx- fundamentales para la generación
de una lista bibliográfica son \cmd cite-, \cmd nocite-, \cmd bibliography- y
\cmd bibliographystyle-. Pues bien: este paquete define un comando llamado
\cmd newcites- cuyo formato es el siguiente:
\verb|\newcites{Sufijo}{Título}|
\noindent y cuyo efecto es el de generar cuatro comandos adicionales cuyos
nombres se componen del nombre de uno de los cuatro comandos que acabo de
mencionar, seguido del sufijo
recibido como argumento. Es decir: se generarán cuatro comandos cuyos
nombre serán:
\cmd cite[Sufijo]-, \cmd
nocite[Sufijo]-, cmd bibliography[Sufijo] y \cmd bibliographystyle[Sufijo]-.
La conjunción de los cuatro comandos generará una lista de referencias cuyo
título será el del segundo argumento recibido por \cmd newcites-.
Por ejemplo, en el presente documento se citan trabajos sobre \btx- y otros
que versan sobre otras cuestiones pero que, por las razones que sean he
decidido citar. Si quisiera que las referencias bibliográficas se ordenaran
atendiendo a ese criterio debería escribir, preferentemente al principio del
documento:
{\small
\begin{verbatim}
\newcites{bib}{Bibliografía específica sobre BibTeX}
\newcite{gen}{Otras obras citadas}
\end{verbatim}
}
Ello generará los siguientes ocho nuevos comandos:
\begin{enumerate}\small\parskip=-2pt
\item \cmd citebib-.
\item \cmd nocitebib-.
\item \cmd bibliographybib-.
\item \cmd bibliographystylebib-.
\item \cmd citegen-.
\item \cmd nocitegen-.
\item \cmd bibliographygen-.
\item \cmd bibliographystylegen-.
\end{enumerate}
Cada uno de estos comandos funciona de modo similar al comando \emph{normal}
equivalente, pero con la salvedad de que cada grupo de comandos sólo se
relaciona entre ellos, es decir: \cmd bibliographygen- insertará una lista de
referencias bibliográficas, cuyo título será ``Otras obras citadas'',
construida con el estilo indicado en \cmd bibliographystylegen- y compuesta de
las referencias indicadas mediante los comandos \cmd citegen- y \cmd
nocitegen-.
Para que esto funcione téngase en cuenta que para cada lista de bibliografía
se generará un fichero \tpf aux- distinto, y cada uno de esos ficheros debe
ser procesado con \btx-.
\subsection{Otros paquetes}
\label{sec:otros-paquetes}
Además de los paquetes mencionados, para trabajar con bibliografía están
disponibles los siguientes paquetes\footnote{No se incluye en la siguiente
lista, ni los paquetes que se limitan a instalar estilos bibliográficos
adicionales, ni los relativos a la compatibilidad con babel, que ya han sido
tratados.}:
\begin{description}
\item[authorindex:] Un paquete para generar un índice de autores citados en el
documento con una lista de las páginas donde cada autor es citado.
\item[bibarts:] Generación de listas bibliográficas propias del campo de las
artes.
\item[bibcheck:] En entornos \ltr thebibliography- escritos a mano, comprueba
que todos los elementos del mismo efectivamente hayan sido citados en el
documento.
\item[breakcites:] Ligeras modificaciones al comando \cmd cite- para permitir
saltos de línea dentro de una cita múltiple.
\item[chbibref:] Introduce un comando para cambiar el título de la lista de
referencias. Este comando funciona en cualquier tipo de documento.
\item[cite:] Este paquete permite que cuando una cita incluye tres o más
referencias consecutivas (en la lista de referencias), la cita aparezca
\emph{comprimida}. Por ejemplo: [1--4,6]. Implementa también un comando cmd
citen- que hace que las citas aparezcan en el texto sin corchetes. Soporte
para listas de citas numéricas comprimidas y ordenadas.
\item[compactbib:] En documentos con varias listas bibliográficas, permite una
numeración única en todas ellas.
\item[coverpage:] Genera una página de cubierta para los documentos
científicos, en la que se incluyen datos de \btx-.
\item[din1505:] Un estilo bibliográfico para textos alemanes, que trabaja con
\ltr natbib-.
\item[doipubmed:] Introduce nuevos comandos para la gestión de la
bibliografía.
\item[gloss:] Creación de glosarios usando \btx-.
\item[jurabib:] Bases de datos de \btx- para textos legales alemanes.
\item[notoccite:] Previene la numeración errónea de las citas cuando se usa el
estilo \ltr unsrt-.
\item[rangecite:] Permite citar, en el documento, un rango de obras de la
lista bibliográfica numerada.
\item[tocbibind:] Incluye los índices y la lista de referencias en el índice
sistemático.
\end{description}
\section{Otras cuestiones de interés}
\label{sec:intr-comand-ltx}
\subsection{El comando newblock y la opción openbib}
\label{sec:la-opcion-de}
Para \btx- en una referencia bibliográfica los distintos campos se agrupan en
\emph{bloques}. Y así hay un bloque para la autoría, otro para el título, otro
para los datos adicionales, etc.
Los estilos estandar, al formatear la lista de referencias bibliográficas,
insertan el comando \cmd newblock- cada vez que acaba un bloque y empieza
otro. Véase, por ejemplo, la siguiente referencia, tal y como el estilo \ltr
plain- la formatearía:
{\small
\begin{verbatim}
\bibitem{kopla}
Helmut Kopka and Patrick~W. Daly.
\newblock {\em Guide to {L}a{T}e{X}}.
\newblock Addison-Wesley, 4 edition, 2004.
\end{verbatim}
}
Por defecto el comando \cmd newblock- no hace nada. Pero podemos redefinirlo
para que haga algo; siendo este uno de los pocos casos en los que el
funcionamiento de \btx- es, en cierto modo, controlable desde el documento
\tpf tex-.
Existe incluso una opción para los documentos \ltr book- y \ltr article-
lamada \ltr openbib- (que debe ser establecida en el comando \cmd
documentclass-) que provoca una redefinición de \cmd newblock-. Cuando esta
opción está activa cada bloque dentro de una referencia empezará en una línea
nueva, la cual tendrá un sangrado igual al valor de \cmd bibindent-, que por
defecto es de 1.5 em.
% En la sección \ref{sec:las-bases-de} me he ocupado del contenido de los
% ficheros \tpf bib-. Hay ciertos aspectos, sin embargo, que no traté allí,
% por considerar que no eran necesarios en una parte del documento denominada
% ``\emph{\btx- básico}''. Este lugar es más adecuado para ellos.
% \subsection{Caracteres especiales y profundidad en el contenido de los
% campos}
% \label{sec:caract-espec-y}
% Como ya sabemos los delimitadores de un campo pueden ser llaves o comillas.
% Dentro del contenido del campo podemos asimismo usar llaves siempre y cuando
% las llaves abiertas se cierren dentro del campo.
% Atendiendo a las llaves, dentro de un campo se habla de \emph{profundidad}.
% La profundidad de una parte concreta de un campo es igual al número de
% llaves abiertas en ese momento, sin contar las llaves que puedan servir como
% delimitadores del campo. Así, en el siguiente ejemplo:
% \noindent\verb|title = "Curso de {\LaTeX} y de sus {P}rogramas {H}ermanos"|
% \noindent hay tres partes del campo que tienen profundidad 1: \cmd LaTeX-,
% ``P'' y ``H''. El resto tiene profundidad 0.
% La profundidad sirve para definir qué entiende \btx- por \emph{carácter
% especial}: Un carácter especial es una parte de un campo que empieza con
% una llave de apertura al nivel 0, es seguida inmediatamente por el carácter
% ``\textbackslash'' y termina con la llave de cierre correspondiente. En
% nuestro ejemplo el texto ``\verb|{\LaTeX}|'' tendría la consideración de
% \emph{carácter especial}, mientras que \verb|{P}| y \verb|{H}| no son
% caracteres especiales, pues no empiezan por ``\textbackslash''; y si
% hubiéramos escrito:
%
% \noindent\verb|title = "Curso de {{\LaTeX}} y de sus {P}rogramas {H}ermanos"|
% \noindent no habría ningún carácter especial, pues ahora
% ``\verb|{\LaTeX}|'' ya no está a profundidad 0 sino a profundidad 1.
% Los caracteres especiales están sometidos a reglas especiales de formateo
% que a su vez afectan a la ordenación de los registros, tal y como se
% comprobará en la tercera parte de este documento, cuando tratemos las
% funciones internas de los estilos de \btx-.
\subsection{Elementos @preamble en los ficheros \tpf bib-}
\label{sec:elementos-preamble}
En un fichero \tpf bib- podemos introducir un elemento \ltr @Preamble- de
acuerdo con el siguiente formato:
\verb|@Preamble{" Cadena de texto "}|
\noindent y su efecto es el de escribir, al principio del fichero \tpf bbl-
generado por \btx-, el texto entrecomillado. Esto es útil para introducir
determinados comandos \ltx- que provoquen algún tipo de funcionamiento
especial. Como ejemplos pueden verse el mencionado en \cite{cascales00} para
alterar el sistema de construcción de etiquetas en el estilo bibliográfico
``\texttt{alpha}'', o el mencionado en \cite{patashnik88} para conseguir que
en la lista bibliográfica dos registros se ordenen de cierta manera, alterando
las reglas generales sobre ordenación de registros.
Un ejemplo más sencillo: Si queremos que en todos los documentos en los que se
use nuestra base de datos el título de la lista de referencias bibliográficas
sea ``Bibliografía citada'' y que automáticamente la bibliografía se incorpore
al índice de contenido, podríamos escribir en el fichero \tpf bib-, el
siguiente texto:
{\small
\begin{verbatim}
@Preamble{ "\renewcommand{\refname}{Bibliografía citada} "
# "\addcontentsline{toc}{section}{Bibliografía citada} " }
\end{verbatim}
}
También es interesante el ejemplo que recoge \cite{markey05}:
{\small
\begin{verbatim}
@preamble{ "\makeatletter" }
@preamble{ "\@ifundefined{url}{\def\url#1{\texttt{#1}}}{}" }
@preamble{ "\makeatother" }
\end{verbatim}
}
Este ejemplo serviría para asegurarnos de que en el contenido de los campos de
nuestra base de datos podemos usar el comando \cmd url-, aunque la base se
vaya a usar en un fichero \tpf tex- en el que no se haya cargado el paquete
\ltr url- ni se haya definido de ninguna manera dicho comando.
En este último ejemplo se han usado tres elementos preamble, en lugar de un
solo elemento que conste de varias cadenas concatenadas (como se hizo en el
ejemplo anterior). En teoría hacer una cosa u otra da igual, pero hay que
tener en cuenta que el autor de \btx- afirma en \cite{patashnik88} que existe
un límite respecto del número de comandos ``\texttt{Preamble}'' que se pueden
usar, pero no aclara cuál es ese límite. En todo caso, puesto que en preamble
puede usarse la concatenación de cadenas (como se muestra en el primero de los
ejemplos), en realidad con usar una sola función ``\texttt{Preamble}'' será
siempre suficiente\footnote{De hecho los estilos de \btx- ejecutan la función
interna \ltr preamble\$- que hace que todos los elementos \ltr @preamble-
del fichero \tpf bib- se concatenen. Por ello, cuando usemos estos
elementos, conviene tener en cuenta la posible concatenación, para dejar los
espacios en blanco suficientes al principio y al final de la cadena en que
consiste el elemento. }.
\subsection{Comentarios y registros desconocidos en los ficheros \tpf bib-}
\label{sec:elementos-comment}
De lo hasta ahora visto se desprende que el formato interno de un fichero \tpf
bib- es siempre:
\verb|@NombreElemento{ContenidoElemento}|
Donde NombreElemento puede ser ``String'', ``Preamble'' o el nombre de los
distintos tipos de registro previstos para \btx-, y ContenidoElemento depende
del elemento de que se trate.
Esto es cierto, pero a ello hay que añadir que el fichero será válido aunque
además de ese contenido tenga cualquier otro. Y ese otro contenido no debe,
además ajustarse a ningún formato específico: simplemente será ignorado por
\btx-, pero no impedirá que el contenido válido sea localizado y usado.
Podemos pues incluir un texto explicativo de cada tipo de registros, o, si lo
preferimos, el capítulo primero del Quijote. ¡¡¡Podemos escribir lo que
queramos!!! Sin sujetarnos a ninguna regla. Así, por ejemplo, el siguiente
fichero:
{\small
\begin{verbatim}
# Fichero de prueba para BibTeX
# Las líneas de este texto van precedidos del signo "#"
# aunque no les hace falta. Ese signo, además, es
# interpretado por BibTeX como concatenador de cadenas
# de texto. Pero no genera ningún error.
@Book{knuth,
author = {Donald E. Knuth},
title = {The {TeX} {Book}},
year = 1986,
publisher = {Addison-Wesley},
}
Este libro contiene, en palabras de su autor, "todo lo que hay que
saber sobre TeX". Desgraciadamente no está disponible en España,
aunque podemos comprarlo a través de Amazon.com.
@libro{jqtaz,
autor = {Joaquín Ataz López},
titulo = {Libro de prueba},
fecha = 2006,
}
\end{verbatim}
}
Se verá que se ha incluido un registro válido, precedido de un texto y seguido
por otro texto. También hay un registro de tipo inexistente para \btx-. Ni el
texto precedente ni el posterior al registro válido impiden que \btx- localice
el registro correcto. Y tampoco el registro inexistente genera ningún
error\footnote{De hecho, al menos en los estilos estándar, no existen
propiamente hablando registros inexistentes, pues todo registro cuyo nombre
no sea identificado como un tipo de registro válido, será formateado como si
fuera un registro de tipo \ltr Misc-. Y en el ejemplo que he puesto, si en
el registro de tipo \ltr @Libro- los campos en lugar de \ltr autor-, \ltr
titulo- y \ltr fecha- fueran \ltr author-, \ltr title- y \ltr year-, el
registro sería correctamente formateado, no como un libro, pero sí como un
registro \ltr Misc-.}.
Por esa razón en \btx- no es preciso definir ningún carácter para comentarios:
Estos se pueden introducir libremente. No obstante, en su especificación
oficial viene prevista la existencia de un elemento \ltr @Comment- que existe
exclusivamente para mantener la compatibilidad entre los ficheros \btx- y los
ficheros Scribe.
\clearpage
\part{\btx- avanzado}
\label{part:btx-avanzado}
\section{Los ficheros de estilo como programas}
\label{sec:los-ficheros-de}
Los ficheros de estilo manejados por \btx- son en realidad \emph{programas}
escritos en un lenguaje innominado que informan a \btx- acerca de cómo deben
formatearse los datos leídos de la base de datos. Como el lenguaje no tiene
nombre oficial, cuando me tenga que referir a él lo denominaré BST que es la
extensión utilizada por los ficheros de estilo\footnote{Eso no significa que
el lenguaje se llame BST. Simplemente, si no uso un nombre para referirme a
él, en las próximas páginas tendría que emplear demasiados circunloquios.}.
\subsection{Cuestiones generales}
\label{sec:cuestiones-generales}
\subsubsection{Reglas generales de sintaxis}
\label{sec:reglas-generales-de}
Las características generales de BST son las siguientes:
\begin{enumerate}
\item No se distingue entre mayúsculas y minúsculas \emph{para los elementos
del lenguaje}, entendiendo por tales los nombres de los comandos,
variables y funciones, así como las cadenas de texto usadas como patrón en
determinadas funciones internas. Por el contrario, en el contenido de los
campos y de las variables de texto, sí se distinguen las mayúsculas de las
minúsculas.
\item Los saltos de línea y los tabuladores se tratan como espacios en blanco,
y dos o más espacios en blanco se tratan como si fueran sólo uno. Y a
diferencia de otros lenguajes no existe ningún carácter reservado para
indicar el fin de una instrucción: ni el punto y coma (como en C o Pascal)
ni el salto de línea (como en Basic y similares). Los saltos de línea se
usan exclusivamente para hacer más comprensible para los seres humanos lo
que una función hace.
No obstante lo anterior, de cara a la información que \btx- emite cuando se
produce algún error (y que se almacena en el fichero \tpf blg- generado tras
la ejecución de \btx-), se recomienda:
\begin{enumerate}
\item Insertar una o más líneas en blanco entre la definición de dos
funciones.
\item No introducir líneas en blanco dentro de una función.
\end{enumerate}
Lo anterior, por supuesto, no se aplica al contenido de las variables de
texto. En ellas todos los espacios en blanco son relevantes y se distingue
entre espacios en blanco y tabuladores\footnote{Ello con independencia de
que si finalmente el contenido de la variable termina formando parte de
una lista de referencias insertada en un documento \tpf tex-, los espacios
en blanco y tabuladores existentes en ella reciban el tratamiento que
\ltx- da a tales caracteres.}. Asimismo las constantes de texto, que se
introducen entrecomilladas, deben escribirse en la misma línea: entre las
comillas de apertura y cierre de una cadena de texto no puede haber un salto
de línea.
\item Se puede hacer uso de las llaves para agrupar bloques de código.
\item El carácter ``\%'' está reservado para los comentarios: Todo lo que se
escriba a la derecha del mismo, hasta el final de la línea, será ignorado.
\end{enumerate}
\subsubsection{Estructura de los programas BST}
\label{sec:estructura-de-un}
Básicamente un programa BST sigue la siguiente estructura:
\begin{enumerate}
\item En primer lugar se encuentra la \emph{definición} de los campos con los
que se va a trabajar. Ello se hace mediante el comando ENTRY. Cualquier
campo existente en la base de datos que no se haya incluido en esta
\emph{lista de campos} no será leído ni cargado en memoria.
\item A continuación se encuentra la definición de una función para cada uno
de los tipos de registro que puede haber en la base de datos. La función
debe tener el mismo nombre que el tipo de registro de que se trate, y en
ella se debe especificar cómo formatear los datos de ese tipo de registro.
Debe asimismo definirse una función llamada \ltr default.entry- que
formateará los datos de los registros cuyo nombre no coincida con el de
ninguna de las funciones anteriores. En los ficheros de estilo estándar de
\btx- esta función se limita a considerar que todo registro que no sea de
algún tipo predefinido es un registro de tipo \ltr Misc-. Por otra parte,
como las reglas del lenguaje obligan a que no se puedan invocar variables o
funciones que no hayan sido previamente definidas, la escritura de las
funciones anteriores implicará normalmente la escritura de funciones
adicionales y la declaración de variables.
\item También es posible añadir una lista de MACROS o abreviaturas
predefinidas para la base de datos.
\item A continuación se encuentra el comando READ, que es el verdadero centro
neurálgico de un programa BST. Este comando lee la base de datos y construye
la lista de datos a partir de los datos leídos, cargando el contenido de los
campos, para cada registro de la lista.
\item Una vez leídos los datos, y generada la lista que los contiene, viene la
fase de comprobación, formateo (ejecutando las funciones de formateo que se
han definido para cada tipo de registro) y ordenación de la lista.
\item Por último la lista de datos se vuelca en el fichero \tpf bbl-
correspondiente.
\end{enumerate}
En la secuencia que acabo de indicar hay partes que se \emph{suelen} hacer y
otras que se \emph{deben} hacer. Así, por ejemplo, he dicho que suele
empezarse por el comando ENTRY que define la lista de campos. Esto no es
obligatorio, lo único verdaderamente obligatorio es que el comando ENTRY sea
anterior al comando READ y que los campos estén definidos antes de ser
utilizados, es decir: antes de que alguna de las funciones de formateo de los
distintos tipos de registro los lleguen a mencionar.
\subsection{Objetos del lenguaje BST}
\label{sec:sintaxis-de-los}
Aunque el lenguaje BST dispone de los elementos presentes en la mayoría de los
lenguajes de programación (variables, funciones, etc). En un primer nivel de
aproximación, el lenguaje sólo consta de comandos. Y los comandos existentes
son solamente 10, los cuales se usan para generar o definir el resto de los
elementos del lenguaje.
\subsubsection{Los comandos de BST}
\label{sec:los-comandos-de}
Podemos agrupar a los comandos atendiendo a diferentes criterios. Por orden
alfabético sus nombres son ENTRY, EXECUTE, FUNCTION, INTEGERS, ITERATE, MACRO,
READ, REVERSE, SORT y STRINGS. El formato para los comandos es el siguiente:
\verb|NombreComando [{Argumento1}] [{Argumento2}] [{Argumento3}] |
\noindent Donde \emph{NombreComando} es alguno de los diez comandos que he
especificado (en mayúsculas o minúsculas, es indiferente) y tras el nombre,
entre llaves, se debe introducir los argumentos que el comando espera. No
todos los comandos reciben argumentos, ni todos reciben el mismo número de
argumentos. Hay dos que no reciben ningún argumento (READ y SORT), cinco que
reciben un sólo argumento (EXECUTE, INTEGERS, ITERATE, REVERSE y STRINGS), dos
que reciben dos argumentos (FUNCTION y MACRO) y uno que recibe tres argumentos
(ENTRY).
Se aplican además las siguientes restricciones sobre el número y orden de los
comandos:
\begin{enumerate}
\item Sólo puede haber un comando ENTRY y un comando READ. Los demás comandos
pueden aparecer tantas veces como se desee.
\item El comando ENTRY y los comandos MACRO deben encontrarse antes del
comando READ. También debe encontrarse antes de READ los comandos FUNCTION
que declaren la acción básica ante cada uno de los posibles tipos de
registro (véase el epígrafe anterior).
\item Los comandos EXECUTE, ITERATE, REVERSE y SORT deben necesariamente
encontrarse después del comando READ.
\end{enumerate}
En cuanto al significado y uso de los comandos, más adelante se explicarán la
mayoría de ellos. Ahora me centraŕe en dos: READ y SORT:
\begin{description}
\item[READ:] Es el comando central de un programa BST. Su efecto es el de leer
la base de datos y generar la lista de datos, que contendrá, para cada uno
de sus elementos, un valor para cada uno de los campos y de las variables de
lista definidas mediante el comando ENTRY. Tanto el nombre de la base de
datos a leer como los datos concretos que hay que leer se extraen del
fichero \tpf aux- generado por \ltx- durante su compilación.
\item[SORT:] Tras la ejecución del comando READ, la lista de datos se
encuentra en el orden en el que en el fichero \tpf aux- se encontraban las
distintas citas. El comando SORT reordena la lista atendiendo al valor de
la variable global \ltr sort.key\$-.
\end{description}
\subsubsection{La lista de datos}
\label{sec:la-lista-de-2}
La tarea fundamental de \btx- es leer una serie de datos, formatearlos y
volcarlos, una vez formateados, en un determinado fichero. Por lo tanto la
lista de datos es una noción esencial. Esta lista se genera cuando se ejecuta
el comando READ. De la apertura del fichero que contiene la base de datos,
localización y lectura de los registros precisos se ocupa automáticamente
\btx-, es decir: no hay que especificar ninguna rutina; el comando READ sabe
lo que tiene que hacer.
Para cada registro de la base de datos que se haya leído habrá un
\emph{elemento} en la lista. Este elemento estará compuesto a su vez de los
campos del registro y de las variables de lista que se hayan declarado (véase
la sección \ref{sec:variables}). Estas variables de lista, por otra parte,
inicialmente carecerán de valor: tendrá que ser alguna función la que se lo
de.
En relación con los campos del registro leído pueden darse dos circunstancias:
\begin{enumerate}
\item Que en un registro concreto exista algún campo que no esté incluido en
la lista de campos que el programa ha debido declarar antes de la lectura.
En tal caso ese \emph{campo} no previsto será ignorado y no se cargará en la
lista de datos.
\item Que en el registro leído no existiera alguno de los campos declarados en
el programa. Esto es bastante habitual porque el programa declara todos los
campos posibles, pero no en todos los registros habrá un valor para cada
campo. Cuando para un campo no hay datos en un registro, dicho campo adopta
el valor de ``omitido''. Un campo ``omitido'' no es lo mismo que un campo
vacío, ya que este último se produce cuando un campo \emph{estaba} en el
registro, pero su valor es una cadena vacía\footnote{La diferencia es
exclusivamente a efectos de programación. Desde el punto de vista práctico
es claro que una vez formateada la referencia, no hay diferencias entre un
campo omitido y un campo vacío: el dato que dicho campo debía contener, no
está en ninguno de ambos casos.}.
\end{enumerate}
En la lista de datos no se incorporan en realidad los datos de la base de
datos tal y como hayan sido leídos, sino que \btx-, al leer el registro,
aplica automáticamente las abreviaturas definidas en la base de datos mediante
elementos de tipo \ltr @String-, así como las macros definidas en el propio
programa mediante el comando MACRO.
Este comando tiene el siguiente formato:
\verb|MACRO {NombreMacro} {"Texto de la Macro"}|
\noindent y su efecto es el de crear una abreviatura que no está localizada en
el fichero \tpf bib-, sino en el propio estilo y, por lo tanto, se podrá usar
en cualquier base de datos que utilice dicho estilo.
Las abreviaturas creadas con este comando son totalmente equivalentes a las
generadas dentro del fichero \tpf bib- con \ltr @String-, hasta el punto de
que si una abreviatura definida con MACRO tuviera el mismo nombre que una
abreviatura definida con \ltr @String-, la segunda sobreescribiría a la
primera.
Todos los comandos MACRO de un programa BST deben encontrarse antes del
comando READ.
Si nuestro estilo maneja bases de datos en los que los meses se
hayan escrito con las abreviaturas estandar en inglés, pero queremos que en la
lista de referencias los nombres figuren en español, deberíamos\footnote{En
\cite{cascales00} se dice que los estilos \emph{deben} incorporar macros
para los nombres de los meses. Pero no es cierto que \emph{deban hacerlo},
aunque posiblemente sea una buena idea hacerlo ya que si nuestro estilo se
va a manejar con múltiples bases de datos, no debemos olvidar que en las
recomendaciones generales sobre \btx- se suele incluir la de usar para los
meses del año las abreviaturas estándar en inglés. } escribir en
nuestro estilo:
{\small
\begin{verbatim}
MACRO {jan} {"Enero"}
MACRO {feb} {"Febrero"}
MACRO {mar} {"Marzo"}
MACRO {apr} {"Abril}
MACRO {may} {"Mayo}
...
\end{verbatim}
}
\subsubsection{Variables y constantes}
\label{sec:almac-de-los}
\paragraph{Tipos de datos:}
\label{sec:tipos-de-datos-1}
Los datos sobre los que se trabaja, bien se introduzcan directamente en alguna
sentencia del programa, bien se encuentran almacenados en alguna variable,
pertenecerán necesariamente a uno de los siguientes dos tipos:
\begin{enumerate}
\item Datos numéricos: En este rango entran exclusivamente los números
enteros. BST no puede trabajar directamente con números que tengan
decimales.
\item Datos alfanuméricos: Consisten en una secuencia de cero o más
caracteres. Una secuencia de cero caracteres es una cadena vacía. Dentro de
una cadena de texto está admitido absolutamente cualquier carácter
imprimible y los espacios en blanco son relevantes.
\end{enumerate}
En la tipología de los lenguajes de programación se distingue entre lenguajes
tipados y no tipados, dependiendo de si los tipos de los datos deben ser
establecidos de antemano o si, por el contrario, el propio lenguaje
dinámicamente es capaz de, analizando un dato, decidir a qué tipo pertenece.
Pues bien BST es un lenguaje fuertemente tipado (aunque con pocos tipos de
datos), lo que significa que en el momento de definir una variable ya hay que
indicar si contendrá datos numéricos o alfanuméricos, al introducir valores
constantes hay que indicar el tipo de los mismos y, además, no hay apenas
funciones de conversión de tipos.
\paragraph{Variables:}
\label{sec:variables}
En BST se admiten dos tipos distintos de variables. Las variables globales y
las variables de lista, cada una de las cuales, por su parte, puede ser
numérica o alfanumérica, según el tipo de datos que pueda almacenar.
Las variables globales son, las que podríamos llamar \emph{normales}. Tienen
un solo valor que está accesible para cualquier función siempre y cuando la
función se haya definido después de la declaración de la variable.
Junto con las variables globales se encuentran las variables de lista. En
ellas la misma variable asume un valor diferente para cada uno de los
elementos de la lista. Un caso concreto de variables de lista son los campos,
que se consideran variables de lista especiales porque deben ser declarados
expresamente como campos, para que, en el momento de la lectura de la base de
datos, \btx- asigne a cada campo su valor correspondiente.
Pero junto con los campos podemos declarar las variables de lista que
queramos. Al declarar una variable de lista es como si estuviéramos añadiendo
un campo que sabemos que no está en la base de datos, pero que pensamos llenar
mediante alguna función; normalmente la que formatee los datos del registro.
Por ejemplo: los cuatro estilos estándar de \btx- definen una variable de
lista alfanumérica llamada \ltr label- que se usa para almacenar la etiqueta
identificativa de dicho registro, que será luego devuelta por el comando de
\ltx- \cmd cite-.
Al igual que el resto de los datos manejados por BST las variables de lista
deben ser numéricas o alfanuméricas. Los campos se consideran siempre
alfanuméricos, y el tipo del resto de las variables de lista se define en el
mismo momento en el que se declara la propia variable.
\paragraph{Declaración de variables:}
\label{sec:decl-de-vari}
Para declarar variables se usan tres comandos:
\begin{description}
\item[STRINGS:] Permite declarar variables globales alfanuméricas. Tras el
comando hay que escribir, entre llaves, los nombres de las variables que se
quieren declarar, separados por espacios en blanco o por saltos de línea.
Por ejemplo, para declarar dos variables alfanuméricas llamadas ``nombre'' y
``lista'' habría que escribir la siguiente línea:
\verb|STRINGS { nombre lista }|
\item[INTEGERS:] Permite declarar variables globales numéricas. Su formato es
similar a STRINGS, y así, por ejemplo, la próxima línea declararía una
variable numérica llamada ``cont'':
\verb|INTEGERS { cont }|
\item[ENTRY:] Este comando es el que se usa para declarar las variables de
lista, incluidos los campos. Su principal peculiaridad estriba en que en un
fichero \tpf bst- sólo puede haber un comando ENTRY (que suele ser el primer
comando del fichero). Su formato es:
{\small
\begin{verbatim}
ENTRY
{Lista de campos}
{Variables de lista numéricas}
{Variables de lista alfanuméricas}
\end{verbatim}
}
En ``\emph{lista de campos}'' hay que incluir todos los campos de la base de
datos con los que se piensa trabajar, con independencia de que se trate de
campos presentes en todos los registros o sólo en alguno de ellos. Los
nombres de los campos se deben separar entre sí por espacios en blanco (o
saltos de línea).
En el caso de que no queramos usar variables de lista numéricas o
alfanuméricas, hay que escribir las llaves sin nada entre ellas, pero no
puede dejar de indicarse expresamente todos los argumentos esperados por el
comando. Así en el siguiente ejemplo:
{\small
\begin{verbatim}
ENTRY { address author booktitle chapter edition editor
howpublished institution journal key month note
number organization pages publisher school series
title type volume year }
{ }
{ label }
\end{verbatim}
}
\noindent estariamos definiendo los campos de una base de datos estándar de
\btx-, así como la variable de lista alfanumérica \ltr label- y ninguna
variable de lista numérica.
\end{description}
Los nombres de las variables deben empezar por una letra, y pueden contener
cualquier carácter salvo espacios en blanco (o tabuladores) y los diez
caracteres reservados de \ltx-. Es muy normal que los nombres de las variables
incluyan puntos, de tal modo que se consigan nombres verdaderamente
descriptivos como en \ltr esto.es.una.variable.de.ejemplo-.
\paragraph{Variables predefinidas:}
\label{sec:vari-pred}
Hay tres variables globales y un campo predefinidos (que no hay que declarar
explícitamente):
\begin{enumerate}
\item \ltr sort.key\$-: Es una variable global alfanumérica usada para indicar
al comando SORT el criterio de ordenación de los elementos que componen la
lista de datos.
\item \ltr entry.max\$-: Es una variable global numérica que indica la
longitud máxima de las variables de lista alfanuméricas. Hay que usarla si
queremos limitar dicha longitud; el efecto será que la variable se truncará.
\item \ltr global.max\$-: Es una variable global numérica que indica la
longitud máxima de las variables globales alfanuméricas. Si se le da algún
valor, las variables globales alfanuméricas cuya longitud supere dicho
valor, quedarán truncadas.
\item \ltr crossref-: Es un campo implícito en la base de datos, es decir: no
hay que declararlo expresamente. Se usa para las referencias cruzadas.
\end{enumerate}
\paragraph{Constantes:}
\label{sec:constantes-y-macros}
En cualquier lugar donde se espere un dato podemos usar el nombre de una
variable, en cuyo caso el dato a manejar sería el contenido de la misma, o un
valor constante. Estos se representan de la siguiente manera:
\begin{enumerate}
\item Los valores constantes alfanuméricos se deben introducir entre comillas.
\item Los valores constantes numéricos se deben introducir precedidos del
signo ``\#'' y sin ningún espacio en blanco entre dicho signo y el número de
que se trate. Y así \ltr \#1- es una constante válida, pero \ltr \# 1- no
lo es.
\end{enumerate}
\subsubsection{Funciones}
\label{sec:funciones}
Hay dos tipos de funciones: las internas y las definidas por el usuario. Las
funciones internas se verán más adelante, las definidas por el usuario se
generan mediante el comando FUNCTION cuyo formato es
{\small
\begin{verbatim}
FUNCTION {NombreFunción}
{ Contenido de la función }
\end{verbatim}
}
Donde para el nombre de la función se aplican las mismas reglas que para el
nombre de las variables, es decir: debe empezar por una letra, y puede
contener cualquier carácter imprimible (lo que excluye espacios en blanco,
tabuladores y saltos de línea) salvo cualquiera de los caracteres reservados
de \ltx-.
En BST las funciones deben ser definidas antes de ser invocadas, y no se
admite la recursividad (funciones que se invocan a sí mismas). Para invocar
una función se pueden usar los siguientes comandos:
\begin{enumerate}
\item Mediante el comando \ltr EXECUTE \{NombreFuncion\}-. La función se
ejecutará una sola vez.
\item Mediante los comandos \ltr ITERATE- o \ltr REVERSE-
\verb|{NombreFuncion}|.
\end{enumerate}
Los dos comandos mencionados en último lugar ejecutan la función recibida como
argumento en cada uno de los elementos de la lista de datos. La diferencia
entre ambos estriba en el orden en el que estos elementos son tratados:
ITERATE ejecuta la función empezando por el primer elemento de la lista y
terminando por el último, mientras que REVERSE lo hace en el orden inverso.
Cuando desde una función se quiere invocar a otra, no es preciso (ni posible)
usar ninguno de estos comandos, sino que basta con escribir su nombre, y así
en el siguiente ejemplo:
{\small
\begin{verbatim}
FUNCTION {ejemplo.llamada.funciones}
{
llamar.funcion.1 llamar.funcion.2
llamar.funcion.3
}
\end{verbatim}
}
\noindent La función que he denominado \ltr ejemplo.llamada.funciones- se
limita a llamar (y ejecutar) tres funciones, llamadas, respectivamente, \ltr
llamar.funcion.1-, \ltr llamar.funcion.2- y \ltr
llamar.funcion.3-\footnote{Obsérvese como el salto de línea que separa a la
segunda función de la tercera, podría ser un espacio en blanco. En BST las
líneas no se corresponden con las instrucciones, y se usan sólo para
aumentar la legibilidad del programa. }.
\subsubsection{La pila del programa }
\label{sec:la-pila-del}
Al explicar las variables no he dicho cómo se les asigna valor. Y al explicar
las funciones se ha visto que ni reciben argumentos ni devuelven valores. Ello
es porque tanto la asignación de valores a las variables, como el intercambio
de datos entre funciones se realiza a través de la pila del
programa\footnote{En teoría podríamos usar las variables globales para
comunicar entre sí a las funciones. Pero esto no es casi nunca una buena
idea, como, por otra parte, dicen casi todos los manuales de técnicas de
programación. El uso indiscriminado de variables globales suele ser fuente
de errores muy difíciles de localizar. Además, como para el uso de las
funciones internas no hay más remedio que usar la pila, no tiene demasiado
sentido rehuir dicho uso en nuestras propias funciones.}, que es una zona de
memoria en la que se puede ir \emph{apilando} datos (de ahí el nombre de
\emph{pila}). Podemos imaginar que la pila es un cajón en el que se van
almacenando carpetas (los datos). Las carpetas se van dejando una sobre otra
en el cajón, de tal manera que en cada momento la carpeta superior es siempre
la última que se introdujo. Cada carpeta que añadimos aumenta el tamaño del
montón, y cada carpeta que extraemos lo reduce.
Las operaciones básicas en una pila son siempre introducir datos y extraer
datos y en ellas el orden es inalterable. No se puede acceder a un dato que
esté en la pila sin sacarlo de ella, y no es posible sacar un dato sin antes
haber sacado todos los que estaban sobre él, por haber sido introducidos
después; es decir: para sacar de nuestro cajón una determinada carpeta es
preciso sacar antes todas las carpetas que estaban sobre ella\footnote{Lo que
en terminología informática se indica diciendo que las pilas son estructuras
de datos de tipo LIFO, siendo esta última palabra las siglas en inglés de la
frase: ``\emph{Last In, First Out}'', que en español significa que ``el
último en entrar es el primero en salir''. O sea: el orden de extracción de
datos es exactamente el inverso al orden en el que los datos se
introdujeron.}.
En BST las funciones usan la pila de la siguiente manera:
\begin{itemize}
\item Antes de llamar a la función se dejan en la pila los datos que esta
necesitará (lo que en otros lenguajes de programación equivaldría a sus
parámetros).
\item La función se ocupa de extraer esos datos de la pila, de tal manera que
tras la ejecución de ésta podemos asumir que en la pila ya no estarán los
datos que se introdujeron en ella.
\item Si la función tiene que devolver algún resultado, lo hará
introduciéndolo en la pila.
\end{itemize}
Dependiendo de lo que la función haga, en la pila podemos querer introducir:
\begin{enumerate}
\item El valor almacenado en una variable. Para ello basta con escribir el
nombre de la variable. El nombre de una variable escrito dentro de una
función BST tiene como efecto el enviar a la pila el valor de la misma.
\item Un valor constante, por ejemplo, el número ``5'', o el texto ``tomo''.
Para enviar valores constantes se aplican las reglas que se explicaron en la
página \pageref{sec:constantes-y-macros} sobre constantes, es decir: los
valores numéricos se escriben precedidos del signo ``\#'' y los
alfanuméricos se entrecomillan.
\item El nombre de una variable, no su valor. Esto se hace sobre todo con las
funciones que asignarán algún valor a la variable. Para introducir en la
pila el nombre de la variable y no su valor, hay que preceder el nombre de
un apóstrofe, sin dejar ningún espacio en blanco entre el apóstrofe y el
nombre. Y así mientras, por ejemplo, \ltr cont- envía a la pila el valor de
la variable así llamada, \ltr 'cont- lo que envía a la pila es el nombre de
la variable, no su valor.
\item El nombre de una función. Esto se hace con algunas funciones que pueden
ejecutar otras funciones, cuyo nombre deben conocer. Para introducir en la
pila el nombre de una función se hace igual que para introducir el nombre de
una variable: se escribe un apóstrofe precediendo al nombre. Eso hace que
BST en lugar de ejecutar la función, envíe a la pila su nombre.
\end{enumerate}
De lo que se acaba de decir podemos además inferir que a diferencia de otros
lenguajes de programación, en BST no hay en sentido estricto sentencias, sino
instrucciones que se ejecutan inmediatamente; y si normalmente las
instrucciones se escriben en líneas, ello es para dotar de mayor claridad al
programa. podríamos escribir enteramente una función sin que en ella hubiera
ningún salto de línea, y podríamos también usar una línea para cada palabra.
Aunque lo mejor para ilustrar lo que se acaba de decir es un ejemplo.
Imaginemos que tenemos una variable numérica llamada \ltr contador- y que
queremos incrementarla en dos elementos. En los lenguajes de programación
\emph{normales} ello se podría escribir de muchas maneras como:
{\small
\begin{verbatim}
contador += 2;
contador = contador + 2;
contador := contador + 2;
\end{verbatim}
}
\noindent En BST habría que escribir:
\verb|contador #2 + 'contador :=|
\noindent Analicemos esta línea para entender bien cómo funciona la pila:
\begin{enumerate}
\item La primera palabra ``contador'' es el nombre de la variable con la que
queremos trabajar, y el efecto de escribirla es el de que su valor se
almacenará inmediatamente en la pila (sin esperar a que acabe la linea).
\item A continuación hemos escrito ``\#2'', eso provoca que se envíe a la pila
el valor numérico ``2''. El carácter ``\#'' que precede al ``2'' es
necesario, de acuerdo con las reglas sobre la introducción de constantes que
antes expliqué.
\item A continuación hemos escrito el carácter ``+'', el cual es el nombre de
una función interna de BST cuyo efecto es extraer de la pila los dos últimos
elementos (que deben ser numéricos), sumarlos, e introducir en la pila el
resultado de la suma. Tras haberse ejecutado esta función, en la pila ya no
estará ni el valor de ``contador'' ni el número ``2'', ya que ambos han sido
\emph{extraidos} de la pila. En la pila ahora estará, tan solo, el resultado
de la función ``+'': la suma de ambos valores.
\item Después hemos escrito \emph{'contador}, es decir el nombre de la
variable con la que estamos trabajando, precedido de un apóstrofe. El
apóstrofe indica que no queremos almacenar en la pila el valor de la
variable, sino exclusivamente su nombre.
\item Por último ``:='' es otra función interna de BST cuyo efecto es extraer
de la pila los dos últimos valores introducidos, asignar al primer elemento
extraído (último que se introdujo) el valor del segundo elemento extraído
(penúltimo que se introdujo), para ello se asume que el último elemento
introducido debió ser el nombre de una variable (su dirección en memoria) y
el penúltimo un valor adecuado para dicha variable, es decir: del mismo tipo
(numérico o alfanumérico) que ella. Esta función no introduce nada en la
pila.
\end{enumerate}
¿Complicado? No demasiado, sólo es cuestión de acostumbrarse a que en BST las
cosas que escribimos tienen un efecto inmediato: Si son variables o constantes
se introducen en la pila, y si son funciones, actúan sobre los datos en la
pila y eventualmente introducen nuevos datos en ella, que podemos leer para
comprobar el resultado de la función.
No obstante, como estar continuamente refiriéndonos a la pila es muy tedioso,
en adelante me referiré a las funciones como si la pila no existiera, en el
bien entendido de que cuando digo que una función recibe como parámetro un
dato, dicho dato lo recibirá a través de la pila. Asimismo cuando diga que una
función devuelve cierto valor, quiero decir que dicho valor será introducido
en la pila y para comprobarlo habrá que extraerlo de ella. Y en fin: cuando
una función deba recibir varios datos, me referiré a ellos siempre en el orden
en el que se introdujeron, y no en el orden en el que la función los debe
extraer (que es el inverso).
\subsection{Operadores y estructuras de control}
\label{sec:pseud-del-leng}
BST carece de algunos elementos que otros lenguajes de programación tienen
tales como operadores o estructuras de control. No obstante existen funciones
internas de BST que cumplen dicho papel. A continuación me ocuparé de ellas:
\subsubsection{Operadores}
\label{sec:operadores}
\paragraph{Operadores de comparación:}
\label{sec:oper-de-comp}
Estos operadores son tres: `$<$', `$>$' y `$=$'. Todos ellos reciben dos
datos que deben ser comparados. En `$=$' los datos pueden ser numéricos o
alfanuméricos, en `$<$' y en `$>$' deben ser necesariamente numéricos.
\begin{itemize}
\item [`$<$'] Devuelve un ``1'' si el primer dato es menor que el segundo. En
caso contrario devuelve un ``0''.
\item [`$>$'] Devuelve un ``1'' en la pila si el primer dato es mayor que el
segundo, en el caso contrario devuelve un ``0''.
\item [`$<$'] Devuelve un ``1'' en la pila si ambos datos son iguales, en el
caso contrario devuelve un ``0''.
\end{itemize}
\paragraph{Operadores matemáticos y de concatenación:}
\label{sec:oper-matem-y}
Los operadores matemáticos son `$+$' y `$-$', ambos actúa sobre dos datos
numéricos. El operador de concatenación es `*' y actúa sobre dos datos
alfanuméricos:
\begin{itemize}
\item [`$+$'] Recibe dos números y devuelve la suma de ambos.
\item [`$-$'] Recibe dos números y devuelve el resultado de restar el segundo
del primero.
\item [`*'] Recibe dos cadenas de texto y devuelve una cadena igual a la
concatenación de ambas. La concatenación se hace en el orden en el que las
cadenas originales fueron insertadas en la pila.
\end{itemize}
\paragraph{El operador de asignación:}
\label{sec:el-operador-de}
Para asignar cualquier valor a cualquier variable se usa el operador de
asignación, cuyo formato es el siguiente:
\verb-Valor 'NombreVariable :=-
Donde \ltr Valor- debe ser adecuado al tipo de variable de que se trate, es
decir: un número si es variable numérica o una cadena de texto si es variable
alfanumérica, y \ltr 'NombreVariable- es el nombre de una variable previamente
definida por cualquiera de los procedimientos que permiten definir variables
(comandos ENTRY, INTEGERS o STRINGS).
Este operador no introduce ningún dato en la pila.
\subsubsection{Estructuras de control}
\label{sec:flujo-del-programa}
En BST no hay, en el sentido estricto de la palabra, estructuras de control,
es decir: instrucciones que permitan desviar el flujo del programa dependiendo
de si se produce o no alguna condición. Pero lo que si hay es dos funciones
internas que pueden usarse para ese objetivo.
\paragraph{La función if\$:}
\label{sec:la-funcion-if}
Recibe tres datos: Un entero y el nombre de dos funciones, o dos bloques de
código. Si el entero es mayor que cero, ejecutará la primera función o bloque
de código, y si es igual o menor que cero ejecutará la segunda.
El primer dato recibido suele ser fruto de una comparación realizada mediante
alguno de los operadores de comparación que se acaban de explicar. Por lo
tanto el esquema general del uso de \ltr if\$- es el siguiente:
{\small
\begin{verbatim}
Comparación
{ Bloque a ejecutar si la comparación es cierta }
{ Bloque a ejecutar si la comparación no es cierta }
if$
\end{verbatim}
}
Por ejemplo, el siguiente bloque de código, extraído de los estilos estándar:
{\small
\begin{verbatim}
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ add.period$ " " * write$ }
if$
}
if$
mid.sentence 'output.state :=
}
if$
\end{verbatim}
}
En la primera línea se compara el valor de las variables \ltr output.state- y
\ltr mid.state-. Si ambas son iguales se ejecutará el bloque de código
contenido en la segunda línea. Pero si son distintas se ejecutará el bloque
contenido entre la tercera y la penúltima línea, el cual, a su vez, contiene
nuevas funciones \ltr if\$- anidadas.
\paragraph{La función while\$:}
\label{sec:la-funcion-while}
Esta función recibe el nombre de dos funciones (o bloques de código) que va
ejecutando alternativamente hasta que la segunda función devuelva un valor
igual o menor que cero. En ella se usan las llaves para agrupar bloques de
código de modo similar a como se hace en \ltr if\$-.
While\$ se usa fundamentalmente de dos maneras:
\begin{enumerate}
\item Para repetir cierto número de veces un bloque de código, de modo similar
a lo que en otros lenguajes de programación hace la estructura de control
``for''.
\item Para repetir un bloque de código mientras se cumpla cierta condición.
\end{enumerate}
\subsection{Las funciones internas del lenguaje}
\label{sec:func-intern-del}
Para la explicación del resto de las funciones internas, hará como he hecho
para los operadores y estructuras de control: obviaré el uso de la pila salvo
cuando sea imprescindible para la comprensión. Pero aunque no se diga
expresamente hay que tener en cuenta que la pila se usa para enviar parámetros
a las funciones y, en su caso, para que estas envíen el resultado de sus
operaciones.
\begin{description}
\item [add.period\$:] Recibe una cadena de texto, si su último carácter, sin
contar las llaves que la cadena pueda tener, es distinto de un punto o de un
signo de cierre de interrogación o exclamación, le añade un punto al final.
Devuelve la cadena modificada.
\item[call.type\$:] Ejecuta la función cuyo nombre coincide con el tipo de
registro correspondiente a un elemento de la lista de datos. Y así, por
ejemplo, para un elemento de dicha lista que sea de tipo ``book'' se
ejecutará la función ``book'' que debe haberse definido antes del comando
READ. Si no existiera ninguna función prevista para ese tipo de registros,
se ejecutaría la función denominada ``default.type'', que también debe haber
sido definida antes del comando READ. Esta función normalmente se usará como
argumento de un comando ITERATE o REVERSE.
\item[change.case\$:] Recibe una cadena de texto y una cadena de formato. Y
modifica la primera atendiendo al contenido de la segunda. Devuelve la
cadena modificada. La cadena de formato puede ser:
\begin{itemize}
\item `T' ó `t': Se pone en minúsculas la segunda cadena entera salvo su
primera letra, y el primer carácter no blanco posterior a un punto.
\item `1': Se pone en minúsculas toda la segunda cadena.
\item `U' ó `u': Se pone en mayúsculas toda la segunda cadena.
\item Cualquier otro contenido: la segunda cadena se deja intacta.
\end{itemize}
Los caracteres de la segunda cadena encerrados entre llaves, no se verán
afectados por la transformación. Asimismo si cualquiera de los datos
extraidos resultara ser numérico, se devuelve una cadena vacía.
\item[chr.to.int\$:] Recibe un carácter individual y devuelve el número
correspondiente a su código ASCII.
\item[cite\$:] Para un elemento en la lista de datos, devuelve la clave
interna que fue argumento en el comando \cmd cite- que provocó la inclusión
de dicho elemento en la lista de datos. Sólo tiene sentido usarlo en
comandos ITERATE o REVERSE.
\item[duplicate\$:] Recibe una cadena y devuelve dos copias de la misma.
\item[empty\$:] Recibe un dato y devuelve un ``1'' si ese dato consiste en un
campo omitido o una cadena vacía, o un ``0'' en caso contrario.
Esta función suele usarse en todas las funciones de formateo de campos, que
empiezan por comprobar que el valor del campo exista. Por ejemplo:
{\small
\begin{verbatim}
FUNCTION {format.title}
{ title empty$
{""}
{ title }
if$
}
\end{verbatim}
}
Esta función empieza comprobando si el campo title está vacío u omitido, en
cuyo caso envía a la pila una cadena vacía. En caso contrario envía a la pila
el contenido del campo.
\item[format.name\$:] Recibe una lista de nombres de personas, un número
representativo de qué nombre hay que extraer de dicha lista, y una cadena
representativa de cómo hay que formatear dicho nombre, y devuelve el nombre
formateado. Al respecto debe tenerse en cuenta que la cadena de formateo no
es usada para descomponer el nombre en sus diferentes partes, sino que esta
descomposición es realizada automáticamente por \btx- de acuerdo con las
reglas que se explicaron en la sección \ref{sec:dist-entre-nombre}, pág.
\pageref{sec:dist-entre-nombre}.
Una vez descompuesto el nombre, se aplica la cadena de formateo, que a su
vez consta de varias subcadenas encerradas entre llaves. Cada una de las
subcadenas representa una de las partes en las que \btx- descompone los
nombres de personas. Para cada una de las subcadenas que componen la cadena
de formateo se siguen las siguientes reglas:
\begin{enumerate}
\item Para indicar a cuál de las partes del nombre se refiere esa subcadena
se usa, duplicada, la inicial de la denominación que en inglés tiene dicha
parte del nombre, es decir: ``\{ff\}'' representa el nombre de pila (de
\emph{First}); ``\{vv\}'' representa la partícula (de \emph{von});
``\{ll\}'' representa los apellidos (de \emph{Last}), y ``\{jj\}''
representa la partícula ``Jr.'' presente en numerosos nombres
anglosajones.
\item Si la inicial correspondiente a una de las partes del nombre no se
duplica, significa que queremos que no se escriba esa parte completa, sino
exclusivamente sus iniciales.
\item Todo texto que dentro de las llaves acompañe a la parte
correspondiente del nombre, se imprimirá siempre y cuando en el nombre en
cuestión dicha parte esté presente. Así, por ejemplo ``\verb|{, ff}|''
imprimirá el nombre de pila separándolo del anterior elemento mediante una
coma y un espacio en blanco. Pero en los nombres en los que no haya nombre
de pila, no se imprimirá ni el nombre, ni la coma, ni el espacio en
blanco.
\item Una ligadura colocada tras las iniciales representativas de una parte
del nombre se interpreta como una sugerencia a \btx- para que si dicha
parte del nombre consta de más de una palabra, no coloque las distintas
palabras en líneas distintas. Pero es sólo una sugerencia. Si queremos
forzar a \btx- para que haga eso, hay que escribir dos ligaduras seguidas.
\item Cualquier texto que en la cadena de formateo aparezca fuera de las
subcadenas correspondientes a las distintas partes del nombre, se
imprimirá literalmente en la cadena formateada.
\end{enumerate}
Por ejemplo: Para que los nombres se impriman en el formato
\verb|Apellidos, NombrePropio Partícula|
necesitaríamos la siguiente cadena de formateo:
\verb|"{ll}{, ff}{vv}"|
y si quisiéramos que el nombre propio se abreviara a sólo las iniciales,
deberíamos usar:
\verb|"{ll}{, f}{vv}"|
Si queremos que en la cadena se incluya un texto, además del nombre, basta
con incluirlo fuera de las llaves: por ejemplo la siguiente cadena:
\verb|"Apellidos: {ll}, Nombre: {ff}"|
Aplicada a, por ejemplo, mi nombre, devolvería:
\verb|Apellidos: Ataz López, Nombre: Joaquín|
Por defecto \btx- añade espacios en blanco o ligaduras entre las distintas
partes de la cadena de formato, así como un punto al final de la misma y un
punto y un espacio tras una inicial. Para indicar que esos caracteres no se
añadan debemos usar unas llaves vacías tras la parte del nombre
correspondiente. Y así, mientras ``\verb|{f}|'' aplicado a ``Joaquín''
devuelve ``J. ``, ``\verb|{f{}}|'' devolverá ``J''.
\item[global.max\$:] Devuelve la longitud máxima permitida para cadenas. Se
usa para evitar que la concatenación de cadenas de texto devuelva una cadena
excesivamente larga. Esta longitud es definida internamente y en las
versiones actuales de \btx- supera los 5000 caracteres.
\item[int.to.char\$:] Recibe un dato numérico y devuelve el carácter ASCII
cuyo código se corresponda con el número recibido. El dato numérico debe
encontrarse entre 0 y 127.
\item[int.to.str\$:] Recibe un número y devuelve una cadena de texto cuyo
contenido sea dicho número. Por ejemplo si se recibe el número 67, se
devolvería la cadena ``67''.
\item[missing\$:] Recibe un dato y devuelve ``1'' si se trata de un campo
omitido, y ``0'' en caso contrario.
\item[newline\$:] Vuelca sobre el fichero \tpf bbl- el contenido del buffer de
salida. Si el buffer de salida estaba vacío, entonces incluye en él un salto
de línea. Dado que la función \ltr write\$- produce saltos de línea
razonables, sólo se recomienda esta función cuando por alguna razón se desea
una línea en blanco o un salto de línea explícito.
\item[num.names\$:] Recibe una cadena de texto y devuelve el número de nombres
que hay en dicha cadena, es decir: el número de apariciones de la palabra
``and'' + 1.
\item[pop\$:] Extrae el último dato de la pila, pero no lo imprime. Sirve
simplemente para eliminar dicho dato de la pila.
\item[preamble\$:] Devuelve una cadena que es la concatenación de todos los
elementos \ltr @preamble- presentes en el fichero \tpf bib-.
\item[purify\$:] Recibe una cadena de texto, realiza en ella ciertas
transformaciones y devuelve la cadena resultante.
En particular, esta función preserva las letras, los números y los espacios.
Reemplaza las tabulaciones, guiones y ligaduras con espacios y elimina todos
los caracteres restantes (en concreto los que aparecen en el apéndice ``C''
de \cite{knuth}. Los caracteres especiales son una excepción\footnote{En el
contenido de los campos se considera \emph{carácter especial} a un
conjunto de caracteres encerrados entre llaves siempre y cuando las llaves
no estén anidadas dentro de otras llaves (sin contar las posibles llaves
de delimitación del campo en sí mismo considerado), y el primer carácter
tras la apertura de las llaves sea ``\textbackslash''. }. Los comandos de
\ltx-, espacios en blanco, tabulaciones, guiones y tildes que se encuentren
dentro de un carácter especial, son eliminados, pero los números y letras se
respetan.
Esta función se usa para limpiar cadenas de texto antes de compararlas entre
sí en las tareas de ordenación de la lista de referencias. Desde este punto
de vista los textos ``\verb|\'e|'' y ``é'' son diferentes, porque el primero
se convertirá en ``e'' y el segundo no será modificado, seguirán siendo
``é'', pero en el momento de ordenar ambos textos se atenderá al código
ASCII y ``é'' se colocará detrás, no sólo de ``e'', sino también de ``z''.
Esta es una de las razones por las que en los ficheros \tpf bib- conviene
usar el procedimiento estándar de \ltx- para representar caracteres
acentuados.
\item[quote\$:] Devuelve el carácter de dobles comillas.
\item[skip\$:] No hace nada.
\item[stack\$:] Extrae e imprime todo el contenido de la pila. Sirve para
depurar ficheros de estilo mientras los estamos construyendo. La impresión
se dirige hacia la salida estándar, no hacia el fichero de salida (\tpf
bbl-).
\item[substring\$:] Recibe una cadena de texto y dos números. El primero
indica la posición de inicio y el segundo la longitud. Devuelve una cadena
que se corresponde con la parte de la primera cadena que empieza en
\emph{inicio} y tiene la longitud especificada. Por ejemplo ``Mesa'', ``2'',
``1'' devolvería ``e'', y ``ordenador'', ``5'', ``4'' devolvería ``nado''.
Si \emph{longitud} es negativa, se cuenta hacia atrás, y así ``ordenador'',
``5'', ``-4'' devolvería ``rden''. A efectos de esta función las llaves y
caracteres especiales son contados como caracteres normales, y así, por
ejemplo ``\verb|{\LaTeX}|'', ``2'', ``3'', devolvería ``\verb|\La|''.
\item[swap\$:] Intercambia la posición de los dos últimos datos de la pila.
\item[text.length\$:] Recibe una cadena y devuelve su longitud tal y como
sería impresa, es decir: los caracteres especiales se cuentan como un sólo
carácter y las llaves no se cuentan.
\item[text.prefix\$:] Recibe una cadena y un número ``n'', y devuelve una
subcadena igual a los ``n'' primeros caracteres de la cadena recibida.
Equivale en gran medida a \ltr substring\$-, con la diferencia de que los
caracteres especiales aquí son contados como un solo carácter y se ignoran
las llaves.
\item[top\$:] Extrae de la pila e imprime en la salida estándar y en el
fichero log el último dato de la pila. No lo imprime en el fichero de salida
\tpf bbl-. Es útil para el depurado.
\item[type\$:] Devuelve el nombre del tipo de registro actual (book, article,
etc) o una cadena vacía si se trata de un tipo desconocido.
\item[warning\$:] Recibe una cadena y la imprime en la salida estándar y en el
fichero log, precedida de un mensaje de advertencia. Asimismo incrementa un
contador dedicado al número de mensajes de advertencia generados.
\item[width\$:] Recibe una cadena y devuelve un número representativo de su
anchura en centésimas de punto, asumiendo para el punto la longitud que
tiene en la fuente \emph{cmr}10 de junio de 1987. Esta función es usada para
comparar la anchura de las etiquetas y poder determinar el parámetro que hay
que pasar al entorno \ltr thebibliography-.
\item[write\$:] Recibe una cadena y la envía al buffer de salida que, a su
vez, la enviará al fichero \tpf bbl-.
\end{description}
El programador que invoque a una de estas funciones debe asegurarse de que la
pila contenga los datos requeridos por la misma. Cuando una función espera que
alguno de los datos recibidos a través de la pila deba ser de cierto tipo
(numérico, alfanumérico, nombre de variable o función) y el dato extraido
resulta no ser del tipo correcto, la función devolverá un ``0'' o una cadena
vacía, dependiendo de que se trate de una función que devuelve un número o una
cadena. Si se trata de una función que no devuelve nada, al recibir el dato
incorrecto la función terminará su ejecución sin hacer nada.
\section{Conclusión: Otros usos de \btx-}
\label{sec:otros-usos-de}
\btx- fue diseñado para la gestión de la bibliografía. Pero la flexibilidad de
formato de los ficheros \tpf bib-, y la potencia de los ficheros de estilo,
permiten extender sus posibilidades hasta el punto de que podamos usarlo para
muchas otras tareas. Podemos considerar a \btx- como una herramienta que nos
permite insertar en un documento información procedente de una base de datos
externa, así como decidir de qué manera debe formatearse tal información.
En \cite{cascales00} se explica cómo usar \btx- para generar una base de datos
de problemas matemáticos. Y en \cite{markey05} se habla del posible uso de
\btx- para generar una lista de publicaciones y una libreta de direcciones.
Díez de Arriba y Javier Bezos, por su parte, han diseñado el paquete Gloss que
usa \btx- para generar glosarios, mientras que yo, que me dedico a la
enseñanza del Derecho, he usado \btx- para con una base de datos de exámenes
tipo test, y, en publicaciones de tipo jurídico, con una base de datos de
sentencias, de tal modo que un simple comando \cmd cite- pudiera insertar en
el texto un rótulo identificativo de una sentencia (del tipo <<STS 21-4-56>>)
y, al final del documento, una lista con las sentencias citadas.
Estos usos \emph{alternativos} de \btx- pueden requerir un \emph{paquete} para
implementarlos. Sobre todo si se pretende que su uso no impida, en el mismo
documento, el uso de \btx- al modo \emph{normal}. Así ocurre en el caso de la
generación de glosarios. O pueden exigir el diseño de un tipo nuevo de
registro y una función que lo formatee incorporada a alguno de los estilos
estándar de \btx- (como hice para la base de datos de sentencias y para la de
exámenes tipo test), o simplemente un uso determinado de los registros
normales.
Lo importante es que tengamos claro que \btx- esconde muchas más posibilidades
de lo que a primera vista pudiera parecer.
\appendix
\section*{Apéndice A: GNU Free Documentation License (Licencia GNU para
documentación)}
\label{sec:gnu-free-docum}
\addcontentsline{toc}{section}{Apéndice A. GNU Free Documentation License}
\selectlanguage{english} \small
\begin{center}
Version 1.2, November 2002
Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc.
\bigskip
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\bigskip
Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.
\end{center}
\begin{center}
{\bf\large Preamble}
\end{center}
The purpose of this License is to make a manual, textbook, or other functional
and useful document "free" in the sense of freedom: to assure everyone the
effective freedom to copy and redistribute it, with or without modifying it,
either commercially or noncommercially. Secondarily, this License preserves
for the author and publisher a way to get credit for their work, while not
being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the
document must themselves be free in the same sense. It complements the GNU
General Public License, which is a copyleft license designed for free
software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free program
should come with manuals providing the same freedoms that the software does.
But this License is not limited to software manuals; it can be used for any
textual work, regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works whose purpose
is instruction or reference.
\begin{center}
{\Large\bf 1. APPLICABILITY AND DEFINITIONS}
\end{center}
This License applies to any manual or other work, in any medium, that contains
a notice placed by the copyright holder saying it can be distributed under the
terms of this License. Such a notice grants a world-wide, royalty-free
license, unlimited in duration, to use that work under the conditions stated
herein. The \textbf{"Document"}, below, refers to any such manual or work.
Any member of the public is a licensee, and is addressed as \textbf{"you"}.
You accept the license if you copy, modify or distribute the work in a way
requiring permission under copyright law.
A \textbf{"Modified Version"} of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with modifications
and/or translated into another language.
A \textbf{"Secondary Section"} is a named appendix or a front-matter section
of the Document that deals exclusively with the relationship of the publishers
or authors of the Document to the Document's overall subject (or to related
matters) and contains nothing that could fall directly within that overall
subject. (Thus, if the Document is in part a textbook of mathematics, a
Secondary Section may not explain any mathematics.) The relationship could be
a matter of historical connection with the subject or with related matters, or
of legal, commercial, philosophical, ethical or political position regarding
them.
The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice that says
that the Document is released under this License. If a section does not fit
the above definition of Secondary then it is not allowed to be designated as
Invariant. The Document may contain zero Invariant Sections. If the Document
does not identify any Invariant Sections then there are none.
The \textbf{"Cover Texts"} are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that the
Document is released under this License. A Front-Cover Text may be at most 5
words, and a Back-Cover Text may be at most 25 words.
A \textbf{"Transparent"} copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the general
public, that is suitable for revising the document straightforwardly with
generic text editors or (for images composed of pixels) generic paint programs
or (for drawings) some widely available drawing editor, and that is suitable
for input to text formatters or for automatic translation to a variety of
formats suitable for input to text formatters. A copy made in an otherwise
Transparent file format whose markup, or absence of markup, has been arranged
to thwart or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount of text.
A copy that is not "Transparent" is called \textbf{"Opaque"}.
Examples of suitable formats for Transparent copies include plain ASCII
without markup, Texinfo input format, LaTeX input format, SGML or XML using a
publicly available DTD, and standard-conforming simple HTML, PostScript or PDF
designed for human modification. Examples of transparent image formats
include PNG, XCF and JPG. Opaque formats include proprietary formats that can
be read and edited only by proprietary word processors, SGML or XML for which
the DTD and/or processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word processors for
output purposes only.
The \textbf{"Title Page"} means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material this
License requires to appear in the title page. For works in formats which do
not have any title page as such, "Title Page" means the text near the most
prominent appearance of the work's title, preceding the beginning of the body
of the text.
A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following text
that translates XYZ in another language. (Here XYZ stands for a specific
section name mentioned below, such as \textbf{"Acknowledgements"},
\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) To
\textbf{"Preserve the Title"} of such a section when you modify the Document
means that it remains a section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which states
that this License applies to the Document. These Warranty Disclaimers are
considered to be included by reference in this License, but only as regards
disclaiming warranties: any other implication that these Warranty Disclaimers
may have is void and has no effect on the meaning of this License.
\begin{center}
{\Large\bf 2. VERBATIM COPYING}
\end{center}
You may copy and distribute the Document in any medium, either commercially or
noncommercially, provided that this License, the copyright notices, and the
license notice saying this License applies to the Document are reproduced in
all copies, and that you add no other conditions whatsoever to those of this
License. You may not use technical measures to obstruct or control the
reading or further copying of the copies you make or distribute. However, you
may accept compensation in exchange for copies. If you distribute a large
enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may
publicly display copies.
\begin{center}
{\Large\bf 3. COPYING IN QUANTITY}
\end{center}
If you publish printed copies (or copies in media that commonly have printed
covers) of the Document, numbering more than 100, and the Document's license
notice requires Cover Texts, you must enclose the copies in covers that carry,
clearly and legibly, all these Cover Texts: Front-Cover Texts on the front
cover, and Back-Cover Texts on the back cover. Both covers must also clearly
and legibly identify you as the publisher of these copies. The front cover
must present the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition. Copying with
changes limited to the covers, as long as they preserve the title of the
Document and satisfy these conditions, can be treated as verbatim copying in
other respects.
If the required texts for either cover are too voluminous to fit legibly, you
should put the first ones listed (as many as fit reasonably) on the actual
cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than
100, you must either include a machine-readable Transparent copy along with
each Opaque copy, or state in or with each Opaque copy a computer-network
location from which the general network-using public has access to download
using public-standard network protocols a complete Transparent copy of the
Document, free of added material. If you use the latter option, you must take
reasonably prudent steps, when you begin distribution of Opaque copies in
quantity, to ensure that this Transparent copy will remain thus accessible at
the stated location until at least one year after the last time you distribute
an Opaque copy (directly or through your agents or retailers) of that edition
to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give them a
chance to provide you with an updated version of the Document.
\begin{center}
{\Large\bf 4. MODIFICATIONS}
\end{center}
You may copy and distribute a Modified Version of the Document under the
conditions of sections 2 and 3 above, provided that you release the Modified
Version under precisely this License, with the Modified Version filling the
role of the Document, thus licensing distribution and modification of the
Modified Version to whoever possesses a copy of it. In addition, you must do
these things in the Modified Version:
\begin{itemize}
\item[A.] Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions (which
should, if there were any, be listed in the History section of the
Document). You may use the same title as a previous version if the original
publisher of that version gives permission.
\item[B.] List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified Version,
together with at least five of the principal authors of the Document (all of
its principal authors, if it has fewer than five), unless they release you
from this requirement.
\item[C.] State on the Title page the name of the publisher of the Modified
Version, as the publisher.
\item[D.] Preserve all the copyright notices of the Document.
\item[E.] Add an appropriate copyright notice for your modifications adjacent
to the other copyright notices.
\item[F.] Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the terms of
this License, in the form shown in the Addendum below.
\item[G.] Preserve in that license notice the full lists of Invariant
Sections and required Cover Texts given in the Document's license notice.
\item[H.] Include an unaltered copy of this License.
\item[I.] Preserve the section Entitled "History", Preserve its Title, and
add to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If there is
no section Entitled "History" in the Document, create one stating the title,
year, authors, and publisher of the Document as given on its Title Page,
then add an item describing the Modified Version as stated in the previous
sentence.
\item[J.] Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise the
network locations given in the Document for previous versions it was based
on. These may be placed in the "History" section. You may omit a network
location for a work that was published at least four years before the
Document itself, or if the original publisher of the version it refers to
gives permission.
\item[K.] For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all the
substance and tone of each of the contributor acknowledgements and/or
dedications given therein.
\item[L.] Preserve all the Invariant Sections of the Document, unaltered in
their text and in their titles. Section numbers or the equivalent are not
considered part of the section titles.
\item[M.] Delete any section Entitled "Endorsements". Such a section may not
be included in the Modified Version.
\item[N.] Do not retitle any existing section to be Entitled "Endorsements"
or to conflict in title with any Invariant Section.
\item[O.] Preserve any Warranty Disclaimers.
\end{itemize}
If the Modified Version includes new front-matter sections or appendices that
qualify as Secondary Sections and contain no material copied from the
Document, you may at your option designate some or all of these sections as
invariant. To do this, add their titles to the list of Invariant Sections in
the Modified Version's license notice. These titles must be distinct from any
other section titles.
You may add a section Entitled "Endorsements", provided it contains nothing
but endorsements of your Modified Version by various parties--for example,
statements of peer review or that the text has been approved by an
organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage
of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts
in the Modified Version. Only one passage of Front-Cover Text and one of
Back-Cover Text may be added by (or through arrangements made by) any one
entity. If the Document already includes a cover text for the same cover,
previously added by you or by arrangement made by the same entity you are
acting on behalf of, you may not add another; but you may replace the old one,
on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give
permission to use their names for publicity for or to assert or imply
endorsement of any Modified Version.
\begin{center}
{\Large\bf 5. COMBINING DOCUMENTS}
\end{center}
You may combine the Document with other documents released under this License,
under the terms defined in section 4 above for modified versions, provided
that you include in the combination all of the Invariant Sections of all of
the original documents, unmodified, and list them all as Invariant Sections of
your combined work in its license notice, and that you preserve all their
Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple
identical Invariant Sections may be replaced with a single copy. If there are
multiple Invariant Sections with the same name but different contents, make
the title of each such section unique by adding at the end of it, in
parentheses, the name of the original author or publisher of that section if
known, or else a unique number. Make the same adjustment to the section
titles in the list of Invariant Sections in the license notice of the combined
work.
In the combination, you must combine any sections Entitled "History" in the
various original documents, forming one section Entitled "History"; likewise
combine any sections Entitled "Acknowledgements", and any sections Entitled
"Dedications". You must delete all sections Entitled "Endorsements".
\begin{center}
{\Large\bf 6. COLLECTIONS OF DOCUMENTS}
\end{center}
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this License
in the various documents with a single copy that is included in the
collection, provided that you follow the rules of this License for verbatim
copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it
individually under this License, provided you insert a copy of this License
into the extracted document, and follow this License in all other respects
regarding verbatim copying of that document.
\begin{center}
{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS}
\end{center}
A compilation of the Document or its derivatives with other separate and
independent documents or works, in or on a volume of a storage or distribution
medium, is called an "aggregate" if the copyright resulting from the
compilation is not used to limit the legal rights of the compilation's users
beyond what the individual works permit. When the Document is included in an
aggregate, this License does not apply to the other works in the aggregate
which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of
the Document, then if the Document is less than one half of the entire
aggregate, the Document's Cover Texts may be placed on covers that bracket the
Document within the aggregate, or the electronic equivalent of covers if the
Document is in electronic form. Otherwise they must appear on printed covers
that bracket the whole aggregate.
\begin{center}
{\Large\bf 8. TRANSLATION}
\end{center}
Translation is considered a kind of modification, so you may distribute
translations of the Document under the terms of section 4. Replacing
Invariant Sections with translations requires special permission from their
copyright holders, but you may include translations of some or all Invariant
Sections in addition to the original versions of these Invariant Sections.
You may include a translation of this License, and all the license notices in
the Document, and any Warranty Disclaimers, provided that you also include the
original English version of this License and the original versions of those
notices and disclaimers. In case of a disagreement between the translation
and the original version of this License or a notice or disclaimer, the
original version will prevail.
If a section in the Document is Entitled "Acknowledgements", "Dedications", or
"History", the requirement (section 4) to Preserve its Title (section 1) will
typically require changing the actual title.
\begin{center}
{\Large\bf 9. TERMINATION}
\end{center}
You may not copy, modify, sublicense, or distribute the Document except as
expressly provided for under this License. Any other attempt to copy, modify,
sublicense or distribute the Document is void, and will automatically
terminate your rights under this License. However, parties who have received
copies, or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
\begin{center}
{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE}
\end{center}
The Free Software Foundation may publish new, revised versions of the GNU Free
Documentation License from time to time. Such new versions will be similar in
spirit to the present version, but may differ in detail to address new
problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the
Document specifies that a particular numbered version of this License "or any
later version" applies to it, you have the option of following the terms and
conditions either of that specified version or of any later version that has
been published (not as a draft) by the Free Software Foundation. If the
Document does not specify a version number of this License, you may choose any
version ever published (not as a draft) by the Free Software Foundation.
\begin{center}
{\Large\bf ADDENDUM: How to use this License for your documents}
\end{center}
To use this License in a document you have written, include a copy of the
License in the document and put the following copyright and license notices
just after the title page:
\bigskip
\begin{quote}
Copyright \copyright YEAR YOUR NAME. Permission is granted to copy,
distribute and/or modify this document under the terms of the GNU Free
Documentation License, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts,
and no Back-Cover Texts. A copy of the license is included in the section
entitled "GNU Free Documentation License".
\end{quote}
\bigskip
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the "with...Texts." line with this:
\bigskip
\begin{quote}
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover
Texts being LIST, and with the Back-Cover Texts being LIST.
\end{quote}
\bigskip
If you have Invariant Sections without Cover Texts, or some other combination
of the three, merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend
releasing these examples in parallel under your choice of free software
license, such as the GNU General Public License, to permit their use in free
software. \selectlanguage{spanish}
\bibliography{biblio}\bibliographystyle{guia}
\end{document}
|