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
|
% \iffalse meta comment
%<*internal>
\begingroup
\input docstrip.tex
\keepsilent
\preamble
Copyright 2001--2021 Claudio Beccari All rights reserved.
This system is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
This file is distributed under the LPPL licence, version 1.3c
dated 2008-05-04 or later as it appears in
CTAN/macros/latex/base/lppl.tex.
See the end of the file.
\endpreamble
\postamble
It may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
of this license or (at your option) any later version.
The latest version of this license is in
http://www.latex-project.org/lppl.txt
\endpostamble
\askforoverwritefalse
\generateFile{teubner.sty}{f}{\from{teubner.dtx}{package}}
\generateFile{teubnertx.sty}{f}{\from{teubner.dtx}{tbtx}}
\def\tmpa{plain}
\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
\endgroup
%</internal>
% \fi
%
% \iffalse
%^^A The following trick uses the same date for every file header.
%<package>\NeedsTeXFormat{LaTeX2e}[2020-01-01]
%<*driver>
\ProvidesFile{teubner.dtx}[%
%</driver>
%<package>\ProvidesPackage{teubner}[%
%<tbtx>\ProvidesPackage{teubnertx}[%
%<*driver,package,tbtx>
2021/02/08 v.5.4
%<package>Extensions for Greek philology]
%<tbtx>Access to the LGR encoded Greek fonts that match the TX fonts]
%</driver,package,tbtx>
%<*driver>
]
%</driver>
%<*driver>
\documentclass{ltxdoc}
\GetFileInfo{teubner.dtx}
\title{The \textsf{teubner} package\\
Extensions for Greek philology}
\author{Claudio Beccari --- \texttt{claudio dot beccari at gmail dot com}}
\date{Version \fileversion\ last revised \filedate}
\providecommand\babel{\pack{babel}}
\newcommand\lbr{\char123\relax}\newcommand\rbr{\char125\relax}
\newenvironment{sintassi}{%
\begin{quote}\parskip0pt\hfuzz10pt\ttfamily\obeylines
}{%
\end{quote}\ignorespaces
}
\renewcommand*\meta[1]{{\normalfont\textlangle\textit{#1}\textrangle}}
\newcommand*\pack[1]{\textsf{#1}}
\newcommand*\acro[1]{\expandafter\textsc\expandafter{\MakeLowercase{#1}}}
\providecommand\cs{}
\renewcommand\cs[1]{\textnormal{\texttt{\bslash#1}}}
\providecommand\marg{}
\renewcommand\marg[1]{\textnormal{\ttfamily\{\meta{#1}\}}}
\newcommand\Marg[1]{\textnormal{\ttfamily\{#1\}}}
\renewcommand\oarg[1]{\textnormal{\ttfamily[\meta{#1}]}}
\newcommand\Oarg[1]{\textnormal{\ttfamilt[#1]}}
\usepackage{multicol}
\usepackage[T1]{fontenc}
\usepackage{lmodern,textcomp}
\begin{document}
\maketitle
\DocInput{teubner.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{4133}
% \begin{multicols}{2}\tableofcontents\end{multicols}
%
%
% \begin{abstract}
% This extension package complements the greek option of the \babel\
% package so as to enable the use of the Lipsian\footnote{What here
% are called Lipsian fonts are a family of fonts that in Greece are
% called ``Lipsiakos''; they are similar to the ones that were being
% used in the Teubner Printing Company of Lipsia from mid XIX century
% on.} fonts and to use several macros for inserting special annotations
% in the written text, as well as to typeset verses with special
% layout. Metric sequences may be defined and typeset by means of a
% companion font \texttt{gmtr????} that follows the same conventions
% as the CB fonts that are normally used when the \babel\ |greek|
% option is in force.
%
% Examples and lists of commands are available in the file
% \texttt{teubner-doc.pdf} which, as a regular pdf file, embeds all
% the necessary fonts and may be read on screen as well as printed on
% paper; beware, though, that the PostScript fonts that are being used
% in \texttt{teubner-doc.pdf} are not installed by default if a basic
% installation is sought.
%
% This version 4.0 tries to adapt to the new handling of the Greek
% language by \babel, since now this language script is based on the
% LICR (\LaTeX\ Internal Character Representation), and source files
% now can include Greek glyphs, besides the usual transliteration with
% Latin letters.
% \end{abstract}
%
% \section{Introduction}
% Philologists in general have the necessity of using special
% alphabets and several special symbols in order to mark up their
% texts and to typeset them in a special way. Greek philology makes
% no exception, therefore I prepared this file and some extra fonts
% in order to complement what is already available with the |greek|
% option of the \babel\ package.
%
% I must warmly thank Paolo Ciacchi of the University of Trieste who
% invited me in this ``adventure'', since I know nothing about
% philology; he assisted me with all his competence, so that I
% could learn so many new things and I could appreciate the world of
% philologists.
%
% Paolo Ciacchi's ``invitation'' arrived when I was almost finished
% with the design of the Lipsian font family; I was working on this new
% typeface after a kind request by Dimitri Filippou, with whom I
% already collaborated for other questions related to Greek
% typesetting. I warmly thank also Dimitri Filippou for the
% patience with which he revised every single glyph of the new
% typeface. Paolo Ciacchi added his constructive criticism to the
% typeface, especially for what concerns diacritical marks. At the
% end I think that the new typeface turned out pretty well thanks to
% both my friends.
%
% The Lipsian font, also called Leipzig, or Lipsiakos in Greece, is one of
% the oblique fonts that used to be employed by the typesetters working in
% the German city of Leipzig, among which the Teubner Printing Company.
% This Company's classical works of ancient Greek poetry are considered
% among the best ever published. The name of this file and this extension
% package is in honour of that printing company.
%
% This package documentation does not contain any example written in
% Greek, because when you process this file it is very likely that
% you don't have the suitable Greek fonts and you must still download
% all or some of them. Therefore a companion file \texttt{teubner-doc.pdf}
% is included in this bundle where most, if not all, new commands
% are documented and suitably shown.
%
% This package contains new environments and new commands; it presumes
% the user invokes it after declaring the |greek| option to the \babel\
% package; should he forget, this package will complain. But once the
% |greek| option is properly declared, this package verifies that the
% |polutonikogreek| dialect (deprecated) is selected, or that the
% |polutoniko| attribute or modifier is set; if no attribute is set this
% package will set |polutoniko| or |ancient| depending on the presence of
% an updated Greek support to the \babel\ package. This choice depends on
% the particular version of the \babel\ package, but should not concern
% the user; switching back and forth between classical Greek and some
% modern western language is performed in a transparent way; possibly
% there might be some problem switching from classical to modern spelling
% in Greek itself, but since in modern spelling the multiplicity of Greek
% diacritical marks is not forbidden, it's the author choice to select
% classical or modern words, Lipsian or Didot fonts, polytonic or monotonic
% accentuation. The worst it can happen is that \babel\ uses just one
% hyphenation pattern set, so that in one of the three Greek versions some
% words might turn out with the wrong hyphens points.
%
% The CB Greek fonts, which have been available for some years now on
% \acro{ctan} in the directory \texttt{/fonts/greek/cb} have
% been completed with the new files for the Lipsian fonts, and the metric
% symbols font \texttt{gmtr????.*}; the latter does not need a formal font
% definition file, because the necessary definitions are included in this
% package. All fonts are available also as Type~1 scalable fonts. In
% general, recent distributions of the \TeX\ system already contain the
% necessary configuration to use the Type~1 font in one size, 10\,pt, but,
% thanks to scaling, these can be used at any size; this version of
% \textsf{teubner} is compatible with this reduced set. If optical sizes
% are desired for a more professional typesetting, the \acro{ctan} archives
% contain also the \textsf{cbgreek-full} package, which includes also all
% the Type~1 fonts at the various standard (EC) sizes, plus other
% facilities that allow to use the CB fonts also in conjunction with the
% Latin Modern ones. Complete installations of the \TeX\ system include the
% full CB fonts installation.
%
% The CB Greek fonts allow to input Greek text with a Latin keyboard and
% by employing the prefix notation; with a Greek keyboard and file
% \texttt{iso-8859-7.def} it is possible to directly input Greek text with
% the monotonic spelling; if polytonic spelling is required I fear that the
% above file is of little help and that a Latin keyboard does the job
% without an excessive burden. The recent modifications to the \babel\
% package and of the Greek language description file allow to enter also
% polytonic Greek text, keyboard permitting, with no effort; it is
% necessary to use the |utf8| input encoding. It's important to notice the
% Apple computers have available a virtual keyboard (called keyboard
% viewer) that is susable with the mouse and, just by selecting the
% \emph{Greek Polytonic} keyboard driver, the author can enter Greek text
% directly in the source file. Computers with a touch screen virtual
% keyboard allow to switch from the national to the Greek keyboard just by
% a single sweep of the finger. Some platforms have the possibility of
% switching keyboard but they don't show the new keyboard layout on the
% screen, but the user can generally build a personal table that describes
% the correspondence between the keyboard and the physical keyboard layout.
% Windows operating system Win8 and later has available a virtual keyboard
% similar to the Mac's.
%
% Nevertheless there is a little point to observe; Lipsian fonts are very
% nice but show some kerning errors with more evidence than the traditional
% Didot Greek fonts. With the prefix notation in force, kerning programs
% may result disabled and some diphthongs and some consonant-vowel
% combinations appear poorly matched when the second letter caries any
% diacritical mark. In order to avoid this ``feature'', the accented vowels
% may be input by means of macros, that directly translate to the accented
% glyph, rather than invoking the ligature programs that are implied by the
% prefix notation; reading a Greek text on the screen while editing the
% input \texttt{.tex} file when a Latin keyboard and such macros are used
% may be very strange, but authors get used to it, and agree that the
% effort is worth the result. The direct input of Greek glyphs, evidently
% is the real solution, even if it may be difficult to enter Greek glyphs
% without a suitable virtual keyboard or a suitable keyboard map.
%
% \section{Environments}
% I apologise if I chose Italian names for verse environments; I wanted
% to use names very different from the corresponding English ones, but
% at the same time easily recognisable; after all \emph{versi} is the
% plural of \emph{verso} and therefore is the exact Italian translation
% of \emph{verses}. If you feel more comfortable with Latin, the alias
% environment names in Latin, |versus|, |Versus|, and |VERSUS|, are also
% available.
%
% \DescribeEnv{versi}
%\DescribeMacro{\verso}
% The environment \texttt{versi} (|versus|) is used to typeset verses
% in line, without an implicit end of line at the end of each verse; a
% vertical bar with a number on top of it marks the verse limit while
% allowing a numeric reference to a specific verse; the opening environment
% statement requires a string, a short text, in order to indent the verse
% lines the amount of this string width; the syntax is the following
% \begin{sintassi}
% \cs{begin}\Marg{versi}\marg{string}
% \meta{verse}\cs{verso}\oarg{starting number}\marg{verse}
% \cs{verso} \marg{verse}
% \cs{verso}\marg{verse}
% \dots{}
% \cs{end}\Marg{versi}
% \end{sintassi}
% where, of course, \meta{starting number} is required only for the first
% instance of |\verso| or when numbering must be restarted, for example
% after an ellipsis.
%
% \DescribeEnv{Versi}
% The environment \texttt{Versi} (|Versus|) is similar to the
% standard \LaTeX\ environment \texttt{verse}, except verse lines are
% numbered on multiples of~5; the opening statement requires the
% \meta{starting number} as an optional argument; if this optional argument
% is not specified, the starting number is assumed to be~1.
% \begin{sintassi}
% \cs{begin}\Marg{Versi}\oarg{starting number}
% \meta{verse}\cs{\bslash*}\oarg{vertical space}
% \meta{verse}\cs{\bslash}
% \dots{}
% \cs{end}\Marg{Versi}
% \end{sintassi}
%
% \DescribeEnv{VERSI}
% \DescribeMacro{\SubVerso}
% \DescribeMacro{\NoSubVerso}
% The environment \texttt{VERSI} (|VERSUS|) allows for two
% verse-enumerations; the main enumeration is identical to the one
% performed by the previous environment \texttt{Versi}, while the secondary
% enumeration is typeset with smaller digits and normally numbers
% consecutive verses, except that it can be turned on and off; the verses
% that have the secondary enumeration are indented by moving them to the
% right.
% \begin{sintassi}
% \cs{begin}\Marg{VERSI}\oarg{starting principal number}
% \meta{verse}\cs{\bslash*}\oarg{vertical space}
% \cs{SubVerso}\oarg{starting secondary number}
% \meta{verse}\cs{\bslash*}\oarg{vertical space}
% \dots{}
% \cs{NoSubVerso}
% \meta{verse}\cs{\bslash*}\oarg{vertical space}
% \dots{}
% \cs{end}\Marg{VERSI}
% \end{sintassi}
% where if \meta{starting principal number} is missing, 1 is assumed,
% while if \meta{starting secondary number} is missing, the enumeration
% is continued from the next available integer. Of course
% \meta{starting secondary number} is used again when the secondary
% enumeration must be restarted; there are no means to restart the
% principal enumeration.
%
% \DescribeEnv{bracedmetrics}
% The previous environments accept \meta{verses} in any language and in
% any alphabet, the one that is in force before opening the environment;
% the language and, even less, the alphabet cannot be globally changed
% within the above environments; if such a change is performed, it is
% valid only for one verse, or for the remaining fraction of the verse
% after the language or font change. This means, among the other things,
% that if the default ``alphabet'' is the one that shows the metric
% symbols, the above environments may be used to display ``metric
% verses'', that is the pattern of long, short or ancipital symbols,
% together with any other metric symbol so as to display the metrics
% without disturbing the written text; when doing this metric
% typesetting, it may happen that some verse patterns exhibit some
% variants; in this case the \texttt{bracedmetrics} environment comes
% handy, because it can display such variants in separate lines but
% grouped with a large right brace; some commands allow to roughly
% align these variants, so as to allow to nest several such
% environments as if they were single blocks of metric symbols.
% The argument of the opening statement specifies the width of the
% block so as to properly align all the symbols even in nested
% environments.
% \begin{sintassi}
% \cs{begin}{bracedmetrics}\marg{length}
% \meta{metric pattern}\cs{\bslash}
% \meta{metric pattern}\cs{\bslash}
% \dots{}
% \cs{end}{bracedmetrics}
% \end{sintassi}
%
% \DescribeMacro{\verseskip}\DescribeMacro{\Hfill}
% Within the \meta{metric pattern} it is possible to flush right the
% symbols by prefixing the whole string with a |\Hfill| command; the
% \meta{length} may be specified as an integer multiple of a ``long''
% symbol by means of
%\begin{sintassi}
% \cs{verseskip}\marg{number}
%\end{sintassi}
% The macro |\verseskip| can be used also within \meta{metric pattern}
% in order to space out metric symbols.
%
% \section{Commands and symbols}
% This package defines a lot of commands for inserting special signs
% in the middle of regular text, for marking zeugmas and synizeses,
% for putting unusual accents on any symbol, for inserting special
% ``parentheses'' that are used by philologists for marking blocks of
% letters or blocks of text. I suggest that the user reads the
% documentation file \texttt{teubner-doc.pdf} for a complete list
% of commands and symbols.
%
% \DescribeMacro{\newmetrics} Here it might be useful to describe a
% command for defining metric sequences, so as to shorten the
% definition of metric verses; this new command is |\newmetrics|
% and may be used for the definition of new commands whose name
% \emph{may start with one digit}: precisely this digit may be one
% of~2, 3,~4. Even if \LaTeX\ does not allow macros to contain both
% digits and letters, other service macros have been defined so as
% to handle these special control sequences even if they start with
% \emph{one} digit strictly lower than~5. The syntax is:
% \begin{sintassi}
% \cs{newmetrics}l\marg{control sequence}\marg{definition}
% \end{sintassi}
% where \meta{definition} consists in general of a sequence of metric
% commands such as |\longa|, |\brevis|, |\anceps|, etc.
%
% \section{Acknowledgements}
% I must thank with gratitude Paolo Ciacchi that urged me to prepare this
% extension file in order to help him typeset his master thesis of
% philological kind in classical Greek.
%
% I am pleased to thank G\"unter Milde who wrote a definition file for
% accessing the LGR encoded fonts in order to fetch the accented glyphs;
% he kindly gave me permission to use his macros, that I adapted to the
% conventions used within this file. These macros were saved into the
% definition file |LGRaccent-glyph.def|, so that it could be used also
% without the |teubner| package, for example for typesetting without
% setting the \emph{polutoniko} language attribute. But since he became
% the maintainer of the Greek language support for the \babel\ package,
% he extended this support to the point that the extended macros are
% already part of the new Greek support files.
%
% I thank also Werner Lemberg who wrote a paper published on
% Eutypon, the magazine of the Hellenic Friends of \TeX, where he
% discussed in a constructive critical way the problems connected with
% the LGR encoded fonts and the Unicode encoding; I got some ideas also
% from that paper in order to get around some of his critical
% observations; I could get around all points he commented, and some
% progress was achieved.
%
% Now the new Greek support for the \babel\ package, thanks to G\"unter
% Milde, includes also the support for Unicode input in the source file,
% in spite of using LGR encoded output fonts. The actual support is
% partially useful also with XeLaTeX and LuaLaTeX.
%
% This package is far from perfect, but it allows to do a loto of things
% that is difficult to find elsewhere. I did my best, but I had to cope
% with the limitations of the Type~1 256 glyph fonts; with XeLaTeX or
% LuaLaTeX it might be possible to have more functionalities, but, as
% Werner Lemberg described, in order to type accented Greek letters,
% these programs deal with two different approaches: one directly
% accesses the Unicode page containing such glyphs, and the other
% relies on self combining diacritics; the latter approach appears
% to be more flexible in order to get the multitude of diacritics the
% philology sometimes requires over or under the same letter, but this
% forbids proper kerning; the former approach takes care of the correct
% kerning, but has a limited number of diacritic combinations. These
% approaches are mutually exclusive, therefore the philologist must
% get to compromises; at the same time any program must follow either
% approach, possibly choosing which one with suitable options, but it
% cannot switch back and forth continually and automatically.
%
% \StopEventually{}
%
% \section{Code}
% \subsection{Preliminaries}
% In order to use the PostScript pfb fonts (CM, CM-Super, and CB) it is
% necessary to know if we are dealing with \LaTeX\ or pdf\LaTeX; this was
% necessary because apparently the pfb math scalable fonts derived from the
% \textsf{META\-FONT}% counterparts and do not have exactly the same
% effective dimensions; this is why the ``zeugma'' and the ``synizesis''
% signs have to be corrected when the pfb fonts are used; with these, in
% facts, the black leader that joins the curved extremities appeared a
% little too fat and did not join exactly the left mark.
% Recently, apparently, the fonts have been corrected and this trick is
% not necessary any more. Nevertheless we define a new boolean that
% copes with the fact that, at least since 2007, the \TeX\ engine is
% \textsf{pdftex} even when DVI output is sought; the package
% \pack{iftex} creates three |\if|s that allow to diagnose if the
% typesetting engine is \textsf{pdftex} in PDF mode, \textsf{XeTeX}
% or \textsf{Luatex}; since at the moment this package \pack{teubner}
% is usable only with \textsf{pdftex} in PDF mode, we equate the
% |\ifPDF| switch (defined in previous versions of \pack{teubner}) with
% the switch defined by package \pack{iftex}:
%\iffalse
%<*package>
%\fi
% \begin{macrocode}
\RequirePackage{iftex}
\let\ifPDF\ifPDFTeX
% \end{macrocode}
% When \texttt{teubner.sty} is input the language Greek must have been
% already defined; otherwise an error message is issued and processing is
% terminated.
% \begin{macrocode}
\ifx\captionsgreek\undefined
\PackageError{teubner}{Greek language unknown!\MessageBreak
I am not going to use Lipsian fonts and Scholars' signs\MessageBreak
if Greek is unknown.\MessageBreak
Use the babel package greek option.\MessageBreak
Type X <return> to exit.}%
{Type X <return> to exit.}
\fi
% \end{macrocode}
% If this test is passed, this means that not only the greek option to the \babel\
% package is set, but also that all the \babel\ machinery is available.
%
% Since \texttt{teubner.sty} accepts some options it is necessary to provide
% their definitions; in particular the |\or| control sequence conflicts
% with the |\or| primitive command used within the syntax of |\ifcase|\footnote{With
% version 2002/07/18 v.1.0d this has been eliminated; the option remains for
% compatibility with older versions, but the only legal command is now
% \texttt{\string\oR}.}; |\oR| is a little exception since all the other
% accent-vowel macros contain only lowercase letters; |og| is another exception,
% and the accent macros have to be used; |\og| collided with the French command
% for inserting the opening guillemets (see below). The point is that accent vowel
% sequences that directly access the accented glyph are made up as such:
% \begin{sintassi}
% \bslash \meta{base character}\meta{first diacritic}\meta{second diacritic}\meta{third diacritic}
% \textrm{where}
% \meta{first diacritic} \textrm{is \texttt{d} or \texttt{r} or \texttt{s} for diaeresis, rough or smooth breath}
% \meta{second diacritic} \textrm{is \texttt{c} or \texttt{a} or \texttt{g} for circumflex or acute or grave}
% \meta{third diacritic} \textrm{is \texttt{i} for iota subscript or adscript}
% \end{sintassi}
% Evidently none of the diacritical marks is compulsory, but at least one must
% be present; if more than one is present it must be given in that sequence. Since
% |\oR| means omicron with rough breath, it is not very important that it is
% declared with the standard sequence |<o| or with |\oR| or with |\<o|, because
% it never falls after another letter, so that it never breaks any ligature or
% kerning command. The command is there just for completeness. More or less the
% same is true with the |\og| sequence; it fails to work correctly when the main
% language is French and the |french| option to the |babel| package is in force;
% matter of facts, |\og| conflicts with the homonymous command defined by that
% option to mean ``ouvrir guillemets''; therefore it's necessary to use
% either the plain sequence |`o| or the extended accent macro |\`o|.
%
% At the same time since all accent combinations are defined as ``text commands'',
% in \LaTeX\ jargon, when their commands are followed by a vowel (or `r') they
% define a ``text symbol'' i.e.\ they fetch directly the glyph of the accented
% character; therefore |<o|, |\oR| and |\r{o}| are all equivalent (at the
% beginning of a word where omicron with rough breath is the only place where you
% might find it). See more on this point in the following sections.
%
% These glyph name macros are not defined by default, because the |GlyphNames|
% boolean variable is false by default; you can specify the option
% \emph{GlyphNames} for activating these macro names.
% In any case the same result is more comfortably obtained by using the
% extended accent macros whose behaviour is specified by the new
% \babel\-greek settings.
%
% Another unusual option is set up for being used with non standard \TeX\ system
% fonts; we have noticed that the Lipsian fonts appear a little too light when
% used together with the Times or the Palatino fonts; probably this is true also
% with other PostScript fonts. In this case the user might specify the option
% |boldLipsian| and the Lipsian fonts used in medium series will be substituted
% with those of the semi\-bold one.
%
% At the same time, from July 2005 and for a few years, the full collection
% of the complete size set of the CB fonts has not been available any more
% \emph{as the default \TeX\ system set up}; only the 10pt size were available
% unless the \texttt{cbgreek-full} font package was loaded; for this reason
% a new option was needed in order to instruct \texttt{teubner.sty} to use
% the specific file \texttt{type1ec.sty} dated at least 2002/09/07, so as to
% scale up or down all the EC and CB fonts from an original 10\,pt size.
% In order that the \texttt{10pt} plays its role correctly, it was convenient,
% if not compulsory, to require first the \texttt{babel} package, then the
% \texttt{teubner} one with the option \texttt{10pt}, then all other packages
% required for a specific document, in particular the \texttt{fontenc}
% one if the \texttt{T1} encoding is requested. All this is maintained for
% backward compatibility, and should not be necessary any more; now the
% complete set of the CB fonts gets installed with every full installation
% of the \TeX\ system, but with partial or basic installations, such option
% might turn out to be useful even now.
%
% This kludge is necessary for all fonts that have description files that use the
% |\EC@family| command for describing the available shapes and sizes; in practice
% this happens only with the EC fonts, even when the \texttt{cm-super} scalable
% implementation is used. For using the Latin Modern fonts (LM) new specific font
% description files for the CB fonts are part of the \babel\ package, so this
% problem does not exist; when using other fonts, such as the TX, PX, ZE,~\dots,
% other kludges are necessary, because their font family names are different from
% those normally used with \TeX: |cmr| for serifed fonts, |cmss| for sans serif
% ones, and |cmtt| for monospaced ones.\footnote{Even the Latin Modern fonts have
% different family names, but, due to their importance, specific font description
% files have been added to the \babel\ package. The LM fonts are more comfortable
% than the EC ones, when scalable fonts are to be used, because they are
% continuously scalable and download into the produced files less font files than
% the EC o cm-super ones. Unless specifically requested, the LM fonts should
% always be preferred to the EC and cm-super ones. When using the LM fonts, its
% better to use the full collection of the CB fonts, even if the CB font
% description files are compatible with the single 10\,pt size.}
%
% Notice that when using, for example, the TX fonts and no kludge is available,
% the CB fonts are loaded only as the ``error font'', since the TX fonts have
% different family names than the CB ones; in many cases this might pass
% un-noticed, but if real Greek text in different shapes and series has to be
% typeset, the unaware typesetter might get crazy trying to force shape and series
% changes in the Greek text; it would not be impossible, but it would be very,
% very boring. In any case see in the next sections the implemented kludges in
% order to run successful compilations also with non standard \TeX\ system fonts.
% \begin{macrocode}
\newif\ifor\orfalse % Compatibility with older versions
\DeclareOption{or}{\relax}
\newif\ifboldLipsian \boldLipsianfalse
\DeclareOption{boldLipsian}{\boldLipsiantrue}
\newif\ifonesizetypeone
\DeclareOption{10pt}{\onesizetypeonetrue}
\newif\ifGlyphNames \GlyphNamesfalse
\DeclareOption{NoGlyphNames}{\GlyphNamesfalse}
\DeclareOption{GlyphNames}{\GlyphNamestrue}
\ProcessOptions*
% \end{macrocode}
%
% In the next sections we frequently use the acronym for the Greek font encoding;
% we hope it will eventually become \texttt{GR} or, following the actual 256 glyph
% font encodings, \texttt{T7} or \texttt{X7}\footnote{Apparently \texttt{T7} has been
% reserved to define an encoding where the first 128 glyphs are the standard
% \texttt{OT1} encoded Latin fonts, and the second group, again of 128 glyphs,
% contains the Greek characters; therefore, since polytonic spelling requires more
% than 128 glyphs, the extended encoding \texttt{X7} will probably become the one
% applicable to the whole set of the CB fonts. Time passing by, the \texttt{X7}
% encoding name apparently has been used for some nordic language.}.
% Meanwhile the acronym is \texttt{LGR}, so we'd better define a symbolic name, so
% that we can change the definitive name in just one place.
% \begin{macrocode}
\def\GRencoding@name{LGR}
% \end{macrocode}
%
% Now the default Olga Greek fonts, used for rendering the ``Greek italic shape''
% are an alternative with the Lipsian ones.
%
% If the \texttt{10pt} option was
% specified it is necessary to load also the package texttt{type1ec.sty}.
% In any case we load also packages |graphicx| and |ifthen| that shall be useful
% for some commands.
% \begin{macrocode}
\ifonesizetypeone
\RequirePackage[10pt]{type1ec}[2002/09/07]
\fi
\RequirePackage{graphicx}
\RequirePackage{ifthen}
\RequirePackage{etoolbox}
% \end{macrocode}
%
% \begin{macro}{\metricsfont} Similarly the metric symbol font
% is declared together with a command for selecting it:
% \begin{macrocode}
\DeclareFontFamily{U}{mtr}{\hyphenchar\font\m@ne}
\ifonesizetypeone
\DeclareFontShape{U}{mtr}{m}{n}{<-> gmtr1000}{}%
\else
\DeclareFontShape{U}{mtr}{m}{n}{%
<-5.5> gmtr0500 <5.5-6.5> gmtr0600
<6.5-7.5> gmtr0700 <7.5-8.5> gmtr0800 <8.5-9.5> gmtr0900
<9.5-11> gmtr1000 <11-15> gmtr1200 <15-> gmtr1728}{}%
\fi
\DeclareFontShape{U}{mtr}{m}{it}{<->ssub*mtr/m/n}{}%
\DeclareFontShape{U}{mtr}{b}{it}{<->ssub*mtr/m/n}{}%
\DeclareFontShape{U}{mtr}{b}{n}{<->ssub*mtr/m/n}{}%
\newcommand*\metricsfont{\fontencoding{U}\fontfamily{mtr}\upshape}
% \end{macrocode}
% \end{macro} Next we require the package for extensible math fonts;
% it might be strange to use extensible math fonts in Greek philology,
% but a certain glyph must be picked up from such fonts, with the
% assurance that it changes size together with the current font size.
% \begin{macrocode}
\RequirePackage{exscale}
% \end{macrocode}
%
% Some macros are necessary to switch languages; such macros must be
% independent (at least for now) from the particular \babel\ version,
% whether it be version 3.6, 3.7, 3.8, or~3.9; in the former the concept
% of ``language attribute'' is unknown, while the latter recognises
% varieties of the same language by the attribute setting.
% With \babel\ version 3.9g things have further changed; the attribute
% to a language may be appended to the language name with an interposed
% dot; for example for Greek it might be |greek.polutoniko|.
% Such macros, besides being as robust as possible, must provide the
% alphabet changes as required.
%
%\begin{macro}{\GreekName}
% During the language switching operations |\GreekName|
% distinguishes the variant or the main language whose attribute
% gets set and, evidently, becomes effective when the main language
% |greek|
% is in force. Notice that if the |greek.ldf| has a date previous to
% 2014/09/18, the attribute |ancient| may not be defined; in this case
% the |polutoniko| attribute is set, else the |ancient| attribute is
% selected. The difference is that the attribute |polutoniko| selects
% the polytonic spelling and the modern Greek hyphenation, while
% |ancient| selects the polytonic spelling and the classical Greek
% hyphenation. It is assumed that this |teubner| package
% gets used for philological purposes only for ancient Greek.
% Nevertheless, if some work on modern polytonic Greek philological
% document is being typeset, the |ancient| attribute may work
% satisfactorily, but with some possible ``ancient'' line breaks.
% \begin{macrocode}
\ifx\languageattribute\undefined
\def\GreekName{polutonikogreek}%
\else
\def\GreekName{greek}
\def\strip@slash#1/#2/#3!{\edef\@tempA{#1#2#3}}
\def\getgreekdate#1 #2 #3 #4!{\def\@tempA{#1}\expandafter\strip@slash\@tempA!}
\expandafter\expandafter\expandafter\getgreekdate\csname ver@greek.ldf\endcsname !
\ifnum\@tempA<20140918
\languageattribute{greek}{polutoniko}%
\else
\languageattribute{greek}{ancient}%
\fi
\let\strip@slash\@undefined
\let\getgreekdate\@undefined
\fi
% \end{macrocode}
%\end{macro}
%
% \subsection{Compatibility with Latin fonts}\label{ssec:LatinFontComp}
%\begin{macro}{\previouslanguage}
%\begin{macro}{\previousencoding}
% The ``default'' language is defined as the
% ``previous'' language; similarly the ``default'' encoding is defined
% as the ``previous'' encoding; these are the language and the encoding
% in force when the document starts; this is why such macros are defined
% at the beginning of the document. At the same time we assure that if
% the CM (or EC) or the LM fonts are the default ones, nothing special
% is done, while if the default fonts are, say, the TX ones, they are
% correctly restored, but the CM families are used for the CB ones.
%\end{macro}
%\end{macro}
%
%\begin{macro}{\substitutefontfamily}
%\begin{macro}{\ifLipsian}
% The font macro |\substitutefontfamily| is already present in the \babel\ kernel, but
% with version 3.9g it is deprecated, although maintained for backwards compatibility;
% it copes only with the standard families, series and shapes, therefore it does not
% consider the Lipsian shape and its series. I had to redefine it together with a
% new conditional macro in order to do the same job as the original one but taking
% into consideration also the Lipsian shape; the purpose of this macro is to write
% in the working directory a number of font description files that refer to the LGR
% Greek encoding, but have the names of the Latin font families; such font
% description files, simply substitute these non existent encoding-family series and
% shapes with the existing series and shapes of any other LGR encoded Greek font, in
% particular the CB ones.
% Things might change in the future, so as to use the package by G\"unter Milde
% \texttt{substitutefont} package (already present in the \acro{ctan} archive) or
% other solutions by the core of \babel. Meanwhile we cope with what is available
% right now.
%
% By issuing a command such as:
% \begin{sintassi}\ttfamily
% \texttt{\string\ifFamily}\{pxr\}\{cmr\}
% \end{sintassi}
% an association is made with all the series and shapes of the Palatino serifed
% fonts to the corresponding CB serifed series and shapes; therefore when a language
% shift changes the default encoding from, say, \texttt{T1} to \texttt{LGR} the
% font family \texttt{LGR+pxr} is mapped to the font family \texttt{LGR+cmr} and
% everything is supposed to work fine; when another language change resets the
% encoding to \texttt{T1}, the original Latin script is used again. The redefined
% |\substitutefontfamily| macro is as such:
% \begin{macrocode}
\newif\ifLipsian
\providecommand*\substitutefontfamily{}%
\renewcommand*\substitutefontfamily[3]{{%
\edef\@tempA{#1#2.fd}%
\lowercase\expandafter{\expandafter\def\expandafter\@tempA\expandafter{\@tempA}}%
\expandafter\IfFileExists\expandafter{\@tempA}{}{%
\immediate\openout15=\@tempA
\typeout{Writing file #1#2.fd}
\immediate\write15{%
\string\ProvidesFile{#1#2.fd}^^J
[\the\year/\two@digits{\the\month}/\two@digits{\the\day}
\space generated font description file]^^J
\string\DeclareFontFamily{#1}{#2}{}^^J
\string\DeclareFontShape{#1}{#2}{m}{n}{<->ssub * #3/m/n}{}^^J
\string\DeclareFontShape{#1}{#2}{m}{it}{<->ssub * #3/m/it}{}^^J
\string\DeclareFontShape{#1}{#2}{m}{sl}{<->ssub * #3/m/sl}{}^^J
\string\DeclareFontShape{#1}{#2}{m}{sc}{<->ssub * #3/m/sc}{}^^J
\string\DeclareFontShape{#1}{#2}{b}{n}{<->ssub * #3/bx/n}{}^^J
\string\DeclareFontShape{#1}{#2}{b}{it}{<->ssub * #3/bx/it}{}^^J
\string\DeclareFontShape{#1}{#2}{b}{sl}{<->ssub * #3/bx/sl}{}^^J
\string\DeclareFontShape{#1}{#2}{b}{sc}{<->ssub * #3/bx/sc}{}^^J
\string\DeclareFontShape{#1}{#2}{bx}{n}{<->ssub * #3/bx/n}{}^^J
\string\DeclareFontShape{#1}{#2}{bx}{it}{<->ssub * #3/bx/it}{}^^J
\string\DeclareFontShape{#1}{#2}{bx}{sl}{<->ssub * #3/bx/sl}{}^^J
\string\DeclareFontShape{#1}{#2}{bx}{sc}{<->ssub * #3/bx/sc}{}^^J
}%
\ifLipsian
\immediate\write15{%
\string\DeclareFontShape{#1}{#2}{m}{li}{<->ssub * #3/m/li}{}^^J %<- Lipsian
\string\DeclareFontShape{#1}{#2}{b}{li}{<->ssub * #3/b/li}{}^^J %<- Lipsian
\string\DeclareFontShape{#1}{#2}{bx}{li}{<->ssub * #3/bx/li}{}^^J %<-Lipsian
\string\DeclareFontShape{#1}{#2}{m}{ui}{<->ssub * #3/m/ui}{}^^J %<- upright Olga
\string\DeclareFontShape{#1}{#2}{b}{ui}{<->ssub * #3/m/ui}{}^^J %<- upright Olga
\string\DeclareFontShape{#1}{#2}{bx}{ui}{<->ssub * #3/bx/ui}{}^^J%<-upright Olga
\string\DeclareFontShape{#1}{#2}{m}{rs}{<->ssub * #3/m/rs}{}^^J %<-serifed lc
\string\DeclareFontShape{#1}{#2}{b}{rs}{<->ssub * #3/m/rs}{}^^J %<-serifed lc
\string\DeclareFontShape{#1}{#2}{bx}{rs}{<->ssub * #3/bx/rs}{}^^J%<-serifed lc
}%
\global\Lipsianfalse\fi
\closeout15}%
}}
% \end{macrocode}
% Notice that together with the Lipsian fonts the upright italics (Olga) and upright
% serifed lowercase alphabets are defined. In a while there are the definition for
% selecting these shapes. Of course you are not obliged to use them, but in case you
% wanted\dots
%
% These results are obtained by means of the following macros.
%\begin{macro}{\ifCMLM}
%\begin{macro}{\ifFamily}
% The |\ifCMLM| processes the necessary test in order to set the auxiliary macro
% |\n@xt| to be an alias to |\iftrue| or |iffalse| depending on the fact that the
% CM (or EC) fonts or the LM fonts are the default Latin ones, in this case it sets
% the |\n@xt| macro equivalent to |\iftrue|, otherwise it sets it to |\iffalse|. In
% order to succeed, it requires to analyse the first two letters of the default
% family name; if these letters form one of the sequences |cm| or |lm|, the CM or
% LM fonts have been loaded, otherwise some other fonts are in force. We need
% therefore a macro with delimited arguments in order to extract the first two
% letters of the family name.
%
% \begin{macrocode}
\def\ifCMLM#1#2#3!{\edef\f@milyprefix{#1#2}%
\ifthenelse{\(\equal{\f@milyprefix}{cm}\OR\equal{\f@milyprefix}{lm}\)}%
{\let\n@xt\iftrue}{\def\f@milyprefix{cmr}\let\n@xt\iffalse}\n@xt}
% \end{macrocode}
% The other macro |\ifFamily| uses the previous macro and according to the test
% result, possibly runs the |\substitutefontfamily| macro that, if
% necessary, creates the description file that map the specified family font
% description file to the second specified font family, both connected to the LGR
% encoding. Therefore, after these font definition files exist, \LaTeX\ can fetch
% the Greek fonts by way of substitution. Let's explain again: if you specify
% \begin{verbatim}
% \Lipsiantrue\ifFamily{pxr}{lmr}
% \end{verbatim}
% you state that you want to run the macro on the serifed Palatino font family, by
% associating the |pxr| family to the |lmr| one\footnote{If you have the full CB
% Greek font collection it's more convenient to map the missing fonts to the Latin
% Modern Greek ones, while if you need to use the \emph{10pt} option, you'd better
% map the missing family to the ordinary Computer Modern ones; the actual fonts are
% the same, but the latter font definition files cope with the \emph{10pt} option,
% while the former don't.}; by specifying |\Lipsiantrue| you state that you want to
% create entries also for the Lipsian series and shape; the macro provides to reset
% |\Lipsianfalse| in order to avoid that other calls of that macro on non serifed
% or monospaced fonts try to create entries that in any case do not exist: the
% Lipsian font comes only as a serifed font! In this way, if you are using
% Palatino fonts through the \textsf{pxfonts} package, the |teubner| macros provide
% to create the necessary font description files so that while you are typesetting
% in medium normal Latin Palatino and you switch to Greek, the built in macros
% change the encoding to LGR; the LGR Palatino serifed medium normal Greek font
% does not exist, but that family, series and shape are mapped by the font
% description file to the corresponding LGR encoded Latin Modern CB fonts in medium
% series and normal shape, and typesetting goes on with the right Greek fonts.
% \begin{macrocode}
\newcommand*\ifFamily[2]{%
\expandafter\ifCMLM#1!\else\substitutefontfamily{LGR}{#1}{#2}\fi}
% \end{macrocode}
% You don't actually need to use that macro for the Times or the Palatino eXtended
% fonts loaded by means of the corresponding packages \textsf{txfonts} or
% \textsf{pxfonts}, because a hook is set up so that ``at begin document'' the
% loading of those packages is tested, and if the test is true, the necessary font
% description files are possibly created. If you load the Times or the Palatino or
% any other non standard font by means of other packages, it's up to you to issue
% the |\substitutefontfamily| macro right after calling that font package and by
% using the correct family names; similarly you might substitute the new Latin font
% family names to other Greek font family names, if you have other fonts available.
% At the same time at begin document we memorise the name and encoding of the Latin
% font used for the default language, so that when returning to Latin font
% typesetting after Greek font typesetting, the proper language typesetting rules
% and encoding are restored.
% \begin{macrocode}
\AtBeginDocument{%
\@ifpackageloaded{pxfonts}{\typeout{Palatino fonts loaded}%
\Lipsiantrue\ifFamily{pxr}{cmr}\Lipsianfalse
\ifFamily{pxss}{cmss}\ifFamily{pxtt}{cmtt}}{\relax}}
\AtBeginDocument{%
\@ifpackageloaded{txfonts}{\typeout{Times fonts loaded}%
\RequirePackage{teubnertx}}{}}
\AtBeginDocument{%
\edef\previouslanguage{\languagename}%
\edef\previousencoding{\f@encoding}}
% \end{macrocode}
%
% Nevertheless all this requires a minimum of attention in specifying the options
% for the \babel\ package and in the order extensions packages are input. The
% |teubner.sty| package should be read \emph{after} any other package that sets or
% resets the Latin font encoding; for example if the T1 encoding is selected as the
% default one, in place of the OT1 encoding, then this choice must be made before
% this package is read in. Similarly when the \babel\ options are specified,
% remember that the last language name becomes the default language at begin
% document; never specify |greek| as the last
% language option!
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\Lipsiakostext}
%\begin{macro}{\lishape}
%\begin{macro}{\textli}
% |\lishape| is the normal declaration, modelled on the other similar macros in the
% \LaTeX\ kernel, made up to chose the Lipsian shape. Nevertheless since it is a
% light character, if it must blend well with the other PostScript fonts, not only
% the CM and LM, but also the other ones available for typesetting with the \TeX\
% system, it is necessary to chose the |b| (bold) series in place of the |m|
% (medium) one, while maintaining the |bx| (bold extended) series when the other
% fonts are set with the blacker and larger series. This is why the |\lishape|
% declaration is a little more complicate than normal, since it has to test the
% value of the current series. The text command |\textli| matches the similar
% commands for Latin fonts. But the |\lishape| declaration is used also within the
% more complicated macros for declaring or setting the Lipsian font.
%
% |\Lipsiakostext| is a \emph{declaration} stating that from now on
% typesetting will be done with the Lipsian fonts; notice that the encoding and the
% language name in force before this declaration are memorised, then the current
% Greek version is selected; the |\let\~\accperispomeni| is required because
% switching on and off may reset the active tilde and connected macros definitions.
% |\~| in Greek must set the circumflex accent, so we make sure that this really
% occurs.
% \begin{macrocode}
\DeclareRobustCommand{\lishape}{%
\not@math@alphabet\lishape\relax
\ifthenelse{\equal{\f@encoding}{\GRencoding@name}}{%
\ifboldLipsian
\ifthenelse{\equal{\f@series}{m}}%
{\fontseries{b}\fontshape{li}\rmfamily}%
{\fontshape{li}\rmfamily}\else
\fontshape{li}\rmfamily\fi}%
{\fontshape{it}\selectfont}}%
\DeclareTextFontCommand{\textli}{\lishape}%
\DeclareRobustCommand\Lipsiakostext{%
\expandafter\select@language\expandafter{\GreekName}%
\let\~\accperispomeni\let~\accperispomeni\lishape}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin{macro}{\textLipsias}
% |\textLipsias| is a command that typesets its argument with the |\Lipsiakostext|
% declaration in force. The \LaTeX\ command declaration used here makes sure that
% possible italic corrections are taken into account; the actual font switching is
% made through the same |\Lipsiakostext| declaration, but the inner working
% maintain local this declaration; for this reason we suggest to use this text
% command rather than the font declaration.
% \begin{macrocode}
\DeclareTextFontCommand{\textLipsias}{\Lipsiakostext}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\NoLipsiakostext} |\NoLipsiakostext| is the opposite declaration
% that undoes everything that was done with |\Lipsiakostext|. Probably it is
% superfluous, but it has been asked for. If |\Lipsiakostext| is delimited within a
% scope by means of an explicit group or an environment, it stops its effectiveness
% with the end of its scope.
%
% It is worth noting that, in order to delimit within a scope the action of this and
% of the other declarations, it is possible to use them as environments with the
% same name without the backslash. for example one might input in the source file
% something as:
%\begin{quote}\obeylines
% |\begin{Lipsiakostext}|
% \meta{Greek text to be typeset with the Lipsian font}
% |\end{Lipsiakostext}|
%\end{quote}
% Remember also that these Greek text declarations may be issued while typesetting
% with Latin fonts; they provide also the language switch, so that they do not
% require the typesetter to first switch to Greek and then to choose a certain Greek
% font.
% \begin{macrocode}
\DeclareRobustCommand\NoLipsiakostext{%
\ifthenelse{\equal{\f@series}{b}}{\fontseries{m}}{\relax}%
\fontshape{n}\selectfont
\expandafter\select@language\expandafter{\previouslanguage}%
\rmfamily\bbl@activate{~}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\textDidot}
% |\textDidot| is a similar macro where the common upright Greek characters are
% selected; it goes by itself that if |\textli| is specified within the
% |\textDidot| argument, the typesetting is or becomes identical with what
% one can obtain with the |\textLipsias| command.
% \begin{macrocode}
\DeclareRobustCommand\textDidot[1]{{%
\expandafter\select@language\expandafter{\GreekName}%
\let\~\accperispomeni\let~\accperispomeni
\fontencoding{LGR}\rmfamily#1}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\textlatin}
% |\textlatin| is a redefinition of the standard \babel\ macro that is adapted to
% the present situation, where it may be called behind the scenes in certain
% situations that are beyond the control of the typesetter. Therefore
% every precaution is taken in order to be sure that the composition of the command
% argument is really done with the default encoding and font families, but
% maintaining the current series and shape; of course, if the shape is that related
% to the Lipsian font, then the italic shape is temporarily restored (local
% definition). Moreover, with the (default) Latin fonts the tilde is restored to a
% non breaking space by simply making it an active character.
% \begin{macrocode}
\DeclareRobustCommand\textlatin[1]{\edef\externalencoding{\f@encoding}{%
\def\itdefault{it}\def\@tempA{li}\ifx\@tempA\f@shape\def\f@shape{it}\fi
\expandafter\select@language\expandafter{\previouslanguage}%
\fontencoding{\previousencoding}%
\fontfamily{\rmdefault}\selectfont
\bbl@activate{~}#1}%
\expandafter\fontencoding\expandafter{\externalencoding}\rmfamily}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\uishape}
%\begin{macro}{\textui}
%\begin{macro}{\rsshape}
%\begin{macro}{\textrs}
% The other switching font macros for using the other shapes that are available
% with the CB fonts are working only when typesetting in Greek and the default
% encoding is therefore LGR.
% \begin{macrocode}
\DeclareRobustCommand\uishape{%
\ifthenelse{\equal{\f@encoding}{\GRencoding@name}}%
{\fontshape{ui}\selectfont}{\relax}}
\DeclareTextFontCommand{\textui}{\uishape}
\DeclareRobustCommand\rsshape{%
\ifthenelse{\equal{\f@encoding}{\GRencoding@name}}%
{\fontshape{rs}\selectfont}{\relax}}
\DeclareTextFontCommand{\textrs}{\rsshape}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
% \subsection{Service macros}
% Now we start the specific additions introduced with this package.
%
% \begin{macro}{\strip@pt}
% The \LaTeX\ kernel has the macro |\strip@pt| that strips off the pt part from the
% expanded value of a dimension register and makes available the measure in pt
% of the contained length (the register contains the length measure in scaled
% points; the expansion performed by \TeX\ with the command |\the| converts the
% scaled points to printer points and shows the result with a string of decimal
% digits with, possibly, a decimal fraction); its argument is supposed
% to be a dimension register name, not its expanded contents. The |\strip@pt|
% command eliminates the decimal point and the fractional part if the latter is
% nought.
%
% With the help of such service macro we are going to define a certain number of
% ``lift accent'' macros or ``put cedilla'' macros that work with both upright and
% slanted fonts, although they contain different parameters for Latin compared to
% Greek alphabets.
% \end{macro}
%
% \begin{macro}{\lift@accent}
% The first ``lift accent'' macro just puts an accent over
% a letter, without inserting any space between them; the first argument is the
% accent code (decimal, hexadecimal or octal; I prefer decimal), while the second
% argument is the letter --~any letter, even if it is not a vowel!
% \begin{macrocode}
\newcommand*\lift@accent[2]{\leavevmode
{\edef\slant@{\strip@pt\fontdimen1\font}%
\dimen@=\z@\setbox\z@\hbox{\char#1}\advance\dimen@-.5\wd\z@
\setbox\tw@\hbox{i}\setbox\z@\hbox{#2}%
\ifdim\wd\z@>\wd\tw@\advance\dimen@ .5\wd\z@
\else\advance\dimen@ .3\wd\z@\fi
\ifx#2h\advance\dimen@.05\wd\z@\fi
\@tempdima\ht\z@\advance\@tempdima-1ex\relax
\advance\dimen@\slant@\@tempdima
\raise\@tempdima\hbox to\z@{\kern\dimen@\char#1\relax\hss}\box\z@}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Lift@accent}
% The second ``lift accent'' macro behaves as the first one except it interposes a
% small vertical distance between the accent and the letter:
% \begin{macrocode}
\newcommand*\Lift@accent[2]{\leavevmode
{\edef\slant@{\strip@pt\fontdimen1\font}%
\dimen@=\z@\setbox\z@\hbox{\char#1}\advance\dimen@-.5\wd\z@
\setbox\tw@\hbox{i}\setbox\z@\hbox{#2}%
\ifdim\wd\z@>\wd\tw@\advance\dimen@ .5\wd\z@
\else\advance\dimen@ .3\wd\z@\fi
\ifx#2a\advance\dimen@-.1\wd\z@\fi
\ifx#2h\advance\dimen@.05\wd\z@\fi
\@tempdima\ht\z@\advance\@tempdima-1ex\advance\@tempdima.1ex\relax
\advance\dimen@\slant@\@tempdima
\raise\@tempdima\hbox to\z@{\kern\dimen@\char#1\relax\hss}\box\z@}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\LIFT@accent}
% The third ``lift accent'' macro behaves as the first one, except it interposes a
% specified vertical space between the letter and the accent; this space is
% specified as the second argument:
% \begin{macrocode}
\newcommand*\LIFT@accent[3]{\leavevmode
{\edef\slant@{\strip@pt\fontdimen1\font}%
\dimen@=\z@\setbox\z@\hbox{\char#1}\advance\dimen@-.5\wd\z@
\setbox\tw@\hbox{i}\setbox\z@\hbox{#3}%
\ifdim\wd\z@>\wd\tw@\advance\dimen@ .5\wd\z@
\else\advance\dimen@ .3\wd\z@\fi
\ifx#2a\advance\dimen@-.1\wd\z@\fi
\ifx#2h\advance\dimen@.05\wd\z@\fi
\@tempdima\ht\z@\advance\@tempdima-1ex\relax
\def\@tempA{#2}\ifx\@tempA\undefined\else
\advance\@tempdima#2\fi\let\@tempA\undefined
\advance\dimen@\slant@\@tempdima
\raise\@tempdima\hbox to\z@{\kern\dimen@\char#1\relax\hss}\box\z@}}
% \end{macrocode}
% \end{macro}
%
% All these macros will be used in subsequent ``put accent'' macros, that will
% stack also several accents one above the other; the necessity arises for example
% when the macron or breve diacritical marks have to be put over accented letters;
% according to typographical practice the accents must go over the macron or the
% breve.
% In a similar way philologists often must use other diacritical marks in addition
% to the traditional Greek ones, therefore these macros will be used, for example,
% for setting the Scandinavian ring (from a Latin font) over a Greek letter (from a
% Greek font).
%
% \begin{macro}{\cap@}
% The first such unusual diacritical mark is a small cap, a small upside down breve
% sign, that is in position~1 of the Greek font table.
% \begin{macrocode}
\DeclareRobustCommand{\cap@}[1]{\leavevmode
{\edef\slant@{\strip@pt\fontdimen1\font}%
\setbox\tw@\hbox{\fontencoding{\GRencoding@name}\selectfont
\char1}\dimen@-.5\wd\tw@
\setbox\z@\hbox{#1}%
\advance\dimen@ .5\wd\z@
\@tempdima\ht\z@\advance\@tempdima.55ex\relax
\advance\dimen@\slant@\@tempdima
\ifx\cf@encoding\GRencoding@name\else
\ifx#1k\advance\dimen@-.3\wd\tw@\fi\fi
\raise\@tempdima\hbox to\z@{\kern\dimen@\box\tw@\relax\hss}\box\z@}}
% \end{macrocode}
% The |\ifx\cf@encoding\GRencoding@name| conditional construct shows that this
% macro behaves differently with different font encodings; the following |\ifx#1k|
% checks the argument against the Greek letter kappa, which shows very clearly
% that these macros operate on any letter, not only on vowels.
% \end{macro}
%
% \begin{macro}{\cap}
% By means of the above |\cap@| macro we can define three equivalent commands to be
% used either when the Greek encoding is in force, or when one of the Latin
% encodings is in force; but we must pay attention, because there exist already
% the command |\cap| to be used in mathematics; therefore we better exclude this
% possibility through a clever use of the |\textormath| macro. Therefore we
% first save the math command into an alia |\mcap|; then we define three
% textual commands for the various encodings |\tcap|; finnally we use
% |\textormath|:
% \begin{macrocode}
\let\mcap\cap
\DeclareTextCommand{\tcap}{\GRencoding@name}{\cap@}
\DeclareTextCommand{\tcap}{OT1}{\cap@}
\DeclareTextCommand{\tcap}{T1}{\cap@}
\DeclareRobustCommand*\cap{\textormath{\tcap}{\mcap}}
% \end{macrocode}
% Probably one definition would be sufficient, but on one side the presence of three
% encoding dependent macros are the remains of initial works, while on the other
% side they prevent to use these macros with encodings for which the macro might not
% work well, because it was not tested with them.
% \end{macro}
%
% \begin{macro}{\cap@cedilla}
% Similarly a small cap can be put under another letter as it was a cedilla; for
% this task another macro is defined, which makes use of the same glyph in
% position~1 in the Greek font table:
% \begin{macrocode}
\newcommand*\cap@cedilla[1]{\leavevmode
{\setbox4\hbox{\fontencoding{\GRencoding@name}\selectfont\char1}%
\dimen@-.5\wd4
\setbox\z@\hbox{#1}%
\ifx\cf@encoding\GRencoding@name
\ifx#1i\advance\dimen@ .65\wd\z@\else\advance\dimen@ .5\wd\z@\fi
\else
\ifx#1i\advance\dimen@ .55\wd\z@\else\advance\dimen@ .5\wd\z@\fi
\fi
\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ring@cedilla}
% Another cedilla like diacritical mark is the Scandinavian ring put under a letter;
% the ring is taken from the metrics font, so its slot position does not depend
% on the various Latin encodings; the correct positioning requires careful
% examination of the letter under which it is to be placed, distinguishing the Greek
% from the Latin encodings:
% \begin{macrocode}
\newcommand*\ring@cedilla[1]{\leavevmode
{\setbox4\hbox{\metricsfont\char26}%
\edef\slant@{\strip@pt\fontdimen1\font}%
\dimen@-.5\wd4\ifdim\slant@\p@>\z@\advance\dimen@-.04ex\fi
\setbox\z@\hbox{#1}%
\ifx\cf@encoding\GRencoding@name
\advance\dimen@ .45\wd\z@
\ifx#1h\advance\dimen@-.13\wd\z@\fi
\ifx#1a\advance\dimen@-.07\wd\z@\fi
\ifx#1o\advance\dimen@-.07\wd\z@\fi
\ifx#1u\advance\dimen@+.07\wd\z@\fi
\ifx#1w\advance\dimen@+.03\wd\z@\fi
\else
\ifx#1i\advance\dimen@.55\wd\z@\else
\ifx#1r\advance\dimen@.38\wd\z@\else
\ifx#1o\advance\dimen@.47\wd\z@\else
\advance\dimen@0.5\wd\z@
\fi\fi\fi
\fi
\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dot@cedilla}
% Even the standard \LaTeX\ macro |dot| must be redefined with a cedilla like macro,
% so as to make use of a special dot from the metric symbols font:
% \begin{macrocode}
\newcommand*\dot@cedilla[1]{\leavevmode
{\setbox4\hbox{\metricsfont\char27}%
\dimen@-.5\wd4
\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}%
\ifx\cf@encoding\GRencoding@name
\advance\dimen@ .5\wd\z@
\ifx#1h\advance\dimen@-.13\wd\z@\fi
\else
\ifdim\wd\z@>\wd\tw@\advance\dimen@.55\wd\z@
\else\advance\dimen@.5\wd\tw@\fi
\fi
\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi
\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
% \end{macrocode}
%\end{macro}
%
% \begin{macro}{\tie@cedilla}
% \LaTeX\ has the macro |\t| for placing a ``tie'' over two letters; philologists
% require also a tie under two letters; this is why another cedilla like macro is
% needed:
% \begin{macrocode}
\newcommand*\tie@cedilla[1]{\leavevmode
{\setbox4\hbox{\fontencoding{\GRencoding@name}\selectfont\char20}%
\dimen@-.5\wd4
\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}%
\ifx\cf@encoding\GRencoding@name
\advance\dimen@.5\wd\z@
\ifx#1h\advance\dimen@-.1\wd\z@\fi
\ifx#1u\advance\dimen@.15\wd\z@\fi
\else
\ifdim\wd\z@>\wd\tw@\advance\dimen@ .55\wd\z@
\else\advance\dimen@ .5\wd\tw@\fi
\fi
\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi
\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
% \end{macrocode}
% \end{macro}
%
% \subsection{Extended accent definitions}
% We will use those service macros in the definition of several accent like macros
% that keep all the intricacies away from the user.
%
% In particular the \LaTeX\ kernel macros are used in order to declare accents,
% composite glyphs, composite commands, and the like; these are used as the default
% definitions; afterwards other definitions will be given that work when these
% composite macros don't work.
%
% In other words, while |\~| and |u| in Greek form the composite glyph ``upsilon
% with circumflex'' that exists in the Greek font table, the same macro |\~| and the
% letter |k| produce the superposition of a circumflex on top of a ``kappa'' glyph,
% since this glyph does not exist in the Greek font table.
%^^A
%^^A NON SEMBRA CHE FUNZIONI CON TUTTI I COMANDI; CHIEDERE A GÜNTER
%^^A
% Notice that all these declarations are restricted to the Greek font encoding
% so they are usable only when such encoding is in force. See the
% |teubner-doc.pdf| file for more details concerning the usefulness of the
% extended accent macros vs.~the ligature mechanism. In any case, with version
% 3.9g of \babel\ and the modifications introduced by G\"unter Milde, the
% actual \babel\-greek maintainer, during the year 2013, such extended accent
% macros are LICR encoded and may always be used when typesetting in Greek;
% see file \texttt{greek-fontenc.def} and \texttt{lgrenc.def} for further
% details, remembering that such files are always loaded when typesetting
% Greek texts, irrespective of the input encoding; if the encoding is
% \texttt{utf8} direct Greek glyph input is possible (if your keyboard
% allows you to do such input).
%
%\section{Avoiding conflicts}
% Some LICR definitions are necessary to use \pack{teubner}, but some of them
% are really important; therefore G\"unter Milde developed package
% \pack{textslpha} that comes with the other special files for the Greek LICR
% encoding, that avoids any conflict; we load it at the |\begin{document}|
% execution so that it will be loaded only if necessary:
% \begin{macrocode}
\AtEndPreamble{\RequirePackage{textalpha}}
% \end{macrocode}
%
% \subsection{Special accent macros}
% Now we come back to the ``accent like'' and ``cedilla like'' general macros we
% defined above, and that will be extensively used in the following definitions.
% Note that for what the circumflex is concerned, when |teubner| is in effect it
% is not defined as an active character and does not work as a non breaking space.
% The command |\~| is just an accent macro; how do you put a non breaking space in
% a Greek context? By simply using the \LaTeX\ kernel macro |\nobreakspace|; when
% typesetting with non-Greek fonts the |~| is certainly handy
% to insert a non breaking space (a tie), but for polytonic Greek spelling in the
% past 15 years or so the Greek language definition file has always used the |~|
% sign a letter, not as an active character. If you look in the \babel\ package
% documentation related to the Greek language, you find that for what concerns the
% |~| with polytonic spelling a number of ``dirty tricks'' have been used, but
% nothing has been done to replace the ``tie'' function of this character when
% typesetting in languages that use the Latin script; the only action related to
% this point has been to redefine the kernel macros for typesetting figure and
% table% captions so as to substitute the |~| character with its explicit
% definition |\nobreakspace|. It is necessary to do the same when this package is
% used, although a shorter alias command |\nbs| is provided in order to simplify
% the input keying.
% \begin{macrocode}
\let\nbs\nobreakspace
% \end{macrocode}
%
% Before defining the Greek accents with the extended macros input with the
% LICR accent macros, we have to define the accent superpositioning macros that
% with \pack{teubner} allow to stack from one to more accent over the base letter,
% taking into account the slant of the font from which the base letter is taken.
% Notice that these macros allow to set an accent on any base latter, even if that
% might be meaningless. At the same time we redefine the standard macros so as to
% let them do the same work when the LGR encoding is not in force. This duality is
% necessary, not only for backward compatibility, but also for avoiding that the
% normal redefined macros highjack the LICR facility.
%
% We first define aliases for the standard \LaTeX\ accents, so that when
% entering Greek typesetting mode we can save the \LaTeX\ macros, and restore
% them upon exiting:
% \begin{macrocode}
\let\accacuto\'
\let\accgrave\`
\let\acccircon\~
\let\accdieresi\"
\let\accbreve\u
\let\accmacron\=
% \end{macrocode}
%
% Then we define alternate macros for these accents, as ``lifting'' accent macros,
% so that they can put their respective accent over any letter.
% For the diaeresis we need to put an invisible character (|v| in the LGR encoded
% CB fonts, that with LICR becomes |\textcompwordmark|) in order to avoid any
% ligature with an implied end of word (boundarychar) that turns the diaeresis
% into an apostrophe.
% \begin{macrocode}
\DeclareTextCommand{\G}{\GRencoding@name}[1]{\lift@accent{96}{#1}}
\DeclareTextCommand{\A}{\GRencoding@name}[1]{\lift@accent{39}{#1}}
\DeclareTextCommand{\C}{\GRencoding@name}[1]{\lift@accent{126}{#1}}
\DeclareTextCommand{\D}{\GRencoding@name}[1]{\lift@accent{34\textcompwordmark}{#1}}
\DeclareTextCommand{\B}{\GRencoding@name}[1]{\lift@accent{30}{#1}}
\DeclareTextCommand{\M}{\GRencoding@name}[1]{\lift@accent{31}{#1}}
%
% \end{macrocode}
% But we have to provide also the means for disabling the |~| shorthand that is
% reset every time the Greek language is selected again in a multi language document
% where language shifts take place quite often; we must also counteract the
% resetting of the |\~| definition performed by the |greek.ld| file in every
% language shift; we add the accent definition to the |\extrasgreek| macro,
% and we reset them at |\noextrasgreek| execution.
% \begin{macrocode}
\addto\extrasgreek{\shorthandoff{~}\let\~\accperispomeni
\let\"\accdialytika\let\'\acctonos\let\`\accvaria}
\addto\noextrasgreek{\shorthandon{~}\let\~\acccircon
\let\"\accdieresi\let\'\accacuto\let\`\accgrave}
% \end{macrocode}
%
% Besides the normal |\B| command for setting a breve command, another ``large
% breve'' is required by philologists, who need to mark a diphthong, or in general
% two letters; the macro |\U| does the job, but it is the typesetter's
% responsibility to input the macro argument as made of two letters (possibly with
% their own accents):
% \begin{macrocode}
\DeclareTextCommand{\U}{\GRencoding@name}[1]{\lift@accent{151}{#1}}
% rough
\DeclareTextCommand{\r}{\GRencoding@name}[1]{\lift@accent{60}{#1}}
% smooth
\DeclareTextCommand{\s}{\GRencoding@name}[1]{\lift@accent{62}{#1}}
% acute+diaeresis
\DeclareTextCommand{\Ad}{\GRencoding@name}[1]{\lift@accent{35}{#1}}
% grave+diaeresis
\DeclareTextCommand{\Gd}{\GRencoding@name}[1]{\lift@accent{36}{#1}}
% circumflex+diaeresis
\DeclareTextCommand{\Cd}{\GRencoding@name}[1]{\lift@accent{32}{#1}}
% acute+rough
\DeclareTextCommand{\Ar}{\GRencoding@name}[1]{\lift@accent{86}{#1}}
% grave+rough
\DeclareTextCommand{\Gr}{\GRencoding@name}[1]{\lift@accent{67}{#1}}
% circumflex+rough
\DeclareTextCommand{\Cr}{\GRencoding@name}[1]{\lift@accent{64}{#1}}
% acute+smooth
\DeclareTextCommand{\As}{\GRencoding@name}[1]{\lift@accent{94}{#1}}
% grave+smooth
\DeclareTextCommand{\Gs}{\GRencoding@name}[1]{\lift@accent{95}{#1}}
% circumflex+smooth
\DeclareTextCommand{\Cs}{\GRencoding@name}[1]{\lift@accent{92}{#1}}
% \end{macrocode}
% Most of the above accent commands are used again in order to tie a text symbol
% meaning to certain combinations, that is when they receive as argument a vowel
% whose accented glyph is present in the font; in this way in order to type
% ``alpha with rough breath, acute accent and iota subscript'' you can type
% \verb"<'a|", or \verb"\Ar{a}|" or |\arai| or \verb+\<'a|+, if you use the new standard
% accent macros; the advantage of using the first notation is its short string; the
% advantage of the second is that it does not break kerning commands with a
% preceding letter; the advantage of the third is that it does not break any
% kerning either before or after; the fourth solution produces the same result as
% the third, but it's easier to make up and you don't have to memorise any specific
% naming rule for accented glyphs. With the Lipsian font this trick is particularly
% useful for any sequence of alpha and upsilon each one with its own accents and/or
% diaeresis.
%
% In Greek the regular cedilla is meaningless, so that |\c| may be redefined
% as a semivowel command; at the same time the typesetter might be more
% comfortable if he could always use the same, although longer, macro for
% marking a vowel as a semivowel one; therefore |\c| plays the same role
% in Greek as |\semiv|.
% \begin{macrocode}
% cap cedilla
\DeclareTextCommand{\c}{\GRencoding@name}[1]{\cap@cedilla{#1}}
\DeclareTextCommand{\semiv}{\GRencoding@name}[1]{\cap@cedilla{#1}}
\DeclareTextCommand{\semiv}{OT1}[1]{\cap@cedilla{#1}}
\DeclareTextCommand{\semiv}{T1}[1]{\cap@cedilla{#1}}
% ring cedilla
\DeclareTextCommand{\ring}{\GRencoding@name}[1]{\ring@cedilla{#1}}
\DeclareTextCommand{\ring}{OT1}[1]{\ring@cedilla{#1}}
\DeclareTextCommand{\ring}{T1}[1]{\ring@cedilla{#1}}
% dot cedilla
\DeclareTextCommand{\Dot}{\GRencoding@name}[1]{\dot@cedilla{#1}}
\DeclareTextCommand{\Dot}{OT1}[1]{\dot@cedilla{#1}}
\DeclareTextCommand{\Dot}{T1}[1]{\dot@cedilla{#1}}
% tie cedilla
\DeclareTextCommand{\ut}{\GRencoding@name}[1]{\tie@cedilla{#1}}
\DeclareTextCommand{\ut}{OT1}[1]{\tie@cedilla{#1}}
\DeclareTextCommand{\ut}{T1}[1]{\tie@cedilla{#1}}
%
% Acute breve
\DeclareTextCommand{\Ab}{\GRencoding@name}[1]%
{\LIFT@accent{39}{-.15ex}{\lift@accent{30}{#1}}}
% Grave breve
\DeclareTextCommand{\Gb}{\GRencoding@name}[1]%
{\LIFT@accent{96}{-.15ex}{\lift@accent{30}{#1}}}
% Acute rough breve
\DeclareTextCommand{\Arb}{\GRencoding@name}[1]%
{\LIFT@accent{86}{-.15ex}{\lift@accent{30}{#1}}}
% Grave rough breve
\DeclareTextCommand{\Grb}{\GRencoding@name}[1]%
{\LIFT@accent{67}{-.15ex}{\lift@accent{30}{#1}}}
% Acute smooth breve
\DeclareTextCommand{\Asb}{\GRencoding@name}[1]%
{\LIFT@accent{94}{-.15ex}{\lift@accent{30}{#1}}}
% Grave smooth breve
\DeclareTextCommand{\Gsb}{\GRencoding@name}[1]%
{\LIFT@accent{95}{-.15ex}{\lift@accent{30}{#1}}}
%
% Acute macron
\DeclareTextCommand{\Am}{\GRencoding@name}[1]%
{\Lift@accent{39}{\lift@accent{31}{#1}}}
% Grave macron
\DeclareTextCommand{\Gm}{\GRencoding@name}[1]%
{\Lift@accent{96}{\lift@accent{31}{#1}}}
% Circumflex macron
\DeclareTextCommand{\Cm}{\GRencoding@name}[1]%
{\Lift@accent{126}{\lift@accent{31}{#1}}}
% Acute rough macron
\DeclareTextCommand{\Arm}{\GRencoding@name}[1]%
{\Lift@accent{86}{\lift@accent{31}{#1}}}
% Grave rough macron
\DeclareTextCommand{\Grm}{\GRencoding@name}[1]%
{\Lift@accent{67}{\lift@accent{31}{#1}}}
% Circumflex rough macron
\DeclareTextCommand{\Crm}{\GRencoding@name}[1]%
{\Lift@accent{64}{\lift@accent{31}{#1}}}
% Acute smooth macron
\DeclareTextCommand{\Asm}{\GRencoding@name}[1]%
{\Lift@accent{94}{\lift@accent{31}{#1}}}
% Grave smooth macron
\DeclareTextCommand{\Gsm}{\GRencoding@name}[1]%
{\Lift@accent{95}{\lift@accent{31}{#1}}}
% Circumflex smooth macron
\DeclareTextCommand{\Csm}{\GRencoding@name}[1]%
{\Lift@accent{92}{\lift@accent{31}{#1}}}
% smooth macron
\DeclareTextCommand{\Sm}{\GRencoding@name}[1]%
{\Lift@accent{62}{\lift@accent{31}{#1}}}
% rough macron
\DeclareTextCommand{\Rm}{\GRencoding@name}[1]%
{\Lift@accent{60}{\lift@accent{31}{#1}}}
% smooth breve
\DeclareTextCommand{\Sb}{\GRencoding@name}[1]%
{\LIFT@accent{62}{-0.15ex}{\lift@accent{30}{#1}}}
% rough breve
\DeclareTextCommand{\Rb}{\GRencoding@name}[1]%
{\LIFT@accent{60}{-0.15ex}{\lift@accent{30}{#1}}}
% breve and dieresis
\DeclareTextCommand{\bd}{\GRencoding@name}[1]%
{\LIFT@accent{30}{-.1ex}{\lift@accent{34v}{#1}}}
%
% iota subscript
\DeclareTextCommand{\iS}{\GRencoding@name}[1]
{\ooalign{#1\crcr\hidewidth\char124\hidewidth}}
% \end{macrocode}
%
% \begin{macro}{\d}
% The |\d| macro must be made available also with the Greek encoding
% \begin{macrocode}
\DeclareTextCommand{\d}{\GRencoding@name}[1]%
{\leavevmode\bgroup\o@lign{\relax#1\crcr
\hidewidth\sh@ft{10}.\hidewidth}\egroup}
% \end{macrocode}
% \end{macro}
%
% Some other philologist diacritical marks are needed.
%
% \begin {macro}{\Open}
% The |\Open| macro sets a special sign under a letter in order
% to mark it with an open pronunciation.
% \begin{macrocode}
\DeclareRobustCommand{\Open}[1]{\leavevmode
{\setbox4\hbox{\raise-.33ex\hbox{\metricsfont\char14}}%
\dimen@-.5\wd4
\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}%
\ifx\cf@encoding\GRencoding@name
\advance\dimen@ .5\wd\z@
\setbox\tw@\hbox{h}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.13\wd\z@\fi
\else
\ifdim\wd\z@>\wd\tw@\advance\dimen@ .55\wd\z@
\else\advance\dimen@ .5\wd\tw@\fi
\fi
\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi
\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
% \end{macrocode}
% \end{macro}
% \begin {macro}{\nasal}
% The macro |\nasal| marks a letter for a nasal pronunciation.
% \begin{macrocode}
\DeclareRobustCommand{\nasal}[1]{\leavevmode
{\setbox4\hbox{\raise-1.7ex\hbox{\GEcq}}%
\dimen@-.5\wd4
\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}%
\ifx\cf@encoding\GRencoding@name
\advance\dimen@ .5\wd\z@
\setbox\tw@\hbox{h}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.13\wd\z@\fi
\else
\ifdim\wd\z@>\wd\tw@\advance\dimen@ .55\wd\z@
\else\advance\dimen@ .5\wd\tw@\fi
\fi
\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi
\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
% \end{macrocode}
% \end{macro}
%\begin {macro}{\tenaspir}
% Similarly |\tenaspir| marks a ``tenuis aspiratio''
% \begin{macrocode}
\DeclareRobustCommand{\tenaspir}[1]{#1\/%
{\fontencoding{\GRencoding@name}\selectfont<v}}
% \end{macrocode}
% \end{macro}
%\begin{macro}{\palat}
% |\palat| marks a palatal pronunciation of some consonants.
% \begin{macrocode}
\DeclareRobustCommand{\palat}[1]{#1{%
\expandafter\fontencoding\expandafter{\GRencoding@name}\selectfont
\anwtonos}}
% \end{macrocode}
%\end{macro}
%
% With the help of the previous macros some new commands get defined so as
% to use a simple more or less mnemonic macro instead of having the typesetter type
% in nested macros; these macros are valid only in the Greek and Latin encodings.
% \begin{macrocode}
% dot and breve
\DeclareTextCommand{\Ud}{\GRencoding@name}[1]{\d{\u{#1}}}
% dot and macron
\DeclareTextCommand{\md}{\GRencoding@name}[1]{\d{\={#1}}}
% open and breve
\DeclareTextCommand{\UO}{\GRencoding@name}[1]{\Open{\u{#1}}}
% open and macron
\DeclareTextCommand{\mO}{\GRencoding@name}[1]{\Open{\={#1}}}
%
\DeclareTextCommand{\Ud}{T1}[1]{\d{\u{#1}}}
\DeclareTextCommand{\md}{T1}[1]{\d{\={#1}}}
\DeclareTextCommand{\UO}{T1}[1]{\Open{\u{#1}}}
\DeclareTextCommand{\mO}{T1}[1]{\Open{\={#1}}}
%
\DeclareTextCommand{\Ud}{OT1}[1]{\d{\u{#1}}}
\DeclareTextCommand{\md}{OT1}[1]{\d{\={#1}}}
\DeclareTextCommand{\UO}{OT1}[1]{\Open{\u{#1}}}
\DeclareTextCommand{\mO}{OT1}[1]{\Open{\={#1}}}
% \end{macrocode}
%
% \subsection{Some text commands}
% \begin{macro}{\greekquoteleft}
% \begin{macro}{\greekquoteright}
% \begin{macro}{\textguillemotleft}
% \begin{macro}{\textguillemotright}
% \begin{macro}{\textcompwordmark}
% \begin{macro}{\textemdash}
% \begin{macro}{emdash}
% \begin{macro}{\textendash}
% All these macros are defined by the new \texttt{lgrenc.def} file, so it is not necessary to redefine them.% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%\begin{macro}{\stigma}
%\begin{macro}{\varstigma}
%\begin{macro}{\koppa}
%\begin{macro}{\coppa}
%\begin{macro}{\varkoppa}
%\begin{macro}{\sampi}
%\begin{macro}{\Coppa}
%\begin{macro}{\Stigma}
%\begin{macro}{\Sampi}
%\begin{macro}{\Euro}
%\begin{macro}{\permill} S
% These macros, too, are defined by the \texttt{lgrenc.def} file and
% subsidiaries, but with different names; therefore we make some aliases.
% We exclude to use the modern koppa sign (zig-zag koppa) so we let its
% commands equal to the old koppa.; at the same time, for backwards
% compatibility, we let also the variant name |\varkoppa| to address
% the ancient glyph. For the digit~6 in the `units' position, we foresee
% to use either the true stigma glyph or the digamma one.
% \begin{macrocode}
\let\stigma\textstigma \let\Stigma\textStigma
\let\varstigma\textvarstigma
\let\koppa\textkoppa \let\Koppa\textQoppa
\let\qoppa\textqoppa
\let\varkoppa\textqoppa
\let\coppa\textqoppa \let\Coppa\textQoppa
\let\sampi\textsampi \let\Sampi\textSampi
\let\f\textdigamma \let\F\textDigamma \let\Digamma\F
\let\Euro\texteuro
\let\permill\textperthousand
\let\schwa\textschwa
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\textdollar}
%\begin{macro}{\textsection}
%\begin{macro}{\textsterling}
%\begin{macro}{\textunderscore}
%\begin{macro}{\textvisiblespace}
% More important, although unlikely to be found in a philological text, is the
% question of standard \LaTeX\ commands that are defined with reference to some
% encoding; if Greek text is being typeset, the Greek encoding is being used and
% such symbols would not be available any more; \LaTeX would issue warning messages
% complaining for their absence. Therefore we redefined them also for the Greek
% encoding.
% \begin{macrocode}
\DeclareTextCommand{\textdollar}{\GRencoding@name}%
{{\fontencoding{T1}\selectfont\char36}}
\DeclareTextCommand{\textsection}{\GRencoding@name}%
{{\fontencoding{T1}\selectfont\char159}}
\DeclareTextCommand{\textsterling}{\GRencoding@name}%
{{\fontencoding{T1}\selectfont\char191}}
\DeclareTextCommand{\textunderscore}{\GRencoding@name}%
{{\fontencoding{T1}\selectfont\char95}}
\DeclareTextCommand{\textvisiblespace}{\GRencoding@name}%
{{\fontencoding{T1}\selectfont\char32}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%
% \subsection{Accent macros and glyph names}
% Now come dozens of macros that allow to access Greek accented vowels (plus rho
% with rough and smooth breaths) with macros instead of ligatures; such macros
% allow the kerning information to be used by \TeX, while the ligature mechanism
% would sometimes impeach the use of such kerning information. Notice that the
% same glyphs are often accessed with a ``text symbol'' or a ``text composite
% symbol''; as explained above the opportunity of using either one derives from
% the necessity of maintaining the kerning mechanism embedded in the font; if the
% CB fonts had a postfixed accent notation, instead of a prefixed one, none of
% these macros would be necessary (probably\dots!), but there would be other
% inconveniences.
%
% Notice that the following code is subject to the boolean variable |GlyphNames|
% which is set to \emph{false} by default, just for compatibility with the past;
% I suggest to use the \emph{GlyphNames} option when when you really want to use
% such macros; remember though that all these glyphs are more easily specified by
% means of the extended accent macros that are also less restricted in their
% names; for a letter marked with a smooth breath and an acute accent you can
% indifferently type before the letter one of the following |\>\'|, |\>'|, |\'\>|,
% |\'>| at your choice. Moreover you can always postfix the mark for the iota
% subscribed at the right of the letter, without any need o memorising complicated
% names.
%
% Notice the macros |\oR| and |\oG| that have the second letter capitalised in
% order to avoid conflicts with otherwise homonymous macros defined in the \LaTeX\
% kernel or in other packages; by maintaining the false value to the boolean
% variable |GlyphNames| you are sure to avoid conflicts.
% \begin{macrocode}
\ifGlyphNames
\DeclareTextSymbol{\ag}{\GRencoding@name}{128}
\DeclareTextSymbol{\ar}{\GRencoding@name}{129}
\DeclareTextComposite{\r}{\GRencoding@name}{a}{129}
\DeclareTextSymbol{\as}{\GRencoding@name}{130}
\DeclareTextComposite{\s}{\GRencoding@name}{a}{130}
\DeclareTextSymbol{\aa}{\GRencoding@name}{136}
\DeclareTextSymbol{\ac}{\GRencoding@name}{144}
\DeclareTextSymbol{\ai}{\GRencoding@name}{248}
\DeclareTextSymbol{\aai}{\GRencoding@name}{140}
\DeclareTextSymbol{\aci}{\GRencoding@name}{148}
\DeclareTextSymbol{\agi}{\GRencoding@name}{132}
\DeclareTextSymbol{\ara}{\GRencoding@name}{137}
\DeclareTextComposite{\Ar}{\GRencoding@name}{a}{137}
\DeclareTextSymbol{\arc}{\GRencoding@name}{145}
\DeclareTextComposite{\Cr}{\GRencoding@name}{a}{145}
\DeclareTextSymbol{\arg}{\GRencoding@name}{131}
\DeclareTextComposite{\Gr}{\GRencoding@name}{a}{131}
\DeclareTextSymbol{\ari}{\GRencoding@name}{133}
\DeclareTextSymbol{\asa}{\GRencoding@name}{138}
\DeclareTextComposite{\As}{\GRencoding@name}{a}{138}
\DeclareTextSymbol{\asc}{\GRencoding@name}{146}
\DeclareTextComposite{\Cs}{\GRencoding@name}{a}{146}
\DeclareTextSymbol{\asg}{\GRencoding@name}{139}
\DeclareTextComposite{\Gs}{\GRencoding@name}{a}{139}
\DeclareTextSymbol{\asi}{\GRencoding@name}{134}
\DeclareTextSymbol{\argi}{\GRencoding@name}{135}
\DeclareTextSymbol{\arai}{\GRencoding@name}{141}
\DeclareTextSymbol{\arci}{\GRencoding@name}{149}
\DeclareTextSymbol{\asai}{\GRencoding@name}{142}
\DeclareTextSymbol{\asgi}{\GRencoding@name}{143}
\DeclareTextSymbol{\asci}{\GRencoding@name}{150}
\DeclareTextSymbol{\hg}{\GRencoding@name}{152}
\DeclareTextSymbol{\hr}{\GRencoding@name}{153}
\DeclareTextComposite{\r}{\GRencoding@name}{h}{153}
\DeclareTextSymbol{\hs}{\GRencoding@name}{154}
\DeclareTextComposite{\s}{\GRencoding@name}{h}{154}
\DeclareTextSymbol{\hrg}{\GRencoding@name}{163}
\DeclareTextComposite{\Gr}{\GRencoding@name}{h}{163}
\DeclareTextSymbol{\hgi}{\GRencoding@name}{156}
\DeclareTextSymbol{\hri}{\GRencoding@name}{157}
\DeclareTextSymbol{\hsi}{\GRencoding@name}{158}
\DeclareTextSymbol{\hrgi}{\GRencoding@name}{167}
\DeclareTextSymbol{\ha}{\GRencoding@name}{160}
\DeclareTextSymbol{\hra}{\GRencoding@name}{161}
\DeclareTextComposite{\Ar}{\GRencoding@name}{h}{161}
\DeclareTextSymbol{\hsa}{\GRencoding@name}{162}
\DeclareTextComposite{\As}{\GRencoding@name}{h}{162}
\DeclareTextSymbol{\hsg}{\GRencoding@name}{171}
\DeclareTextComposite{\Gs}{\GRencoding@name}{h}{171}
\DeclareTextSymbol{\hai}{\GRencoding@name}{164}
\DeclareTextSymbol{\hrai}{\GRencoding@name}{165}
\DeclareTextSymbol{\hsai}{\GRencoding@name}{166}
\DeclareTextSymbol{\hsgi}{\GRencoding@name}{175}
\DeclareTextSymbol{\hc}{\GRencoding@name}{168}
\DeclareTextSymbol{\hrc}{\GRencoding@name}{169}
\DeclareTextComposite{\Cr}{\GRencoding@name}{h}{169}
\DeclareTextSymbol{\hsc}{\GRencoding@name}{170}
\DeclareTextComposite{\Cs}{\GRencoding@name}{h}{170}
\DeclareTextSymbol{\hci}{\GRencoding@name}{172}
\DeclareTextSymbol{\hrci}{\GRencoding@name}{173}
\DeclareTextSymbol{\hsci}{\GRencoding@name}{174}
\DeclareTextSymbol{\hi}{\GRencoding@name}{249}
\DeclareTextSymbol{\wg}{\GRencoding@name}{176}
\DeclareTextSymbol{\wr}{\GRencoding@name}{177}
\DeclareTextComposite{\r}{\GRencoding@name}{w}{177}
\DeclareTextSymbol{\ws}{\GRencoding@name}{178}
\DeclareTextComposite{\s}{\GRencoding@name}{w}{178}
\DeclareTextSymbol{\wrg}{\GRencoding@name}{179}
\DeclareTextComposite{\Gr}{\GRencoding@name}{w}{179}
\DeclareTextSymbol{\wgi}{\GRencoding@name}{180}
\DeclareTextSymbol{\wri}{\GRencoding@name}{181}
\DeclareTextSymbol{\wsi}{\GRencoding@name}{182}
\DeclareTextSymbol{\wrgi}{\GRencoding@name}{183}
\DeclareTextSymbol{\wa}{\GRencoding@name}{184}
\DeclareTextSymbol{\wra}{\GRencoding@name}{185}
\DeclareTextComposite{\Ar}{\GRencoding@name}{w}{185}
\DeclareTextSymbol{\wsa}{\GRencoding@name}{186}
\DeclareTextComposite{\As}{\GRencoding@name}{w}{186}
\DeclareTextSymbol{\wsg}{\GRencoding@name}{187}
\DeclareTextComposite{\Gs}{\GRencoding@name}{w}{187}
\DeclareTextSymbol{\wai}{\GRencoding@name}{188}
\DeclareTextSymbol{\wrai}{\GRencoding@name}{189}
\DeclareTextSymbol{\wsai}{\GRencoding@name}{190}
\DeclareTextSymbol{\wsgi}{\GRencoding@name}{191}
\DeclareTextSymbol{\wc}{\GRencoding@name}{192}
\DeclareTextSymbol{\wrc}{\GRencoding@name}{193}
\DeclareTextComposite{\Cr}{\GRencoding@name}{w}{193}
\DeclareTextSymbol{\wsc}{\GRencoding@name}{194}
\DeclareTextComposite{\Cs}{\GRencoding@name}{w}{194}
\DeclareTextSymbol{\wci}{\GRencoding@name}{196}
\DeclareTextSymbol{\wrci}{\GRencoding@name}{197}
\DeclareTextSymbol{\wsci}{\GRencoding@name}{198}
\DeclareTextSymbol{\wi}{\GRencoding@name}{250}
\DeclareTextSymbol{\ig}{\GRencoding@name}{200}
\DeclareTextSymbol{\ir}{\GRencoding@name}{201}
\DeclareTextComposite{\r}{\GRencoding@name}{i}{201}
\DeclareTextSymbol{\is}{\GRencoding@name}{202}
\DeclareTextComposite{\s}{\GRencoding@name}{i}{202}
\DeclareTextSymbol{\irg}{\GRencoding@name}{203}
\DeclareTextComposite{\Gr}{\GRencoding@name}{i}{203}
\DeclareTextSymbol{\ia}{\GRencoding@name}{208}
\DeclareTextSymbol{\ira}{\GRencoding@name}{209}
\DeclareTextComposite{\Ar}{\GRencoding@name}{i}{209}
\DeclareTextSymbol{\isa}{\GRencoding@name}{210}
\DeclareTextComposite{\As}{\GRencoding@name}{i}{210}
\DeclareTextSymbol{\isg}{\GRencoding@name}{211}
\DeclareTextComposite{\Gs}{\GRencoding@name}{i}{211}
\DeclareTextSymbol{\ic}{\GRencoding@name}{216}
\DeclareTextSymbol{\irc}{\GRencoding@name}{217}
\DeclareTextComposite{\Cr}{\GRencoding@name}{i}{217}
\DeclareTextSymbol{\isc}{\GRencoding@name}{218}
\DeclareTextComposite{\Cs}{\GRencoding@name}{i}{218}
\DeclareTextSymbol{\id}{\GRencoding@name}{240}
\DeclareTextSymbol{\idg}{\GRencoding@name}{241}
\DeclareTextComposite{\Gd}{\GRencoding@name}{i}{241}
\DeclareTextSymbol{\ida}{\GRencoding@name}{242}
\DeclareTextComposite{\Ad}{\GRencoding@name}{i}{242}
\DeclareTextSymbol{\idc}{\GRencoding@name}{243}
\DeclareTextComposite{\Cd}{\GRencoding@name}{i}{243}
\DeclareTextSymbol{\ug}{\GRencoding@name}{204}
\DeclareTextSymbol{\ur}{\GRencoding@name}{205}
\DeclareTextComposite{\r}{\GRencoding@name}{u}{205}
\DeclareTextSymbol{\us}{\GRencoding@name}{206}
\DeclareTextComposite{\s}{\GRencoding@name}{u}{206}
\DeclareTextSymbol{\urg}{\GRencoding@name}{207}
\DeclareTextComposite{\Gr}{\GRencoding@name}{u}{207}
\DeclareTextSymbol{\ua}{\GRencoding@name}{212}
\DeclareTextSymbol{\ura}{\GRencoding@name}{213}
\DeclareTextComposite{\Ar}{\GRencoding@name}{u}{213}
\DeclareTextSymbol{\usa}{\GRencoding@name}{214}
\DeclareTextComposite{\As}{\GRencoding@name}{u}{214}
\DeclareTextSymbol{\usg}{\GRencoding@name}{215}
\DeclareTextComposite{\Gs}{\GRencoding@name}{u}{215}
\DeclareTextSymbol{\uc}{\GRencoding@name}{220}
\DeclareTextSymbol{\urc}{\GRencoding@name}{221}
\DeclareTextComposite{\Cr}{\GRencoding@name}{u}{221}
\DeclareTextSymbol{\usc}{\GRencoding@name}{222}
\DeclareTextComposite{\Cs}{\GRencoding@name}{u}{222}
\DeclareTextSymbol{\ud}{\GRencoding@name}{244}
\DeclareTextSymbol{\udg}{\GRencoding@name}{245}
\DeclareTextComposite{\Gd}{\GRencoding@name}{u}{245}
\DeclareTextSymbol{\uda}{\GRencoding@name}{246}
\DeclareTextComposite{\Ad}{\GRencoding@name}{u}{246}
\DeclareTextSymbol{\udc}{\GRencoding@name}{247}
\DeclareTextComposite{\Cd}{\GRencoding@name}{u}{247}
\DeclareTextSymbol{\eg}{\GRencoding@name}{224}
\DeclareTextSymbol{\er}{\GRencoding@name}{225}
\DeclareTextComposite{\r}{\GRencoding@name}{e}{225}
\DeclareTextSymbol{\es}{\GRencoding@name}{226}
\DeclareTextComposite{\s}{\GRencoding@name}{e}{226}
\DeclareTextSymbol{\erg}{\GRencoding@name}{227}
\DeclareTextComposite{\Gr}{\GRencoding@name}{e}{227}
\DeclareTextSymbol{\ea}{\GRencoding@name}{232}
\DeclareTextSymbol{\era}{\GRencoding@name}{233}
\DeclareTextComposite{\Ar}{\GRencoding@name}{e}{233}
\DeclareTextSymbol{\esa}{\GRencoding@name}{234}
\DeclareTextComposite{\As}{\GRencoding@name}{e}{234}
\DeclareTextSymbol{\esg}{\GRencoding@name}{235}
\DeclareTextComposite{\Gs}{\GRencoding@name}{e}{235}
\DeclareTextSymbol{\oR}{\GRencoding@name}{229}
\DeclareTextComposite{\r}{\GRencoding@name}{o}{229}
\DeclareTextSymbol{\oG}{\GRencoding@name}{228}
\DeclareTextSymbol{\os}{\GRencoding@name}{230}
\DeclareTextComposite{\s}{\GRencoding@name}{o}{230}
\DeclareTextSymbol{\org}{\GRencoding@name}{231}
\DeclareTextComposite{\Gr}{\GRencoding@name}{o}{231}
\DeclareTextSymbol{\oa}{\GRencoding@name}{236}
\DeclareTextSymbol{\ora}{\GRencoding@name}{237}
\DeclareTextComposite{\Ar}{\GRencoding@name}{o}{237}
\DeclareTextSymbol{\osa}{\GRencoding@name}{238}
\DeclareTextComposite{\As}{\GRencoding@name}{o}{238}
\DeclareTextSymbol{\osg}{\GRencoding@name}{239}
\DeclareTextComposite{\Gs}{\GRencoding@name}{o}{239}
\DeclareTextSymbol{\rr}{\GRencoding@name}{251}
\DeclareTextComposite{\r}{\GRencoding@name}{r}{251}
\DeclareTextSymbol{\rs}{\GRencoding@name}{252}
\DeclareTextComposite{\s}{\GRencoding@name}{r}{252}
\DeclareTextSymbol{\Id}{\GRencoding@name}{219}
\DeclareTextSymbol{\Ud}{\GRencoding@name}{223}
\DeclareTextComposite{\"}{\GRencoding@name}{U}{223}
\fi
%
% \end{macrocode}
%
% \subsection{Text philological symbols and macros}
% Next come some short macros for inserting special symbols that philologists
% use quite often in Greek.
%\begin{macro}{\h}
% Macro |\h| is used to insert a Latin ``h'' while typesetting in Greek.
%\begin{macro}{\q}
% Macro |\q| is used to insert a Latin ``q'' while typesetting in Greek.
%\begin{macro}{\yod}
%\begin{macro}{\iod}
% Macros |\yod| and |\iod| are used to insert a
% Latin ``j'' while typesetting in Greek; the control sequence |\jod| was avoided
% in order to reduce the possibility of typing |\jot| which is a \TeX\ internal
% dimension.
% \begin{macrocode}
\DeclareTextCommand{\h}{\GRencoding@name}%
{{\fontencoding{OT1}\selectfont h}}
\DeclareTextCommand{\q}{\GRencoding@name}%
{{\fontencoding{OT1}\selectfont q}}
\DeclareTextCommand{\yod}{\GRencoding@name}%
{{\fontencoding{OT1}\selectfont j}}%
\let\iod\yod
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin {macro}{\f}
%\begin {macro}{\F}
%\begin {macro}{\digamma}
%\begin {macro}{\Digamma}
% At the same time it was believed that for inserting lower and upper
% case ``digamma'' it was preferable to use short macros and to avoid
% the dilemma between the |\ddigamma| and the |\digamma| macros, the
% former being the one defined in the |greek| option to \babel, the
% latter being a standard mathematical symbol; initially I believed
% that philologists do not use mathematical symbols so we made |\digamma|% an alias for |\f|; afterwards I found out that mathematicians,
% physicists, engineers,~\dots\ use the \textsf{teubner.sty} package
% and that the |\digamma| is a symbol already defined in package
% \textsf{amssymb.sty}; therefore I made a conditional creation of
% this alias; this trick is delayed to the beginning of the document,
% so as to make it independent on the order with which packages are
% loaded. Actually, since the introduction of the LICR macros, this is
% irrelevant and I deleted it.
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin {macro}{\fLow}
%\begin {macro}{\fHigh}
% The digamma glyphs set forth another question because, according to
% Paolo Ciacchi, a different glyph should be used for typesetting text
% compared with the one that is used as a variant in Milesian numerals
% in place of the standard stigma symbol.
% By means of macros |\fLow| or |\fHigh| it is possible to chose the
% raised or the lowered digamma glyphs; Greek numerals always use the
% lowered one, while when text is being typeset the user can chose
% the version s/he likes best.
% \begin{macrocode}
\DeclareRobustCommand{\fLow}%
{{\setbox\z@\hbox{\f}\dimen@\ht\z@
\advance\dimen@-1ex\raisebox{-\dimen@}{\f}}}
\DeclareRobustCommand{\fHigh}%
{{\setbox\z@\hbox{\f}\dimen@\dp\z@\raisebox{\dimen@}{\f}}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\qmark}
%\begin{macro}{\lpar}
%\begin{macro}{\rpar}
%\begin{macro}{\frapar}
% Here we start a set of miscellaneous macros. We begin with some parentheses
% that should turn out in upright shape, even if the default font is the Lipsian
% one which is oblique; its parentheses are oblique as in all oblique fonts,
% therefore we need to quietly change fonts behind the scenes. The same is true
% with the question mark that, philologically speaking, represents an uncertain
% element, not the termination of a real question; it should therefore always
% come out between parentheses and in upright shape from a Latin font. While the
% parenthesized question mark comes from the OT1 Latin upright font, the
% parentheses obtained with |\lpar| and |\rpar| are taken from the metric
% symbols font, as well as the parentheses used in the parenthesized text
% processed with macro |\frapar|.
% \begin{macrocode}
\DeclareRobustCommand\qmark{\hskip.16ex{\fontencoding{OT1}\upshape(?)}}
\DeclareRobustCommand\lpar{{\metricsfont(}}
\DeclareRobustCommand\rpar{{\metricsfont)}}
\DeclareRobustCommand\frapar[1]{\lpar#1\rpar}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\ap}
% The apex/superscript macro |\ap| does not differ much from the plain standard
% \LaTeX\ macro |\textsuperscript|, the only difference being the italic
% correction that precedes |\textsuperscript|.
% \begin{macrocode}
\DeclareRobustCommand{\ap}[1]{\/\textsuperscript{#1}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\Dots}
%\begin{macro}{\DOTS}
%\begin{macro}{\Dashes}
%\begin{macro}{\DASHES}
% Four macros are defined so as to insert a certain number of dots or dashes as
% specified in the optional command argument; |\Dots| and |\Dashes| fit the dots or
% the dashes pretty close together, while |\DOTS| and |\DASHES| fit them more
% loosely apart.
% \begin{macrocode}
\newcommand\Dots[1][1]{{\count255=#1\@whilenum\count255>\z@
\do{\kern.4ex\d{v}\kern.4ex\advance\count255\m@ne}}}
\newcommand\DOTS[1][1]{{\count255=#1\@whilenum\count255>\z@
\do{\kern.8ex\d{v}\kern.8ex\advance\count255\m@ne}}}
\newcommand\Dashes[1][1]{{\count255=#1\@whilenum\count255>\z@
\do{\kern.4ex--\kern.4ex\advance\count255\m@ne}}}
\newcommand\DASHES[1][1]{{\count255=#1\@whilenum\count255>\z@
\do{\kern.8ex--\kern.8ex\advance\count255\m@ne}}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\:}
%\begin{macro}{\;}
%\begin{macro}{\?}
%\begin{macro}{\MutPers}
% Greek text or poetry sometimes requires some stacked dots; here we prepared macros
% for two (|\:|), three (|\;|), and four (|\?|) stacked dots. Two stacked dots in a
% row indicate that the speaker of a drama or comedy has changed (\textit{mutatio
% personae}). For |\:| and |\;| it is necessary to preserve the mathematical
% meaning, while |\?| apparently does not have any previous use in standard \LaTeX.
% The real macros are |\tw@dots|, |\thre@dots|,
% and |\f@urdots|.
% \begin{macrocode}
\DeclareRobustCommand{\:}{\textormath{\tw@dots}{\mskip\medmuskip}}
\DeclareRobustCommand{\;}{\textormath{\thre@dots}{\mskip\thickmuskip}}
\DeclareRobustCommand{\?}{\f@urdots}
\DeclareRobustCommand{\mutpers}{\makebox[1ex]{\:\hfill\:}\space}
\let\MutPers\mutpers\let\antilabe\mutpers
\def\tw@dots{\mbox{\kern1\p@\vbox to1ex{\hbox{.}\vss\hbox{.}}}}
\def\thre@dots{\mbox{\kern1\p@\vbox to 2ex{\hbox{.}\vss
\hbox{.}\vss\hbox{.}}}}
\def\f@urdots{\mbox{\kern1\p@\vbox to 2ex{\hbox{.}\vss
\hbox{.}\vss\hbox{.}\vss\hbox{.}}}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
% \DeleteShortVerb{\|}
%\begin{macro}{\|}
% \MakeShortVerb{\|}
%\begin{macro}{\dBar}
%\begin{macro}{\tBar}
% Similarly Greek text and poetry require certain \emph{cesurae} indicated with
% vertical bars; we provided commands for one (\verb"\|"), two (|\dBar|), and
% three (|\tBar|) vertical bars.
% \begin{macrocode}
\DeclareRobustCommand{\|}{\relax\ensuremath{\mskip2mu\vert}}
\DeclareRobustCommand{\dBar}{\ensuremath{\vert\vert}}
\DeclareRobustCommand{\tBar}{\ensuremath{\vert\vert\vert}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\negthinspace}
%\begin{macro}{\posthinspace}
%\begin{macro}{\posthindspace}
%\begin{macro}{\,}
%\begin{macro}{\!}
% The following are mostly service macros for adjusting the spacing within macro
% definitions. Nevertheless they are available also to the typesetter, because
% sometimes certain glyph combinations require a little adjustment. Of course the
% typesetter will not use them at the very beginning, but only during proof
% revision, so as to introduce them only where really necessary.
% \begin{macrocode}
\def\negthinspace{\nobreak\hskip-0.07em}
\def\posthinspace{\nobreak\hskip0.07em}
\def\posthindspace{\nobreak\hskip0.14em}
\renewcommand{\,}{\textormath{\posthinspace}{\mskip\thinmuskip}}
\renewcommand{\!}{\textormath{\negthinspace}{\mskip-\thinmuskip}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\lbrk}
%\begin{macro}{\rbrk}
%\begin{macro}{\lmqi}
%\begin{macro}{\rmqi}
%\begin{macro}{\lmqs}
%\begin{macro}{\rmqs}
%\begin{macro}{\mqi}
%\begin{macro}{\mqs}
%\begin{macro}{\Ladd}
%\begin{macro}{\LLadd}
%\begin{macro}{\ladd}
%\begin{macro}{\lladd}
%\begin{macro}{\lesp}
%\begin{macro}{\ldel}
% Philologists require a certain number of special parentheses in order to
% enclose parts of text that are doubtful or that have been added although
% they are missing from the original manuscripts; even letter strings that have
% been modified under the assumption that the copyist made some error.
% Such enclosing marks include angle brackets, square brackets, upper part
% of square brackets, lower part of square brackets. Such symbols may even
% appear doubled. Most of these glyphs have been designed anew, because they
% are missing or are inadequate if they are taken from the usual CM fonts (either
% text or math fonts). Brackets for example have been designed as to be higher
% and deeper than the font total height, so as not to interfere with Greek
% accents and to accomodate for at least one level of nesting (for example square
% brackets enclosing lower part of square brackets. The single glyphs may be used
% directly by the typesetter, but we think that the commands requiring some text are
% far more useful. |\Ladd| and its double version |\LLadd| enclose text that should
% be added for sure.
% |\ladd| and its double version |\lladd| enclose text that probably should be
% added. |\lesp| and its synonymous |\ldel| enclose text that should be deleted.
% |\mqi| surrounds some text with the lower part of open and closed square brackets.
% |\mqs| surrounds some text with the upper part of open and closed square brackets.
% See \texttt{teubenr-doc.pdf} for samples of such commands.
% \begin{macrocode}
\DeclareRobustCommand{\lbrk}{{\metricsfont\posthindspace[\negthinspace}}
\DeclareRobustCommand{\rbrk}{{\metricsfont]}}
\DeclareRobustCommand\lmqi{{\metricsfont!}}
\DeclareRobustCommand\rmqi{{\metricsfont:}}
\DeclareRobustCommand\lmqs{{\metricsfont?}}
\DeclareRobustCommand\rmqs{{\metricsfont;}}
\DeclareRobustCommand\mqi[1]{\posthinspace\lmqi\negthinspace
{#1\/}\rmqi}\let\mezzeq\mqi
\DeclareRobustCommand\mqs[1]{\lmqs{#1\/}\rmqs}
\DeclareRobustCommand{\Ladd}[1]{{\metricsfont<}{\!\!#1\/}%
{\metricsfont>}}% litterae certe addendae
\DeclareRobustCommand{\LLadd}[1]{{\metricsfont<\kern-.3ex<}
{\!\!#1\/}{\metricsfont>\kern-.3ex>}}% litterae certe addendae
\DeclareRobustCommand{\ladd}[1]{{\metricsfont\kern.15ex[\negthinspace}%
{#1\/}{\metricsfont]\kern-.15ex}}% litterae addendae
\DeclareRobustCommand{\lladd}[1]{{\metricsfont\kern.15ex[\kern-.3ex[%
\negthinspace}{#1\/}{\metricsfont]\kern-.3ex]%
\kern-.15ex}}% litterae addendae
\DeclareRobustCommand{\lesp}[1]%
{\mbox{$\{\kern-.20ex$#1\kern.16ex$\}$}}% litterae delendae
\let\ldel\lesp
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
% \subsection{Greek, English, and German quotes}
%\begin{macro}{\itopenquotes}
%\begin{macro}{\itclosedquotes}
%\begin{macro}{\itoq}
%\begin{macro}{\itcq}
% The following macros allow to set Italian\slash English high quotes even while
% typing in Greek; such quotes are standard in Italian and in English typesetting
% and their commands preserve the font family shape and series of the surrounding
% font. In French typography, as well in the typographic traditions of other
% countries, different quotes are used. In that case the typesetter must resort to a
% change of language, for example returning to German, inputting the German quotes,
% then turning back to Greek. He might as well define his own macros, or he might
% clone the following definitions and change them according to his country
% typographic traditions. If he decides to modify these definitions he should either
% rename this file or he should put his redefinitions in a private package to be
% input \emph{after} \texttt{teubner.sty}.
% \begin{macrocode}
\DeclareTextCommand{\itopenquotes}{\GRencoding@name}%
{{\fontencoding{OT1}\selectfont\char92}}%
\DeclareTextCommand{\itclosedquotes}{\GRencoding@name}%
{{\fontencoding{OT1}\selectfont\char34}}%
\let\itoq\itopenquotes
\let\itcq\itclosedquotes
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\GEodq}
%\begin{macro}{\GEcdq}
%\begin{macro}{\GEdqtext}
%\begin{macro}{\GEoq}
%\begin{macro}{\GEcq}
%\begin{macro}{\GEqtext}
%\begin{macro}{\ENodq}
%\begin{macro}{\ENcdq}
%\begin{macro}{\ENdqtext}
% On the opposite the following German and English quotes are redesigned and
% included in the metric symbols font. Since this font is in one shape and one
% series, these quotes do not change as the outside font does, but remain fixed; the
% most useful commands are |\GEdqtext| for enclosing some text within German double
% quotes, |\GEqtext| for enclosing some text within German single quotes, and
% |\ENdqtext| for enclosing some text in English double quotes. Apparently
% while setting Greek poetry in stacked, possibly enumerated, verses, German double
% or single quotes are often used, since they cannot be misunderstood with Greek
% diacritical marks. Modern Greek double quotes apparently are not appreciated by
% philologists, at least outside Greece.
% \begin{macrocode}
\newcommand\GEodq{\bgroup\futurelet\@tempA\GE@dq}
\def\GE@dq{{\metricsfont\char18}\ifx\@tempA m\posthinspace\fi\egroup}
\newcommand\GEcdq{{\metricsfont\char16}}
\newcommand\GEdqtext[1]{\GEodq\posthinspace#1\/\posthinspace\GEcdq}
\newcommand\GEoq{\bgroup\futurelet\@tempA\GE@q}
\def\GE@q{{\metricsfont\char13}\ifx\@tempA m\posthinspace\fi\egroup}
\newcommand\GEcq{{\metricsfont\char19}}
\newcommand\GEqtext[1]{\GEoq\posthinspace#1\/\posthinspace\GEcq}
\newcommand\ENodq{{\metricsfont\char16}}
\newcommand\ENcdq{{\metricsfont\char17}}
\newcommand\ENdqtext[1]{\ENodq\negthinspace#1\/\posthinspace\ENcdq}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
% \subsection{Other philological symbols and macros}
% \begin{macro}{\LitNil}
% \begin{macro}{\litnil}
% The next synonymous macros indicate the \emph{littera nihil}.
% \begin{macrocode}
\DeclareRobustCommand\LitNil{\textbullet}
\let\litnil\LitNil
% \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\sva}
%\begin{macro}{\shva}
%\begin{macro}{\shwa}
% The CB fonts include also the letter ``shwa'', the glyph that
% appears as a roman ``e'' rotated 180$^\circ$ around its center. Philologists
% need it even when writing Greek. In order to make it available also when the
% Latin encodings are in force, suitable definitions have been given so that the
% suitable CB font was changed behind the scenes without any intervention by the
% typesetter. With this version of |teubner.sty| a new definition is made up that
% uses the |\rotatebox| facility of the |graphicx| package; In a future revision of
% the CB fonts the |\schwa| slot shall be freed so that Greek glyphs only populate
% it, without extraneous presences. The |\schwa| glyph is made available also with
% the Latin encodings.
% \begin{macrocode}
%\DeclareTextSymbol{\sva}{\GRencoding@name}{26}
\DeclareTextCommand{\sva}{\GRencoding@name}{%
\rotatebox[origin=c]{180}{\def\@tempA{li}%
\fontencoding{OT1}\ifx\f@shape\@tempA\fontshape{it}\fi\selectfont e}}
\DeclareTextCommand\sva{OT1}{{\expandafter\fontencoding
\expandafter{\GRencoding@name}\selectfont\sva}}
\DeclareTextCommand\sva{T1}{{\expandafter\fontencoding
\expandafter{\GRencoding@name}\selectfont\sva}}
\let\shva\sva\let\shwa\sva
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\skewstack}
% The |\skewstack| command stacks two arguments not one on top of the other, but the
% second argument is placed to the right and upwards relative to the first argument.
% The second argument is set in script font size. Although there are similarities
% with the |\textsuperscript| command, the exact placement of the second argument
% depends on the shape (height and depth) of both arguments. This command will be
% used for creating some philologist's symbols, but is readily available to the
% typesetter both for direct use and for writing macros defining new symbols.
% \begin{macrocode}
\DeclareRobustCommand\skewstack[2]{{%
\edef\slant@{\strip@pt\fontdimen1\font}%
\setbox\z@\hbox{#1}\dimen@\ht\z@\box\z@
\kern-.045em\setbox\@ne\hbox{\scriptsize#2}%
\ifdim\dimen@>1.2ex\advance\dimen@-\ht\@ne\else
\dimen@1ex\advance\dimen@-.5\ht\@ne\fi
\kern\slant@\dimen@\raise\dimen@\hbox{\box\@ne}}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\hv}
%\begin{macro}{\qw}
%\begin{macro}{\gw}
%\begin{macro}{\gusv}
%\begin{macro}{\qusv}
%\begin{macro}{\qu}
% Matter of fact some common Latin stacked symbols are defined here in terms of
% |\skewstack|. As it may bee seen, the second argument (the first as well, but here
% there are no examples) may in turn contain other macros for composite symbols.
% \begin{macrocode}
\DeclareRobustCommand\hv{{\fontencoding{OT1}\selectfont
\skewstack{h}{v}}}
\DeclareRobustCommand\qw{{\fontencoding{OT1}\selectfont
\skewstack{q}{w}}}
\DeclareRobustCommand\gw{{\fontencoding{OT1}\selectfont
\skewstack{g}{w}}}
\DeclareRobustCommand\gusv{{\fontencoding{OT1}\selectfont
\skewstack{g}{\semiv{u}}}}
\DeclareRobustCommand\qusv{{\fontencoding{OT1}\selectfont
\skewstack{q}{\semiv{u}}}}
\DeclareRobustCommand\qu{{\fontencoding{OT1}\selectfont
\skewstack{q}{u}}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\dz}
% Without using |\skewstack| other symbols may be defined; here |\dz| is just an
% example, where the kerning between `d' and `z' has been found by cut and try. With
% other glyphs may be different kerning is necessary.
% \begin{macrocode}
\DeclareRobustCommand\dz{{\fontencoding{OT1}\selectfont d\kern-.33ex z}}
% \end{macrocode}
%\end{macro}
%
% Now we come to another set of commands like the ones needed to mark the syneresis
% or the zeugma and other similar marks.
%\begin{macro}{\Utie}
% This first macro sets a ``smile'' symbol under a couple of letters. The glyph is
% fine but is good only for two adjacent letters, therefore
% it is necessary to have a stretchable symbol.
% \begin{macrocode}
\DeclareRobustCommand\Utie[1]{%
\mbox{\vtop{\ialign{##\crcr
\hfil#1\hfil\crcr
\noalign{\kern.3ex\nointerlineskip}%
\hfil$\smile$\hfil\crcr}}}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\siner}
%\begin{macro}{\siniz}
% This is why the |\siner| and |\siniz| synonymous commands have been defined; in
% place of or in addition to the ``smile'' symbol; they contain a stretchable
% filler |\upfill| that behaves almost as the stretchable horizontal brace that is
% used in the definition of the \LaTeX\ commands |\underbrace| or |\overbrace|.
% \begin{macrocode}
\DeclareRobustCommand{\siner}[1]{%
\mbox{\vtop{\ialign{##\crcr
\hfil#1\hfil\crcr
\noalign{\kern.6ex\nointerlineskip}%
\upfill\crcr}}}}
\let\siniz\siner
% \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\upfill}
% The |\upfill| is defined as a leader, the same way as the corresponding \LaTeX\
% stretchable horizontal brace.
% \begin{macrocode}
\def\upfill{$\m@th \scriptstyle\setbox\z@\hbox{$\scriptstyle\bracelu$}%
\kern.16ex\bracelu\ifPDF\kern-.15ex\fi
\leaders\vrule \@height\ht\z@ \@depth\z@\hfill
\braceru\kern.16ex$}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\downfill}
% The |\downfill| arc is totally similar to the |\upfill| one, except for its
% terminating elements that change the shape of the arc from ``up'' to ``down''.
% \begin{macrocode}
\def\downfill{$\m@th\scriptstyle\setbox\z@\hbox{$\scriptstyle\braceld$}%
\kern.16ex\braceld\ifPDF\kern-.15ex\fi
\leaders\vrule \@height\ht\z@ \@depth\z@\hfill
\bracerd\kern.16ex$}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\zeugma}
% Similarly |\zeugma| puts a stretchable arc over its argument; it must take into
% account the slant of the argument font so as to skew the placement of the arc.
% \begin{macrocode}
\newcommand*\zeugma[1]{{\vbox{\setbox\z@\hbox{#1}\dimen@=\ht\z@
\edef\@slant{\strip@pt\fontdimen1\font}%
\dimen\tw@=\wd\z@
\dimen@=\@slant\dimen@\ifmetricsfont\dimen@=\z@
\advance\dimen\tw@-.5ex\fi
\kern-.2ex\ialign{##\crcr
\hbox to\z@{\ifmetricsfont\kern.25ex\fi\kern\dimen@
\hbox to\dimen\tw@{\hss\downfill\kern.2\dimen@\hss}\hss}\crcr
\noalign{\ifmetricsfont\kern.6ex
\else\kern.4ex\fi\nointerlineskip}%
\hfil{#1}\hfil\crcr}}}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\slzeugma}
%\begin{macro}{\rszeugma}
% Although the shape of oblique zeugma arcs cannot be changed depending on the width
% and height of the zeugma argument, in certain circumstances the philologists want
% to use oblique zeugma marks. This is why we defined a ``sloping zeugma arc''
% |\slzeugma|, and a ``rising zeugma arc'' |\rszeugma| that can be used with poor
% results, if such arcs are superimposed over the ``wrong'' letters. There is
% nothing automatic in the choice of the oblique arc and is totally on the
% typesetter responsibility to use the correct command. These slanted zeugma signs
% are possibly useful only for two letters since they are not stretchable.
% \begin{macrocode}
\newcommand*\slzeugma[1]{{\leavevmode
\setbox\tw@\hbox{\metricsfont\char120}%
\setbox\z@\hbox{#1}\dimen@.5\wd\z@\advance\dimen@-.5\wd\tw@
\edef\@slant{\strip@pt\fontdimen1\font}%
\advance\dimen@\@slant\ht\z@
\hbox to\z@{\kern\dimen@\box\tw@\hss}\box\z@
}%
}
\newcommand*\rszeugma[1]{{\leavevmode
\setbox\tw@\hbox{\metricsfont\char122}%
\setbox\z@\hbox{#1}\dimen@.5\wd\z@\advance\dimen@-.5\wd\tw@
\edef\@slant{\strip@pt\fontdimen1\font}%
\advance\dimen@\@slant\ht\z@
\hbox to\z@{\kern\dimen@\box\tw@\hss}\box\z@
}%
}
% \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\nexus}
%\begin{macro}{\nesso}
% Originally I had two different macros for marking a \emph{nexus}; one made use of a ``up stretchable turtle bracket'', and the user used a leader of Latin circumflex signs. Both were unsatisfactory; the latter was really ugly, but I kept the macro name as a synonym for compatibility with the past. The good looking marker is obtained from a mathematical |\widehat| sign by stretching it to the width of the string the marcher should mark; the new macro |\nexus| (that replaces the stretchable turtle bracket) relies on the facilities offered by the |\resizebox| of the package |graphicx|.
% \begin{macrocode}
\newcommand*{\nexus}[1]{{\setbox\tw@\hbox{#1\/}%
\edef\slant@{\strip@pt\fontdimen1\font}%
\@tempdima=\slant@\ht\tw@\advance\@tempdima.45ex
\setbox4\hbox{\resizebox{\wd\tw@}{\height}{$\widehat{\phantom{aaa}}$}}%
\setbox4\hbox{\smash{\lower1.35ex\hbox{\box4}}}%
\vbox{\ialign{##\crcr%
\kern\@tempdima\box4%
\crcr
\noalign{\kern.15ex\nointerlineskip}%
\hfil{#1}\hfil\crcr}}}}
\let\nesso\nexus
% \end{macrocode}
%\end{macro}
%\end{macro}
%
%
%\begin{macro}{\coronis}
%\begin {macro}{\Coronis}
%\begin {macro}{\paragr}
% \begin {macro}{\dpar}
% While setting poetry it is necessary to mark the end of paragraphs, which do not
% necessarily coincide with the ends of stanzas. After the verse that concludes a
% logical paragraph philologists insert a mark called ``coronis'' (synonymous of
% paragraph, therefore the command |\paragr|) or a ``stronger'' mark called
% ``Coronis'', which differs from the common ``coronis'' because it bears an
% inverted semilunar sign on its left. Both marks are input by means of their
% respective commands |\paragr| (preferred to |\coronis|) or |\Coronis| inserted
% \emph{at the beginning of the paragraph terminating verse}.
% The command |\dparagr| inserts a double coronis mark, which is sometimes required
% in place of the ordinary single mark.
% \begin{macrocode}
\def\C@rule{\vrule\@height.45ex\@depth-.35ex\@width1.5em}
\def\coronis@rule{\hbox to\z@{\hss\C@rule\hss}}
\def\Coronis@rule{\hbox to\z@
{\hss\hbox to\z@{\hss$\scriptstyle)$\kern-1.5\p@}\C@rule\hss}}
\DeclareRobustCommand\paragr{\raisebox{-1ex}[\z@][\z@]{\coronis@rule}}
\let\coronis\paragr
\DeclareRobustCommand\Coronis{\raisebox{-1ex}[\z@][\z@]{\Coronis@rule}}
\DeclareRobustCommand{\dparagr}%
{\raisebox{-1.3ex}[\z@][\z@]{\coronis@rule}%
\raisebox{-1.6ex}[\z@][\z@]{\coronis@rule}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin {macro}{\sinafia}
%\begin {macro}{\crux}
%\begin {macro}{\FinisCarmen}
%\begin {macro}{\apici}
%\begin {macro}{\positio}
%\begin {macro}{\Int}
%\begin {macro}{\star}
%\begin {macro}{\dstar}
%\begin {macro}{\tstar}
%\begin {macro}{\responsio}
% The next group of commands are intended to insert special symbols in the
% philological text; just the command |\apici| requires an argument, a block of text
% that shall be enclosed within straight vertical apices, irrespective of the font
% slant. The command |\FinisCarmen| although very descriptive, is long to type,
% therefore a shorter alias |\FinCar| has been defined. |\apex| was the initial name
% given to the command, but on a second time it was changed to |\positio|, and the
% latter should always be used in place of the former. For what concerns |\star|
% which is a standard \LaTeX\ math command, the original definition is saved in the
% service macro |\m@thst@r| and the command is redefined so as to perform as it
% should both in text and in math mode. The symbol $\int$, on the contrary, was
% redefined so as not to mix math with text, even if its rendering resorts to
% mathematics.
% \begin{macrocode}
\DeclareRobustCommand*\sinafia{{\metricsfont s}}
\DeclareRobustCommand*{\crux}{{\metricsfont\char'171}}
\DeclareRobustCommand*{\FinisCarmen}{\ensuremath{\otimes}}
\let\FinCar\FinisCarmen
\DeclareRobustCommand*{\apici}[1]%
{\posthinspace{\metricsfont\char96}\negthinspace#1%
\posthinspace{\metricsfont\char39}\negthinspace}
\DeclareRobustCommand*{\apex}%
{\/\hskip.5ex\vrule\@height1.7ex\@depth-1ex\hskip.2ex}
\let\positio\apex
\DeclareRobustCommand*{\Int}{\ensuremath{\int}}
\let\m@thst@r\star
\DeclareRobustCommand*{\star}{\textormath{{{\upshape *}}}{\m@thst@r}}
\DeclareRobustCommand*{\dstar}{{\upshape **}}
\DeclareRobustCommand*{\tstar}{{\upshape ***}}
\DeclareRobustCommand*{\responsio}{{\boldmath\ensuremath{\sim}}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\thorn}
%\begin{macro}{\Thorn} |\thorn| and |\Thorn| are the exact equivalents of |\th|
% and |\Th| that are defined only for the T1 encoding. Therefore such encoding is
% selected in an implicit way.
% \begin{macrocode}
\DeclareRobustCommand{\thorn}{{\fontencoding{T1}\selectfont\th}}
\DeclareRobustCommand{\Thorn}{{\fontencoding{T1}\selectfont\TH}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%
% \subsection{Ancient Greek monetary unit symbols}
%\begin{macro}{\dracma}
%\begin {macro}{\hemiobelion}
%\begin {macro}{\tetartemorion}
%\begin {macro}{\stater}
%\begin {macro}{\denarius}
%\begin {macro}{\etos}
% This set of symbols, taken from the metrics symbol font (which by this time is
% evident does not contain only metrics symbols) represents the unit symbols of some
% coins of ancient Greece, as they were found on many ``ostraka'' in several
% archeological sites.
% \begin{macrocode}
\DeclareRobustCommand{\dracma}{{\metricsfont D}}
\DeclareRobustCommand{\hemiobelion}{{\metricsfont A}}
\DeclareRobustCommand{\tetartemorion}{{\metricsfont B}}
\DeclareRobustCommand{\stater}{{\metricsfont C}}
\DeclareRobustCommand{\denarius}{{\metricsfont E}}
\DeclareRobustCommand{\etos}{{\metricsfont G}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
% \subsection{Another set of philological symbols and macros}
%\begin{macro}{\cut}
%\begin{macro}{\dcutbar}
%\begin{macro}{\bcutbar}
%\begin{macro}{\gcutbar}
% The following set of macros are all connected with the principal macro |\cut|,
% which should position a horizontal tie or bar across a certain number of latin
% letters, specifically `d', `b', and `g'; due to their different shapes, such bars
% are of different length and located at different heights; if they are in italics
% the bar position must change again. Therefore even if the user command |\cut| is
% the same for all these letters, its action must change depending on different
% circumstances.
% It merely checks its argument (it must be \emph{one} letter and unpredictable
% results are obtained if more that one token is passed as an argument to |\cut|)
% and selects the proper bar. The specific bar commands |\dcutbar|, |\bcutbar|, and
% |\gcutbar|, are defined in such a way as to cope only with the their initial
% letter.
% \begin{macrocode}
\DeclareRobustCommand{\cut}[1]{%
\ifx#1d\dcutbar\else
\ifx#1b\bcutbar\else
\ifx#1g\gcutbar
\fi
\fi
\fi}
%
\def\dcutbar{{\edef\slant@{\strip@pt\fontdimen1\font}%
d\dimen@1.2ex\kern\slant@\dimen@
\llap{\vrule\@height1.3ex\@depth-\dimen@
\ifdim\slant@\p@>\z@\@width.35em\else\@width.4em\fi\kern.03em}}}
\def\bcutbar{{\edef\slant@{\strip@pt\fontdimen1\font}%
\rlap{\dimen@1.2ex\kern\slant@\dimen@
\ifdim\slant@\p@=\z@\kern.03em\fi
\vrule\@height1.3ex\@depth-\dimen@
\ifdim\slant@\p@>\z@\@width.3em\else\@width.4em\fi}b}}
\def\gcutbar{{\edef\slant@{\strip@pt\fontdimen1\font}%
\ifdim\slant@\p@>\z@
g\kern-.55ex\dimen@.2ex\kern-\slant@\dimen@
\vrule\@height-.1ex\@depth\dimen@\@width.6ex
\else
\dimen@.2ex\kern\slant@\dimen@\vrule\@height.3ex\@depth-\dimen@
\@width.6ex\kern-.55ex\relax g
\fi}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\OSN}
% The next macro is just a shortcut instead of using |\oldstylenums|.
% \begin{macrocode}
\let\OSN\oldstylenums
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\splus}
%\begin{macro}{\stimes}
%\begin{macro}{\kclick}
% The next three macros are used in glottology; the first two ones are used to
% mark special pronunciations of the sibilant, while the last one is used to mark
% a special pronunciation of the guttural that produces a ``click''.
%\begin{macrocode}
\newcommand\splus{\leavevmode{%
\edef\slant@{\strip@pt\fontdimen1\font}%
\setbox\z@\hbox{s}%
\dimen@=\wd\z@
\setbox\tw@\hbox{$\scriptscriptstyle+$}%
\advance\dimen@.35\ht\tw@
\raisebox{\dimen@}[\z@][\z@]{%
\makebox[\z@][l]{\kern.5\wd\z@
\kern\slant@\dimen@\kern-.5\wd\tw@\box\tw@}}%
\box\z@}}%
\newcommand\stimes{\leavevmode{%
\edef\slant@{\strip@pt\fontdimen1\font}%
\setbox\z@\hbox{s}%
\dimen@=\wd\z@
\setbox\tw@\hbox{$\scriptscriptstyle\times$}%
\advance\dimen@.2\ht\tw@
\raisebox{\dimen@}[\z@][\z@]{%
\makebox[\z@][l]{\kern.5\wd\z@
\kern\slant@\dimen@\kern-.5\wd\tw@\box\tw@}}%
\box\z@}}%
\newcommand\kclick{\leavevmode{%
\edef\slant@{\strip@pt\fontdimen1\font}%
\setbox\z@\hbox{k}%
\setbox\tw@\hbox{\fontencoding\GRencoding@name\selectfont\s{v}}%
\dimen@\wd\z@
\ifdim\slant@\p@=\z@
\advance\dimen@-.1\wd\z@\else\advance\dimen@\wd\tw@
\fi
k\makebox[\z@][r]{\unhcopy\tw@\kern.5\dimen@}%
}}%
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
% \subsection{Poetry environments and macros}
%\begin {macro}{\verso}
%\begin{environment}{versi}
% Here we start with verse environments; we already explained that we defined three
% new verse environments that typeset poetry in ``in-line'' verses,
% ``numbered by five'' verses, and ``numbered by five and subnumbered'' verses.
% For the environment |versi| we first need a counter and a little macro for
% generating the short bar that has to receive the verse number as a ``limits''
% superscript.
% \begin{macrocode}
\newcounter{verso}\setcounter{verso}{0}
\newcommand{\smallvert}{\vrule\@height.6ex\@depth.4ex}
% \end{macrocode}
% Next we define the macro |\verso| that sets the small bar with the verse number on
% top. Since the initial numbering might be different from~1, |\verso| accepts an
% optional argument, which is intended to be the initial counter value. Since
% |\verso| steps up the counter a different action must be taken if the optional
% argument is present; in order to be able to reference such verse by means of the
% |\label|--|\ref| cross reference mechanism, this stepping up must be done by means
% of |\refstepcounter|; therefore we have to leave |\refstepcounter| outside the
% conditional code, and step down the counter by one unit only in case the initial
% value is specified.
% \begin{macrocode}
\DeclareRobustCommand\verso[1][]{%
\def\@tempA{#1}\ifx\@tempA\empty
\else
\setcounter{verso}{#1}\addtocounter{verso}{\m@ne}%
\fi
\refstepcounter{verso}%
\@killglue\space
\ensuremath{\mathop{\smallvert}\limits^{\scriptscriptstyle\theverso}}%
\space\ignorespaces}
% \end{macrocode}
% Now that the verse separation macro is ready we can define the environment; the
% required opening statement argument represents a short text whose width is taken
% as a measure for indentation, so that verses are typeset with a left margin that
% leaves out this short text. Substantially this environment is a \texttt{list} one,
% and the left margin variable width is totally similar to the one used in
% |thebibiography| environment. Also the |\makelabel| command has been modified
% accordingly.
% \begin{macrocode}
\newenvironment{versi}[1]{%
\def\makelabel##1{##1}
\setbox\z@\hbox{#1}%
\list{}{\labelwidth\wd\z@\leftmargin\labelwidth
\advance\leftmargin\labelsep}%
\item[\box\z@]
}{%
\endlist
}
\let\versus\versi \let\endversus\endversi
% \end{macrocode}
%\end{environment}
%\end{macro}
%
%\begin{environment}{Versi}
% The second environment |Versi| accepts an optional starting number in the opening,
% statement, whose default value is~1: verses are composed as in the standard
% \LaTeX\ |verse| environment (with one minor difference) except they are numbered
% in the left margin with a progression of five; only verse numbers that are integer
% multiples of five are displayed. The minor difference is that stanzas cannot be
% marked with a blank line in the input |.tex| file, as it is customary with
% the standard environment, but if a visual mark is desired, such as extra vertical
% space, it is necessary to resort to the optional spacing parameter that can be
% specified to the |\\| command. This environment uses the same verse counting
% counter, defined for use with the |versi| environment.
%
%\begin{macro}{\BreakVersotrue}
%\begin{macro}{\BreakVersofalse}
% For specific purposes it is necessary to have a boolean variable for allowing or
% prohibiting verses to split up at the end of line; the default is not
% to split.
% \begin{macrocode}
\newif\ifBreakVersi
\BreakVersifalse
\newenvironment{Versi}[1][1]{%
\setcounter{verso}{#1}%
% \end{macrocode}
%\end{macro}
%\end{macro}
% An internal macro |\writ@verso| does not actually write out the complete, possibly
% numbered verse, but provides for checking that the verse counter contains a
% multiple of~5, and to write it out using old stile numbers; in case the number is
% not an integer multiple of~5 the number is written out as the |\empty| macro.
% \begin{macrocode}
\def\writ@verso{%
\count255=\value{verso}\divide\count255by5\relax
\multiply\count255by5\relax
\advance\count255-\value{verso}%
\ifnum\count255=\z@
{\fontseries{m}\small
\expandafter\oldstylenums\expandafter{\the\c@verso}}%
\else
\empty
\fi}%
% \end{macrocode}
% Since the |\\| command should provide the same functionality as the regular
% \LaTeX\ command, while in this environment it should provide other
% functionalities, such as triggering the display of the verse number. It is
% necessary to define an intermediate command |\v@rscr|, that examines the possible
% optional arguments, such as the optional star or the brackets enclosing vertical
% spacing
% \begin{macrocode}
\def\acapo{\@ifstar{\v@rscr{\@M}}{\v@rscr{\z@}}}%
\let\\\acapo
\def\v@rscr##1{\@ifnextchar[{\wr@teverse{##1}}%
{\wr@teverse{##1}[\z@]}}%
% \end{macrocode}
% Finally the |\wr@teverse| macro does the actual typesetting of the verse. Notice
% that the environment opening statement and every succeeding previous verse starts
% an horizontal box where the contents of the current verse is stored. Therefore the
% first thing to do is to close the box with the |\egroup| command, then a line of
% text is output that contains a possibly empty box or the verse number and the
% command for stepping up the verse counter, followed by the verse box number~0 and
% an end of paragraph; in this way the |\\| operates always in vertical mode,
% contrary to what happens in the |verse| standard \LaTeX\ environment. Even in this
% environment the actual typesetting is done within a |list| environment, whose
% parameters are set differently from what they are in the |verse| environment.
% Notice in any case that the command |\wr@teverse| reopens the~0 box, so on the
% last verse, upon closing the environment, it is necessary to remember to close
% such box, whose contents is irrelevant and can be thrown away.
%
% I have experienced some problems in typesetting verses in two-column format; the
% column width might be too short for setting up verses even if verses are not that
% long, because in the left margin there must be room for the verse numbering; for
% homogeneity the spacing must conform also with the following environment
% \texttt{VERSI} that has a secondary verse numbering, therefore it can't be too
% small. The result is that there might be a test for controlling the two-column
% format, but I think that it is more useful for the typesetter to be able to switch
% on and off the possibility of breaking long verses on more lines.
% On two-column format in any case it is better to leave the right margin to
% coincide with the column right margin.
% \begin{macrocode}
\def\wr@teverse##1[##2]{\egroup
\makebox[3em][r]{%
\writ@verso\refstepcounter{verso}\kern1.5em}
\ifBreakVersi
\begingroup\raggedright
\hyphenpenalty \@M
\unhbox\z@\par
\endgroup
\else
\rlap{\box\z@}\par
\fi
\penalty##1\vskip##2\relax
\setbox\z@\hbox\bgroup\ignorespaces}%
\list{}{\itemsep\z@\parsep\z@
\if@twocolumn
\itemindent -5.3em%
\listparindent\itemindent
\rightmargin\z@
\advance\leftmargin 3.3em
\else
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em
\fi
}%
\item\leavevmode\setbox\z@\hbox\bgroup\ignorespaces
}{%
% \end{macrocode}
% Upon closing it is necessary to activate the writing out of the last verse that is
% still in the~0 box, but since this box is immediately reopened, it is necessary to
% close it again before exiting the environment.
% \begin{macrocode}
\\%
\egroup
\endlist
}
\let\Versus\Versi \let\endVersus\endVersi
% \end{macrocode}
%\end{environment}
%
%\begin{environment}{VERSI} The third environment |VERSI| set verses in the
% traditional way, but numbers them with two different enumerations; the principal
% one is by multiples of five, while the secondary one counts by units, and may be
% turned on and off, or reset at will. We therefore need another counter for the
% secondary enumeration and commands for turning it on and off and for resetting the
% counter. We need also a new length and a new boolean variable in order to manage
% the secondary enumeration.
% The new length represents an indentation of those verses that do no have the
% secondary enumeration, while secondary enumerated verses are not indented. For
% \texttt{VERSI} there is the same possibility of turning on and off the possibility
% of breaking verses at the end of line as it happens for the environment
% \texttt{Versi}.
% \begin {macro}{\SubVerso}
% \begin {macro}{\NoSubVerso}
% Macro |\NoSubVerso| turns off the secondary enumeration; macro |\SubVerso| turns
% on the secondary enumeration, but it accepts an optional argument for resetting
% the secondary counter; the default value is~0; if no optional argument is
% specified, and therefore if the optional argument has its default value~0, no
% resetting is performed and the enumeration keeps going from the last contents of
% the secondary counter; if the first use of |\SubVerso| does not contain the
% optional argument, the secondary enumeration keeps going from the old contents of
% the secondary counter which is unpredictable, depending upon the previous
% occurrences of the environment |VERSI|. The typesetter, therefore, must remember
% to specify the optional argument to |\SubVerso| the first time he uses it in this
% environment.
% \begin{macrocode}
\newcounter{subverso} \setcounter{subverso}{0}
\newif\ifSubVerso
\newlength{\versoskip}
\newcommand*\NoSubVerso{\global\SubVersofalse
\global\versoskip1.3em\ignorespaces}
\newcommand*\SubVerso[1][0]{\global\SubVersotrue
\ifnum#1=0\else
\setcounter{subverso}{#1}%
\global\protected@edef\@currentlabel{\the\c@subverso}%
\fi
\global\versoskip.3em\ignorespaces}
% \end{macrocode}
%\end{macro}
%\end{macro}
% The opening environment statement accepts an optional argument (default equals~1)
% which represents the primary enumeration starting number:
% \begin{macrocode}
\newenvironment{VERSI}[1][1]{%
\setcounter{verso}{#1}%
% \end{macrocode}
% We need two macros |\writ@verso| and |\writ@subverso|, that typeset the primary
% and secondary enumeration; the first one is similar to the one used in the |Versi|
% environment, while the second one has no special features except the conditional
% construct needed to check if the secondary enumeration has to be printed out.
% \begin{macrocode}
\def\writ@verso{%
\count255=\value{verso}\divide\count255by5\relax
\multiply\count255by5\relax
\advance\count255-\value{verso}%
\ifnum\count255=0\relax
{\fontseries{m}\small\expandafter\oldstylenums\expandafter{\the\c@verso}}%
\else
\empty
\fi}%
\NoSubVerso
\def\writ@subverso{%
\ifSubVerso
{\fontseries{m}\scriptsize\expandafter\oldstylenums
\expandafter{\the\c@subverso}}%
\fi}%
% \end{macrocode}
% Similarly to the previous environment, the |\\| command must be redefined
% so as to perform more or less as the standard one, while doing all the necessary
% actions needed in this environment. It must check the presence of the optional
% star and of the optional vertical skip and it has to pass control to a service
% macro |\v@rscr| that does the actual job; actually it passes control to a third
% macro |\writ@verse| that effectively outputs the current verse.
% \begin{macrocode}
\def\\%
{\@ifstar{\v@rscr{\@M}}{\v@rscr{\z@}}}%
\def\v@rscr##1{\@ifnextchar[{\writ@verse{##1}}%
{\writ@verse{##1}[\z@]}}%
\def\writ@verse##1[##2]{\egroup
\makebox[1.5em][r]{\writ@verso\refstepcounter{verso}}%
\makebox[1.5em][r]{\writ@subverso\refstepcounter{subverso}}%
\kern1.5ex\hskip\versoskip
\ifBreakVersi
\begingroup
\hyphenpenalty \@M
\unhbox\z@\par
\endgroup
\else
\rlap{\box\z@}\par
\fi
\penalty##1\vskip##2\relax
\setbox\z@\hbox\bgroup\ignorespaces}%
% \end{macrocode}
% For the remaining part, the environment is a normal |list| environment with
% specific initial parameters.
% \begin{macrocode}
\list{}{\parsep\z@\itemsep\z@
\if@twocolumn
\itemindent -5.3em%
\listparindent\itemindent
\rightmargin\z@
\advance\leftmargin 3.3em
\else
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em
\fi
}%
\item\leavevmode\setbox\z@\hbox\bgroup\ignorespaces
}{%
% \end{macrocode}
% The closing statement must output the last verse, which is still contained in
% box~0; since box~0 is automatically reopened, it must be closed again and its
% contents, of no significance now, can be lost upon closing the environment group.
% \begin{macrocode}
\\%
\egroup\endlist}
\let\VERSUS\VERSI \let\endVERSUS\endVERSI
% \end{macrocode}
%\end{environment}
%
% \subsection{Metrics symbols, macros and environments}
% Now we start defining many macros concerned with metrics; the metric
% symbol font has been developed mainly for this purpose. We start
% defining some macros for inputting specific symbols.
%
% Previous versions of this package defined the metric sign using both
% Italian and Latin names; then a user\footnote{Thank you Heinrich
% Fleck!} discovered a conflict with the |amsmath| package, especially
% due to the macro |\breve|, the Italian version of |\brevis|. It is
% unusual to use |teubner| with the advanced mathematics functionalities
% of |amsmath|, and package |teubner| has been in use for so many years,
% that such conflicts were never experienced. But Heinrich is a fond
% admirer of Archimedes and wrote several critical papers on Archimedes'
% works, some of which required advanced mathematics.
%
% We therefore decided that the Italian metric symbol names could be done
% without, and we eliminated all or most such ‘Italian’ macros. Those
% now available are the following.
%
%\begin{macro}{\longa}
%\begin{macro}{\brevis}
%\begin{macro}{\bbrevis}
%\begin{macro}{\barbrevis}
%\begin{macro}{\barbbrevis}
%\begin{macro}{\ubarbrevis}
%\begin{macro}{\ubarbbrevis}
%\begin{macro}{\ubarsbrevis}
%\begin{macro}{\ubrevislonga}
% \begin{macrocode}
\DeclareRobustCommand\longa{{\metricsfont l}}
\DeclareRobustCommand\brevis{\textormath{{{\metricsfont b}}}{\br@ve}}
\DeclareRobustCommand\bbrevis{{\metricsfont c}}
\DeclareRobustCommand\barbrevis{{\metricsfont i}}
\DeclareRobustCommand\barbbrevis{{\metricsfont j}}
\DeclareRobustCommand\ubarbrevis{{\metricsfont d}}
\DeclareRobustCommand\ubarbbrevis{{\metricsfont e}}
\DeclareRobustCommand\ubarsbrevis{{\metricsfont f}}
\DeclareRobustCommand{\ubrevislonga}{{\metricsfont\char107}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin {macro}{\corona}
%\begin {macro}{\ElemInd}
%\begin {macro}{\coronainv}
%\begin {macro}{\catal}
%\begin {macro}{\ipercatal}
%\begin {macro}{\hiatus}
%\begin {macro}{\Hiatus}
%\begin {macro}{\X}
%\begin {macro}{\anceps}
%\begin {macro}{\banceps}
%\begin {macro}{\ancepsdbrevis}
%\begin {macro}{\aeolicbii}
%\begin {macro}{\aeolicbiii}
%\begin {macro}{\aeolicbiv}
% Similarly the following symbols have straightforward definitions.
% Only |\hiatus| and |\Hiatus| require a small explanation; |\hiatus|
% inserts a small capital `H' in superscript position; initially it was
% chosen the solution of designing a specific sans serif glyph in
% superscript position directly in the metric symbol font (actually this
% symbol is still part of the font), but while testing it, Paolo Ciacchi
% observed that a regular `H' with serifs was better looking than the
% sans serif counterpart. Therefore the definition was changed in order
% to use the current font upright shape; by specifying `H', it is
% irrelevant if the current one is a Latin font, and the letter is a
% capital 'h', or if the current font is a Greek one and the letter is a
% capital `eta'. |\Hiatus| displays the same symbol in a zero width box
% so that it does not occupy any horizontal space; it is useful while
% writing down complicated metric sequences. Macro|\X| may be considered,
% thanks to its shape, a mnemonic shortcut in place of the full name
% |\anceps|.
% \begin{macrocode}
\DeclareRobustCommand\corona{{\metricsfont\char20}}
\let\ElemInd\corona
\DeclareRobustCommand\coronainv{{\metricsfont\char21}}
\DeclareRobustCommand\catal{{\metricsfont g}}
\DeclareRobustCommand\ipercatal{{\metricsfont h}}
\DeclareRobustCommand\hiatus{\textsuperscript{\upshape H}}
\DeclareRobustCommand\Hiatus{\makebox[\z@]{\hiatus}}
\DeclareRobustCommand\X{{\metricsfont X}}
\let\anceps\X
\DeclareRobustCommand\banceps{{\metricsfont Y}}
\DeclareRobustCommand\ancepsdbrevis{{\metricsfont Z}}
\DeclareRobustCommand{\aeolicbii}{{\metricsfont I}}
\DeclareRobustCommand{\aeolicbiii}{{\metricsfont J}}
\DeclareRobustCommand{\aeolicbiv}{{\metricsfont K}}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\stripsl@sh}
%\begin{macro}{\2}
%\begin{macro}{\3}
%\begin{macro}{\4}
% Here we prepare for the definition of a very useful macro,
% |\newmetrics|, that should ease quite a lot writing complicated and
% repetitive metric sequences.
% We shall define |\newmetrics| by means of the internal \LaTeX\
% macro |\@namedef| which accepts a macro name containing any
% character, provided this name does not
% contain the initial back slash (if it does this back slash
% becomes part of the macro name; see the \TeX{}book where there
% is an example for the definition of |\\TeX|). Therefore we need
% a service macro |\stripsl@sh| that strips the first token from
% the control sequence, so that the na\"if user does not have to
% treat the new metrics control sequence differently from the
% control sequences it uses for example with |\newcommand|.
% Next we define three numeric control sequences that should be
% followed by the rest of the macro name. The na\"if user can then
% type-in something like \verb*+\2iamb + in order to activate
% a macro whose name is formed by the tokens |2iamb|, which is
% normally impossible in \LaTeX. Notice, though, the compulsory
% space after the macro name.
% \begin{macrocode}
\newif\ifmetricsfont\metricsfontfalse
\def\stripsl@sh#1{\expandafter\@gobble\string#1}
\def\2#1 {\csname2#1\endcsname}
\def\3#1 {\csname3#1\endcsname}
\def\4#1 {\csname4#1\endcsname}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin {macro}{\newmetrics}
% Here is the user macro |\newmetrics|, to be used just as |\newcommand|,
% except it accepts a macro name starting with one of the digits `2',
% `3', or `4', and sets the suitable boolean variable to true so that in
% a long metric sequence the metric font might be selected just once.
% \begin{macrocode}
\newcommand\newmetrics[2]{%
\expandafter\@namedef\expandafter{\stripsl@sh#1}%
{{\metricsfonttrue#2}}}
% \end{macrocode}
%\end{macro}
%
%\begin {macro}{\iam}
%\begin {macro}{\chor}
%\begin {macro}{\enopl}
%\begin {macro}{\4MACRO}
%\begin {macro}{\aeolchorsor}
%\begin {macro}{\hexam}
%\begin {macro}{\pentam}
%\begin {macro}{\2tr}
% Here some common metric sequences are defined; some define single
% measures, such as the `iambus' or the `choriambus', while some
% define complete verses such as the `hexameter' or the `pentameter'.
% \begin{macrocode}
\newmetrics\iam{\barbrevis\longa\brevis\longa}
\newmetrics\chor{\longa\brevis\brevis\longa}
\newmetrics\enopl{\brevis\longa\brevis\brevis\longa\brevis\brevis\longa}
\newmetrics{\4MACRO}{\longa\longa\longa\longa}
\newmetrics{\aeolchorsor}{\longa\zeugma{\brevis\brevis}\brevis
\brevis\zeugma{\brevis\brevis}}
\newmetrics{\hexam}{\longa\brevis\brevis\longa\brevis\brevis
\longa\brevis\brevis\longa\brevis\brevis\longa\brevis\brevis
\longa\longa}
\newmetrics{\pentam}{\longa\barbbrevis\longa\barbbrevis\longa\dBar
\longa\brevis\brevis\longa\brevis\brevis\longa}
\newmetrics{\2tr}{\longa\brevis\longa\X\ \longa\brevis\longa\X\ }
% \end{macrocode}
% As it may be seen, the definition of such metric sequences may
% contain almost anything; here |\zeugma| was used as well as
% \verb*+\ +, but almost every macro defined in the previous parts
% may be freely used.
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\metricstack}
% |\metricstack| is a command similar to |\shortstack| used to stack
% something over something else; specifically the second argument over
% the third one; it was specifically designed for use while typesetting
% metric sequences, but actually there is nothing that forbids to use it
% with any base character (typeset in text LR mode) and any superscript
% character belonging to a math alphabet (which is being set in
% script--script style, not in script style, as it happens with
% |\shortstack|.
% \begin{macrocode}
\DeclareRobustCommand*{\metricstack}[2]%
{$\mathord{\mathop{\hbox{#1\rule{\z@}{1ex}}}%
\limits^{\scriptscriptstyle\relax#2\relax}}$}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\svert}
% |\svert| is a short vertical rule that may be used, for example, with
% |\metricstack| for putting a small number over a dividing vertical bar
% in metric sequences.
% \begin{macrocode}
\newcommand*{\svert}{\vrule\@height.8ex\@depth.2ex\relax}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\textoverline}
% \LaTeX\ has macro |\underline| that can be used in both text and
% math mode; there is nothing similar for overlining, therefore we
% defined a new command for this
% task.
% \begin{macrocode}
\DeclareRobustCommand*{\textoverline}[1]{%
\leavevmode\vbox{\setbox\z@\hbox{#1}
\ialign{##\crcr
\hbox to\wd\z@{\hrulefill}\crcr
\noalign{\kern.4ex\nointerlineskip}%
\hfil\box\z@\hfil\crcr}}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\verseskip}
%\begin {environment}{bracedmetrics}
% The environment |bracedmetrics| is used primarily for setting
% some metric sequences one atop the other, with a certain alignment
% and grouped together with a right brace. We need therefore a length
% name |\br@cedmetrics| for measuring the width of this large metrics
% sequence stack; we need a command |\verseskip| for inserting a blank
% space before, after or in the middle of a metric sequence, that
% more or less is as wide as an integer number of metric symbols,
% and, last but not least, the environment itself for typesetting
% this large object containing the said metric sequences; see the
% documentation file \texttt{teubner-doc.pdf} for examining some
% examples.
% \begin{macrocode}
\newlength{\br@cedmetrics}
\newcommand*{\verseskip}[1]{{%
\setbox\z@\hbox{\longa}\dimen@\wd\z@\leavevmode\hbox to#1\dimen@{}}}
\newenvironment{bracedmetrics}[1]{\def\Hfill{\leavevmode\hfill}%
\settowidth{\br@cedmetrics}{#1}%
\ifvmode\vskip1ex\fi
$\displaystyle\left.%
\vcenter\bgroup\hsize\br@cedmetrics\parindent\z@\parskip\z@
}{\egroup\right\}$}
% \end{macrocode}
%\end{environment}
%\end{macro}
%
% \subsection{Debugging commands}
%\begin{macro}{\TRON}
%\begin{macro}{\GTRON}
%\begin{macro}{\TROF}
%\begin{macro}{\GTROF}
%\begin{macro}{\treceon}
%\begin{macro}{\traceoff}
% Here there are some macros for turning on and off the tracing
% facilities of \TeX, that turn out to be useful while debugging;
% they are accessible also to the end user. Global settings must
% be turned on and off globally; local settings die out by themselves
% when a group is closed, but it is a good habit to explicitly
% turn them out regardless of groups. Attention that when the
% tracing facilities are on and a page ship out takes place, the
% |.log| file receives a lot of material, and this file gets very
% large. In order to avoid logging too much information the
% |trace| package is loaded; this package give access to the
% macros |\traceon| and |\traceoff| that log a lot of information,
% except the redundant one, specifically all the macros executed
% during any font change. Users don't realise the amount of
% processing done behind the scenes when with the New Font Selection
% Scheme (NFSS) a font change takes place; luckily enough modern
% processors are quite fast so that the compilation CPU time does
% not become too heavy. But if the \TeX\ processing is logged,
% this amount of work implies thousands of lines of almost
% meaningless information when the purpose of logging depends
% on errors that are difficult to spot; Font changes are almost
% exempt from errors, so the processing of the inner workings need
% not be logged down.
%
% If the user needs to trace something in order to spot errors,
% s/he is invited to use the commands |\traceon| and |\traceoff|;
% commands |\TRON| and |\TROF| do log much more material, in
% particular font changes, but at least they action may be
% confined within groups or environments; |\GTRON| and |\GTROF|
% are global settings and can't be confined within groups or
% environments; sometimes they are necessary, but it's important
% to turn off global tracing as soon as possible.
% \begin{macrocode}
\RequirePackage{trace}
\def\GTRON{\global\tracingcommands=\tw@ \global\tracingmacros=\tw@}
\def\GTROF{\global\tracingcommands=\z@ \global\tracingmacros=\z@}
\def\TRON{\tracingcommands=\tw@ \tracingmacros=\tw@}
\def\TROF{\tracingcommands=\z@ \tracingmacros=\z@}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
% \subsection{Classical Greek numerals}
% When typesetting Greek it may occur to specify numbers written
% out as Milesian numerals; the |greek| option to the \babel\
% package defines a couple of macros for transforming explicit
% Arabic numerals or counter contents as Milesian numerals. Since
% this package offers more possibilities in the choice of those
% ``non alphabetic'' characters used in the Milesian notation,
% such macros have to be redefined. On the occasion we changed
% some little internal details so as to make such macros a little
% faster and more robust.
%
%\begin{macro}{\Greeknumeral}
%\begin{macro}{\greeknumeral}
%\begin{macro}{\grtoday}
% Both |\greeknumeral| and |\Greeknumeral|, the latter producing
% upper case Greek numerals, while the former produces lower case
% ones, resort to robust internal macros if the |greek.ldf| language
% description style is active; they are renamed versions of the original
% macros that are perfect for modern Greek usage; therefore we simply let
% the glyph placeholders for the vales 6, 90, and 900, originally indicated
% with the place holders |\textstigma| and |\textkoppa|, (together with
% their capital glyph counterparts) the the place holders for
% |\textdigamma| and |\textqoppa|; with the value~6, we decided to use
% either the stigma or the digamma sign by using the usual asterisk
% added to the macro names; the \LaTeX\,3 language greatly simplifies
% this task.
%
% Therefore |\Greeknumeral| and |\greeknumeral| macros are redefined
% by means of |\RenewDocumentCommand| that assures solidity and by
% resorting to the internal |greek.ldf| macros, we avoid all the tests
% that the previous version had to make in order to handle the
% |\anwtonos|; furthermore the code is much simpler to maintain.
% Notice that the glyph for ‘90’ is the old styled ‘qoppa’ and
% for ‘900’ it is the 'sampi’; if the asterisk is specified, the
% glyph for ‘6’ is the lowered digamma, wile without the asterisk
% it is the ‘stigma’, the other Milesian numerals are the other
% 26 Greek letters.
% the Greek date in capital letters is already provided by the
% |greek.ldf| file; we define the |\grtoday| date in lower case
% letters that differs from the |\today| one, because the numerals
% for the day and the year are composed with the Greek numeral macros
% just defined, The optional asterisk to |\grtoday| is passed directly
% to the |\greeknumeral| macros, although in a complicated way in order
% to avoid messing the |\expandafter| workings
% \begin{macrocode}
%
\RenewDocumentCommand\Greeknumeral{s m}{\bgroup%
\let\textkoppa\textqoppa \let\textKoppa\textQoppa
\IfBooleanTF{#1}%
{\let\textstigmagreek\textstigma \let\textStigmagreek\textStigma}%
{\let\textstigmagreek\textdigamma \let\textStigmagreek\textDigamma}%
\bbl@greek@GreekNum\@secondoftwo{#2}\egroup}
\RenewDocumentCommand\greeknumeral{s m}{\bgroup%
\let\textkoppa\textqoppa \let\textKoppa\textQoppa
\IfBooleanTF{#1}%
{\let\textstigmagreek\textstigma \let\textStigmagreek\textStigma}%
{\let\textstigmagreek\textdigamma \let\textStigmagreek\textDigamma}%
\bbl@greek@GreekNum\@firstoftwo{#2}\egroup}
\providecommand\grtoday{}
\RenewDocumentCommand\grtoday{ s }%
{\bgroup\IfBooleanTF{#1}%
{\greeknumeral*{\the\day}\space\gr@c@month\space\greeknumeral*{\the\year}}%
{\greeknumeral{\the\day}\space\gr@c@month\space\greeknumeral{\the\year}}%
\egroup}
% \end{macrocode}
%
%\end{macro}
%\end{macro}
%\end{macro}
%
%\subsection{Attic numerals}
% It's true that Apostolos Siropoulos wrote also the |athnum.sty|
% extension package in order to typeset integer numbers with the
% Athenian or Attic notation; this representation of strictly
% positive integers was similar in a way to the Roman notation,
% based on a biquinary\footnote{The word \emph{biquinary}
% does not appear in the Oxford dictionary, but its etymology
% is pretty clear: couples of quintets. After all we have two
% hands with five fingers each, and we started counting on our
% hands since we were little children.} representation of decimal
% digits (taking into account that there was not a symbol for zero)
% so as the Romans had the symbols for 1, 5, 10, 50, 100, 500 and
% 1000 (I, V, X, L, C, D, M). The Attic notation has symbols for
% the same sequence of decimal values extended with 10\,000 and
% 50\,000.
%
% While typesetting philological texts in Greek it might be
% necessary to use also the Attic notation. As the original
% Roman notation used to be purely additive (i.e.
% $9\to\mathrm{VIIII}$ different from the subtractive one
% $9\to\mathrm{IX}$), so is the Attic notation.
%
%\begin{macro}{\AtticNumeral}
%\begin{macro}{\AtticCycl@}
% Therefore another conversion macro was devised that receives
% the value to be converted as its argument: first it checks
% that such argument falls in the allowed range; actually the lower
% boundary is zero, while the upper boundary was chosen to be
% 99\,999, for no other reason than the lack of further symbols
% beyond the value 50\,000, that would force to long sequences of
% identical symbols that are difficult to read. The |athnum.sty|
% package allows to extend this range to 249\,9999; should it be
% necessary, the user is invited to load that package and its
% transformation command |\athnum|.
%
% The user command |\AtticNumeral| must be preceded by the
% definitions of the biquinary symbols for 50, 500, 5000, and
% 50\,000; such symbols are present in all the CB Greek fonts
% in all sizes, series and shapes; therefore the definitions
% must be subject to the LGR encoding:
% \begin{macrocode}
\DeclareTextSymbol{\Vmiria}{\GRencoding@name}{5}
\DeclareTextSymbol{\Vkilo}{\GRencoding@name}{4}
\DeclareTextSymbol{\Vetto}{\GRencoding@name}{3}
\DeclareTextSymbol{\Vdeka}{\GRencoding@name}{2}
% \end{macrocode}
% The we need a command to issue a warning message if the number
% to be transformed is out of range:
% \begin{macrocode}
\newcommand*\attic@ill@value[1]{\PackageWarning{teubner}{%
Illegal value (\number#1) for \string\ActicNumeral\space}}
% \end{macrocode}
% Finally the robust definition of the |\AtticNumeral| command"
% \begin{macrocode}
\DeclareRobustCommand*\AtticNumeral[1]{%
\ifnum#1<\@ne \attic@ill@value{#1}\else
\ifnum#1>99999\relax \attic@ill@value{#1}\else
\AtticCycl@{#1}%
\fi
\fi}
% \end{macrocode}
% The real transformation algorithm is transferred to the
% auxiliary macro |\AttiCycl@|, where successive division by
% 10 allow to extract the various decimal digits of various
% weights maintaining the remainder in the original counter;
% each decimal digit is possibly divided into the biquinary value
% and the remaining units up to~4; the the cycle is repeated
% until the decimal units that do not require the computation
% of the remainder and terminate the cycle. Notice that we use
% also the $\varepsilon$-\TeX\ extended commands for integer
% computations; this implies that |teubner| must be run with
% a suitably recent version of the typesetting engine
% that embeds the above extensions.
% \begin{macrocode}
\def\AtticCycl@#1{%
\bgroup
\countdef\valore=252\countdef\cifra=250\relax
\valore=#1\relax
\@whilenum\valore>0\do{%
\ifnum\valore>9999\relax
\cifra=\valore\divide\cifra10000\relax
\valore=\numexpr\valore-\cifra*10000\relax
\ifnum\cifra>4\relax\Vmiria \advance\cifra-5\relax\fi
\@whilenum\cifra>\z@\do{M\advance\cifra\m@ne}%
\else
\ifnum\valore>999\relax
\cifra=\valore\divide\cifra1000\relax
\valore=\numexpr\valore-\cifra*1000\relax
\ifnum\cifra>4\relax\Vkilo \advance\cifra-5\relax\fi
\@whilenum\cifra>\z@\do{Q\advance\cifra\m@ne}%
\else
\ifnum\valore>99\relax
\cifra=\valore\divide\cifra100\relax
\valore=\numexpr\valore-\cifra*100\relax
\ifnum\cifra>4\relax\Vetto \advance\cifra-5\relax\fi
\@whilenum\cifra>\z@\do{H\advance\cifra\m@ne}%
\else
\ifnum\valore>9\relax
\cifra=\valore\divide\cifra10\relax
\valore=\numexpr\valore-\cifra*10\relax
\ifnum\cifra>4\relax\Vdeka \advance\cifra-5\relax\fi
\@whilenum\cifra>\z@\do{D\advance\cifra\m@ne}%
\else
\ifnum\valore>0\relax
\cifra=\valore
\ifnum\cifra>4\relax P\advance\cifra-5\relax\fi
\@whilenum\cifra>\z@\do{I\advance\cifra\m@ne}%
\valore=\cifra
\fi
\fi
\fi
\fi
\fi
}%
\egroup}
% \end{macrocode}
%\end{macro}
%\end{macro}
%\iffalse
%</package>
%\fi
%
%\iffalse
%<*tbtx>
%\fi
%\section{Accessing the CBgreek fonts when the TX fonts are selected}
% During the year 2010 this package \textsf{teubner.sty} was upgraded
% in order to allow using the CBgreek fonts even when other Latin
% fonts, different from the ``standard'' CM and LM ones are selected
% for typesetting text with the Latin script.
% At the same time Antonis Tsolomitis uploaded a new package in order
% to let Greek users use some Greek fonts that match the Times eXtended
% ones\footnote{Probably Antonis Tsolomitis' Greek fonts match also the
% newer Times eXtended fonts produced by Michael Sharpe. The newer fonts
% have different font family names than the previous TX fonts; in order
% to produce similar \texttt{.fd} files to be used with the newer Times
% fonts, it is necessary to procede as for any other font collection
% different from the TX ones.}. In order to use the de facto default
% encoding LGR for Greek fonts, he produced the necessary |lgrtxr.fd|,
% |lgrtxss.fd|, |lgrtxtt.fd|, font definition files that allow the font
% switching implied by the |greek| option to the \textsf{babel} package.
% These files take precedence over the mechanism outlined in
% section~\ref{ssec:LatinFontComp}, because command
% |\substitutefontfamily| first tests the existence of |lgrtxr.fd|,
% and, if this is not available, it may generate a specific one
% suitable for working smoothly with
% \textsf{teubner.sty}.
%
% Now if Tsolomitis' files are available on the main system tree, these
% take precedence and the \textsf{teubner} compatible files are not
% generated. Unfortunately Tsolomitis' fonts, although better suited to
% match the TX fonts, are well matched to modern Greek typesetting,
% but they are incomplete for philological typesetting.
%
% We therefore avoid this clash by creating a \textsf{teubnertx.sty}
% file. This extension defines the families and shapes available with
% the familiar font definition files, but the information gets input by
% \textsf{teubner.sty} at the ``begin document'' time, without resorting
% to any |.fd| file. Maybe more information is loaded than is strictly
% necessary, but it is better to do this way than to clash with other
% packages.
% \begin{macrocode}
\DeclareFontFamily{LGR}{txr}{}
\DeclareFontShape{LGR}{txr}{m}{n}{<->ssub * cmr/m/n}{}
\DeclareFontShape{LGR}{txr}{m}{it}{<->ssub * cmr/m/it}{}
\DeclareFontShape{LGR}{txr}{m}{sl}{<->ssub * cmr/m/sl}{}
\DeclareFontShape{LGR}{txr}{m}{sc}{<->ssub * cmr/m/sc}{}
\DeclareFontShape{LGR}{txr}{b}{n}{<->ssub * cmr/bx/n}{}
\DeclareFontShape{LGR}{txr}{b}{it}{<->ssub * cmr/bx/it}{}
\DeclareFontShape{LGR}{txr}{b}{sl}{<->ssub * cmr/bx/sl}{}
\DeclareFontShape{LGR}{txr}{b}{sc}{<->ssub * cmr/bx/sc}{}
\DeclareFontShape{LGR}{txr}{bx}{n}{<->ssub * cmr/bx/n}{}
\DeclareFontShape{LGR}{txr}{bx}{it}{<->ssub * cmr/bx/it}{}
\DeclareFontShape{LGR}{txr}{bx}{sl}{<->ssub * cmr/bx/sl}{}
\DeclareFontShape{LGR}{txr}{bx}{sc}{<->ssub * cmr/bx/sc}{}
\DeclareFontShape{LGR}{txr}{m}{li}{<->ssub * cmr/m/li}{}
\DeclareFontShape{LGR}{txr}{b}{li}{<->ssub * cmr/b/li}{}
\DeclareFontShape{LGR}{txr}{bx}{li}{<->ssub * cmr/bx/li}{}
\DeclareFontShape{LGR}{txr}{m}{ui}{<->ssub * cmr/m/ui}{}
\DeclareFontShape{LGR}{txr}{b}{ui}{<->ssub * cmr/m/ui}{}
\DeclareFontShape{LGR}{txr}{bx}{ui}{<->ssub * cmr/bx/ui}{}
\DeclareFontShape{LGR}{txr}{m}{rs}{<->ssub * cmr/m/rs}{}
\DeclareFontShape{LGR}{txr}{b}{rs}{<->ssub * cmr/m/rs}{}
\DeclareFontShape{LGR}{txr}{bx}{rs}{<->ssub * cmr/bx/rs}{}
\DeclareFontFamily{LGR}{txss}{}
\DeclareFontShape{LGR}{txss}{m}{n}{<->ssub * cmss/m/n}{}
\DeclareFontShape{LGR}{txss}{m}{it}{<->ssub * cmss/m/it}{}
\DeclareFontShape{LGR}{txss}{m}{sl}{<->ssub * cmss/m/sl}{}
\DeclareFontShape{LGR}{txss}{m}{sc}{<->ssub * cmss/m/sc}{}
\DeclareFontShape{LGR}{txss}{b}{n}{<->ssub * cmss/bx/n}{}
\DeclareFontShape{LGR}{txss}{b}{it}{<->ssub * cmss/bx/it}{}
\DeclareFontShape{LGR}{txss}{b}{sl}{<->ssub * cmss/bx/sl}{}
\DeclareFontShape{LGR}{txss}{b}{sc}{<->ssub * cmss/bx/sc}{}
\DeclareFontShape{LGR}{txss}{bx}{n}{<->ssub * cmss/bx/n}{}
\DeclareFontShape{LGR}{txss}{bx}{it}{<->ssub * cmss/bx/it}{}
\DeclareFontShape{LGR}{txss}{bx}{sl}{<->ssub * cmss/bx/sl}{}
\DeclareFontShape{LGR}{txss}{bx}{sc}{<->ssub * cmss/bx/sc}{}
\DeclareFontFamily{LGR}{txtt}{\hyphenchar=-1}
\DeclareFontShape{LGR}{txtt}{m}{n}{<->ssub * cmtt/m/n}{}
\DeclareFontShape{LGR}{txtt}{m}{it}{<->ssub * cmtt/m/it}{}
\DeclareFontShape{LGR}{txtt}{m}{sl}{<->ssub * cmtt/m/sl}{}
\DeclareFontShape{LGR}{txtt}{m}{sc}{<->ssub * cmtt/m/sc}{}
\DeclareFontShape{LGR}{txtt}{b}{n}{<->ssub * cmtt/bx/n}{}
\DeclareFontShape{LGR}{txtt}{b}{it}{<->ssub * cmtt/bx/it}{}
\DeclareFontShape{LGR}{txtt}{b}{sl}{<->ssub * cmtt/bx/sl}{}
\DeclareFontShape{LGR}{txtt}{b}{sc}{<->ssub * cmtt/bx/sc}{}
\DeclareFontShape{LGR}{txtt}{bx}{n}{<->ssub * cmtt/bx/n}{}
\DeclareFontShape{LGR}{txtt}{bx}{it}{<->ssub * cmtt/bx/it}{}
\DeclareFontShape{LGR}{txtt}{bx}{sl}{<->ssub * cmtt/bx/sl}{}
\DeclareFontShape{LGR}{txtt}{bx}{sc}{<->ssub * cmtt/bx/sc}{}
% \end{macrocode}
%\iffalse
%</tbtx>
%\fi
% \Finale
\endinput
|