1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 8602 8603 8604 8605 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8840 8841 8842 8843 8844 8845 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8960 8961 8962 8963 8964 8965 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9080 9081 9082 9083 9084 9085 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9134 9135 9136 9137 9138 9139 9140 9141 9142 9143 9144 9145 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9224 9225 9226 9227 9228 9229 9230 9231 9232 9233 9234 9235 9236 9237 9238 9239 9240 9241 9242 9243 9244 9245 9246 9247 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9284 9285 9286 9287 9288 9289 9290 9291 9292 9293 9294 9295 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9356 9357 9358 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9392 9393 9394 9395 9396 9397 9398 9399 9400 9401 9402 9403 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9638 9639 9640 9641 9642 9643 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10478 10479 10480 10481 10482 10483 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10532 10533 10534 10535 10536 10537 10538 10539 10540 10541 10542 10543 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 10574 10575 10576 10577 10578 10579 10580 10581 10582 10583 10584 10585 10586 10587 10588 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10610 10611 10612 10613 10614 10615 10616 10617 10618 10619 10620 10621 10622 10623 10624 10625 10626 10627 10628 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10670 10671 10672 10673 10674 10675 10676 10677 10678 10679 10680 10681 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10742 10743 10744 10745 10746 10747 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10778 10779 10780 10781 10782 10783 10784 10785 10786 10787 10788 10789 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 11054 11055 11056 11057 11058 11059 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11294 11295 11296 11297 11298 11299 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11414 11415 11416 11417 11418 11419 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 11516 11517 11518 11519 11520 11521 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11534 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 11636 11637 11638 11639 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11654 11655 11656 11657 11658 11659 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11774 11775 11776 11777 11778 11779 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 11876 11877 11878 11879 11880 11881 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11894 11895 11896 11897 11898 11899 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 11999 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 12014 12015 12016 12017 12018 12019 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12134 12135 12136 12137 12138 12139 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 12224 12225 12226 12227 12228 12229 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 12278 12279 12280 12281 12282 12283 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 12320 12321 12322 12323 12324 12325 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 12362 12363 12364 12365 12366 12367 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 12404 12405 12406 12407 12408 12409 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 12446 12447 12448 12449 12450 12451 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 12674 12675 12676 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 12821 12822 12823 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 13538 13539 13540 13541 13542 13543 13544 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13556 13557 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13572 13573 13574 13575 13576 13577 13578 13579 13580 13581 13582 13583 13584 13585 13586 13587 13588 13589 13590 13591 13592 13593 13594 13595 13596 13597 13598 13599 13600 13601 13602 13603 13604 13605 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13651 13652 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 13664 13665 13666 13667 13668 13669 13670 13671 13672 13673 13674 13675 13676 13677 13678 13679 13680 13681 13682 13683 13684 13685 13686 13687 13688 13689 13690 13691 13692 13693 13694 13695 13696 13697 13698 13699 13700 13701 13702 13703 13704 13705 13706 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13718 13719 13720 13721 13722 13723 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 13826 13827 13828 13829 13830 13831 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 13881 13882 13883 13884 13885 13886 13887 13888 13889 13890 13891 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 13933 13934 13935 13936 13937 13938 13939 13940 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 13970 13971 13972 13973 13974 13975 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14131 14132 14133 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 14174 14175 14176 14177 14178 14179 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 14204 14205 14206 14207 14208 14209 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 14234 14235 14236 14237 14238 14239 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 14264 14265 14266 14267 14268 14269 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 14290 14291 14292 14293 14294 14295 14296 14297 14298 14299 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 14312 14313 14314 14315 14316 14317 14318 14319 14320 14321 14322 14323 14324 14325 14326 14327 14328 14329 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 14347 14348 14349 14350 14351 14352 14353 14354 14355 14356 14357 14358 14359 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 14372 14373 14374 14375 14376 14377 14378 14379 14380 14381 14382 14383 14384 14385 14386 14387 14388 14389 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14413 14414 14415 14416 14417 14418 14419 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 14439 14440 14441 14442 14443 14444 14445 14446 14447 14448 14449 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 14474 14475 14476 14477 14478 14479 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 14492 14493 14494 14495 14496 14497 14498 14499 14500 14501 14502 14503 14504 14505 14506 14507 14508 14509 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 14528 14529 14530 14531 14532 14533 14534 14535 14536 14537 14538 14539 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 14552 14553 14554 14555 14556 14557 14558 14559 14560 14561 14562 14563 14564 14565 14566 14567 14568 14569 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 14582 14583 14584 14585 14586 14587 14588 14589 14590 14591 14592 14593 14594 14595 14596 14597 14598 14599 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 14612 14613 14614 14615 14616 14617 14618 14619 14620 14621 14622 14623 14624 14625 14626 14627 14628 14629 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 14642 14643 14644 14645 14646 14647 14648 14649 14650 14651 14652 14653 14654 14655 14656 14657 14658 14659 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 14672 14673 14674 14675 14676 14677 14678 14679 14680 14681 14682 14683 14684 14685 14686 14687 14688 14689 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 14711 14712 14713 14714 14715 14716 14717 14718 14719 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 14742 14743 14744 14745 14746 14747 14748 14749 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 14762 14763 14764 14765 14766 14767 14768 14769 14770 14771 14772 14773 14774 14775 14776 14777 14778 14779 14780 14781 14782 14783 14784 14785 14786 14787 14788 14789 14790 14791 14792 14793 14794 14795 14796 14797 14798 14799 14800 14801 14802 14803 14804 14805 14806 14807 14808 14809 14810 14811 14812 14813 14814 14815 14816 14817 14818 14819 14820 14821 14822 14823 14824 14825 14826 14827 14828 14829 14830 14831 14832 14833 14834 14835 14836 14837 14838 14839 14840 14841 14842 14843 14844 14845 14846 14847 14848 14849 14850 14851 14852 14853 14854 14855 14856 14857 14858 14859 14860 14861 14862 14863 14864 14865 14866 14867 14868 14869 14870 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 14882 14883 14884 14885 14886 14887 14888 14889 14890 14891 14892 14893 14894 14895 14896 14897 14898 14899 14900 14901 14902 14903 14904 14905 14906 14907 14908 14909 14910 14911 14912 14913 14914 14915 14916 14917 14918 14919 14920 14921 14922 14923 14924 14925 14926 14927 14928 14929 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 14942 14943 14944 14945 14946 14947 14948 14949 14950 14951 14952 14953 14954 14955 14956 14957 14958 14959 14960 14961 14962 14963 14964 14965 14966 14967 14968 14969 14970 14971 14972 14973 14974 14975 14976 14977 14978 14979 14980 14981 14982 14983 14984 14985 14986 14987 14988 14989 14990 14991 14992 14993 14994 14995 14996 14997 14998 14999 15000 15001 15002 15003 15004 15005 15006 15007 15008 15009 15010 15011 15012 15013 15014 15015 15016 15017 15018 15019 15020 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 15032 15033 15034 15035 15036 15037 15038 15039 15040 15041 15042 15043 15044 15045 15046 15047 15048 15049 15050 15051 15052 15053 15054 15055 15056 15057 15058 15059 15060 15061 15062 15063 15064 15065 15066 15067 15068 15069 15070 15071 15072 15073 15074 15075 15076 15077 15078 15079 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 15092 15093 15094 15095 15096 15097 15098 15099 15100 15101 15102 15103 15104 15105 15106 15107 15108 15109 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 15128 15129 15130 15131 15132 15133 15134 15135 15136 15137 15138 15139 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 15152 15153 15154 15155 15156 15157 15158 15159 15160 15161 15162 15163 15164 15165 15166 15167 15168 15169 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 15182 15183 15184 15185 15186 15187 15188 15189 15190 15191 15192 15193 15194 15195 15196 15197 15198 15199 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 15212 15213 15214 15215 15216 15217 15218 15219 15220 15221 15222 15223 15224 15225 15226 15227 15228 15229 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 15242 15243 15244 15245 15246 15247 15248 15249 15250 15251 15252 15253 15254 15255 15256 15257 15258 15259 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 15272 15273 15274 15275 15276 15277 15278 15279 15280 15281 15282 15283 15284 15285 15286 15287 15288 15289 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 15302 15303 15304 15305 15306 15307 15308 15309 15310 15311 15312 15313 15314 15315 15316 15317 15318 15319 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 15332 15333 15334 15335 15336 15337 15338 15339 15340 15341 15342 15343 15344 15345 15346 15347 15348 15349 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371 15372 15373 15374 15375 15376 15377 15378 15379 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 15392 15393 15394 15395 15396 15397 15398 15399 15400 15401 15402 15403 15404 15405 15406 15407 15408 15409 15410 15411 15412 15413 15414 15415 15416 15417 15418 15419 15420 15421 15422 15423 15424 15425 15426 15427 15428 15429 15430 15431 15432 15433 15434 15435 15436 15437 15438 15439 15440 15441 15442 15443 15444 15445 15446 15447 15448 15449 15450 15451 15452 15453 15454 15455 15456 15457 15458 15459 15460 15461 15462 15463 15464 15465 15466 15467 15468 15469 15470 15471 15472 15473 15474 15475 15476 15477 15478 15479 15480 15481 15482 15483 15484 15485 15486 15487 15488 15489 15490 15491 15492 15493 15494 15495 15496 15497 15498 15499 15500 15501 15502 15503 15504 15505 15506 15507 15508 15509 15510 15511 15512 15513 15514 15515 15516 15517 15518 15519 15520 15521 15522 15523 15524 15525 15526 15527 15528 15529 15530 15531 15532 15533 15534 15535 15536 15537 15538 15539 15540 15541 15542 15543 15544 15545 15546 15547 15548 15549 15550 15551 15552 15553 15554 15555 15556 15557 15558 15559 15560 15561 15562 15563 15564 15565 15566 15567 15568 15569 15570 15571 15572 15573 15574 15575 15576 15577 15578 15579 15580 15581 15582 15583 15584 15585 15586 15587 15588 15589 15590 15591 15592 15593 15594 15595 15596 15597 15598 15599 15600 15601 15602 15603 15604 15605 15606 15607 15608 15609 15610 15611 15612 15613 15614 15615 15616 15617 15618 15619 15620 15621 15622 15623 15624 15625 15626 15627 15628 15629 15630 15631 15632 15633 15634 15635 15636 15637 15638 15639 15640 15641 15642 15643 15644 15645 15646 15647 15648 15649 15650 15651 15652 15653 15654 15655 15656 15657 15658 15659 15660 15661 15662 15663 15664 15665 15666 15667 15668 15669 15670 15671 15672 15673 15674 15675 15676 15677 15678 15679 15680 15681 15682 15683 15684 15685 15686 15687 15688 15689 15690 15691 15692 15693 15694 15695 15696 15697 15698 15699 15700 15701 15702 15703 15704 15705 15706 15707 15708 15709 15710 15711 15712 15713 15714 15715 15716 15717 15718 15719 15720 15721 15722 15723 15724 15725 15726 15727 15728 15729 15730 15731 15732 15733 15734 15735 15736 15737 15738 15739 15740 15741 15742 15743 15744 15745 15746 15747 15748 15749 15750 15751 15752 15753 15754 15755 15756 15757 15758 15759 15760 15761 15762 15763 15764 15765 15766 15767 15768 15769 15770 15771 15772 15773 15774 15775 15776 15777 15778 15779 15780 15781 15782 15783 15784 15785 15786 15787 15788 15789 15790 15791 15792 15793 15794 15795 15796 15797 15798 15799 15800 15801 15802 15803 15804 15805 15806 15807 15808 15809 15810 15811 15812 15813 15814 15815 15816 15817 15818 15819 15820 15821 15822 15823 15824 15825 15826 15827 15828 15829 15830 15831 15832 15833 15834 15835 15836 15837 15838 15839 15840 15841 15842 15843 15844 15845 15846 15847 15848 15849 15850 15851 15852 15853 15854 15855 15856 15857 15858 15859 15860 15861 15862 15863 15864 15865 15866 15867 15868 15869 15870 15871 15872 15873 15874 15875 15876 15877 15878 15879 15880 15881 15882 15883 15884 15885 15886 15887 15888 15889 15890 15891 15892 15893 15894 15895 15896 15897 15898 15899 15900 15901 15902 15903 15904 15905 15906 15907 15908 15909 15910 15911 15912 15913 15914 15915 15916 15917 15918 15919 15920 15921 15922 15923 15924 15925 15926 15927 15928 15929 15930 15931 15932 15933 15934 15935 15936 15937 15938 15939 15940 15941 15942 15943 15944 15945 15946 15947 15948 15949 15950 15951 15952 15953 15954 15955 15956 15957 15958 15959 15960 15961 15962 15963 15964 15965 15966 15967 15968 15969 15970 15971 15972 15973 15974 15975 15976 15977 15978 15979 15980 15981 15982 15983 15984 15985 15986 15987 15988 15989 15990 15991 15992 15993 15994 15995 15996 15997 15998 15999 16000 16001 16002 16003 16004 16005 16006 16007 16008 16009 16010 16011 16012 16013 16014 16015 16016 16017 16018 16019 16020 16021 16022 16023 16024 16025 16026 16027 16028 16029 16030 16031 16032 16033 16034 16035 16036 16037 16038 16039 16040 16041 16042 16043 16044 16045 16046 16047 16048 16049 16050 16051 16052 16053 16054 16055 16056 16057 16058 16059 16060 16061 16062 16063 16064 16065 16066 16067 16068 16069 16070 16071 16072 16073 16074 16075 16076 16077 16078 16079 16080 16081 16082 16083 16084 16085 16086 16087 16088 16089 16090 16091 16092 16093 16094 16095 16096 16097 16098 16099 16100 16101 16102 16103 16104 16105 16106 16107 16108 16109 16110 16111 16112 16113 16114 16115 16116 16117 16118 16119 16120 16121 16122 16123 16124 16125 16126 16127 16128 16129 16130 16131 16132 16133 16134 16135 16136 16137 16138 16139 16140 16141 16142 16143 16144 16145 16146 16147 16148 16149 16150 16151 16152 16153 16154 16155 16156 16157 16158 16159 16160 16161 16162 16163 16164 16165 16166 16167 16168 16169 16170 16171 16172 16173 16174 16175 16176 16177 16178 16179 16180 16181 16182 16183 16184 16185 16186 16187 16188 16189 16190 16191 16192 16193 16194 16195 16196 16197 16198 16199 16200 16201 16202 16203 16204 16205 16206 16207 16208 16209 16210 16211 16212 16213 16214 16215 16216 16217 16218 16219 16220 16221 16222 16223 16224 16225 16226 16227 16228 16229 16230 16231 16232 16233 16234 16235 16236 16237 16238 16239 16240 16241 16242 16243 16244 16245 16246 16247 16248 16249 16250 16251 16252 16253 16254 16255 16256 16257 16258 16259 16260 16261 16262 16263 16264 16265 16266 16267 16268 16269 16270 16271 16272 16273 16274 16275 16276 16277 16278 16279 16280 16281 16282 16283 16284 16285 16286 16287 16288 16289 16290 16291 16292 16293 16294 16295 16296 16297 16298 16299 16300 16301 16302 16303 16304 16305 16306 16307 16308 16309 16310 16311 16312 16313 16314 16315 16316 16317 16318 16319 16320 16321 16322 16323 16324 16325 16326 16327 16328 16329 16330 16331 16332 16333 16334 16335 16336 16337 16338 16339 16340 16341 16342 16343 16344 16345 16346 16347 16348 16349 16350 16351 16352 16353 16354 16355 16356 16357 16358 16359 16360 16361 16362 16363 16364 16365 16366 16367 16368 16369 16370 16371 16372 16373 16374 16375 16376 16377 16378 16379 16380 16381 16382 16383 16384 16385 16386 16387 16388 16389 16390 16391 16392 16393 16394 16395 16396 16397 16398 16399 16400 16401 16402 16403 16404 16405 16406 16407 16408 16409 16410 16411 16412 16413 16414 16415 16416 16417 16418 16419 16420 16421 16422 16423 16424 16425 16426 16427 16428 16429 16430 16431 16432 16433 16434 16435 16436 16437 16438 16439 16440 16441 16442 16443 16444 16445 16446 16447 16448 16449 16450 16451 16452 16453 16454 16455 16456 16457 16458 16459 16460 16461 16462 16463 16464 16465 16466 16467 16468 16469 16470 16471 16472 16473 16474 16475 16476 16477 16478 16479 16480 16481 16482 16483 16484 16485 16486 16487 16488 16489 16490 16491 16492 16493 16494 16495 16496 16497 16498 16499 16500 16501 16502 16503 16504 16505 16506 16507 16508 16509 16510 16511 16512 16513 16514 16515 16516 16517 16518 16519 16520 16521 16522 16523 16524 16525 16526 16527 16528 16529 16530 16531 16532 16533 16534 16535 16536 16537 16538 16539 16540 16541 16542 16543 16544 16545 16546 16547 16548 16549 16550 16551 16552 16553 16554 16555 16556 16557 16558 16559 16560 16561 16562 16563 16564 16565 16566 16567 16568 16569 16570 16571 16572 16573 16574 16575 16576 16577 16578 16579 16580 16581 16582 16583 16584 16585 16586 16587 16588 16589 16590 16591 16592 16593 16594 16595 16596 16597 16598 16599 16600 16601 16602 16603 16604 16605 16606 16607 16608 16609 16610 16611 16612 16613 16614 16615 16616 16617 16618 16619 16620 16621 16622 16623 16624 16625 16626 16627 16628 16629 16630 16631 16632 16633 16634 16635 16636 16637 16638 16639 16640 16641 16642 16643 16644 16645 16646 16647 16648 16649 16650 16651 16652 16653 16654 16655 16656 16657 16658 16659 16660 16661 16662 16663 16664 16665 16666 16667 16668 16669 16670 16671 16672 16673 16674 16675 16676 16677 16678 16679 16680 16681 16682 16683 16684 16685 16686 16687 16688 16689 16690 16691 16692 16693 16694 16695 16696 16697 16698 16699 16700 16701 16702 16703 16704 16705 16706 16707 16708 16709 16710 16711 16712 16713 16714 16715 16716 16717 16718 16719 16720 16721 16722 16723 16724 16725 16726 16727 16728 16729 16730 16731 16732 16733 16734 16735 16736 16737 16738 16739 16740 16741 16742 16743 16744 16745 16746 16747 16748 16749 16750 16751 16752 16753 16754 16755 16756 16757 16758 16759 16760 16761 16762 16763 16764 16765 16766 16767 16768 16769 16770 16771 16772 16773 16774 16775 16776 16777 16778 16779 16780 16781 16782 16783 16784 16785 16786 16787 16788 16789 16790 16791 16792 16793 16794 16795 16796 16797 16798 16799 16800 16801 16802 16803 16804 16805 16806 16807 16808 16809 16810 16811 16812 16813 16814 16815 16816 16817 16818 16819 16820 16821 16822 16823 16824 16825 16826 16827 16828 16829 16830 16831 16832 16833 16834 16835 16836 16837 16838 16839 16840 16841 16842 16843 16844 16845 16846 16847 16848 16849 16850 16851 16852 16853 16854 16855 16856 16857 16858 16859 16860 16861 16862 16863 16864 16865 16866 16867 16868 16869 16870 16871 16872 16873 16874 16875 16876 16877 16878 16879 16880 16881 16882 16883 16884 16885 16886 16887 16888 16889 16890 16891 16892 16893 16894 16895 16896 16897 16898 16899 16900 16901 16902 16903 16904 16905 16906 16907 16908 16909 16910 16911 16912 16913 16914 16915 16916 16917 16918 16919 16920 16921 16922 16923 16924 16925 16926 16927 16928 16929 16930 16931 16932 16933 16934 16935 16936 16937 16938 16939 16940 16941 16942 16943 16944 16945 16946 16947 16948 16949 16950 16951 16952 16953 16954 16955 16956 16957 16958 16959 16960 16961 16962 16963 16964 16965 16966 16967 16968 16969 16970 16971 16972 16973 16974 16975 16976 16977 16978 16979 16980 16981 16982 16983 16984 16985 16986 16987 16988 16989 16990 16991 16992 16993 16994 16995 16996 16997 16998 16999 17000 17001 17002 17003 17004 17005 17006 17007 17008 17009 17010 17011 17012 17013 17014 17015 17016 17017 17018 17019 17020 17021 17022 17023 17024 17025 17026 17027 17028 17029 17030 17031 17032 17033 17034 17035 17036 17037 17038 17039 17040 17041 17042 17043 17044 17045 17046 17047 17048 17049 17050 17051 17052 17053 17054 17055 17056 17057 17058 17059 17060 17061 17062 17063 17064 17065 17066 17067 17068 17069 17070 17071 17072 17073 17074 17075 17076 17077 17078 17079 17080 17081 17082 17083 17084 17085 17086 17087 17088 17089 17090 17091 17092 17093 17094 17095 17096 17097 17098 17099 17100 17101 17102 17103 17104 17105 17106 17107 17108 17109 17110 17111 17112 17113 17114 17115 17116 17117 17118 17119 17120 17121 17122 17123 17124 17125 17126 17127 17128 17129 17130 17131 17132 17133 17134 17135 17136 17137 17138 17139 17140 17141 17142 17143 17144 17145 17146 17147 17148 17149 17150 17151 17152 17153 17154 17155 17156 17157 17158 17159 17160 17161 17162 17163 17164 17165 17166 17167 17168 17169 17170 17171 17172 17173 17174 17175 17176 17177 17178 17179 17180 17181 17182 17183 17184 17185 17186 17187 17188 17189 17190 17191 17192 17193 17194 17195 17196 17197 17198 17199 17200 17201 17202 17203 17204 17205 17206 17207 17208 17209 17210 17211 17212 17213 17214 17215 17216 17217 17218 17219 17220 17221 17222 17223 17224 17225 17226 17227 17228 17229 17230 17231 17232 17233 17234 17235 17236 17237 17238 17239 17240 17241 17242 17243 17244 17245 17246 17247 17248 17249 17250 17251 17252 17253 17254 17255 17256 17257 17258 17259 17260 17261 17262 17263 17264 17265 17266 17267 17268 17269 17270 17271 17272 17273 17274 17275 17276 17277 17278 17279 17280 17281 17282 17283 17284 17285 17286 17287 17288 17289 17290 17291 17292 17293 17294 17295 17296 17297 17298 17299 17300 17301 17302 17303 17304 17305 17306 17307 17308 17309 17310 17311 17312 17313 17314 17315 17316 17317 17318 17319 17320 17321 17322 17323 17324 17325 17326 17327 17328 17329 17330 17331 17332 17333 17334 17335 17336 17337 17338 17339 17340 17341 17342 17343 17344 17345 17346 17347 17348 17349 17350 17351 17352 17353 17354 17355 17356 17357 17358 17359 17360 17361 17362 17363 17364 17365 17366 17367 17368 17369 17370 17371 17372 17373 17374 17375 17376 17377 17378 17379 17380 17381 17382 17383 17384 17385 17386 17387 17388 17389 17390 17391 17392 17393 17394 17395 17396 17397 17398 17399 17400 17401 17402 17403 17404 17405 17406 17407 17408 17409 17410 17411 17412 17413 17414 17415 17416 17417 17418 17419 17420 17421 17422 17423 17424 17425 17426 17427 17428 17429 17430 17431 17432 17433 17434 17435 17436 17437 17438 17439 17440 17441 17442 17443 17444 17445 17446 17447 17448 17449 17450 17451 17452 17453 17454 17455 17456 17457 17458 17459 17460 17461 17462 17463 17464 17465 17466 17467 17468 17469 17470 17471 17472 17473 17474 17475 17476 17477 17478 17479 17480 17481 17482 17483 17484 17485 17486 17487 17488 17489 17490 17491 17492 17493 17494 17495 17496 17497 17498 17499 17500 17501 17502 17503 17504 17505 17506 17507 17508 17509 17510 17511 17512 17513 17514 17515 17516 17517 17518 17519 17520 17521 17522 17523 17524 17525 17526 17527 17528 17529 17530 17531 17532 17533 17534 17535 17536 17537 17538 17539 17540 17541 17542 17543 17544 17545 17546 17547 17548 17549 17550 17551 17552 17553 17554 17555 17556 17557 17558 17559 17560 17561 17562 17563 17564 17565 17566 17567 17568 17569 17570 17571 17572 17573 17574 17575 17576 17577 17578 17579 17580 17581 17582 17583 17584 17585 17586 17587 17588 17589 17590 17591 17592 17593 17594 17595 17596 17597 17598 17599 17600 17601 17602 17603 17604 17605 17606 17607 17608 17609 17610 17611 17612 17613 17614 17615 17616 17617 17618 17619 17620 17621 17622 17623 17624 17625 17626 17627 17628 17629 17630 17631 17632 17633 17634 17635 17636 17637 17638 17639 17640 17641 17642 17643 17644 17645 17646 17647 17648 17649 17650 17651 17652 17653 17654 17655 17656 17657 17658 17659 17660 17661 17662 17663 17664 17665 17666 17667 17668 17669 17670 17671 17672 17673 17674 17675 17676 17677 17678 17679 17680 17681 17682 17683 17684 17685 17686 17687 17688 17689 17690 17691 17692 17693 17694 17695 17696 17697 17698 17699 17700 17701 17702 17703 17704 17705 17706 17707 17708 17709 17710 17711 17712 17713 17714 17715 17716 17717 17718 17719 17720 17721 17722 17723 17724 17725 17726 17727 17728 17729 17730 17731 17732 17733 17734 17735 17736 17737 17738 17739 17740 17741 17742 17743 17744 17745 17746 17747 17748 17749 17750 17751 17752 17753 17754 17755 17756 17757 17758 17759 17760 17761 17762 17763 17764 17765 17766 17767 17768 17769 17770 17771 17772 17773 17774 17775 17776 17777 17778 17779 17780 17781 17782 17783 17784 17785 17786 17787 17788 17789 17790 17791 17792 17793 17794 17795 17796 17797 17798 17799 17800 17801 17802 17803 17804 17805 17806 17807 17808 17809 17810 17811 17812 17813 17814 17815 17816 17817 17818 17819 17820 17821 17822 17823 17824 17825 17826 17827 17828 17829 17830 17831 17832 17833 17834 17835 17836 17837 17838 17839 17840 17841 17842 17843 17844 17845 17846 17847 17848 17849 17850 17851 17852 17853 17854 17855 17856 17857 17858 17859 17860 17861 17862 17863 17864 17865 17866 17867 17868 17869 17870 17871 17872 17873 17874 17875 17876 17877 17878 17879 17880 17881 17882 17883 17884 17885 17886 17887 17888 17889 17890 17891 17892 17893 17894 17895 17896 17897 17898 17899 17900 17901 17902 17903 17904 17905 17906 17907 17908 17909 17910 17911 17912 17913 17914 17915 17916 17917 17918 17919 17920 17921 17922 17923 17924 17925 17926 17927 17928 17929 17930 17931 17932 17933 17934 17935 17936 17937 17938 17939 17940 17941 17942 17943 17944 17945 17946 17947 17948 17949 17950 17951 17952 17953 17954 17955 17956 17957 17958 17959 17960 17961 17962 17963 17964 17965 17966 17967 17968 17969 17970 17971 17972 17973 17974 17975 17976 17977 17978 17979 17980 17981 17982 17983 17984 17985 17986 17987 17988 17989 17990 17991 17992 17993 17994 17995 17996 17997 17998 17999 18000 18001 18002 18003 18004 18005 18006 18007 18008 18009 18010 18011 18012 18013 18014 18015 18016 18017 18018 18019 18020 18021 18022 18023 18024 18025 18026 18027 18028 18029 18030 18031 18032 18033 18034 18035 18036 18037 18038 18039 18040 18041 18042 18043 18044 18045 18046 18047 18048 18049 18050 18051 18052 18053 18054 18055 18056 18057 18058 18059 18060 18061 18062 18063 18064 18065 18066 18067 18068 18069 18070 18071 18072 18073 18074 18075 18076 18077 18078 18079 18080 18081 18082 18083 18084 18085 18086 18087 18088 18089 18090 18091 18092 18093 18094 18095 18096 18097 18098 18099 18100 18101 18102 18103 18104 18105 18106 18107 18108 18109 18110 18111 18112 18113 18114 18115 18116 18117 18118 18119 18120 18121 18122 18123 18124 18125 18126 18127 18128 18129 18130 18131 18132 18133 18134 18135 18136 18137 18138 18139 18140 18141 18142 18143 18144 18145 18146 18147 18148 18149 18150 18151 18152 18153 18154 18155 18156 18157 18158 18159 18160 18161 18162 18163 18164 18165 18166 18167 18168 18169 18170 18171 18172 18173 18174 18175 18176 18177 18178 18179 18180 18181 18182 18183 18184 18185 18186 18187 18188 18189 18190 18191 18192 18193 18194 18195 18196 18197 18198 18199 18200 18201 18202 18203 18204 18205 18206 18207 18208 18209 18210 18211 18212 18213 18214 18215 18216 18217 18218 18219 18220 18221 18222 18223 18224 18225 18226 18227 18228 18229 18230 18231 18232 18233 18234 18235 18236 18237 18238 18239 18240 18241 18242 18243 18244 18245 18246 18247 18248 18249 18250 18251 18252 18253 18254 18255 18256 18257 18258 18259 18260 18261 18262 18263 18264 18265 18266 18267 18268 18269 18270 18271 18272 18273 18274 18275 18276 18277 18278 18279 18280 18281 18282 18283 18284 18285 18286 18287 18288 18289 18290 18291 18292 18293 18294 18295 18296 18297 18298 18299 18300 18301 18302 18303 18304 18305 18306 18307 18308 18309 18310 18311 18312 18313 18314 18315 18316 18317 18318 18319 18320 18321 18322 18323 18324 18325 18326 18327 18328 18329 18330 18331 18332 18333 18334 18335 18336 18337 18338 18339 18340 18341 18342 18343 18344 18345 18346 18347 18348 18349 18350 18351 18352 18353 18354 18355 18356 18357 18358 18359 18360 18361 18362 18363 18364 18365 18366 18367 18368 18369 18370 18371 18372 18373 18374 18375 18376 18377 18378 18379 18380 18381 18382 18383 18384 18385 18386 18387 18388 18389 18390 18391
|
\input texinfo.tex @c -*-texinfo-*-
@c $Id: texinfo.txi,v 1.162 1999/09/28 19:38:01 karl Exp $
@c %**start of header
@c All text is ignored before the setfilename.
@setfilename texinfo
@include version.texi
@settitle Texinfo @value{VERSION}
@c Define a new index for options.
@defcodeindex op
@c Put everything except function (command, in this case) names in one
@c index (arbitrarily chosen to be the concept index).
@syncodeindex op cp
@syncodeindex vr cp
@syncodeindex pg cp
@footnotestyle separate
@paragraphindent 2
@finalout
@comment %**end of header
@dircategory Texinfo documentation system
@direntry
* Texinfo: (texinfo). The GNU documentation format.
* install-info: (texinfo)Invoking install-info. Update info/dir entries.
* texi2dvi: (texinfo)Format with texi2dvi. Print Texinfo documents.
* texindex: (texinfo)Format with tex/texindex. Sort Texinfo index files.
* makeinfo: (texinfo)makeinfo Preferred. Translate Texinfo source.
@end direntry
@c Before release, run C-u C-c C-u C-a (texinfo-all-menus-update with a
@c prefix arg). This updates the node pointers, which texinfmt.el needs.
@c Set smallbook if printing in smallbook format so the example of the
@c smallbook font is actually written using smallbook; in bigbook, a kludge
@c is used for TeX output. Do this through the -t option to texi2dvi,
@c so this same source can be used for other paper sizes as well.
@c smallbook
@c set smallbook
@c @@clear smallbook
@c If you like blank pages. Can add through texi2dvi -t.
@c setchapternewpage odd
@c Currently undocumented command, 5 December 1993:
@c nwnode (Same as node, but no warnings; for `makeinfo'.)
@ifinfo
This file documents Texinfo, a documentation system that can produce
both online information and a printed manual from a single source file.
Copyright (C) 1988, 90, 91, 92, 93, 95, 96, 97, 98, 99
Free Software Foundation, Inc.
This edition is for Texinfo version @value{VERSION}, @value{UPDATED}.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
@ignore
Permission is granted to process this file through TeX and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).
@end ignore
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.
Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by the Free Software Foundation.
@end ifinfo
@shorttitlepage Texinfo
@titlepage
@c use the new format for titles
@title Texinfo
@subtitle The GNU Documentation Format
@subtitle for Texinfo version @value{VERSION}, @value{UPDATED}
@author Robert J. Chassell
@author Richard M. Stallman
@c Include the Distribution inside the titlepage so
@c that headings are turned off.
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1988, 90, 91, 92, 93, 95, 96, 97, 98, 99
Free Software Foundation, Inc.
This manual is for Texinfo version @value{VERSION}, @value{UPDATED}.
Published by the Free Software Foundation @*
59 Temple Place Suite 330 @*
Boston, MA 02111-1307 @*
USA @*
ISBN 1-882114-67-1 @c for version 4.0, September 1999.
@c ISBN 1-882114-65-5 @c for version 3.12, March 1998.
@c ISBN 1-882114-63-9 is for edition 2.20 of 28 February 1995
@c ISBN 1-882114-64-7 is for edition 2.24 of November 1996.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.
Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by the Free Software Foundation.
@sp 2
Cover art by Etienne Suvasa.
@end titlepage
@summarycontents
@contents
@ifnottex
@node Top
@top Texinfo
Texinfo is a documentation system that uses a single source file to
produce both online information and printed output.
The first part of this master menu lists the major nodes in this Info
document, including the @@-command and concept indices. The rest of
the menu lists all the lower level nodes in the document.
This is Edition @value{VERSION} of the Texinfo manual, updated @value{UPDATED}.
@end ifnottex
@menu
* Copying:: Your rights.
* Overview:: Texinfo in brief.
* Texinfo Mode:: How to use Texinfo mode.
* Beginning a File:: What is at the beginning of a Texinfo file?
* Ending a File:: What is at the end of a Texinfo file?
* Structuring:: How to create chapters, sections, subsections,
appendices, and other parts.
* Nodes:: How to write nodes.
* Menus:: How to write menus.
* Cross References:: How to write cross references.
* Marking Text:: How to mark words and phrases as code,
keyboard input, meta-syntactic
variables, and the like.
* Quotations and Examples:: How to write quotations, examples, etc.
* Lists and Tables:: How to write lists and tables.
* Indices:: How to create indices.
* Insertions:: How to insert @@-signs, braces, etc.
* Breaks:: How to force and prevent line and page breaks.
* Definition Commands:: How to describe functions and the like
in a uniform manner.
* Conditionals:: How to specify text for either @TeX{} or Info.
* Internationalization::
* Defining New Texinfo Commands::
* Hardcopy:: How to convert a Texinfo file to a file
for printing and how to print that file.
* Creating and Installing Info Files::
* Command List:: All the Texinfo @@-commands.
* Tips:: Hints on how to write a Texinfo document.
* Sample Texinfo File:: A sample Texinfo file to look at.
* Sample Permissions:: Tell readers they have the right to copy
and distribute.
* Include Files:: How to incorporate other Texinfo files.
* Headings:: How to write page headings and footings.
* Catching Mistakes:: How to find formatting mistakes.
* Refilling Paragraphs:: All about paragraph refilling.
* Command Syntax:: A description of @@-Command syntax.
* Obtaining TeX:: How to Obtain @TeX{}.
* Command and Variable Index:: A menu containing commands and variables.
* Concept Index:: A menu covering many topics.
@detailmenu
--- The Detailed Node Listing ---
Overview of Texinfo
* Reporting Bugs:: Submitting effective bug reports.
* Using Texinfo:: Create printed or online output.
* Info Files:: What is an Info file?
* Printed Books:: Characteristics of a printed book or manual.
* Formatting Commands:: @@-commands are used for formatting.
* Conventions:: General rules for writing a Texinfo file.
* Comments:: Writing comments and ignored text in general.
* Minimum:: What a Texinfo file must have.
* Six Parts:: Usually, a Texinfo file has six parts.
* Short Sample:: A short sample Texinfo file.
* Acknowledgements and History:: Contributors and genesis.
Using Texinfo Mode
* Texinfo Mode Overview:: How Texinfo mode can help you.
* Emacs Editing:: Texinfo mode adds to GNU Emacs' general
purpose editing features.
* Inserting:: How to insert frequently used @@-commands.
* Showing the Structure:: How to show the structure of a file.
* Updating Nodes and Menus:: How to update or create new nodes and menus.
* Info Formatting:: How to format for Info.
* Printing:: How to format and print part or all of a file.
* Texinfo Mode Summary:: Summary of all the Texinfo mode commands.
Updating Nodes and Menus
* Updating Commands:: Five major updating commands.
* Updating Requirements:: How to structure a Texinfo file for
using the updating command.
* Other Updating Commands:: How to indent descriptions, insert
missing nodes lines, and update
nodes in sequence.
Beginning a Texinfo File
* Four Parts:: Four parts begin a Texinfo file.
* Sample Beginning:: Here is a sample beginning for a Texinfo file.
* Header:: The very beginning of a Texinfo file.
* Info Summary and Permissions:: Summary and copying permissions for Info.
* Titlepage & Copyright Page:: Creating the title and copyright pages.
* The Top Node:: Creating the `Top' node and master menu.
* Software Copying Permissions:: Ensure that you and others continue to
have the right to use and share software.
The Texinfo File Header
* First Line:: The first line of a Texinfo file.
* Start of Header:: Formatting a region requires this.
* setfilename:: Tell Info the name of the Info file.
* settitle:: Create a title for the printed work.
* setchapternewpage:: Start chapters on right-hand pages.
* paragraphindent:: Specify paragraph indentation.
* exampleindent:: Specify environment indentation.
* End of Header:: Formatting a region requires this.
The Title and Copyright Pages
* titlepage:: Create a title for the printed document.
* titlefont center sp:: The @code{@@titlefont}, @code{@@center},
and @code{@@sp} commands.
* title subtitle author:: The @code{@@title}, @code{@@subtitle},
and @code{@@author} commands.
* Copyright & Permissions:: How to write the copyright notice and
include copying permissions.
* end titlepage:: Turn on page headings after the title and
copyright pages.
* headings on off:: An option for turning headings on and off
and double or single sided printing.
The `Top' Node and Master Menu
* Title of Top Node:: Sketch what the file is about.
* Master Menu Parts:: A master menu has three or more parts.
Ending a Texinfo File
* Printing Indices & Menus:: How to print an index in hardcopy and
generate index menus in Info.
* Contents:: How to create a table of contents.
* File End:: How to mark the end of a file.
Chapter Structuring
* Tree Structuring:: A manual is like an upside down tree @dots{}
* Structuring Command Types:: How to divide a manual into parts.
* makeinfo top:: The @code{@@top} command, part of the `Top' node.
* chapter::
* unnumbered & appendix::
* majorheading & chapheading::
* section::
* unnumberedsec appendixsec heading::
* subsection::
* unnumberedsubsec appendixsubsec subheading::
* subsubsection:: Commands for the lowest level sections.
* Raise/lower sections:: How to change commands' hierarchical level.
Nodes
* Two Paths:: Different commands to structure
Info output and printed output.
* Node Menu Illustration:: A diagram, and sample nodes and menus.
* node:: Creating nodes, in detail.
* makeinfo Pointer Creation:: Letting makeinfo determine node pointers.
* anchor:: Defining arbitrary cross-reference targets.
The @code{@@node} Command
* Node Names:: How to choose node and pointer names.
* Writing a Node:: How to write an @code{@@node} line.
* Node Line Tips:: Keep names short.
* Node Line Requirements:: Keep names unique, without @@-commands.
* First Node:: How to write a `Top' node.
* makeinfo top command:: How to use the @code{@@top} command.
* Top Node Summary:: Write a brief description for readers.
Menus
* Menu Location:: Put a menu in a short node.
* Writing a Menu:: What is a menu?
* Menu Parts:: A menu entry has three parts.
* Less Cluttered Menu Entry:: Two part menu entry.
* Menu Example:: Two and three part menu entries.
* Other Info Files:: How to refer to a different Info file.
Cross References
* References:: What cross references are for.
* Cross Reference Commands:: A summary of the different commands.
* Cross Reference Parts:: A cross reference has several parts.
* xref:: Begin a reference with `See' @dots{}
* Top Node Naming:: How to refer to the beginning of another file.
* ref:: A reference for the last part of a sentence.
* pxref:: How to write a parenthetical cross reference.
* inforef:: How to refer to an Info-only file.
* uref:: How to refer to a uniform resource locator.
@code{@@xref}
* Reference Syntax:: What a reference looks like and requires.
* One Argument:: @code{@@xref} with one argument.
* Two Arguments:: @code{@@xref} with two arguments.
* Three Arguments:: @code{@@xref} with three arguments.
* Four and Five Arguments:: @code{@@xref} with four and five arguments.
Marking Words and Phrases
* Indicating:: How to indicate definitions, files, etc.
* Emphasis:: How to emphasize text.
Indicating Definitions, Commands, etc.
* Useful Highlighting:: Highlighting provides useful information.
* code:: Indicating program code.
* kbd:: Showing keyboard input.
* key:: Specifying keys.
* samp:: Showing a literal sequence of characters.
* var:: Indicating metasyntactic variables.
* env:: Indicating environment variables.
* file:: Indicating file names.
* command:: Indicating command names.
* option:: Indicating option names.
* dfn:: Specifying definitions.
* cite:: Referring to books not in the Info system.
* acronym:: Indicating acronyms.
* url:: Indicating a World Wide Web reference.
* email:: Indicating an electronic mail address.
Emphasizing Text
* emph & strong:: How to emphasize text in Texinfo.
* Smallcaps:: How to use the small caps font.
* Fonts:: Various font commands for printed output.
Quotations and Examples
* Block Enclosing Commands:: Use different constructs for
different purposes.
* quotation:: How to write a quotation.
* example:: How to write an example in a fixed-width font.
* noindent:: How to prevent paragraph indentation.
* lisp:: How to illustrate Lisp code.
* small:: Forms for @code{@@smallbook}.
* display:: How to write an example in the current font.
* format:: How to write an example that does not narrow
the margins.
* exdent:: How to undo the indentation of a line.
* flushleft & flushright:: How to push text flushleft or flushright.
* cartouche:: How to draw cartouches around examples.
Lists and Tables
* Introducing Lists:: Texinfo formats lists for you.
* itemize:: How to construct a simple list.
* enumerate:: How to construct a numbered list.
* Two-column Tables:: How to construct a two-column table.
* Multi-column Tables:: How to construct generalized tables.
Making a Two-column Table
* table:: How to construct a two-column table.
* ftable vtable:: Automatic indexing for two-column tables.
* itemx:: How to put more entries in the first column.
Multi-column Tables
* Multitable Column Widths:: Defining multitable column widths.
* Multitable Rows:: Defining multitable rows, with examples.
Indices
* Index Entries:: Choose different words for index entries.
* Predefined Indices:: Use different indices for different kinds
of entry.
* Indexing Commands:: How to make an index entry.
* Combining Indices:: How to combine indices.
* New Indices:: How to define your own indices.
Combining Indices
* syncodeindex:: How to merge two indices, using @code{@@code}
font for the merged-from index.
* synindex:: How to merge two indices, using the
default font of the merged-to index.
Special Insertions
* Braces Atsigns:: How to insert braces, @samp{@@}.
* Inserting Space:: How to insert the right amount of space
within a sentence.
* Inserting Accents:: How to insert accents and special characters.
* Dots Bullets:: How to insert dots and bullets.
* TeX and copyright:: How to insert the @TeX{} logo
and the copyright symbol.
* pounds:: How to insert the pounds currency symbol.
* minus:: How to insert a minus sign.
* math:: How to format a mathematical expression.
* Glyphs:: How to indicate results of evaluation,
expansion of macros, errors, etc.
* Footnotes:: How to include footnotes.
* Images:: How to include graphics.
Inserting @@ and Braces
* Inserting An Atsign:: How to insert @samp{@@}.
* Inserting Braces:: How to insert @samp{@{} and @samp{@}}.
Inserting Space
* Not Ending a Sentence:: Sometimes a . doesn't end a sentence.
* Ending a Sentence:: Sometimes it does.
* Multiple Spaces:: Inserting multiple spaces.
* dmn:: How to format a dimension.
Inserting Ellipsis, Dots, and Bullets
* dots:: How to insert dots @dots{}
* bullet:: How to insert a bullet.
Inserting @TeX{} and the Copyright Symbol
* tex:: How to insert the @TeX{} logo.
* copyright symbol:: How to use @code{@@copyright}@{@}.
Glyphs for Examples
* Glyphs Summary::
* result:: How to show the result of expression.
* expansion:: How to indicate an expansion.
* Print Glyph:: How to indicate printed output.
* Error Glyph:: How to indicate an error message.
* Equivalence:: How to indicate equivalence.
* Point Glyph:: How to indicate the location of point.
Glyphs Summary
* result::
* expansion::
* Print Glyph::
* Error Glyph::
* Equivalence::
* Point Glyph::
Footnotes
* Footnote Commands:: How to write a footnote in Texinfo.
* Footnote Styles:: Controlling how footnotes appear in Info.
Making and Preventing Breaks
* Break Commands:: Cause and prevent splits.
* Line Breaks:: How to force a single line to use two lines.
* - and hyphenation:: How to tell TeX about hyphenation points.
* w:: How to prevent unwanted line breaks.
* sp:: How to insert blank lines.
* page:: How to force the start of a new page.
* group:: How to prevent unwanted page breaks.
* need:: Another way to prevent unwanted page breaks.
Definition Commands
* Def Cmd Template:: How to structure a description using a
definition command.
* Optional Arguments:: How to handle optional and repeated arguments.
* deffnx:: How to group two or more `first' lines.
* Def Cmds in Detail:: All the definition commands.
* Def Cmd Conventions:: Conventions for writing definitions.
* Sample Function Definition::
The Definition Commands
* Functions Commands:: Commands for functions and similar entities.
* Variables Commands:: Commands for variables and similar entities.
* Typed Functions:: Commands for functions in typed languages.
* Typed Variables:: Commands for variables in typed languages.
* Abstract Objects:: Commands for object-oriented programming.
* Data Types:: The definition command for data types.
Conditionally Visible Text
* Conditional Commands:: Specifying text for HTML, Info, or @TeX{}.
* Conditional Not Commands:: Specifying text for not HTML, Info, or @TeX{}.
* Raw Formatter Commands:: Using raw @TeX{} or HTML commands.
* set clear value:: Designating which text to format (for
all output formats); and how to set a
flag to a string that you can insert.
@code{@@set}, @code{@@clear}, and @code{@@value}
* ifset ifclear:: Format a region if a flag is set.
* set value:: Expand a flag variable to a string.
* value Example:: An easy way to update edition information.
Internationalization
* documentlanguage:: Declaring the current language.
* documentencoding:: Declaring the input encoding.
Defining New Texinfo Commands
* Defining Macros:: Defining and undefining new commands.
* Invoking Macros:: Using a macro, once you've defined it.
* Macro Details:: Beyond basic macro usage.
* alias:: Command aliases.
* definfoenclose:: Customized highlighting.
Formatting and Printing Hardcopy
* Use TeX:: Use @TeX{} to format for hardcopy.
* Format with tex/texindex:: How to format with explicit shell commands.
* Format with texi2dvi:: A simpler way to format.
* Print with lpr:: How to print.
* Within Emacs:: How to format and print from an Emacs shell.
* Texinfo Mode Printing:: How to format and print in Texinfo mode.
* Compile-Command:: How to print using Emacs's compile command.
* Requirements Summary:: @TeX{} formatting requirements summary.
* Preparing for TeX:: What to do before you use @TeX{}.
* Overfull hboxes:: What are and what to do with overfull hboxes.
* smallbook:: How to print small format books and manuals.
* A4 Paper:: How to print on European A4 paper.
* pagesizes:: How to print with customized page sizes.
* Cropmarks and Magnification:: How to print marks to indicate the size
of pages and how to print scaled up output.
* PDF Output:: Portable Document Format output.
Creating and Installing Info Files
* Creating an Info File::
* Install an Info File::
Creating an Info File
* makeinfo advantages:: @code{makeinfo} provides better error checking.
* Invoking makeinfo:: How to run @code{makeinfo} from a shell.
* makeinfo options:: Specify fill-column and other options.
* Pointer Validation:: How to check that pointers point somewhere.
* makeinfo in Emacs:: How to run @code{makeinfo} from Emacs.
* texinfo-format commands:: Two Info formatting commands written
in Emacs Lisp are an alternative
to @code{makeinfo}.
* Batch Formatting:: How to format for Info in Emacs Batch mode.
* Tag and Split Files:: How tagged and split files help Info
to run better.
* makeinfo html:: Generating HTML output.
Installing an Info File
* Directory File:: The top level menu for all Info files.
* New Info File:: Listing a new info file.
* Other Info Directories:: How to specify Info files that are
located in other directories.
* Installing Dir Entries:: How to specify what menu entry to add
to the Info directory.
* Invoking install-info:: @code{install-info} options.
Sample Permissions
* Inserting Permissions:: How to put permissions in your document.
* ifinfo Permissions:: Sample @samp{ifinfo} copying permissions.
* Titlepage Permissions:: Sample Titlepage copying permissions.
Include Files
* Using Include Files:: How to use the @code{@@include} command.
* texinfo-multiple-files-update:: How to create and update nodes and
menus when using included files.
* Include File Requirements:: What @code{texinfo-multiple-files-update} expects.
* Sample Include File:: A sample outer file with included files
within it; and a sample included file.
* Include Files Evolution:: How use of the @code{@@include} command
has changed over time.
Page Headings
* Headings Introduced:: Conventions for using page headings.
* Heading Format:: Standard page heading formats.
* Heading Choice:: How to specify the type of page heading.
* Custom Headings:: How to create your own headings and footings.
Formatting Mistakes
* makeinfo Preferred:: @code{makeinfo} finds errors.
* Debugging with Info:: How to catch errors with Info formatting.
* Debugging with TeX:: How to catch errors with @TeX{} formatting.
* Using texinfo-show-structure:: How to use @code{texinfo-show-structure}.
* Using occur:: How to list all lines containing a pattern.
* Running Info-Validate:: How to find badly referenced nodes.
Finding Badly Referenced Nodes
* Using Info-validate:: How to run @code{Info-validate}.
* Unsplit:: How to create an unsplit file.
* Tagifying:: How to tagify a file.
* Splitting:: How to split a file manually.
@end detailmenu
@end menu
@c Reward readers for getting to the end of the menu :).
@c Contributed by Arnold Robbins.
@quotation
Documentation is like sex: when it is good, it is very, very good; and
when it is bad, it is better than nothing.
---Dick Brandon
@end quotation
@node Copying
@unnumbered Texinfo Copying Conditions
@cindex Copying conditions
@cindex Conditions for copying Texinfo
The programs currently being distributed that relate to Texinfo include
portions of GNU Emacs, plus other separate programs (including
@code{makeinfo}, @code{info}, @code{texindex}, and @file{texinfo.tex}).
These programs are @dfn{free}; this means that everyone is free to use
them and free to redistribute them on a free basis. The Texinfo-related
programs are not in the public domain; they are copyrighted and there
are restrictions on their distribution, but these restrictions are
designed to permit everything that a good cooperating citizen would want
to do. What is not allowed is to try to prevent others from further
sharing any version of these programs that they might get from
you.@refill
Specifically, we want to make sure that you have the right to give
away copies of the programs that relate to Texinfo, that you receive
source code or else can get it if you want it, that you can change these
programs or use pieces of them in new free programs, and that you know
you can do these things.@refill
To make sure that everyone has such rights, we have to forbid you to
deprive anyone else of these rights. For example, if you distribute
copies of the Texinfo related programs, you must give the recipients all
the rights that you have. You must make sure that they, too, receive or
can get the source code. And you must tell them their rights.@refill
Also, for our own protection, we must make certain that everyone finds
out that there is no warranty for the programs that relate to Texinfo.
If these programs are modified by someone else and passed on, we want
their recipients to know that what they have is not what we distributed,
so that any problems introduced by others will not reflect on our
reputation.@refill
The precise conditions of the licenses for the programs currently
being distributed that relate to Texinfo are found in the General Public
Licenses that accompany them.
@node Overview
@chapter Overview of Texinfo
@cindex Overview of Texinfo
@cindex Texinfo overview
@dfn{Texinfo}@footnote{The first syllable of ``Texinfo'' is pronounced
like ``speck'', not ``hex''. This odd pronunciation is derived from,
but is not the same as, the pronunciation of @TeX{}. In the word
@TeX{}, the @samp{X} is actually the Greek letter ``chi'' rather than
the English letter ``ex''. Pronounce @TeX{} as if the @samp{X} were the
last sound in the name `Bach'; but pronounce Texinfo as if the @samp{x}
were a `k'. Spell ``Texinfo'' with a capital ``T'' and the other
letters in lower case.} is a documentation system that uses a single
source file to produce both online information and printed output. This
means that instead of writing two different documents, one for the
online information and the other for a printed work, you need write only
one document. Therefore, when the work is revised, you need revise only
that one document.
@menu
* Reporting Bugs:: Submitting effective bug reports.
* Using Texinfo:: Create printed or online output.
* Info Files:: What is an Info file?
* Printed Books:: Characteristics of a printed book or manual.
* Formatting Commands:: @@-commands are used for formatting.
* Conventions:: General rules for writing a Texinfo file.
* Comments:: Writing comments and ignored text in general.
* Minimum:: What a Texinfo file must have.
* Six Parts:: Usually, a Texinfo file has six parts.
* Short Sample:: A short sample Texinfo file.
* Acknowledgements and History:: Contributors and genesis.
@end menu
@node Reporting Bugs
@section Reporting Bugs
@cindex Bugs, reporting
@cindex Suggestions for Texinfo, making
@cindex Reporting bugs
We welcome bug reports or suggestions for the Texinfo system, both
programs and documentation. Please email them to
@email{bug-texinfo@@gnu.org}. You can get the latest version of Texinfo
from @uref{ftp://ftp.gnu.org/gnu/texinfo/} and its mirrors worldwide.
@cindex Checklist for bug reports
For bug reports, please include enough information for the maintainers
to reproduce the problem. Generally speaking, that means:
@itemize @bullet
@item the version number of Texinfo and the program(s) or manual(s) involved.
@item hardware, operating system, and compiler versions.
@item any unusual options you gave to @command{configure}.
@item the contents of any input files necessary to reproduce the bug.
@item a description of the problem and samples of any erroneous output.
@item anything else that you think would be helpful.
@end itemize
When in doubt whether something is needed or not, include it. It's
better to include too much than to leave out something important.
Patches are most welcome; if possible, please make them with
@samp{@w{diff -c}} (@pxref{Top,, Overview, diffutils, Comparing and
Merging Files}) and include @file{ChangeLog} entries (@pxref{Change
Log,,, emacs, The GNU Emacs Manual}).
When sending email, please do not encode or split the messages in any
way if possible; it's much easier to deal with one plain text message,
however large, than many small ones.
@uref{ftp://ftp.gnu.org/gnu/sharutils/, GNU shar} is a convenient way of
packaging multiple and/or binary files for email.
@node Using Texinfo
@section Using Texinfo
@cindex Using Texinfo in general
@cindex Texinfo, introduction to
@cindex Introduction to Texinfo
Using Texinfo, you can create a printed document with the normal
features of a book, including chapters, sections, cross references, and
indices. From the same Texinfo source file, you can create a
menu-driven, online Info file with nodes, menus, cross references, and
indices. You can also create from that same source file an HTML output
file suitable for use with a web browser. @cite{The GNU Emacs Manual}
is a good example of a Texinfo file, as is this manual.
To make a printed document, you process a Texinfo source file with the
@TeX{} typesetting program (but the Texinfo language is very different
from @TeX{}'s usual language, plain @TeX{}). This creates a DVI file
that you can typeset and print as a book or report (@pxref{Hardcopy}).
@pindex makeinfo
To output an Info file, process your Texinfo source with the
@code{makeinfo} utility or Emacs's @code{texinfo-format-buffer} command.
You can install the result in your Info tree (@pxref{Install an Info
File}).
To output an HTML file, process your Texinfo source with @code{makeinfo}
using the @samp{--html} option. You can (for example) install the
result on your web site.
@cindex Output formats, supporting more
@cindex Docbook output format
@cindex SGML-tools output format
If you are a programmer and would like to contribute to the GNU project
by implementing additional output formats for Texinfo, that would be
excellent. But please do not write a separate translator texi2foo for
your favorite format foo! That is the hard way to do the job, and makes
extra work in subsequent maintenance, since the Texinfo language is
continually being enhanced and updated. Instead, the best approach is
modify @code{makeinfo} to generate the new format, as it does now for
Info and HTML.
@TeX{} works with virtually all printers; Info works with virtually all
computer terminals; the HTML output works with virtually all web
browsers. Thus Texinfo can be used by almost any computer user.
@cindex Source file
A Texinfo source file is a plain @sc{ascii} file containing text and
@dfn{@@-commands} (words preceded by an @samp{@@}) that tell the
typesetting and formatting programs what to do. You may edit a Texinfo
file with any text editor; but it is especially convenient to use GNU
Emacs since that editor has a special mode, called Texinfo mode, that
provides various Texinfo-related features. (@xref{Texinfo Mode}.)
Before writing a Texinfo source file, you should learn about nodes,
menus, cross references, and the rest, for example by reading this
manual.
You can use Texinfo to create both online help and printed manuals;
moreover, Texinfo is freely redistributable. For these reasons, Texinfo
is the official documentation format of the GNU project. More
information is available at the @uref{http://www.gnu.org/doc/, GNU
documentation web page}.
@cindex Man page output, not supported
From time to time, proposals are made to generate traditional Unix man
pages from Texinfo source. This is not likely to ever be supported,
because man pages have a very strict conventional format. Merely
enhancing @command{makeinfo} to output troff format would be
insufficient. Generating a good man page therefore requires a
completely different source than the typical Texinfo applications of
generating a good user manual or a good reference manual. This makes
generating man pages incompatible with the Texinfo design goal of not
having to document the same information in different ways for different
output formats. You might as well just write the man page directly.
@pindex help2man
@cindex O'Dea, Brendan
If you wish to support man pages, the program @command{help2man} may be
useful; it generates a traditional man page from the @samp{--help}
output of a program. In fact, this is currently used to generate man
pages for the Texinfo programs themselves. It is free software written
by Brendan O'Dea, available from
@uref{http://www.ozemail.com.au/~bod/help2man.tar.gz}.
@node Info Files
@section Info files
@cindex Info files
An Info file is a Texinfo file formatted so that the Info documentation
reading program can operate on it. (@code{makeinfo}
and @code{texinfo-format-buffer} are two commands that convert a Texinfo file
into an Info file.)@refill
Info files are divided into pieces called @dfn{nodes}, each of which
contains the discussion of one topic. Each node has a name, and
contains both text for the user to read and pointers to other nodes,
which are identified by their names. The Info program displays one node
at a time, and provides commands with which the user can move to other
related nodes.@refill
@ifinfo
@inforef{Top, info, info}, for more information about using Info.@refill
@end ifinfo
Each node of an Info file may have any number of child nodes that
describe subtopics of the node's topic. The names of child
nodes are listed in a @dfn{menu} within the parent node; this
allows you to use certain Info commands to move to one of the child
nodes. Generally, an Info file is organized like a book. If a node
is at the logical level of a chapter, its child nodes are at the level
of sections; likewise, the child nodes of sections are at the level
of subsections.@refill
All the children of any one parent are linked together in a
bidirectional chain of `Next' and `Previous' pointers. The `Next'
pointer provides a link to the next section, and the `Previous' pointer
provides a link to the previous section. This means that all the nodes
that are at the level of sections within a chapter are linked together.
Normally the order in this chain is the same as the order of the
children in the parent's menu. Each child node records the parent node
name as its `Up' pointer. The last child has no `Next' pointer, and the
first child has the parent both as its `Previous' and as its `Up'
pointer.@footnote{In some documents, the first child has no `Previous'
pointer. Occasionally, the last child has the node name of the next
following higher level node as its `Next' pointer.}@refill
The book-like structuring of an Info file into nodes that correspond
to chapters, sections, and the like is a matter of convention, not a
requirement. The `Up', `Previous', and `Next' pointers of a node can
point to any other nodes, and a menu can contain any other nodes.
Thus, the node structure can be any directed graph. But it is usually
more comprehensible to follow a structure that corresponds to the
structure of chapters and sections in a printed book or report.@refill
In addition to menus and to `Next', `Previous', and `Up' pointers, Info
provides pointers of another kind, called references, that can be
sprinkled throughout the text. This is usually the best way to
represent links that do not fit a hierarchical structure.@refill
Usually, you will design a document so that its nodes match the
structure of chapters and sections in the printed output. But
occasionally there are times when this is not right for the material
being discussed. Therefore, Texinfo uses separate commands to specify
the node structure for the Info file and the section structure for the
printed output.@refill
Generally, you enter an Info file through a node that by convention is
named `Top'. This node normally contains just a brief summary of the
file's purpose, and a large menu through which the rest of the file is
reached. From this node, you can either traverse the file
systematically by going from node to node, or you can go to a specific
node listed in the main menu, or you can search the index menus and then
go directly to the node that has the information you want. Alternatively,
with the standalone Info program, you can specify specific menu items on
the command line (@pxref{Top,,, info, Info}).
If you want to read through an Info file in sequence, as if it were a
printed manual, you can hit @key{SPC} repeatedly, or you get the whole
file with the advanced Info command @kbd{g *}. (@inforef{Expert,
Advanced Info commands, info}.)@refill
@c !!! dir file may be located in one of many places:
@c /usr/local/emacs/info mentioned in info.c DEFAULT_INFOPATH
@c /usr/local/lib/emacs/info mentioned in info.c DEFAULT_INFOPATH
@c /usr/gnu/info mentioned in info.c DEFAULT_INFOPATH
@c /usr/local/info
@c /usr/local/lib/info
The @file{dir} file in the @file{info} directory serves as the
departure point for the whole Info system. From it, you can reach the
`Top' nodes of each of the documents in a complete Info system.@refill
@cindex URI syntax for Info
If you wish to refer to an Info file in a URI, you can use the
(unofficial) syntax exemplified in the following. This works with
Emacs/W3, for example:
@example
info:///usr/info/emacs#Dissociated%20Press
info:emacs#Dissociated%20Press
info://localhost/usr/info/emacs#Dissociated%20Press
@end example
The @command{info} program itself does not follow URI's of any kind.
@node Printed Books
@section Printed Books
@cindex Printed book and manual characteristics
@cindex Manual characteristics, printed
@cindex Book characteristics, printed
@cindex Texinfo printed book characteristics
@cindex Characteristics, printed books or manuals
@cindex Knuth, Donald
A Texinfo file can be formatted and typeset as a printed book or manual.
To do this, you need @TeX{}, a powerful, sophisticated typesetting
program written by Donald Knuth.@footnote{You can also use the
@pindex texi2roff@r{, unsupported software}
@uref{ftp://tug.org/texi2roff.tar.gz, @code{texi2roff}} program if you
do not have @TeX{}; since Texinfo is designed for use with @TeX{},
@code{texi2roff} is not described here. @code{texi2roff} is not part of
the standard GNU distribution and is not maintained or up-to-date with
all the Texinfo features described in this manual.}
A Texinfo-based book is similar to any other typeset, printed work: it
can have a title page, copyright page, table of contents, and preface,
as well as chapters, numbered or unnumbered sections and subsections,
page headers, cross references, footnotes, and indices.@refill
You can use Texinfo to write a book without ever having the intention
of converting it into online information. You can use Texinfo for
writing a printed novel, and even to write a printed memo, although
this latter application is not recommended since electronic mail is so
much easier.@refill
@TeX{} is a general purpose typesetting program. Texinfo provides a
file @file{texinfo.tex} that contains information (definitions or
@dfn{macros}) that @TeX{} uses when it typesets a Texinfo file.
(@file{texinfo.tex} tells @TeX{} how to convert the Texinfo @@-commands
to @TeX{} commands, which @TeX{} can then process to create the typeset
document.) @file{texinfo.tex} contains the specifications for printing
a document. You can get the latest version of @file{texinfo.tex} from
@uref{ftp://ftp.gnu.org/gnu/texinfo.tex}.
Most often, documents are printed on 8.5 inch by 11 inch
pages (216@dmn{mm} by 280@dmn{mm}; this is the default size), but you
can also print for 7 inch by 9.25 inch pages (178@dmn{mm} by
235@dmn{mm}; the @code{@@smallbook} size) or on European A4 size paper
(@code{@@afourpaper}). (@xref{smallbook, , Printing ``Small'' Books}.
Also, see @ref{A4 Paper, ,Printing on A4 Paper}.)@refill
By changing the parameters in @file{texinfo.tex}, you can change the
size of the printed document. In addition, you can change the style in
which the printed document is formatted; for example, you can change the
sizes and fonts used, the amount of indentation for each paragraph, the
degree to which words are hyphenated, and the like. By changing the
specifications, you can make a book look dignified, old and serious, or
light-hearted, young and cheery.@refill
@TeX{} is freely distributable. It is written in a superset of Pascal
called WEB and can be compiled either in Pascal or (by using a
conversion program that comes with the @TeX{} distribution) in C.
(@xref{TeX Mode, ,@TeX{} Mode, emacs, The GNU Emacs Manual}, for information
about @TeX{}.)@refill
@TeX{} is very powerful and has a great many features. Because a
Texinfo file must be able to present information both on a
character-only terminal in Info form and in a typeset book, the
formatting commands that Texinfo supports are necessarily
limited.@refill
To get a copy of @TeX{}, see
@ref{Obtaining TeX, , How to Obtain @TeX{}}.
@node Formatting Commands, Conventions, Printed Books, Overview
@comment node-name, next, previous, up
@section @@-commands
@cindex @@-commands
@cindex Formatting commands
In a Texinfo file, the commands that tell @TeX{} how to typeset the
printed manual and tell @code{makeinfo} and
@code{texinfo-format-buffer} how to create an Info file are preceded
by @samp{@@}; they are called @dfn{@@-commands}. For example,
@code{@@node} is the command to indicate a node and @code{@@chapter}
is the command to indicate the start of a chapter.@refill
@quotation
@strong{Please note:} All the @@-commands, with the exception of the
@code{@@TeX@{@}} command, must be written entirely in lower
case.@refill
@end quotation
The Texinfo @@-commands are a strictly limited set of constructs. The
strict limits make it possible for Texinfo files to be understood both
by @TeX{} and by the code that converts them into Info files. You can
display Info files on any terminal that displays alphabetic and
numeric characters. Similarly, you can print the output generated by
@TeX{} on a wide variety of printers.@refill
Depending on what they do or what arguments@footnote{The word
@dfn{argument} comes from the way it is used in mathematics and does not
refer to a dispute between two people; it refers to the information
presented to the command. According to the @cite{Oxford English
Dictionary}, the word derives from the Latin for @dfn{to make clear,
prove}; thus it came to mean `the evidence offered as proof', which is
to say, `the information offered', which led to its mathematical
meaning. In its other thread of derivation, the word came to mean `to
assert in a manner against which others may make counter assertions',
which led to the meaning of `argument' as a dispute.} they take, you
need to write @@-commands on lines of their own or as part of
sentences:
@itemize @bullet
@item
Write a command such as @code{@@noindent} at the beginning of a line as
the only text on the line. (@code{@@noindent} prevents the beginning of
the next line from being indented as the beginning of a
paragraph.)@refill
@item
Write a command such as @code{@@chapter} at the beginning of a line
followed by the command's arguments, in this case the chapter title, on
the rest of the line. (@code{@@chapter} creates chapter titles.)@refill
@item
Write a command such as @code{@@dots@{@}} wherever you wish but usually
within a sentence. (@code{@@dots@{@}} creates dots @dots{})@refill
@item
Write a command such as @code{@@code@{@var{sample-code}@}} wherever you
wish (but usually within a sentence) with its argument,
@var{sample-code} in this example, between the braces. (@code{@@code}
marks text as being code.)@refill
@item
Write a command such as @code{@@example} on a line of its own; write the
body-text on following lines; and write the matching @code{@@end}
command, @code{@@end example} in this case, at the on a line of its own
after the body-text. (@code{@@example} @dots{} @code{@@end example}
indents and typesets body-text as an example.) It's usually ok to
indent environment commands like this, but in complicated and
hard-to-define circumstances the extra spaces cause extra space to
appear in the output, so beware.
@end itemize
@noindent
@cindex Braces, when to use
As a general rule, a command requires braces if it mingles among other
text; but it does not need braces if it starts a line of its own. The
non-alphabetic commands, such as @code{@@:}, are exceptions to the rule;
they do not need braces.@refill
As you gain experience with Texinfo, you will rapidly learn how to
write the different commands: the different ways to write commands
make it easier to write and read Texinfo files than if all commands
followed exactly the same syntax. (For details about @@-command
syntax, see @ref{Command Syntax, , @@-Command Syntax}.)@refill
@node Conventions, Comments, Formatting Commands, Overview
@comment node-name, next, previous, up
@section General Syntactic Conventions
@cindex General syntactic conventions
@cindex Syntactic conventions
@cindex Conventions, syntactic
This section describes the general conventions used in all Texinfo documents.
@itemize @bullet
@item
All printable @sc{ascii} characters except @samp{@@}, @samp{@{} and
@samp{@}} can appear in a Texinfo file and stand for themselves.
@samp{@@} is the escape character which introduces commands.
@samp{@{} and @samp{@}} should be used only to surround arguments to
certain commands. To put one of these special characters into the
document, put an @samp{@@} character in front of it, like this:
@samp{@@@@}, @samp{@@@{}, and @samp{@@@}}.@refill
@item
@ifinfo
It is customary in @TeX{} to use doubled single-quote characters to
begin and end quotations: ` ` and ' ' (but without a space between the
two single-quote characters). This convention should be followed in
Texinfo files. @TeX{} converts doubled single-quote characters to
left- and right-hand doubled quotation marks and Info converts doubled
single-quote characters to @sc{ascii} double-quotes: ` ` and ' ' to " .@refill
@end ifinfo
@iftex
It is customary in @TeX{} to use doubled single-quote characters to
begin and end quotations: @w{@t{ `` }} and @w{@t{ '' }}. This
convention should be followed in Texinfo files. @TeX{} converts
doubled single-quote characters to left- and right-hand doubled
quotation marks, ``like this'', and Info converts doubled single-quote
characters to @sc{ascii} double-quotes: @w{@t{ `` }} and
@w{@t{ '' }} to @w{@t{ " }}.@refill
@end iftex
@item
Use three hyphens in a row, @samp{---}, for a dash---like this. In
@TeX{}, a single or double hyphen produces a printed dash that is
shorter than the usual typeset dash. Info reduces three hyphens to two
for display on the screen.
@item
To prevent a paragraph from being indented in the printed manual, put
the command @code{@@noindent} on a line by itself before the
paragraph.@refill
@item
If you mark off a region of the Texinfo file with the @code{@@iftex}
and @w{@code{@@end iftex}} commands, that region will appear only in
the printed copy; in that region, you can use certain commands
borrowed from plain @TeX{} that you cannot use in Info. Likewise, if
you mark off a region with the @code{@@ifinfo} and @code{@@end ifinfo}
commands, that region will appear only in the Info file; in that
region, you can use Info commands that you cannot use in @TeX{}.
Similarly for @code{@@ifhtml @dots{} @@end ifhtml},
@code{@@ifnothtml @dots{} @@end ifnothtml},
@code{@@ifnotinfo @dots{} @@end ifnotinfo},
@code{@@ifnottex @dots{} @@end ifnottex}.
@xref{Conditionals}.
@end itemize
@cindex Tabs; don't use!
@quotation
@strong{Caution:} Do not use tabs in a Texinfo file! @TeX{} uses
variable-width fonts, which means that it cannot predefine a tab to work
in all circumstances. Consequently, @TeX{} treats tabs like single
spaces, and that is not what they look like. Furthermore,
@code{makeinfo} does nothing special with tabs, and thus a tab character
in your input file may appear differently in the output.
@noindent
To avoid this problem, Texinfo mode causes GNU Emacs to insert multiple
spaces when you press the @key{TAB} key.@refill
@noindent
Also, you can run @code{untabify} in Emacs to convert tabs in a region
to multiple spaces.@refill
@end quotation
@node Comments, Minimum, Conventions, Overview
@comment node-name, next, previous, up
@section Comments
You can write comments in a Texinfo file that will not appear in
either the Info file or the printed manual by using the
@code{@@comment} command (which may be abbreviated to @code{@@c}).
Such comments are for the person who revises the Texinfo file. All the
text on a line that follows either @code{@@comment} or @code{@@c} is a
comment; the rest of the line does not appear in either the Info file
or the printed manual. (Often, you can write the @code{@@comment} or
@code{@@c} in the middle of a line, and only the text that follows after
the @code{@@comment} or @code{@@c} command does not appear; but some
commands, such as @code{@@settitle} and @code{@@setfilename}, work on a
whole line. You cannot use @code{@@comment} or @code{@@c} in a line
beginning with such a command.)@refill
@cindex Comments
@findex comment
@findex c @r{(comment)}
You can write long stretches of text that will not appear in either
the Info file or the printed manual by using the @code{@@ignore} and
@code{@@end ignore} commands. Write each of these commands on a line
of its own, starting each command at the beginning of the line. Text
between these two commands does not appear in the processed output.
You can use @code{@@ignore} and @code{@@end ignore} for writing
comments. Often, @code{@@ignore} and @code{@@end ignore} is used
to enclose a part of the copying permissions that applies to the
Texinfo source file of a document, but not to the Info or printed
version of the document.@refill
@cindex Ignored text
@cindex Unprocessed text
@findex ignore
@c !!! Perhaps include this comment about ignore and ifset:
@ignore
Text enclosed by @code{@@ignore} or by failing @code{@@ifset} or
@code{@@ifclear} conditions is ignored in the sense that it will not
contribute to the formatted output. However, TeX and makeinfo must
still parse the ignored text, in order to understand when to
@emph{stop} ignoring text from the source file; that means that you
will still get error messages if you have invalid Texinfo markup
within ignored text.
@end ignore
@node Minimum, Six Parts, Comments, Overview
@comment node-name, next, previous, up
@section What a Texinfo File Must Have
@cindex Minimal Texinfo file (requirements)
@cindex Must have in Texinfo file
@cindex Required in Texinfo file
@cindex Texinfo file minimum
By convention, the names of Texinfo files end with one of the
extensions @file{.texinfo}, @file{.texi}, @file{.txi}, or @file{.tex}.
The longer extension is preferred since it describes more clearly to a
human reader the nature of the file. The shorter extensions are for
operating systems that cannot handle long file names.@refill
In order to be made into a printed manual and an Info file, a Texinfo
file @strong{must} begin with lines like this:@refill
@example
@group
\input texinfo
@@setfilename @var{info-file-name}
@@settitle @var{name-of-manual}
@end group
@end example
@noindent
The contents of the file follow this beginning, and then you @strong{must} end
a Texinfo file with a line like this:@refill
@example
@@bye
@end example
@findex input @r{(@TeX{} command)}
@noindent
The @samp{\input texinfo} line tells @TeX{} to use the
@file{texinfo.tex} file, which tells @TeX{} how to translate the Texinfo
@@-commands into @TeX{} typesetting commands. (Note the use of the
backslash, @samp{\}; this is correct for @TeX{}.) The
@samp{@@setfilename} line provides a name for the Info file and tells
@TeX{} to open auxiliary files. The @samp{@@settitle} line specifies a
title for the page headers (or footers) of the printed manual.@refill
The @code{@@bye} line at the end of the file on a line of its own tells
the formatters that the file is ended and to stop formatting.@refill
Usually, you will not use quite such a spare format, but will include
mode setting and start-of-header and end-of-header lines at the
beginning of a Texinfo file, like this:@refill
@example
@group
\input texinfo @@c -*-texinfo-*-
@@c %**start of header
@@setfilename @var{info-file-name}
@@settitle @var{name-of-manual}
@@c %**end of header
@end group
@end example
@noindent
In the first line, @samp{-*-texinfo-*-} causes Emacs to switch into
Texinfo mode when you edit the file.
The @code{@@c} lines which surround the @samp{@@setfilename} and
@samp{@@settitle} lines are optional, but you need them in order to
run @TeX{} or Info on just part of the file. (@xref{Start of Header},
for more information.)@refill
Furthermore, you will usually provide a Texinfo file with a title
page, indices, and the like. But the minimum, which can be useful
for short documents, is just the three lines at the beginning and the
one line at the end.@refill
@node Six Parts, Short Sample, Minimum, Overview
@comment node-name, next, previous, up
@section Six Parts of a Texinfo File
Generally, a Texinfo file contains more than the minimal
beginning and end---it usually contains six parts:@refill
@table @r
@item 1. Header
The @dfn{Header} names the file, tells @TeX{} which definitions' file to
use, and performs other ``housekeeping'' tasks.@refill
@item 2. Summary Description and Copyright
The @dfn{Summary Description and Copyright} segment describes the document
and contains the copyright notice and copying permissions for the Info
file. The segment must be enclosed between @code{@@ifinfo} and
@code{@@end ifinfo} commands so that the formatters place it only in the Info
file.@refill
@item 3. Title and Copyright
The @dfn{Title and Copyright} segment contains the title and copyright pages
and copying permissions for the printed manual. The segment must be
enclosed between @code{@@titlepage} and @code{@@end titlepage} commands.
The title and copyright page appear only in the printed @w{manual}.@refill
@item 4. `Top' Node and Master Menu
The @dfn{Master Menu} contains a complete menu of all the nodes in the whole
Info file. It appears only in the Info file, in the `Top' node.@refill
@item 5. Body
The @dfn{Body} of the document may be structured like a traditional book or
encyclopedia or it may be free form.@refill
@item 6. End
The @dfn{End} contains commands for printing indices and generating
the table of contents, and the @code{@@bye} command on a line of its
own.@refill
@end table
@node Short Sample
@section A Short Sample Texinfo File
@cindex Sample Texinfo file
Here is a complete but very short Texinfo file, in six parts. The first
three parts of the file, from @samp{\input texinfo} through to
@samp{@@end titlepage}, look more intimidating than they are. Most of
the material is standard boilerplate; when you write a manual, simply
insert the names for your own manual in this segment. (@xref{Beginning a
File}.)@refill
In the following, the sample text is @emph{indented}; comments on it are
not. The complete file, without any comments, is shown in
@ref{Sample Texinfo File}.
@subheading Part 1: Header
@noindent
The header does not appear in either the Info file or the
printed output. It sets various parameters, including the
name of the Info file and the title used in the header.
@example
@group
\input texinfo @@c -*-texinfo-*-
@@c %**start of header
@@setfilename sample.info
@@settitle Sample Document
@@setchapternewpage odd
@@c %**end of header
@end group
@end example
@subheading Part 2: Summary Description and Copyright
@noindent
The summary description and copyright segment does not
appear in the printed document.
@example
@group
@@ifinfo
This is a short example of a complete Texinfo file.
Copyright @@copyright@{@} 1990 Free Software Foundation, Inc.
@@end ifinfo
@end group
@end example
@subheading Part 3: Titlepage and Copyright
@noindent
The titlepage segment does not appear in the Info file.
@example
@group
@@titlepage
@@sp 10
@@comment The title is printed in a large font.
@@center @@titlefont@{Sample Title@}
@end group
@group
@@c The following two commands start the copyright page.
@@page
@@vskip 0pt plus 1filll
Copyright @@copyright@{@} 1990 Free Software Foundation, Inc.
@@end titlepage
@end group
@end example
@subheading Part 4: `Top' Node and Master Menu
@noindent
The `Top' node contains the master menu for the Info file.
Since a printed manual uses a table of contents rather than
a menu, the master menu appears only in the Info file.
@example
@group
@@node Top, First Chapter, , (dir)
@@comment node-name, next, previous, up
@end group
@end example
@example
@group
@@menu
* First Chapter:: The first chapter is the
only chapter in this sample.
* Concept Index:: This index has two entries.
@@end menu
@end group
@end example
@subheading Part 5: The Body of the Document
@noindent
The body segment contains all the text of the document, but not the
indices or table of contents. This example illustrates a node and a
chapter containing an enumerated list.@refill
@example
@group
@@node First Chapter, Concept Index, Top, Top
@@comment node-name, next, previous, up
@@chapter First Chapter
@@cindex Sample index entry
@end group
@group
This is the contents of the first chapter.
@@cindex Another sample index entry
@end group
@group
Here is a numbered list.
@@enumerate
@@item
This is the first item.
@@item
This is the second item.
@@end enumerate
@end group
@group
The @@code@{makeinfo@} and @@code@{texinfo-format-buffer@}
commands transform a Texinfo file such as this into
an Info file; and @@TeX@{@} typesets it for a printed
manual.
@end group
@end example
@subheading Part 6: The End of the Document
@noindent
The end segment contains commands for generating an index in a node and
unnumbered chapter of its own, (usually) for generating the table of
contents, and the @code{@@bye} command that marks the end of the
document.@refill
@example
@group
@@node Concept Index, , First Chapter, Top
@@unnumbered Concept Index
@end group
@group
@@printindex cp
@@contents
@@bye
@end group
@end example
@subheading The Results
Here is what the contents of the first chapter of the sample look like:
@sp 1
@need 700
@quotation
This is the contents of the first chapter.
Here is a numbered list.
@enumerate
@item
This is the first item.
@item
This is the second item.
@end enumerate
The @code{makeinfo} and @code{texinfo-format-buffer}
commands transform a Texinfo file such as this into
an Info file; and @TeX{} typesets it for a printed
manual.
@end quotation
@node Acknowledgements and History
@section Acknowledgements and History
@cindex Stallman, Richard M.
@cindex Chassell, Robert J.
@cindex Berry, Karl
Richard M.@: Stallman invented the Texinfo format, wrote the initial
processors, and created Edition 1.0 of this manual. @w{Robert J.@:
Chassell} greatly revised and extended the manual, starting with Edition
1.1. Brian Fox was responsible for the standalone Texinfo distribution
until version 3.8, and wrote the standalone @command{makeinfo} and
@command{info}. Karl Berry has made the updates since Texinfo 3.8 and
subsequent releases, starting with Edition 2.22 of the manual.
@cindex Pinard, Fran@,{c}ois
@cindex Zuhn, David D.
@cindex Weisshaus, Melissa
@cindex Zaretskii, Eli
@cindex Schwab, Andreas
@cindex Weinberg, Zack
Our thanks go out to all who helped improve this work, particularly to
Fran@,{c}ois Pinard and @w{David D.@: Zuhn}, who tirelessly recorded and
reported mistakes and obscurities; our special thanks go to Melissa
Weisshaus for her frequent and often tedious reviews of nearly similar
editions. The indefatigable Eli Zaretskii and Andreas Schwab have
provided patches beyond counting. Zack Weinberg did the impossible by
implementing the macro syntax in @file{texinfo.tex}. Dozens of others
have contributed patches and suggestions, they are gratefully
acknowledged in the @file{ChangeLog} file. Our mistakes are our own.
@cindex Scribe
@cindex Reid, Brian
@cindex History of Texinfo
A bit of history: in the 1970's at CMU, Brian Reid developed a program
and format named Scribe to mark up documents for printing. It used the
@code{@@} character to introduce commands as Texinfo does and strived to
describe document contents rather than formatting.
@cindex Bolio
@cindex Bo@TeX{}
Meanwhile, people at MIT developed another, not too dissimilar format
called Bolio. This then was converted to using @TeX{} as its typesetting
language: Bo@TeX{}.
Bo@TeX{} could only be used as a markup language for documents to be
printed, not for online documents. Richard Stallman (RMS) worked on
both Bolio and Bo@TeX{}. He also developed a nifty on-line help format
called Info, and then combined Bo@TeX{} and Info to create Texinfo, a
mark up language for text that is intended to be read both on line and
as printed hard copy.
@node Texinfo Mode
@chapter Using Texinfo Mode
@cindex Texinfo mode
@cindex Mode, using Texinfo
@cindex GNU Emacs
@cindex Emacs
You may edit a Texinfo file with any text editor you choose. A Texinfo
file is no different from any other @sc{ascii} file. However, GNU Emacs
comes with a special mode, called Texinfo
mode, that provides Emacs commands and tools to help ease your work.@refill
This chapter describes features of GNU Emacs' Texinfo mode but not any
features of the Texinfo formatting language. If you are reading this
manual straight through from the beginning, you may want to skim through
this chapter briefly and come back to it after reading succeeding
chapters which describe the Texinfo formatting language in
detail.@refill
@menu
* Texinfo Mode Overview:: How Texinfo mode can help you.
* Emacs Editing:: Texinfo mode adds to GNU Emacs' general
purpose editing features.
* Inserting:: How to insert frequently used @@-commands.
* Showing the Structure:: How to show the structure of a file.
* Updating Nodes and Menus:: How to update or create new nodes and menus.
* Info Formatting:: How to format for Info.
* Printing:: How to format and print part or all of a file.
* Texinfo Mode Summary:: Summary of all the Texinfo mode commands.
@end menu
@node Texinfo Mode Overview, Emacs Editing, Texinfo Mode, Texinfo Mode
@ifinfo
@heading Texinfo Mode Overview
@end ifinfo
Texinfo mode provides special features for working with Texinfo
files.
You can:@refill
@itemize @bullet
@item
Insert frequently used @@-commands. @refill
@item
Automatically create @code{@@node} lines.
@item
Show the structure of a Texinfo source file.@refill
@item
Automatically create or update the `Next',
`Previous', and `Up' pointers of a node.
@item
Automatically create or update menus.@refill
@item
Automatically create a master menu.@refill
@item
Format a part or all of a file for Info.@refill
@item
Typeset and print part or all of a file.@refill
@end itemize
Perhaps the two most helpful features are those for inserting frequently
used @@-commands and for creating node pointers and menus.@refill
@node Emacs Editing, Inserting, Texinfo Mode Overview, Texinfo Mode
@section The Usual GNU Emacs Editing Commands
In most cases, the usual Text mode commands work the same in Texinfo
mode as they do in Text mode. Texinfo mode adds new editing commands
and tools to GNU Emacs' general purpose editing features. The major
difference concerns filling. In Texinfo mode, the paragraph
separation variable and syntax table are redefined so that Texinfo
commands that should be on lines of their own are not inadvertently
included in paragraphs. Thus, the @kbd{M-q} (@code{fill-paragraph})
command will refill a paragraph but not mix an indexing command on a
line adjacent to it into the paragraph.@refill
In addition, Texinfo mode sets the @code{page-delimiter} variable to
the value of @code{texinfo-chapter-level-regexp}; by default, this is
a regular expression matching the commands for chapters and their
equivalents, such as appendices. With this value for the page
delimiter, you can jump from chapter title to chapter title with the
@kbd{C-x ]} (@code{forward-page}) and @kbd{C-x [}
(@code{backward-page}) commands and narrow to a chapter with the
@kbd{C-x p} (@code{narrow-to-page}) command. (@xref{Pages, , ,emacs,
The GNU Emacs Manual}, for details about the page commands.)@refill
You may name a Texinfo file however you wish, but the convention is to
end a Texinfo file name with one of the extensions
@file{.texinfo}, @file{.texi}, @file{.txi}, or @file{.tex}. A longer
extension is preferred, since it is explicit, but a shorter extension
may be necessary for operating systems that limit the length of file
names. GNU Emacs automatically enters Texinfo mode when you visit a
file with a @file{.texinfo}, @file{.texi} or @file{.txi}
extension. Also, Emacs switches to Texinfo mode
when you visit a
file that has @samp{-*-texinfo-*-} in its first line. If ever you are
in another mode and wish to switch to Texinfo mode, type @code{M-x
texinfo-mode}.@refill
Like all other Emacs features, you can customize or enhance Texinfo
mode as you wish. In particular, the keybindings are very easy to
change. The keybindings described here are the default or standard
ones.@refill
@node Inserting, Showing the Structure, Emacs Editing, Texinfo Mode
@comment node-name, next, previous, up
@section Inserting Frequently Used Commands
@cindex Inserting frequently used commands
@cindex Frequently used commands, inserting
@cindex Commands, inserting them
Texinfo mode provides commands to insert various frequently used
@@-commands into the buffer. You can use these commands to save
keystrokes.@refill
The insert commands are invoked by typing @kbd{C-c} twice and then the
first letter of the @@-command:@refill
@table @kbd
@item C-c C-c c
@itemx M-x texinfo-insert-@@code
@findex texinfo-insert-@@code
Insert @code{@@code@{@}} and put the
cursor between the braces.@refill
@item C-c C-c d
@itemx M-x texinfo-insert-@@dfn
@findex texinfo-insert-@@dfn
Insert @code{@@dfn@{@}} and put the
cursor between the braces.@refill
@item C-c C-c e
@itemx M-x texinfo-insert-@@end
@findex texinfo-insert-@@end
Insert @code{@@end} and attempt to insert the correct following word,
such as @samp{example} or @samp{table}. (This command does not handle
nested lists correctly, but inserts the word appropriate to the
immediately preceding list.)@refill
@item C-c C-c i
@itemx M-x texinfo-insert-@@item
@findex texinfo-insert-@@item
Insert @code{@@item} and put the
cursor at the beginning of the next line.@refill
@item C-c C-c k
@itemx M-x texinfo-insert-@@kbd
@findex texinfo-insert-@@kbd
Insert @code{@@kbd@{@}} and put the
cursor between the braces.@refill
@item C-c C-c n
@itemx M-x texinfo-insert-@@node
@findex texinfo-insert-@@node
Insert @code{@@node} and a comment line
listing the sequence for the `Next',
`Previous', and `Up' nodes.
Leave point after the @code{@@node}.@refill
@item C-c C-c o
@itemx M-x texinfo-insert-@@noindent
@findex texinfo-insert-@@noindent
Insert @code{@@noindent} and put the
cursor at the beginning of the next line.@refill
@item C-c C-c s
@itemx M-x texinfo-insert-@@samp
@findex texinfo-insert-@@samp
Insert @code{@@samp@{@}} and put the
cursor between the braces.@refill
@item C-c C-c t
@itemx M-x texinfo-insert-@@table
@findex texinfo-insert-@@table
Insert @code{@@table} followed by a @key{SPC}
and leave the cursor after the @key{SPC}.@refill
@item C-c C-c v
@itemx M-x texinfo-insert-@@var
@findex texinfo-insert-@@var
Insert @code{@@var@{@}} and put the
cursor between the braces.@refill
@item C-c C-c x
@itemx M-x texinfo-insert-@@example
@findex texinfo-insert-@@example
Insert @code{@@example} and put the
cursor at the beginning of the next line.@refill
@c M-@{ was the binding for texinfo-insert-braces;
@c in Emacs 19, backward-paragraph will take this binding.
@item C-c C-c @{
@itemx M-x texinfo-insert-braces
@findex texinfo-insert-braces
Insert @code{@{@}} and put the cursor between the braces.@refill
@item C-c C-c @}
@itemx C-c C-c ]
@itemx M-x up-list
@findex up-list
Move from between a pair of braces forward past the closing brace.
Typing @kbd{C-c C-c ]} is easier than typing @kbd{C-c C-c @}}, which
is, however, more mnemonic; hence the two keybindings. (Also, you can
move out from between braces by typing @kbd{C-f}.)@refill
@end table
To put a command such as @w{@code{@@code@{@dots{}@}}} around an
@emph{existing} word, position the cursor in front of the word and type
@kbd{C-u 1 C-c C-c c}. This makes it easy to edit existing plain text.
The value of the prefix argument tells Emacs how many words following
point to include between braces---@samp{1} for one word, @samp{2} for
two words, and so on. Use a negative argument to enclose the previous
word or words. If you do not specify a prefix argument, Emacs inserts
the @@-command string and positions the cursor between the braces. This
feature works only for those @@-commands that operate on a word or words
within one line, such as @code{@@kbd} and @code{@@var}.@refill
This set of insert commands was created after analyzing the frequency
with which different @@-commands are used in the @cite{GNU Emacs
Manual} and the @cite{GDB Manual}. If you wish to add your own insert
commands, you can bind a keyboard macro to a key, use abbreviations,
or extend the code in @file{texinfo.el}.@refill
@findex texinfo-start-menu-description
@cindex Menu description, start
@cindex Description for menu, start
@kbd{C-c C-c C-d} (@code{texinfo-start-menu-description}) is an insert
command that works differently from the other insert commands. It
inserts a node's section or chapter title in the space for the
description in a menu entry line. (A menu entry has three parts, the
entry name, the node name, and the description. Only the node name is
required, but a description helps explain what the node is about.
@xref{Menu Parts, , The Parts of a Menu}.)@refill
To use @code{texinfo-start-menu-description}, position point in a menu
entry line and type @kbd{C-c C-c C-d}. The command looks for and copies
the title that goes with the node name, and inserts the title as a
description; it positions point at beginning of the inserted text so you
can edit it. The function does not insert the title if the menu entry
line already contains a description.@refill
This command is only an aid to writing descriptions; it does not do the
whole job. You must edit the inserted text since a title tends to use
the same words as a node name but a useful description uses different
words.@refill
@node Showing the Structure, Updating Nodes and Menus, Inserting, Texinfo Mode
@comment node-name, next, previous, up
@section Showing the Section Structure of a File
@cindex Showing the section structure of a file
@cindex Section structure of a file, showing it
@cindex Structure of a file, showing it
@cindex Outline of file structure, showing it
@cindex Contents-like outline of file structure
@cindex File section structure, showing it
@cindex Texinfo file section structure, showing it
You can show the section structure of a Texinfo file by using the
@kbd{C-c C-s} command (@code{texinfo-show-structure}). This command
shows the section structure of a Texinfo file by listing the lines
that begin with the @@-commands for @code{@@chapter},
@code{@@section}, and the like. It constructs what amounts
to a table of contents. These lines are displayed in another buffer
called the @samp{*Occur*} buffer. In that buffer, you can position
the cursor over one of the lines and use the @kbd{C-c C-c} command
(@code{occur-mode-goto-occurrence}), to jump to the corresponding spot
in the Texinfo file.@refill
@table @kbd
@item C-c C-s
@itemx M-x texinfo-show-structure
@findex texinfo-show-structure
Show the @code{@@chapter}, @code{@@section}, and such lines of a
Texinfo file.@refill
@item C-c C-c
@itemx M-x occur-mode-goto-occurrence
@findex occur-mode-goto-occurrence
Go to the line in the Texinfo file corresponding to the line under the
cursor in the @file{*Occur*} buffer.@refill
@end table
If you call @code{texinfo-show-structure} with a prefix argument by
typing @w{@kbd{C-u C-c C-s}}, it will list not only those lines with the
@@-commands for @code{@@chapter}, @code{@@section}, and the like, but
also the @code{@@node} lines. You can use @code{texinfo-show-structure}
with a prefix argument to check whether the `Next', `Previous', and `Up'
pointers of an @code{@@node} line are correct.
Often, when you are working on a manual, you will be interested only
in the structure of the current chapter. In this case, you can mark
off the region of the buffer that you are interested in by using the
@kbd{C-x n n} (@code{narrow-to-region}) command and
@code{texinfo-show-structure} will work on only that region. To see
the whole buffer again, use @w{@kbd{C-x n w}} (@code{widen}).
(@xref{Narrowing, , , emacs, The GNU Emacs Manual}, for more
information about the narrowing commands.)@refill
@vindex page-delimiter
@cindex Page delimiter in Texinfo mode
In addition to providing the @code{texinfo-show-structure} command,
Texinfo mode sets the value of the page delimiter variable to match
the chapter-level @@-commands. This enables you to use the @kbd{C-x
]} (@code{forward-page}) and @kbd{C-x [} (@code{backward-page})
commands to move forward and backward by chapter, and to use the
@kbd{C-x p} (@code{narrow-to-page}) command to narrow to a chapter.
@xref{Pages, , , emacs, The GNU Emacs Manual}, for more information
about the page commands.@refill
@node Updating Nodes and Menus, Info Formatting, Showing the Structure, Texinfo Mode
@comment node-name, next, previous, up
@section Updating Nodes and Menus
@cindex Updating nodes and menus
@cindex Create nodes, menus automatically
@cindex Insert nodes, menus automatically
@cindex Automatically insert nodes, menus
Texinfo mode provides commands for automatically creating or updating
menus and node pointers. The commands are called ``update'' commands
because their most frequent use is for updating a Texinfo file after
you have worked on it; but you can use them to insert the `Next',
`Previous', and `Up' pointers into an @code{@@node} line that has none and to
create menus in a file that has none.@refill
If you do not use the updating commands, you need to write menus and
node pointers by hand, which is a tedious task.@refill
@menu
* Updating Commands:: Five major updating commands.
* Updating Requirements:: How to structure a Texinfo file for
using the updating command.
* Other Updating Commands:: How to indent descriptions, insert
missing nodes lines, and update
nodes in sequence.
@end menu
@node Updating Commands, Updating Requirements, Updating Nodes and Menus, Updating Nodes and Menus
@ifinfo
@subheading The Updating Commands
@end ifinfo
You can use the updating commands to:@refill
@itemize @bullet
@item
insert or update the `Next', `Previous', and `Up' pointers of a
node,@refill
@item
insert or update the menu for a section, and@refill
@item
create a master menu for a Texinfo source file.@refill
@end itemize
You can also use the commands to update all the nodes and menus in a
region or in a whole Texinfo file.@refill
The updating commands work only with conventional Texinfo files, which
are structured hierarchically like books. In such files, a structuring
command line must follow closely after each @code{@@node} line, except
for the `Top' @code{@@node} line. (A @dfn{structuring command line} is
a line beginning with @code{@@chapter}, @code{@@section}, or other
similar command.)
You can write the structuring command line on the line that follows
immediately after an @code{@@node} line or else on the line that
follows after a single @code{@@comment} line or a single
@code{@@ifinfo} line. You cannot interpose more than one line between
the @code{@@node} line and the structuring command line; and you may
interpose only an @code{@@comment} line or an @code{@@ifinfo} line.
Commands which work on a whole buffer require that the `Top' node be
followed by a node with an @code{@@chapter} or equivalent-level command.
The menu updating commands will not create a main or master menu for a
Texinfo file that has only @code{@@chapter}-level nodes! The menu
updating commands only create menus @emph{within} nodes for lower level
nodes. To create a menu of chapters, you must provide a `Top'
node.
The menu updating commands remove menu entries that refer to other Info
files since they do not refer to nodes within the current buffer. This
is a deficiency. Rather than use menu entries, you can use cross
references to refer to other Info files. None of the updating commands
affect cross references.@refill
Texinfo mode has five updating commands that are used most often: two
are for updating the node pointers or menu of a single node (or a
region); two are for updating every node pointer and menu in a file;
and one, the @code{texinfo-master-menu} command, is for creating a
master menu for a complete file, and optionally, for updating every
node and menu in the whole Texinfo file.@refill
The @code{texinfo-master-menu} command is the primary command:@refill
@table @kbd
@item C-c C-u m
@itemx M-x texinfo-master-menu
@findex texinfo-master-menu
Create or update a master menu that includes all the other menus
(incorporating the descriptions from pre-existing menus, if
any).@refill
With an argument (prefix argument, @kbd{C-u,} if interactive), first create or
update all the nodes and all the regular menus in the buffer before
constructing the master menu. (@xref{The Top Node, , The Top Node and
Master Menu}, for more about a master menu.)@refill
For @code{texinfo-master-menu} to work, the Texinfo file must have a
`Top' node and at least one subsequent node.@refill
After extensively editing a Texinfo file, you can type the following:
@example
C-u M-x texinfo-master-menu
@exdent or
C-u C-c C-u m
@end example
@noindent
This updates all the nodes and menus completely and all at once.@refill
@end table
The other major updating commands do smaller jobs and are designed for
the person who updates nodes and menus as he or she writes a Texinfo
file.@refill
@need 1000
The commands are:@refill
@table @kbd
@item C-c C-u C-n
@itemx M-x texinfo-update-node
@findex texinfo-update-node
Insert the `Next', `Previous', and `Up' pointers for the node that point is
within (i.e., for the @code{@@node} line preceding point). If the
@code{@@node} line has pre-existing `Next', `Previous', or `Up'
pointers in it, the old pointers are removed and new ones inserted.
With an argument (prefix argument, @kbd{C-u}, if interactive), this command
updates all @code{@@node} lines in the region (which is the text
between point and mark).@refill
@item C-c C-u C-m
@itemx M-x texinfo-make-menu
@findex texinfo-make-menu
Create or update the menu in the node that point is within.
With an argument (@kbd{C-u} as prefix argument, if
interactive), the command makes or updates menus for the
nodes which are either within or a part of the
region.@refill
Whenever @code{texinfo-make-menu} updates an existing menu, the
descriptions from that menu are incorporated into the new menu. This
is done by copying descriptions from the existing menu to the entries
in the new menu that have the same node names. If the node names are
different, the descriptions are not copied to the new menu.@refill
@item C-c C-u C-e
@itemx M-x texinfo-every-node-update
@findex texinfo-every-node-update
Insert or update the `Next', `Previous', and `Up' pointers for every
node in the buffer.@refill
@item C-c C-u C-a
@itemx M-x texinfo-all-menus-update
@findex texinfo-all-menus-update
Create or update all the menus in the buffer. With an argument
(@kbd{C-u} as prefix argument, if interactive), first insert
or update all the node
pointers before working on the menus.@refill
If a master menu exists, the @code{texinfo-all-menus-update} command
updates it; but the command does not create a new master menu if none
already exists. (Use the @code{texinfo-master-menu} command for
that.)@refill
When working on a document that does not merit a master menu, you can
type the following:
@example
C-u C-c C-u C-a
@exdent or
C-u M-x texinfo-all-menus-update
@end example
@noindent
This updates all the nodes and menus.@refill
@end table
The @code{texinfo-column-for-description} variable specifies the
column to which menu descriptions are indented. By default, the value
is 32 although it is often useful to reduce it to as low as 24. You
can set the variable with the @kbd{M-x edit-options} command
(@pxref{Edit Options, , Editing Variable Values, emacs, The GNU Emacs
Manual}) or with the @kbd{M-x set-variable} command (@pxref{Examining,
, Examining and Setting Variables, emacs, The GNU Emacs
Manual}).@refill
Also, the @code{texinfo-indent-menu-description} command may be used to
indent existing menu descriptions to a specified column. Finally, if
you wish, you can use the @code{texinfo-insert-node-lines} command to
insert missing @code{@@node} lines into a file. (@xref{Other Updating
Commands}, for more information.)@refill
@node Updating Requirements, Other Updating Commands, Updating Commands, Updating Nodes and Menus
@comment node-name, next, previous, up
@subsection Updating Requirements
@cindex Updating requirements
@cindex Requirements for updating commands
To use the updating commands, you must organize the Texinfo file
hierarchically with chapters, sections, subsections, and the like.
When you construct the hierarchy of the manual, do not `jump down'
more than one level at a time: you can follow the `Top' node with a
chapter, but not with a section; you can follow a chapter with a
section, but not with a subsection. However, you may `jump up' any
number of levels at one time---for example, from a subsection to a
chapter.@refill
Each @code{@@node} line, with the exception of the line for the `Top'
node, must be followed by a line with a structuring command such as
@code{@@chapter}, @code{@@section}, or
@code{@@unnumberedsubsec}.@refill
Each @code{@@node} line/structuring-command line combination
must look either like this:@refill
@example
@group
@@node Comments, Minimum, Conventions, Overview
@@comment node-name, next, previous, up
@@section Comments
@end group
@end example
or like this (without the @code{@@comment} line):
@example
@group
@@node Comments, Minimum, Conventions, Overview
@@section Comments
@end group
@end example
@noindent
In this example, `Comments' is the name of both the node and the
section. The next node is called `Minimum' and the previous node is
called `Conventions'. The `Comments' section is within the `Overview'
node, which is specified by the `Up' pointer. (Instead of an
@code{@@comment} line, you may also write an @code{@@ifinfo} line.)@refill
If a file has a `Top' node, it must be called @samp{top} or @samp{Top}
and be the first node in the file.@refill
The menu updating commands create a menu of sections within a chapter,
a menu of subsections within a section, and so on. This means that
you must have a `Top' node if you want a menu of chapters.@refill
Incidentally, the @code{makeinfo} command will create an Info file for a
hierarchically organized Texinfo file that lacks `Next', `Previous' and
`Up' pointers. Thus, if you can be sure that your Texinfo file will be
formatted with @code{makeinfo}, you have no need for the update node
commands. (@xref{Creating an Info File}, for more information about
@code{makeinfo}.) However, both @code{makeinfo} and the
@code{texinfo-format-@dots{}} commands require that you insert menus in
the file.
@node Other Updating Commands, , Updating Requirements, Updating Nodes and Menus
@comment node-name, next, previous, up
@subsection Other Updating Commands
In addition to the five major updating commands, Texinfo mode
possesses several less frequently used updating commands:@refill
@table @kbd
@item M-x texinfo-insert-node-lines
@findex texinfo-insert-node-lines
Insert @code{@@node} lines before the @code{@@chapter},
@code{@@section}, and other sectioning commands wherever they are
missing throughout a region in a Texinfo file.@refill
With an argument (@kbd{C-u} as prefix argument, if interactive), the
@code{texinfo-insert-node-lines} command not only inserts
@code{@@node} lines but also inserts the chapter or section titles as
the names of the corresponding nodes. In addition, it inserts the
titles as node names in pre-existing @code{@@node} lines that lack
names. Since node names should be more concise than section or
chapter titles, you must manually edit node names so inserted.@refill
For example, the following marks a whole buffer as a region and inserts
@code{@@node} lines and titles throughout:@refill
@example
C-x h C-u M-x texinfo-insert-node-lines
@end example
This command inserts titles as node names in @code{@@node} lines; the
@code{texinfo-start-menu-description} command (@pxref{Inserting,
Inserting Frequently Used Commands}) inserts titles as descriptions in
menu entries, a different action. However, in both cases, you need to
edit the inserted text.
@item M-x texinfo-multiple-files-update
@findex texinfo-multiple-files-update @r{(in brief)}
Update nodes and menus in a document built from several separate files.
With @kbd{C-u} as a prefix argument, create and insert a master menu in
the outer file. With a numeric prefix argument, such as @kbd{C-u 2}, first
update all the menus and all the `Next', `Previous', and `Up' pointers
of all the included files before creating and inserting a master menu in
the outer file. The @code{texinfo-multiple-files-update} command is
described in the appendix on @code{@@include} files.
@ifinfo
@xref{texinfo-multiple-files-update}.@refill
@end ifinfo
@iftex
@xref{texinfo-multiple-files-update, ,
@code{texinfo-multiple-files-update}}.@refill
@end iftex
@item M-x texinfo-indent-menu-description
@findex texinfo-indent-menu-description
Indent every description in the menu following point to the specified
column. You can use this command to give yourself more space for
descriptions. With an argument (@kbd{C-u} as prefix argument, if
interactive), the @code{texinfo-indent-menu-description} command indents
every description in every menu in the region. However, this command
does not indent the second and subsequent lines of a multi-line
description.@refill
@item M-x texinfo-sequential-node-update
@findex texinfo-sequential-node-update
Insert the names of the nodes immediately following and preceding the
current node as the `Next' or `Previous' pointers regardless of those
nodes' hierarchical level. This means that the `Next' node of a
subsection may well be the next chapter. Sequentially ordered nodes are
useful for novels and other documents that you read through
sequentially. (However, in Info, the @kbd{g *} command lets
you look through the file sequentially, so sequentially ordered nodes
are not strictly necessary.) With an argument (prefix argument, if
interactive), the @code{texinfo-sequential-node-update} command
sequentially updates all the nodes in the region.@refill
@end table
@node Info Formatting, Printing, Updating Nodes and Menus, Texinfo Mode
@comment node-name, next, previous, up
@section Formatting for Info
@cindex Formatting for Info
@cindex Running an Info formatter
@cindex Info formatting
Texinfo mode provides several commands for formatting part or all of a
Texinfo file for Info. Often, when you are writing a document, you
want to format only part of a file---that is, a region.@refill
You can use either the @code{texinfo-format-region} or the
@code{makeinfo-region} command to format a region:@refill
@table @kbd
@findex texinfo-format-region
@item C-c C-e C-r
@itemx M-x texinfo-format-region
@itemx C-c C-m C-r
@itemx M-x makeinfo-region
Format the current region for Info.@refill
@end table
You can use either the @code{texinfo-format-buffer} or the
@code{makeinfo-buffer} command to format a whole buffer:@refill
@table @kbd
@findex texinfo-format-buffer
@item C-c C-e C-b
@itemx M-x texinfo-format-buffer
@itemx C-c C-m C-b
@itemx M-x makeinfo-buffer
Format the current buffer for Info.@refill
@end table
@need 1000
For example, after writing a Texinfo file, you can type the following:
@example
C-u C-c C-u m
@exdent or
C-u M-x texinfo-master-menu
@end example
@noindent
This updates all the nodes and menus. Then type the following to create
an Info file:
@example
C-c C-m C-b
@exdent or
M-x makeinfo-buffer
@end example
For @TeX{} or the Info formatting commands to work, the file @emph{must}
include a line that has @code{@@setfilename} in its header.@refill
@xref{Creating an Info File}, for details about Info formatting.@refill
@node Printing, Texinfo Mode Summary, Info Formatting, Texinfo Mode
@comment node-name, next, previous, up
@section Formatting and Printing
@cindex Formatting for printing
@cindex Printing a region or buffer
@cindex Region formatting and printing
@cindex Buffer formatting and printing
@cindex Part of file formatting and printing
Typesetting and printing a Texinfo file is a multi-step process in which
you first create a file for printing (called a DVI file), and then
print the file. Optionally, you may also create indices. To do this,
you must run the @code{texindex} command after first running the
@code{tex} typesetting command; and then you must run the @code{tex}
command again. Or else run the @code{texi2dvi} command which
automatically creates indices as needed (@pxref{Format with texi2dvi}).
Often, when you are writing a document, you want to typeset and print
only part of a file to see what it will look like. You can use the
@code{texinfo-tex-region} and related commands for this purpose. Use
the @code{texinfo-tex-buffer} command to format all of a
buffer.@refill
@table @kbd
@item C-c C-t C-b
@itemx M-x texinfo-tex-buffer
@findex texinfo-tex-buffer
Run @code{texi2dvi} on the buffer. In addition to running @TeX{} on the
buffer, this command automatically creates or updates indices as
needed.@refill
@item C-c C-t C-r
@itemx M-x texinfo-tex-region
@findex texinfo-tex-region
Run @TeX{} on the region.@refill
@item C-c C-t C-i
@itemx M-x texinfo-texindex
Run @code{texindex} to sort the indices of a Texinfo file formatted with
@code{texinfo-tex-region}. The @code{texinfo-tex-region} command does
not run @code{texindex} automatically; it only runs the @code{tex}
typesetting command. You must run the @code{texinfo-tex-region} command
a second time after sorting the raw index files with the @code{texindex}
command. (Usually, you do not format an index when you format a region,
only when you format a buffer. Now that the @code{texi2dvi} command
exists, there is little or no need for this command.)@refill
@item C-c C-t C-p
@itemx M-x texinfo-tex-print
@findex texinfo-tex-print
Print the file (or the part of the file) previously formatted with
@code{texinfo-tex-buffer} or @code{texinfo-tex-region}.@refill
@end table
For @code{texinfo-tex-region} or @code{texinfo-tex-buffer} to work, the
file @emph{must} start with a @samp{\input texinfo} line and must
include an @code{@@settitle} line. The file must end with @code{@@bye}
on a line by itself. (When you use @code{texinfo-tex-region}, you must
surround the @code{@@settitle} line with start-of-header and
end-of-header lines.)@refill
@xref{Hardcopy}, for a description of the other @TeX{} related
commands, such as @code{tex-show-print-queue}.@refill
@node Texinfo Mode Summary, , Printing, Texinfo Mode
@comment node-name, next, previous, up
@section Texinfo Mode Summary
In Texinfo mode, each set of commands has default keybindings that
begin with the same keys. All the commands that are custom-created
for Texinfo mode begin with @kbd{C-c}. The keys are somewhat
mnemonic.@refill
@subheading Insert Commands
The insert commands are invoked by typing @kbd{C-c} twice and then the
first letter of the @@-command to be inserted. (It might make more
sense mnemonically to use @kbd{C-c C-i}, for `custom insert', but
@kbd{C-c C-c} is quick to type.)@refill
@example
C-c C-c c @r{Insert} @samp{@@code}.
C-c C-c d @r{Insert} @samp{@@dfn}.
C-c C-c e @r{Insert} @samp{@@end}.
C-c C-c i @r{Insert} @samp{@@item}.
C-c C-c n @r{Insert} @samp{@@node}.
C-c C-c s @r{Insert} @samp{@@samp}.
C-c C-c v @r{Insert} @samp{@@var}.
C-c C-c @{ @r{Insert braces.}
C-c C-c ]
C-c C-c @} @r{Move out of enclosing braces.}
@group
C-c C-c C-d @r{Insert a node's section title}
@r{in the space for the description}
@r{in a menu entry line.}
@end group
@end example
@subheading Show Structure
The @code{texinfo-show-structure} command is often used within a
narrowed region.@refill
@example
C-c C-s @r{List all the headings.}
@end example
@subheading The Master Update Command
The @code{texinfo-master-menu} command creates a master menu; and can
be used to update every node and menu in a file as well.@refill
@c Probably should use @tables in this section.
@example
@group
C-c C-u m
M-x texinfo-master-menu
@r{Create or update a master menu.}
@end group
@group
C-u C-c C-u m @r{With @kbd{C-u} as a prefix argument, first}
@r{create or update all nodes and regular}
@r{menus, and then create a master menu.}
@end group
@end example
@subheading Update Pointers
The update pointer commands are invoked by typing @kbd{C-c C-u} and
then either @kbd{C-n} for @code{texinfo-update-node} or @kbd{C-e} for
@code{texinfo-every-node-update}.@refill
@example
C-c C-u C-n @r{Update a node.}
C-c C-u C-e @r{Update every node in the buffer.}
@end example
@subheading Update Menus
Invoke the update menu commands by typing @kbd{C-c C-u}
and then either @kbd{C-m} for @code{texinfo-make-menu} or
@kbd{C-a} for @code{texinfo-all-menus-update}. To update
both nodes and menus at the same time, precede @kbd{C-c C-u
C-a} with @kbd{C-u}.@refill
@example
C-c C-u C-m @r{Make or update a menu.}
@group
C-c C-u C-a @r{Make or update all}
@r{menus in a buffer.}
@end group
@group
C-u C-c C-u C-a @r{With @kbd{C-u} as a prefix argument,}
@r{first create or update all nodes and}
@r{then create or update all menus.}
@end group
@end example
@subheading Format for Info
The Info formatting commands that are written in Emacs Lisp are
invoked by typing @kbd{C-c C-e} and then either @kbd{C-r} for a region
or @kbd{C-b} for the whole buffer.@refill
The Info formatting commands that are written in C and based on the
@code{makeinfo} program are invoked by typing @kbd{C-c C-m} and then
either @kbd{C-r} for a region or @kbd{C-b} for the whole buffer.@refill
@need 800
@noindent
Use the @code{texinfo-format@dots{}} commands:
@example
@group
C-c C-e C-r @r{Format the region.}
C-c C-e C-b @r{Format the buffer.}
@end group
@end example
@need 750
@noindent
Use @code{makeinfo}:
@example
C-c C-m C-r @r{Format the region.}
C-c C-m C-b @r{Format the buffer.}
C-c C-m C-l @r{Recenter the @code{makeinfo} output buffer.}
C-c C-m C-k @r{Kill the @code{makeinfo} formatting job.}
@end example
@subheading Typeset and Print
The @TeX{} typesetting and printing commands are invoked by typing
@kbd{C-c C-t} and then another control command: @kbd{C-r} for
@code{texinfo-tex-region}, @kbd{C-b} for @code{texinfo-tex-buffer},
and so on.@refill
@example
C-c C-t C-r @r{Run @TeX{} on the region.}
C-c C-t C-b @r{Run} @code{texi2dvi} @r{on the buffer.}
C-c C-t C-i @r{Run} @code{texindex}.
C-c C-t C-p @r{Print the DVI file.}
C-c C-t C-q @r{Show the print queue.}
C-c C-t C-d @r{Delete a job from the print queue.}
C-c C-t C-k @r{Kill the current @TeX{} formatting job.}
C-c C-t C-x @r{Quit a currently stopped @TeX{} formatting job.}
C-c C-t C-l @r{Recenter the output buffer.}
@end example
@subheading Other Updating Commands
The remaining updating commands do not have standard keybindings because
they are rarely used.
@example
@group
M-x texinfo-insert-node-lines
@r{Insert missing @code{@@node} lines in region.}
@r{With @kbd{C-u} as a prefix argument,}
@r{use section titles as node names.}
@end group
@group
M-x texinfo-multiple-files-update
@r{Update a multi-file document.}
@r{With @kbd{C-u 2} as a prefix argument,}
@r{create or update all nodes and menus}
@r{in all included files first.}
@end group
@group
M-x texinfo-indent-menu-description
@r{Indent descriptions.}
@end group
@group
M-x texinfo-sequential-node-update
@r{Insert node pointers in strict sequence.}
@end group
@end example
@node Beginning a File, Ending a File, Texinfo Mode, Top
@comment node-name, next, previous, up
@chapter Beginning a Texinfo File
@cindex Beginning a Texinfo file
@cindex Texinfo file beginning
@cindex File beginning
Certain pieces of information must be provided at the beginning of a
Texinfo file, such as the name of the file and the title of the
document.@refill
@menu
* Four Parts:: Four parts begin a Texinfo file.
* Sample Beginning:: Here is a sample beginning for a Texinfo file.
* Header:: The very beginning of a Texinfo file.
* Info Summary and Permissions:: Summary and copying permissions for Info.
* Titlepage & Copyright Page:: Creating the title and copyright pages.
* The Top Node:: Creating the `Top' node and master menu.
* Software Copying Permissions:: Ensure that you and others continue to
have the right to use and share software.
@end menu
@node Four Parts, Sample Beginning, Beginning a File, Beginning a File
@ifinfo
@heading Four Parts Begin a File
@end ifinfo
Generally, the beginning of a Texinfo file has four parts:@refill
@enumerate
@item
The header, delimited by special comment lines, that includes the
commands for naming the Texinfo file and telling @TeX{} what
definitions file to use when processing the Texinfo file.@refill
@item
A short statement of what the file is about, with a copyright notice
and copying permissions. This is enclosed in @code{@@ifinfo} and
@code{@@end ifinfo} commands so that the formatters place it only
in the Info file.@refill
@item
A title page and copyright page, with a copyright notice and copying
permissions. This is enclosed between @code{@@titlepage} and
@code{@@end titlepage} commands. The title and copyright page appear
only in the printed @w{manual}.@refill
@item
The `Top' node that contains a menu for the whole Info file. The
contents of this node appear only in the Info file.@refill
@end enumerate
Also, optionally, you may include the copying conditions for a program
and a warranty disclaimer. The copying section will be followed by an
introduction or else by the first chapter of the manual.@refill
Since the copyright notice and copying permissions for the Texinfo
document (in contrast to the copying permissions for a program) are in
parts that appear only in the Info file or only in the printed manual,
this information must be given twice.@refill
@node Sample Beginning, Header, Four Parts, Beginning a File
@comment node-name, next, previous, up
@section Sample Texinfo File Beginning
The following sample shows what is needed.@refill
@example
\input texinfo @@c -*-texinfo-*-
@@c %**start of header
@@setfilename @var{name-of-info-file}
@@settitle @var{name-of-manual}
@@setchapternewpage odd
@@c %**end of header
@@ifinfo
This file documents @dots{}
Copyright @var{year} @var{copyright-owner}
@group
Permission is granted to @dots{}
@@end ifinfo
@end group
@group
@@c This title page illustrates only one of the
@@c two methods of forming a title page.
@end group
@group
@@titlepage
@@title @var{name-of-manual-when-printed}
@@subtitle @var{subtitle-if-any}
@@subtitle @var{second-subtitle}
@@author @var{author}
@end group
@group
@@c The following two commands
@@c start the copyright page.
@@page
@@vskip 0pt plus 1filll
Copyright @@copyright@{@} @var{year} @var{copyright-owner}
@end group
Published by @dots{}
Permission is granted to @dots{}
@@end titlepage
@@node Top, Overview, , (dir)
@@ifinfo
This document describes @dots{}
This document applies to version @dots{}
of the program named @dots{}
@@end ifinfo
@group
@@menu
* Copying:: Your rights and freedoms.
* First Chapter:: Getting started @dots{}
* Second Chapter:: @dots{}
@dots{}
@dots{}
@@end menu
@end group
@group
@@node First Chapter, Second Chapter, top, top
@@comment node-name, next, previous, up
@@chapter First Chapter
@@cindex Index entry for First Chapter
@end group
@end example
@node Header, Info Summary and Permissions, Sample Beginning, Beginning a File
@comment node-name, next, previous, up
@section The Texinfo File Header
@cindex Header for Texinfo files
@cindex Texinfo file header
Texinfo files start with at least three lines that provide Info and
@TeX{} with necessary information. These are the @code{\input
texinfo} line, the @code{@@settitle} line, and the
@code{@@setfilename} line. If you want to run @TeX{} on just a part
of the Texinfo File, you must write the @code{@@settitle}
and @code{@@setfilename} lines between start-of-header and end-of-header
lines.@refill
Thus, the beginning of a Texinfo file looks like this:
@example
@group
\input texinfo @@c -*-texinfo-*-
@@setfilename sample.info
@@settitle Sample Document
@end group
@end example
@noindent
or else like this:
@example
@group
\input texinfo @@c -*-texinfo-*-
@@c %**start of header
@@setfilename sample.info
@@settitle Sample Document
@@c %**end of header
@end group
@end example
@menu
* First Line:: The first line of a Texinfo file.
* Start of Header:: Formatting a region requires this.
* setfilename:: Tell Info the name of the Info file.
* settitle:: Create a title for the printed work.
* setchapternewpage:: Start chapters on right-hand pages.
* paragraphindent:: Specify paragraph indentation.
* exampleindent:: Specify environment indentation.
* End of Header:: Formatting a region requires this.
@end menu
@node First Line
@subsection The First Line of a Texinfo File
@cindex First line of a Texinfo file
@cindex Beginning line of a Texinfo file
@cindex Header of a Texinfo file
Every Texinfo file that is to be the top-level input to @TeX{} must begin
with a line that looks like this:@refill
@example
\input texinfo @@c -*-texinfo-*-
@end example
@noindent
This line serves two functions:
@enumerate
@item
When the file is processed by @TeX{}, the @samp{\input texinfo} command
tells @TeX{} to load the macros needed for processing a Texinfo file.
These are in a file called @file{texinfo.tex}, which is usually located
in the @file{/usr/lib/tex/macros} directory. @TeX{} uses the backslash,
@samp{\}, to mark the beginning of a command, just as Texinfo uses
@samp{@@}. The @file{texinfo.tex} file causes the switch from @samp{\}
to @samp{@@}; before the switch occurs, @TeX{} requires @samp{\}, which
is why it appears at the beginning of the file.@refill
@item
When the file is edited in GNU Emacs, the @samp{-*-texinfo-*-} mode
specification tells Emacs to use Texinfo mode.@refill
@end enumerate
@node Start of Header, setfilename, First Line, Header
@comment node-name, next, previous, up
@subsection Start of Header
@cindex Start of header line
Write a start-of-header line on the second line of a Texinfo file.
Follow the start-of-header line with @code{@@setfilename} and
@code{@@settitle} lines and, optionally, with other command lines, such
as @code{@@smallbook} or @code{@@footnotestyle}; and then by an
end-of-header line (@pxref{End of Header}).@refill
With these lines, you can format part of a Texinfo file for Info or
typeset part for printing.@refill
A start-of-header line looks like this:@refill
@example
@@c %**start of header
@end example
The odd string of characters, @samp{%**}, is to ensure that no other
comment is accidentally taken for a start-of-header line.@refill
@node setfilename
@subsection @code{@@setfilename}
@cindex Info file requires @code{@@setfilename}
@findex setfilename
In order to serve as the primary input file for either @code{makeinfo}
or @TeX{}, a Texinfo file must contain a line that looks like this:
@example
@@setfilename @var{info-file-name}
@end example
Write the @code{@@setfilename} command at the beginning of a line and
follow it on the same line by the Info file name. Do not write anything
else on the line; anything on the line after the command is considered
part of the file name, including what would otherwise be a
comment.
The @code{@@setfilename} line specifies the name of the output file to
be generated. This name should be different from the name of the
Texinfo file. There are two conventions for choosing the name: you can
either remove the extension (such as @samp{.texi}) from the input file
name, or replace it with the @samp{.info} extension. When producing
HTML output, @code{makeinfo} will replace any extension with
@samp{html}, or add @samp{.html} if the given name has no extension.
Some operating systems cannot handle long file names. You can run into
a problem even when the file name you specify is itself short enough.
This occurs because the Info formatters split a long Info file into
short indirect subfiles, and name them by appending @samp{-1},
@samp{-2}, @dots{}, @samp{-10}, @samp{-11}, and so on, to the original
file name. (@xref{Tag and Split Files, , Tag Files and Split Files}.)
The subfile name @file{texinfo.info-10}, for example, is too long for
some systems; so the Info file name for this document is @file{texinfo}
rather than @file{texinfo.info}. When @code{makeinfo} is running on
operating systems such as MS-DOS which impose grave limits on file
names, it will sometimes remove some characters from the original file
name to leave enough space for the subfile suffix, thus producing files
named @file{texin-10}, @file{gcc.i12}, etc.
@cindex Ignored before @code{@@setfilename}
@cindex @samp{\input} source line ignored
The Info formatting commands ignore everything written before the
@code{@@setfilename} line, which is why the very first line of
the file (the @code{\input} line) does not show up in the output.
@pindex texinfo.cnf
The @code{@@setfilename} line produces no output when you typeset a
manual with @TeX{}, but it is nevertheless essential: it opens the
index, cross-reference, and other auxiliary files used by Texinfo, and
also reads @file{texinfo.cnf} if that file is present on your system
(@pxref{Preparing for TeX,, Preparing for @TeX{}}).
@node settitle, setchapternewpage, setfilename, Header
@comment node-name, next, previous, up
@subsection @code{@@settitle}
@findex settitle
In order to be made into a printed manual, a Texinfo file must contain
a line that looks like this:@refill
@example
@@settitle @var{title}
@end example
Write the @code{@@settitle} command at the beginning of a line and
follow it on the same line by the title. This tells @TeX{} the title
to use in a header or footer. Do not write anything else on the line;
anything on the line after the command is considered part of the
title, including a comment.@refill
Conventionally, when @TeX{} formats a Texinfo file for double-sided
output, the title is printed in the left-hand (even-numbered) page
headings and the current chapter title is printed in the right-hand
(odd-numbered) page headings. (@TeX{} learns the title of each chapter
from each @code{@@chapter} command.) Page footers are not
printed.@refill
Even if you are printing in a single-sided style, @TeX{} looks for an
@code{@@settitle} command line, in case you include the manual title
in the heading. @refill
The @code{@@settitle} command should precede everything that generates
actual output in @TeX{}.@refill
Although the title in the @code{@@settitle} command is usually the
same as the title on the title page, it does not affect the title as
it appears on the title page. Thus, the two do not need not match
exactly; and the title in the @code{@@settitle} command can be a
shortened or expanded version of the title as it appears on the title
page. (@xref{titlepage, , @code{@@titlepage}}.)@refill
@TeX{} prints page headings only for that text that comes after the
@code{@@end titlepage} command in the Texinfo file, or that comes
after an @code{@@headings} command that turns on headings.
(@xref{headings on off, , The @code{@@headings} Command}, for more
information.)@refill
You may, if you wish, create your own, customized headings and
footings. @xref{Headings, , Page Headings}, for a detailed discussion
of this process.@refill
@node setchapternewpage
@subsection @code{@@setchapternewpage}
@cindex Starting chapters
@cindex Pages, starting odd
@findex setchapternewpage
In an officially bound book, text is usually printed on both sides of
the paper, chapters start on right-hand pages, and right-hand pages have
odd numbers. But in short reports, text often is printed only on one
side of the paper. Also in short reports, chapters sometimes do not
start on new pages, but are printed on the same page as the end of the
preceding chapter, after a small amount of vertical whitespace.@refill
You can use the @code{@@setchapternewpage} command with various
arguments to specify how @TeX{} should start chapters and whether it
should format headers for printing on one or both sides of the paper
(single-sided or double-sided printing).@refill
Write the @code{@@setchapternewpage} command at the beginning of a
line followed by its argument.@refill
For example, you would write the following to cause each chapter to
start on a fresh odd-numbered page:@refill
@example
@@setchapternewpage odd
@end example
You can specify one of three alternatives with the
@code{@@setchapternewpage} command:@refill
@table @asis
@item @code{@@setchapternewpage off}
Cause @TeX{} to typeset a new chapter on the same page as the last
chapter, after skipping some vertical whitespace. Also, cause @TeX{} to
format page headers for single-sided printing. (You can override the
headers format with the @code{@@headings double} command; see
@ref{headings on off, , The @code{@@headings} Command}.)@refill
@item @code{@@setchapternewpage on}
Cause @TeX{} to start new chapters on new pages and to format page
headers for single-sided printing. This is the form most often
used for short reports or personal printing.
This alternative is the default.@refill
@item @code{@@setchapternewpage odd}
Cause @TeX{} to start new chapters on new, odd-numbered pages
(right-handed pages) and to typeset for double-sided printing. This is
the form most often used for books and manuals.@refill
@end table
Texinfo does not have an @code{@@setchapternewpage even} command.@refill
You can countermand or modify the effect on headers of an
@code{@@setchapternewpage} command with an @code{@@headings} command.
@xref{headings on off, , The @code{@@headings} Command}.@refill
At the beginning of a manual or book, pages are not numbered---for
example, the title and copyright pages of a book are not numbered.
By convention, table of contents pages are numbered with roman
numerals and not in sequence with the rest of the document.@refill
Since an Info file does not have pages, the @code{@@setchapternewpage}
command has no effect on it.@refill
We recommend not including any @code{@@setchapternewpage} command in
your manual sources at all, since the desired output is not intrinsic to
the document. Instead, if you don't want the default option (no blank
pages, same headers on all pages) use the @option{--texinfo} option to
@command{texi2dvi} to specify the output you want.
@node paragraphindent
@subsection Paragraph Indenting
@cindex Indenting paragraphs
@cindex Paragraph indentation
@findex paragraphindent
The Texinfo processors may insert whitespace at the beginning of the
first line of each paragraph, thereby indenting that paragraph. You can
use the @code{@@paragraphindent} command to specify this indentation.
Write an @code{@@paragraphindent} command at the beginning of a line
followed by either @samp{asis} or a number:
@example
@@paragraphindent @var{indent}
@end example
The indentation is according to the value of @var{indent}:
@table @asis
@item @code{asis}
Do not change the existing indentation (not implemented in @TeX{}).
@item 0
Omit all indentation.
@item @var{n}
Indent by @var{n} space characters in Info output, by @var{n} ems in
@TeX{}.
@end table
The default value of @var{indent} is @samp{asis}.
@code{@@paragraphindent} is ignored for HTML output.
Write the @code{@@paragraphindent} command before or shortly after the
end-of-header line at the beginning of a Texinfo file. (If you write
the command between the start-of-header and end-of-header lines, the
region formatting commands indent paragraphs as specified.)
A peculiarity of the @code{texinfo-format-buffer} and
@code{texinfo-format-region} commands is that they do not indent (nor
fill) paragraphs that contain @code{@@w} or @code{@@*} commands.
@xref{Refilling Paragraphs}, for further information.
@node exampleindent
@subsection @code{@@exampleindent}: Environment Indenting
@cindex Indenting environments
@cindex Environment indentation
@cindex Example indentation
@findex exampleindent
The Texinfo processors indent each line of @code{@@example} and similar
environments. You can use the @code{@@exampleindent} command to specify
this indentation. Write an @code{@@exampleindent} command at the
beginning of a line followed by either @samp{asis} or a number:
@example
@@exampleindent @var{indent}
@end example
The indentation is according to the value of @var{indent}:
@table @asis
@item @code{asis}
Do not change the existing indentation (not implemented in @TeX{}).
@item 0
Omit all indentation.
@item @var{n}
Indent environments by @var{n} space characters in Info output, by
@var{n} ems in @TeX{}.
@end table
The default value of @var{indent} is 5. @code{@@exampleindent} is
ignored for HTML output.
Write the @code{@@exampleindent} command before or shortly after the
end-of-header line at the beginning of a Texinfo file. (If you write
the command between the start-of-header and end-of-header lines, the
region formatting commands indent examples as specified.)
@node End of Header
@subsection End of Header
@cindex End of header line
Follow the header lines with an @w{end-of-header} line.
An end-of-header line looks like this:@refill
@example
@@c %**end of header
@end example
If you include the @code{@@setchapternewpage} command between the
start-of-header and end-of-header lines, @TeX{} will typeset a region as
that command specifies. Similarly, if you include an @code{@@smallbook}
command between the start-of-header and end-of-header lines, @TeX{} will
typeset a region in the ``small'' book format.@refill
@ifinfo
The reason for the odd string of characters (@samp{%**}) is so that the
@code{texinfo-tex-region} command does not accidentally find
something that it should not when it is looking for the header.@refill
The start-of-header line and the end-of-header line are Texinfo mode
variables that you can change.@refill
@end ifinfo
@iftex
@xref{Start of Header}.
@end iftex
@node Info Summary and Permissions
@section Summary and Copying Permissions for Info
The title page and the copyright page appear only in the printed copy of
the manual; therefore, the same information must be inserted in a
section that appears only in the Info file. This section usually
contains a brief description of the contents of the Info file, a
copyright notice, and copying permissions.@refill
The copyright notice should read:@refill
@example
Copyright @var{year} @var{copyright-owner}
@end example
@noindent
and be put on a line by itself.@refill
Standard text for the copyright permissions is contained in an appendix
to this manual; see @ref{ifinfo Permissions, , @samp{ifinfo} Copying
Permissions}, for the complete text.@refill
The permissions text appears in an Info file @emph{before} the first
node. This mean that a reader does @emph{not} see this text when
reading the file using Info, except when using the advanced Info command
@kbd{g *}.
@node Titlepage & Copyright Page
@section The Title and Copyright Pages
A manual's name and author are usually printed on a title page.
Sometimes copyright information is printed on the title page as well;
more often, copyright information is printed on the back of the title
page.
The title and copyright pages appear in the printed manual, but not in the
Info file. Because of this, it is possible to use several slightly
obscure @TeX{} typesetting commands that cannot be used in an Info file.
In addition, this part of the beginning of a Texinfo file contains the text
of the copying permissions that will appear in the printed manual.@refill
@cindex Titlepage, for plain text
You may wish to include titlepage-like information for plain text
output. Simply place any such leading material between @code{@@ifinfo}
and @code{@@end ifinfo}; @command{makeinfo} includes this in its plain
text output. It will not show up in the Info readers.
@xref{Titlepage Permissions, , Titlepage Copying Permissions}, for the
standard text for the copyright permissions.@refill
@menu
* titlepage:: Create a title for the printed document.
* titlefont center sp:: The @code{@@titlefont}, @code{@@center},
and @code{@@sp} commands.
* title subtitle author:: The @code{@@title}, @code{@@subtitle},
and @code{@@author} commands.
* Copyright & Permissions:: How to write the copyright notice and
include copying permissions.
* end titlepage:: Turn on page headings after the title and
copyright pages.
* headings on off:: An option for turning headings on and off
and double or single sided printing.
@end menu
@node titlepage, titlefont center sp, Titlepage & Copyright Page, Titlepage & Copyright Page
@comment node-name, next, previous, up
@subsection @code{@@titlepage}
@cindex Title page
@findex titlepage
Start the material for the title page and following copyright page
with @code{@@titlepage} on a line by itself and end it with
@code{@@end titlepage} on a line by itself.@refill
The @code{@@end titlepage} command starts a new page and turns on page
numbering. (@xref{Headings, , Page Headings}, for details about how to
generate page headings.) All the material that you want to appear on
unnumbered pages should be put between the @code{@@titlepage} and
@code{@@end titlepage} commands. You can force the table of contents to
appear there with the @code{@@setcontentsaftertitlepage} command
(@pxref{Contents}).
@findex page@r{, within @code{@@titlepage}}
By using the @code{@@page} command you can force a page break within the
region delineated by the @code{@@titlepage} and @code{@@end titlepage}
commands and thereby create more than one unnumbered page. This is how
the copyright page is produced. (The @code{@@titlepage} command might
perhaps have been better named the @code{@@titleandadditionalpages}
command, but that would have been rather long!)
When you write a manual about a computer program, you should write the
version of the program to which the manual applies on the title page.
If the manual changes more frequently than the program or is independent
of it, you should also include an edition number@footnote{We have found
that it is helpful to refer to versions of manuals as `editions' and
versions of programs as `versions'; otherwise, we find we are liable to
confuse each other in conversation by referring to both the
documentation and the software with the same words.} for the manual.
This helps readers keep track of which manual is for which version of
the program. (The `Top' node should also contain this information; see
@ref{makeinfo top, , @code{@@top}}.)
Texinfo provides two main methods for creating a title page. One method
uses the @code{@@titlefont}, @code{@@sp}, and @code{@@center} commands
to generate a title page in which the words on the page are
centered.
The second method uses the @code{@@title}, @code{@@subtitle}, and
@code{@@author} commands to create a title page with black rules under
the title and author lines and the subtitle text set flush to the
right hand side of the page. With this method, you do not specify any
of the actual formatting of the title page. You specify the text
you want, and Texinfo does the formatting.
You may use either method, or you may combine them; see the examples in
the sections below.
@findex shorttitlepage
@cindex Bastard title page
@cindex Title page, bastard
For extremely simple applications, and for the bastard title page in
traditional book front matter, Texinfo also provides a command
@code{@@shorttitlepage} which takes a single argument as the title. The
argument is typeset on a page by itself and followed by a blank page.
@node titlefont center sp
@subsection @code{@@titlefont}, @code{@@center}, and @code{@@sp}
@findex titlefont
@findex center
@findex sp @r{(titlepage line spacing)}
You can use the @code{@@titlefont}, @code{@@sp}, and @code{@@center}
commands to create a title page for a printed document. (This is the
first of the two methods for creating a title page in Texinfo.)@refill
Use the @code{@@titlefont} command to select a large font suitable for
the title itself. You can use @code{@@titlefont} more than once if you
have an especially long title.
@need 700
For example:
@example
@@titlefont@{Texinfo@}
@end example
Use the @code{@@center} command at the beginning of a line to center
the remaining text on that line. Thus,@refill
@example
@@center @@titlefont@{Texinfo@}
@end example
@noindent
centers the title, which in this example is ``Texinfo'' printed
in the title font.@refill
Use the @code{@@sp} command to insert vertical space. For example:@refill
@example
@@sp 2
@end example
@noindent
This inserts two blank lines on the printed page. (@xref{sp, ,
@code{@@sp}}, for more information about the @code{@@sp}
command.)@refill
A template for this method looks like this:@refill
@example
@group
@@titlepage
@@sp 10
@@center @@titlefont@{@var{name-of-manual-when-printed}@}
@@sp 2
@@center @var{subtitle-if-any}
@@sp 2
@@center @var{author}
@dots{}
@@end titlepage
@end group
@end example
The spacing of the example fits an 8.5 by 11 inch manual.@refill
@node title subtitle author
@subsection @code{@@title}, @code{@@subtitle}, and @code{@@author}
@findex title
@findex subtitle
@findex author
You can use the @code{@@title}, @code{@@subtitle}, and @code{@@author}
commands to create a title page in which the vertical and horizontal
spacing is done for you automatically. This contrasts with the method
described in the previous section, in which the @code{@@sp} command is
needed to adjust vertical spacing.
Write the @code{@@title}, @code{@@subtitle}, or @code{@@author}
commands at the beginning of a line followed by the title, subtitle,
or author.@refill
The @code{@@title} command produces a line in which the title is set
flush to the left-hand side of the page in a larger than normal font.
The title is underlined with a black rule. Only a single line is
allowed; the @code{@@*} command may not be used to break the title into
two lines. To handle very long titles, you may find it profitable to
use both @code{@@title} and @code{@@titlefont}; see the final example in
this section.
The @code{@@subtitle} command sets subtitles in a normal-sized font
flush to the right-hand side of the page.@refill
The @code{@@author} command sets the names of the author or authors in
a middle-sized font flush to the left-hand side of the page on a line
near the bottom of the title page. The names are underlined with a
black rule that is thinner than the rule that underlines the title.
(The black rule only occurs if the @code{@@author} command line is
followed by an @code{@@page} command line.)@refill
There are two ways to use the @code{@@author} command: you can write
the name or names on the remaining part of the line that starts with
an @code{@@author} command:@refill
@example
@@author by Jane Smith and John Doe
@end example
@noindent
or you can write the names one above each other by using two (or more)
@code{@@author} commands:@refill
@example
@group
@@author Jane Smith
@@author John Doe
@end group
@end example
@noindent
(Only the bottom name is underlined with a black rule.)@refill
@need 950
A template for this method looks like this:@refill
@example
@group
@@titlepage
@@title @var{name-of-manual-when-printed}
@@subtitle @var{subtitle-if-any}
@@subtitle @var{second-subtitle}
@@author @var{author}
@@page
@dots{}
@@end titlepage
@end group
@end example
You may also combine the @code{@@titlefont} method described in the
previous section and @code{@@title} method described in this one. This
may be useful if you have a very long title. Here is a real-life example:
@example
@group
@@titlepage
@@titlefont@{GNU Software@}
@@sp 1
@@title for MS-Windows and MS-DOS
@@subtitle Edition @@value@{edition@} for Release @@value@{cd-edition@}
@@author by Daniel Hagerty, Melissa Weisshaus
@@author and Eli Zaretskii
@end group
@end example
@noindent
(The use of @code{@@value} here is explained in @ref{value
Example,,@code{@@value} Example}.)
@node Copyright & Permissions
@subsection Copyright Page and Permissions
@cindex Copyright page
@cindex Printed permissions
@cindex Permissions, printed
By international treaty, the copyright notice for a book should be
either on the title page or on the back of the title page. The
copyright notice should include the year followed by the name of the
organization or person who owns the copyright.@refill
When the copyright notice is on the back of the title page, that page
is customarily not numbered. Therefore, in Texinfo, the information
on the copyright page should be within @code{@@titlepage} and
@code{@@end titlepage} commands.@refill
@findex vskip
@findex filll
@cindex Vertical whitespace (@samp{vskip})
Use the @code{@@page} command to cause a page break. To push the
copyright notice and the other text on the copyright page towards the
bottom of the page, you can write a somewhat mysterious line after the
@code{@@page} command that reads like this:@refill
@example
@@vskip 0pt plus 1filll
@end example
@noindent
This is a @TeX{} command that is not supported by the Info formatting
commands. The @code{@@vskip} command inserts whitespace. The
@samp{0pt plus 1filll} means to put in zero points of mandatory whitespace,
and as much optional whitespace as needed to push the
following text to the bottom of the page. Note the use of three
@samp{l}s in the word @samp{filll}; this is the correct usage in
@TeX{}.@refill
@findex copyright
In a printed manual, the @code{@@copyright@{@}} command generates a
@samp{c} inside a circle. (In Info, it generates @samp{(C)}.) The
copyright notice itself has the following legally defined sequence:@refill
@example
Copyright @copyright{} @var{year} @var{copyright-owner}
@end example
It is customary to put information on how to get a manual after the
copyright notice, followed by the copying permissions for the manual.
Permissions must be given here as well as in the summary segment within
@code{@@ifinfo} and @code{@@end ifinfo} that immediately follows the
header since this text appears only in the printed manual and the
@samp{ifinfo} text appears only in the Info file.
@xref{Sample Permissions}, for the standard text.@refill
@node end titlepage
@subsection Heading Generation
@findex end titlepage
@cindex Headings, page, begin to appear
@cindex Titlepage end starts headings
@cindex End titlepage starts headings
An @code{@@end titlepage} command on a line by itself not only marks
the end of the title and copyright pages, but also causes @TeX{} to start
generating page headings and page numbers.
To repeat what is said elsewhere, Texinfo has two standard page heading
formats, one for documents which are printed on one side of each sheet of paper
(single-sided printing), and the other for documents which are printed on both
sides of each sheet (double-sided printing).
(@xref{setchapternewpage, ,@code{@@setchapternewpage}}.)
You can specify these formats in different ways:@refill
@itemize @bullet
@item
The conventional way is to write an @code{@@setchapternewpage} command
before the title page commands, and then have the @code{@@end
titlepage} command start generating page headings in the manner desired.
(@xref{setchapternewpage, , @code{@@setchapternewpage}}.)@refill
@item
Alternatively, you can use the @code{@@headings} command to prevent page
headings from being generated or to start them for either single or
double-sided printing. (Write an @code{@@headings} command immediately
after the @code{@@end titlepage} command. @xref{headings on off, , The
@code{@@headings} Command}, for more information.)@refill
@item
Or, you may specify your own page heading and footing format.
@xref{Headings, , Page Headings}, for detailed
information about page headings and footings.@refill
@end itemize
Most documents are formatted with the standard single-sided or
double-sided format, using @code{@@setchapternewpage odd} for
double-sided printing and no @code{@@setchapternewpage} command for
single-sided printing.@refill
@node headings on off, , end titlepage, Titlepage & Copyright Page
@comment node-name, next, previous, up
@subsection The @code{@@headings} Command
@findex headings
The @code{@@headings} command is rarely used. It specifies what kind of
page headings and footings to print on each page. Usually, this is
controlled by the @code{@@setchapternewpage} command. You need the
@code{@@headings} command only if the @code{@@setchapternewpage} command
does not do what you want, or if you want to turn off pre-defined page
headings prior to defining your own. Write an @code{@@headings} command
immediately after the @code{@@end titlepage} command.@refill
You can use @code{@@headings} as follows:@refill
@table @code
@item @@headings off
Turn off printing of page headings.@refill
@item @@headings single
Turn on page headings appropriate for single-sided printing.
@refill
@item @@headings double
@itemx @@headings on
Turn on page headings appropriate for double-sided printing. The two
commands, @code{@@headings on} and @code{@@headings double}, are
synonymous.@refill
@item @@headings singleafter
@itemx @@headings doubleafter
Turn on @code{single} or @code{double} headings, respectively, after the
current page is output.
@item @@headings on
Turn on page headings: @code{single} if @samp{@@setchapternewpage
on}, @code{double} otherwise.
@end table
For example, suppose you write @code{@@setchapternewpage off} before the
@code{@@titlepage} command to tell @TeX{} to start a new chapter on the
same page as the end of the last chapter. This command also causes
@TeX{} to typeset page headers for single-sided printing. To cause
@TeX{} to typeset for double sided printing, write @code{@@headings
double} after the @code{@@end titlepage} command.
You can stop @TeX{} from generating any page headings at all by
writing @code{@@headings off} on a line of its own immediately after the
line containing the @code{@@end titlepage} command, like this:@refill
@example
@@end titlepage
@@headings off
@end example
@noindent
The @code{@@headings off} command overrides the @code{@@end titlepage}
command, which would otherwise cause @TeX{} to print page
headings.@refill
You can also specify your own style of page heading and footing.
@xref{Headings, , Page Headings}, for more information.@refill
@node The Top Node
@section The `Top' Node and Master Menu
@cindex @samp{@r{Top}} node
@cindex Master menu
@cindex Node, `Top'
The `Top' node is the node from which you enter an Info file.@refill
A `Top' node should contain a brief description of the Info file and an
extensive, master menu for the whole Info file.
This helps the reader understand what the Info file is
about. Also, you should write the version number of the program to
which the Info file applies; or, at least, the edition number.@refill
The contents of the `Top' node should appear only in the Info file; none
of it should appear in printed output, so enclose it between
@code{@@ifinfo} and @code{@@end ifinfo} commands. (@TeX{} does not
print either an @code{@@node} line or a menu; they appear only in Info;
strictly speaking, you are not required to enclose these parts between
@code{@@ifinfo} and @code{@@end ifinfo}, but it is simplest to do so.
@xref{Conditionals, , Conditionally Visible Text}.)@refill
@menu
* Title of Top Node:: Sketch what the file is about.
* Master Menu Parts:: A master menu has three or more parts.
@end menu
@node Title of Top Node
@subsection `Top' Node Title
Sometimes, you will want to place an @code{@@top} sectioning command
line containing the title of the document immediately after the
@code{@@node Top} line (@pxref{makeinfo top command, , The @code{@@top}
Sectioning Command}, for more information).@refill
For example, the beginning of the Top node of this manual contains an
@code{@@top} sectioning command, a short description, and edition and
version information. It looks like this:@refill
@example
@group
@dots{}
@@end titlepage
@@ifnottex
@@node Top, Copying, , (dir)
@@top Texinfo
Texinfo is a documentation system@dots{}
@end group
@group
This is edition@dots{}
@dots{}
@@end ifnottex
@end group
@group
@@menu
* Copying:: Texinfo is freely
redistributable.
* Overview:: What is Texinfo?
@dots{}
@end group
@@end menu
@end example
In a `Top' node, the `Previous', and `Up' nodes usually refer to the top
level directory of the whole Info system, which is called @samp{(dir)}.
The `Next' node refers to the first node that follows the main or master
menu, which is usually the copying permissions, introduction, or first
chapter.@refill
@node Master Menu Parts, , Title of Top Node, The Top Node
@subsection Parts of a Master Menu
@cindex Master menu parts
@cindex Parts of a master menu
A @dfn{master menu} is a detailed main menu listing all the nodes in a
file.
A master menu is enclosed in @code{@@menu} and @code{@@end menu}
commands and does not appear in the printed document.@refill
Generally, a master menu is divided into parts.@refill
@itemize @bullet
@item
The first part contains the major nodes in the Texinfo file: the nodes
for the chapters, chapter-like sections, and the appendices.@refill
@item
The second part contains nodes for the indices.@refill
@item
The third and subsequent parts contain a listing of the other, lower
level nodes, often ordered by chapter. This way, rather than go
through an intermediary menu, an inquirer can go directly to a
particular node when searching for specific information. These menu
items are not required; add them if you think they are a
convenience. If you do use them, put @code{@@detailmenu} before the
first one, and @code{@@end detailmenu} after the last; otherwise,
@code{makeinfo} will get confused.
@end itemize
Each section in the menu can be introduced by a descriptive line. So
long as the line does not begin with an asterisk, it will not be
treated as a menu entry. (@xref{Writing a Menu}, for more
information.)@refill
For example, the master menu for this manual looks like the following
(but has many more entries):@refill
@example
@group
@@menu
* Copying:: Texinfo is freely
redistributable.
* Overview:: What is Texinfo?
* Texinfo Mode:: Special features in GNU Emacs.
@dots{}
@dots{}
@end group
@group
* Command and Variable Index::
An entry for each @@-command.
* Concept Index:: An entry for each concept.
@end group
@group
@@detailmenu
--- The Detailed Node Listing ---
Overview of Texinfo
* Info Files:: What is an Info file?
* Printed Manuals:: Characteristics of
a printed manual.
@dots{}
@dots{}
@end group
@group
Using Texinfo Mode
* Info on a Region:: Formatting part of a file
for Info.
@dots{}
@dots{}
@@end detailmenu
@@end menu
@end group
@end example
@node Software Copying Permissions, , The Top Node, Beginning a File
@comment node-name, next, previous, up
@section Software Copying Permissions
@cindex Software copying permissions
@cindex Copying software
@cindex Distribution
@cindex License agreement
If the Texinfo file has a section containing the ``General Public
License'' and the distribution information and a warranty disclaimer
for the software that is documented, this section usually follows the
`Top' node. The General Public License is very important to Project
GNU software. It ensures that you and others will continue to have a
right to use and share the software.@refill
The copying and distribution information and the disclaimer are
followed by an introduction or else by the first chapter of the
manual.@refill
@cindex Introduction, as part of file
Although an introduction is not a required part of a Texinfo file, it
is very helpful. Ideally, it should state clearly and concisely what
the file is about and who would be interested in reading it. In
general, an introduction would follow the licensing and distribution
information, although sometimes people put it earlier in the document.
Usually, an introduction is put in an @code{@@unnumbered} section.
(@xref{unnumbered & appendix, , The @code{@@unnumbered} and
@code{@@appendix} Commands}.)@refill
@node Ending a File, Structuring, Beginning a File, Top
@comment node-name, next, previous, up
@chapter Ending a Texinfo File
@cindex Ending a Texinfo file
@cindex Texinfo file ending
@cindex File ending
@findex bye
The end of a Texinfo file should include commands to create indices and
(usually) to generate detailed and summary tables of contents. And it
must include the @code{@@bye} command that marks the last line processed
by @TeX{}.@refill
@need 700
For example:
@example
@@node Concept Index, , Variables Index, Top
@@c node-name, next, previous, up
@@unnumbered Concept Index
@@printindex cp
@@contents
@@bye
@end example
@menu
* Printing Indices & Menus:: How to print an index in hardcopy and
generate index menus in Info.
* Contents:: How to create a table of contents.
* File End:: How to mark the end of a file.
@end menu
@node Printing Indices & Menus, Contents, Ending a File, Ending a File
@comment node-name, next, previous, up
@section Index Menus and Printing an Index
@findex printindex
@cindex Printing an index
@cindex Indices, printing and menus
@cindex Generating menus with indices
@cindex Menus generated with indices
To print an index means to include it as part of a manual or Info
file. This does not happen automatically just because you use
@code{@@cindex} or other index-entry generating commands in the
Texinfo file; those just cause the raw data for the index to be
accumulated. To generate an index, you must include the
@code{@@printindex} command at the place in the document where you
want the index to appear. Also, as part of the process of creating a
printed manual, you must run a program called @code{texindex}
(@pxref{Hardcopy}) to sort the raw data to produce a sorted
index file. The sorted index file is what is actually used to
print the index.@refill
Texinfo offers six different types of predefined index: the concept
index, the function index, the variables index, the keystroke index, the
program index, and the data type index (@pxref{Predefined Indices}). Each
index type has a two-letter name: @samp{cp}, @samp{fn}, @samp{vr},
@samp{ky}, @samp{pg}, and @samp{tp}. You may merge indices, or put them
into separate sections (@pxref{Combining Indices}); or you may define
your own indices (@pxref{New Indices, , Defining New Indices}).@refill
The @code{@@printindex} command takes a two-letter index name, reads
the corresponding sorted index file and formats it appropriately into
an index.@refill
@ignore
The two-letter index names are:
@table @samp
@item cp
concept index
@item fn
function index
@item vr
variable index
@item ky
key index
@item pg
program index
@item tp
data type index
@end table
@end ignore
The @code{@@printindex} command does not generate a chapter heading
for the index. Consequently, you should precede the
@code{@@printindex} command with a suitable section or chapter command
(usually @code{@@unnumbered}) to supply the chapter heading and put
the index into the table of contents. Precede the @code{@@unnumbered}
command with an @code{@@node} line.@refill
@need 1200
For example:
@smallexample
@group
@@node Variable Index, Concept Index, Function Index, Top
@@comment node-name, next, previous, up
@@unnumbered Variable Index
@@printindex vr
@end group
@group
@@node Concept Index, , Variable Index, Top
@@comment node-name, next, previous, up
@@unnumbered Concept Index
@@printindex cp
@end group
@end smallexample
@noindent
Readers often prefer that the concept index come last in a book,
since that makes it easiest to find. Having just one index helps
readers also, since then they have only one place to look
(@pxref{synindex}).
@node Contents
@section Generating a Table of Contents
@cindex Table of contents
@cindex Contents, Table of
@cindex Short table of contents
@findex contents
@findex summarycontents
@findex shortcontents
The @code{@@chapter}, @code{@@section}, and other structuring commands
supply the information to make up a table of contents, but they do not
cause an actual table to appear in the manual. To do this, you must use
the @code{@@contents} and/or @code{@@summarycontents} command(s).
@table @code
@item @@contents
Generate a table of contents in a printed manual, including all
chapters, sections, subsections, etc., as well as appendices and
unnumbered chapters. (Headings generated by the @code{@@heading}
series of commands do not appear in the table of contents.)
@item @@shortcontents
@itemx @@summarycontents
(@code{@@summarycontents} is a synonym for @code{@@shortcontents}; the
two commands are exactly the same.)@refill
Generate a short or summary table of contents that lists only the
chapters (and appendices and unnumbered chapters). Omit sections, subsections
and subsubsections. Only a long manual needs a short table
of contents in addition to the full table of contents.@refill
@end table
Both contents commands should be written on a line by themselves.
The contents commands automatically generate a chapter-like heading at
the top of the first table of contents page, so don't include any
sectioning command such as @code{@@unnumbered} before them.
Since an Info file uses menus instead of tables of contents, the Info
formatting commands ignore the contents commands. But the contents are
included in plain text output (generated by @code{makeinfo --no-headers}).
The contents commands can be placed either at the very end of the file,
after any indices (see the previous section) and just before the
@code{@@bye} (see the next section), or near the beginning of the file,
after the @code{@@end titlepage} (@pxref{titlepage}). The advantage to
the former is that then the contents output is always up to date,
because it reflects the processing just done. The advantage to the
latter is that the contents are printed in the proper place, thus you do
not need to rearrange the DVI file with @command{dviselect} or shuffle
paper. However, contents commands at the beginning of the document are
ignored when outputting to standard output.
@findex setcontentsaftertitlepage
@findex setshortcontentsaftertitlepage
@cindex Contents, after title page
@cindex Table of contents, after title page
As an author, you can put the contents commands wherever you prefer.
But if you are a user simply printing a manual, you may wish to print
the contents after the title page even if the author put the contents
commands at the end of the document (as is the case in most existing
Texinfo documents). You can do this by specifying
@code{@@setcontentsaftertitlepage} and/or
@code{@@setshortcontentsaftertitlepage}. The first prints only the main
contents after the @code{@@end titlepage}; the second prints both the
short contents and the main contents. In either case, any subsequent
@code{@@contents} or @code{@@shortcontents} is ignored (unless no
@code{@@end titlepage} is ever encountered).
You need to include the @code{@@set@dots{}contentsaftertitlepage}
commands early in the document (just after @code{@@setfilename}, for
example). Or, if you're using @command{texi2dvi} (@pxref{Format with
texi2dvi}), you can use its @option{--texinfo} option to specify this
without altering the source file at all. For example:
@example
texi2dvi --texinfo=@@setshortcontentsaftertitlepage foo.texi
@end example
@node File End
@section @code{@@bye} File Ending
@findex bye
An @code{@@bye} command terminates @TeX{} or Info formatting. None of
the formatting commands see any of the file following @code{@@bye}.
The @code{@@bye} command should be on a line by itself.@refill
If you wish, you may follow the @code{@@bye} line with notes. These notes
will not be formatted and will not appear in either Info or a printed
manual; it is as if text after @code{@@bye} were within @code{@@ignore}
@dots{} @code{@@end ignore}. Also, you may follow the @code{@@bye} line
with a local variables list. @xref{Compile-Command, , Using Local
Variables and the Compile Command}, for more information.@refill
@node Structuring
@chapter Chapter Structuring
@cindex Chapter structuring
@cindex Structuring of chapters
The @dfn{chapter structuring} commands divide a document into a hierarchy of
chapters, sections, subsections, and subsubsections. These commands
generate large headings; they also provide information for the table
of contents of a printed manual (@pxref{Contents, , Generating a Table
of Contents}).@refill
The chapter structuring commands do not create an Info node structure,
so normally you should put an @code{@@node} command immediately before
each chapter structuring command (@pxref{Nodes}). The only time you
are likely to use the chapter structuring commands without using the
node structuring commands is if you are writing a document that
contains no cross references and will never be transformed into Info
format.@refill
It is unlikely that you will ever write a Texinfo file that is
intended only as an Info file and not as a printable document. If you
do, you might still use chapter structuring commands to create a
heading at the top of each node---but you don't need to.@refill
@menu
* Tree Structuring:: A manual is like an upside down tree @dots{}
* Structuring Command Types:: How to divide a manual into parts.
* makeinfo top:: The @code{@@top} command, part of the `Top' node.
* chapter::
* unnumbered & appendix::
* majorheading & chapheading::
* section::
* unnumberedsec appendixsec heading::
* subsection::
* unnumberedsubsec appendixsubsec subheading::
* subsubsection:: Commands for the lowest level sections.
* Raise/lower sections:: How to change commands' hierarchical level.
@end menu
@node Tree Structuring
@section Tree Structure of Sections
@cindex Tree structuring
A Texinfo file is usually structured like a book with chapters,
sections, subsections, and the like. This structure can be visualized
as a tree (or rather as an upside-down tree) with the root at the top
and the levels corresponding to chapters, sections, subsection, and
subsubsections.@refill
Here is a diagram that shows a Texinfo file with three chapters,
each of which has two sections.@refill
@example
@group
Top
|
-------------------------------------
| | |
Chapter 1 Chapter 2 Chapter 3
| | |
-------- -------- --------
| | | | | |
Section Section Section Section Section Section
1.1 1.2 2.1 2.2 3.1 3.2
@end group
@end example
In a Texinfo file that has this structure, the beginning of Chapter 2
looks like this:@refill
@example
@group
@@node Chapter 2, Chapter 3, Chapter 1, top
@@chapter Chapter 2
@end group
@end example
The chapter structuring commands are described in the sections that
follow; the @code{@@node} and @code{@@menu} commands are described in
following chapters. (@xref{Nodes}, and see @ref{Menus}.)@refill
@node Structuring Command Types
@section Structuring Command Types
The chapter structuring commands fall into four groups or series, each
of which contains structuring commands corresponding to the
hierarchical levels of chapters, sections, subsections, and
subsubsections.@refill
The four groups are the @code{@@chapter} series, the
@code{@@unnumbered} series, the @code{@@appendix} series, and the
@code{@@heading} series.@refill
Each command produces titles that have a different appearance on the
printed page or Info file; only some of the commands produce
titles that are listed in the table of contents of a printed book or
manual.@refill
@itemize @bullet
@item
The @code{@@chapter} and @code{@@appendix} series of commands produce
numbered or lettered entries both in the body of a printed work and in
its table of contents.@refill
@item
The @code{@@unnumbered} series of commands produce unnumbered entries
both in the body of a printed work and in its table of contents. The
@code{@@top} command, which has a special use, is a member of this
series (@pxref{makeinfo top, , @code{@@top}}).@refill
@item
The @code{@@heading} series of commands produce unnumbered headings
that do not appear in a table of contents. The heading commands never
start a new page.@refill
@item
The @code{@@majorheading} command produces results similar to using
the @code{@@chapheading} command but generates a larger vertical
whitespace before the heading.@refill
@item
When an @code{@@setchapternewpage} command says to do so, the
@code{@@chapter}, @code{@@unnumbered}, and @code{@@appendix} commands
start new pages in the printed manual; the @code{@@heading} commands
do not.@refill
@end itemize
Here are the four groups of chapter structuring commands:@refill
@multitable @columnfractions .19 .30 .29 .22
@item @tab @tab @tab No new page
@item Numbered @tab Unnumbered @tab Lettered and numbered
@tab Unnumbered
@item In contents @tab In contents @tab In contents @tab Not in contents
@item @tab @code{@@top} @tab
@tab @code{@@majorheading}
@item @code{@@chapter} @tab @code{@@unnumbered} @tab @code{@@appendix}
@tab @code{@@chapheading}
@item @code{@@section} @tab @code{@@unnumberedsec} @tab @code{@@appendixsec}
@tab @code{@@heading}
@item @code{@@subsection} @tab @code{@@unnumberedsubsec} @tab @code{@@appendixsubsec}
@tab @code{@@subheading}
@item @code{@@subsubsection} @tab @code{@@unnumberedsubsubsec} @tab @code{@@appendixsubsubsec}
@tab @code{@@subsubheading}
@end multitable
@node makeinfo top
@section @code{@@top}
The @code{@@top} command is a special sectioning command that you use
only after an @samp{@@node Top} line at the beginning of a Texinfo file.
The @code{@@top} command tells the @code{makeinfo} formatter which node
is the `Top' node, so it can use it as the root of the node tree if your
manual uses implicit pointers. It has the same typesetting effect as
@code{@@unnumbered} (@pxref{unnumbered & appendix, , @code{@@unnumbered}
and @code{@@appendix}}). For detailed information, see @ref{makeinfo
top command, , The @code{@@top} Command}.
The @code{@@top} node and its menu (if any) is conventionally wrapped in
an @code{@@ifnottex} conditional so that it will appear only in Info and
HTML output, not @TeX{}.
@node chapter, unnumbered & appendix, makeinfo top, Structuring
@comment node-name, next, previous, up
@section @code{@@chapter}
@findex chapter
@code{@@chapter} identifies a chapter in the document. Write the
command at the beginning of a line and follow it on the same line by
the title of the chapter.@refill
For example, this chapter in this manual is entitled ``Chapter
Structuring''; the @code{@@chapter} line looks like this:@refill
@example
@@chapter Chapter Structuring
@end example
In @TeX{}, the @code{@@chapter} command creates a chapter in the
document, specifying the chapter title. The chapter is numbered
automatically.@refill
In Info, the @code{@@chapter} command causes the title to appear on a
line by itself, with a line of asterisks inserted underneath. Thus,
in Info, the above example produces the following output:@refill
@example
Chapter Structuring
*******************
@end example
@findex centerchap
Texinfo also provides a command @code{@@centerchap}, which is analogous
to @code{@@unnumbered}, but centers its argument in the printed output.
This kind of stylistic choice is not usually offered by Texinfo.
@c but the Hacker's Dictionary wanted it ...
@node unnumbered & appendix
@section @code{@@unnumbered} and @code{@@appendix}
@findex unnumbered
@findex appendix
Use the @code{@@unnumbered} command to create a chapter that appears
in a printed manual without chapter numbers of any kind. Use the
@code{@@appendix} command to create an appendix in a printed manual
that is labelled by letter instead of by number.@refill
For Info file output, the @code{@@unnumbered} and @code{@@appendix}
commands are equivalent to @code{@@chapter}: the title is printed on a
line by itself with a line of asterisks underneath. (@xref{chapter, ,
@code{@@chapter}}.)@refill
To create an appendix or an unnumbered chapter, write an
@code{@@appendix} or @code{@@unnumbered} command at the beginning of a
line and follow it on the same line by the title, as you would if you
were creating a chapter.@refill
@node majorheading & chapheading, section, unnumbered & appendix, Structuring
@section @code{@@majorheading}, @code{@@chapheading}
@findex majorheading
@findex chapheading
The @code{@@majorheading} and @code{@@chapheading} commands put
chapter-like headings in the body of a document.@refill
However, neither command causes @TeX{} to produce a numbered heading
or an entry in the table of contents; and neither command causes
@TeX{} to start a new page in a printed manual.@refill
In @TeX{}, an @code{@@majorheading} command generates a larger vertical
whitespace before the heading than an @code{@@chapheading} command but
is otherwise the same.@refill
In Info,
the @code{@@majorheading} and
@code{@@chapheading} commands are equivalent to
@code{@@chapter}: the title is printed on a line by itself with a line
of asterisks underneath. (@xref{chapter, , @code{@@chapter}}.)@refill
@node section, unnumberedsec appendixsec heading, majorheading & chapheading, Structuring
@comment node-name, next, previous, up
@section @code{@@section}
@findex section
In a printed manual, an @code{@@section} command identifies a
numbered section within a chapter. The section title appears in the
table of contents. In Info, an @code{@@section} command provides a
title for a segment of text, underlined with @samp{=}.@refill
This section is headed with an @code{@@section} command and looks like
this in the Texinfo file:@refill
@example
@@section @@code@{@@@@section@}
@end example
To create a section, write the @code{@@section} command at the
beginning of a line and follow it on the same line by the section
title.@refill
Thus,
@example
@@section This is a section
@end example
@noindent
produces
@example
@group
This is a section
=================
@end group
@end example
@noindent
in Info.
@node unnumberedsec appendixsec heading, subsection, section, Structuring
@comment node-name, next, previous, up
@section @code{@@unnumberedsec}, @code{@@appendixsec}, @code{@@heading}
@findex unnumberedsec
@findex appendixsec
@findex heading
The @code{@@unnumberedsec}, @code{@@appendixsec}, and @code{@@heading}
commands are, respectively, the unnumbered, appendix-like, and
heading-like equivalents of the @code{@@section} command.
(@xref{section, , @code{@@section}}.)@refill
@table @code
@item @@unnumberedsec
The @code{@@unnumberedsec} command may be used within an
unnumbered chapter or within a regular chapter or appendix to
provide an unnumbered section.@refill
@item @@appendixsec
@itemx @@appendixsection
@code{@@appendixsection} is a longer spelling of the
@code{@@appendixsec} command; the two are synonymous.@refill
@findex appendixsection
Conventionally, the @code{@@appendixsec} or @code{@@appendixsection}
command is used only within appendices.@refill
@item @@heading
You may use the @code{@@heading} command anywhere you wish for a
section-style heading that will not appear in the table of contents.@refill
@end table
@node subsection, unnumberedsubsec appendixsubsec subheading, unnumberedsec appendixsec heading, Structuring
@comment node-name, next, previous, up
@section The @code{@@subsection} Command
@findex subsection
Subsections are to sections as sections are to chapters.
(@xref{section, , @code{@@section}}.) In Info, subsection titles are
underlined with @samp{-}. For example,@refill
@example
@@subsection This is a subsection
@end example
@noindent
produces
@example
@group
This is a subsection
--------------------
@end group
@end example
In a printed manual, subsections are listed in the table of contents
and are numbered three levels deep.@refill
@node unnumberedsubsec appendixsubsec subheading, subsubsection, subsection, Structuring
@comment node-name, next, previous, up
@section The @code{@@subsection}-like Commands
@cindex Subsection-like commands
@findex unnumberedsubsec
@findex appendixsubsec
@findex subheading
The @code{@@unnumberedsubsec}, @code{@@appendixsubsec}, and
@code{@@subheading} commands are, respectively, the unnumbered,
appendix-like, and heading-like equivalents of the @code{@@subsection}
command. (@xref{subsection, , @code{@@subsection}}.)@refill
In Info, the @code{@@subsection}-like commands generate a title
underlined with hyphens. In a printed manual, an @code{@@subheading}
command produces a heading like that of a subsection except that it is
not numbered and does not appear in the table of contents. Similarly,
an @code{@@unnumberedsubsec} command produces an unnumbered heading like
that of a subsection and an @code{@@appendixsubsec} command produces a
subsection-like heading labelled with a letter and numbers; both of
these commands produce headings that appear in the table of
contents.@refill
@node subsubsection, Raise/lower sections, unnumberedsubsec appendixsubsec subheading, Structuring
@comment node-name, next, previous, up
@section The `subsub' Commands
@cindex Subsub commands
@findex subsubsection
@findex unnumberedsubsubsec
@findex appendixsubsubsec
@findex subsubheading
The fourth and lowest level sectioning commands in Texinfo are the
`subsub' commands. They are:@refill
@table @code
@item @@subsubsection
Subsubsections are to subsections as subsections are to sections.
(@xref{subsection, , @code{@@subsection}}.) In a printed manual,
subsubsection titles appear in the table of contents and are numbered
four levels deep.@refill
@item @@unnumberedsubsubsec
Unnumbered subsubsection titles appear in the table of contents of a
printed manual, but lack numbers. Otherwise, unnumbered
subsubsections are the same as subsubsections. In Info, unnumbered
subsubsections look exactly like ordinary subsubsections.@refill
@item @@appendixsubsubsec
Conventionally, appendix commands are used only for appendices and are
lettered and numbered appropriately in a printed manual. They also
appear in the table of contents. In Info, appendix subsubsections look
exactly like ordinary subsubsections.@refill
@item @@subsubheading
The @code{@@subsubheading} command may be used anywhere that you need
a small heading that will not appear in the table of contents. In
Info, subsubheadings look exactly like ordinary subsubsection
headings.@refill
@end table
In Info, `subsub' titles are underlined with periods.
For example,@refill
@example
@@subsubsection This is a subsubsection
@end example
@noindent
produces
@example
@group
This is a subsubsection
.......................
@end group
@end example
@node Raise/lower sections, , subsubsection, Structuring
@comment node-name, next, previous, up
@section @code{@@raisesections} and @code{@@lowersections}
@findex raisesections
@findex lowersections
@cindex Raising and lowering sections
@cindex Sections, raising and lowering
The @code{@@raisesections} and @code{@@lowersections} commands raise and
lower the hierarchical level of chapters, sections, subsections and the
like. The @code{@@raisesections} command changes sections to chapters,
subsections to sections, and so on. The @code{@@lowersections} command
changes chapters to sections, sections to subsections, and so on.
@cindex Include files, and section levels
An @code{@@lowersections} command is useful if you wish to include text
that is written as an outer or standalone Texinfo file in another
Texinfo file as an inner, included file. If you write the command at
the beginning of the file, all your @code{@@chapter} commands are
formatted as if they were @code{@@section} commands, all your
@code{@@section} command are formatted as if they were
@code{@@subsection} commands, and so on.
@need 1000
@code{@@raisesections} raises a command one level in the chapter
structuring hierarchy:@refill
@example
@group
@r{Change} @r{To}
@@subsection @@section,
@@section @@chapter,
@@heading @@chapheading,
@r{etc.}
@end group
@end example
@need 1000
@code{@@lowersections} lowers a command one level in the chapter
structuring hierarchy:@refill
@example
@group
@r{Change} @r{To}
@@chapter @@section,
@@subsection @@subsubsection,
@@heading @@subheading,
@r{etc.}
@end group
@end example
An @code{@@raisesections} or @code{@@lowersections} command changes only
those structuring commands that follow the command in the Texinfo file.
Write an @code{@@raisesections} or @code{@@lowersections} command on a
line of its own.
An @code{@@lowersections} command cancels an @code{@@raisesections}
command, and vice versa. Typically, the commands are used like this:
@example
@@lowersections
@@include somefile.texi
@@raisesections
@end example
Without the @code{@@raisesections}, all the subsequent sections in your
document will be lowered.
Repeated use of the commands continue to raise or lower the hierarchical
level a step at a time.
An attempt to raise above `chapters' reproduces chapter commands; an
attempt to lower below `subsubsections' reproduces subsubsection
commands.
@node Nodes
@chapter Nodes
@dfn{Nodes} are the primary segments of a Texinfo file. They do not
themselves impose a hierarchical or any other kind of structure on a file.
Nodes contain @dfn{node pointers} that name other nodes, and can contain
@dfn{menus} which are lists of nodes. In Info, the movement commands
can carry you to a pointed-to node or to a node listed in a menu. Node
pointers and menus provide structure for Info files just as chapters,
sections, subsections, and the like, provide structure for printed
books.@refill
@menu
* Two Paths:: Different commands to structure
Info output and printed output.
* Node Menu Illustration:: A diagram, and sample nodes and menus.
* node:: Creating nodes, in detail.
* makeinfo Pointer Creation:: Letting makeinfo determine node pointers.
* anchor:: Defining arbitrary cross-reference targets.
@end menu
@node Two Paths
@section Two Paths
The node and menu commands and the chapter structuring commands are
technically independent of each other:
@itemize @bullet
@item
In Info, node and menu commands provide structure. The chapter
structuring commands generate headings with different kinds of
underlining---asterisks for chapters, hyphens for sections, and so on;
they do nothing else.@refill
@item
In @TeX{}, the chapter structuring commands generate chapter and section
numbers and tables of contents. The node and menu commands provide
information for cross references; they do nothing else.@refill
@end itemize
You can use node pointers and menus to structure an Info file any way
you want; and you can write a Texinfo file so that its Info output has a
different structure than its printed output. However, virtually all
Texinfo files are written such that the structure for the Info output
corresponds to the structure for the printed output. It is neither
convenient nor understandable to the reader to do otherwise.@refill
Generally, printed output is structured in a tree-like hierarchy in
which the chapters are the major limbs from which the sections branch
out. Similarly, node pointers and menus are organized to create a
matching structure in the Info output.@refill
@node Node Menu Illustration
@section Node and Menu Illustration
Here is a copy of the diagram shown earlier that illustrates a Texinfo
file with three chapters, each of which contains two sections.@refill
The ``root'' is at the top of the diagram and the ``leaves'' are at the
bottom. This is how such a diagram is drawn conventionally; it
illustrates an upside-down tree. For this reason, the root node is
called the `Top' node, and `Up' node pointers carry you closer to the
root.@refill
@example
@group
Top
|
-------------------------------------
| | |
Chapter 1 Chapter 2 Chapter 3
| | |
-------- -------- --------
| | | | | |
Section Section Section Section Section Section
1.1 1.2 2.1 2.2 3.1 3.2
@end group
@end example
The fully-written command to start Chapter 2 would be this:
@example
@group
@@node Chapter 2, Chapter 3, Chapter 1, Top
@@comment node-name, next, previous, up
@end group
@end example
@noindent
This @code{@@node} line says that the name of this node is ``Chapter
2'', the name of the `Next' node is ``Chapter 3'', the name of the
`Previous' node is ``Chapter 1'', and the name of the `Up' node is
``Top''. You can omit writing out these node names if your document is
hierarchically organized (@pxref{makeinfo Pointer Creation}), but the
pointer relationships still obtain.
@quotation
@strong{Please Note:} `Next' refers to the next node at the same
hierarchical level in the manual, not necessarily to the next node
within the Texinfo file. In the Texinfo file, the subsequent node may
be at a lower level---a section-level node most often follows a
chapter-level node, for example. `Next' and `Previous' refer to nodes
at the @emph{same} hierarchical level. (The `Top' node contains the
exception to this rule. Since the `Top' node is the only node at that
level, `Next' refers to the first following node, which is almost always
a chapter or chapter-level node.)@refill
@end quotation
To go to Sections 2.1 and 2.2 using Info, you need a menu inside Chapter
2. (@xref{Menus}.) You would write the menu just
before the beginning of Section 2.1, like this:@refill
@example
@group
@@menu
* Sect. 2.1:: Description of this section.
* Sect. 2.2::
@@end menu
@end group
@end example
Write the node for Sect. 2.1 like this:@refill
@example
@group
@@node Sect. 2.1, Sect. 2.2, Chapter 2, Chapter 2
@@comment node-name, next, previous, up
@end group
@end example
In Info format, the `Next' and `Previous' pointers of a node usually
lead to other nodes at the same level---from chapter to chapter or from
section to section (sometimes, as shown, the `Previous' pointer points
up); an `Up' pointer usually leads to a node at the level above (closer
to the `Top' node); and a `Menu' leads to nodes at a level below (closer
to `leaves'). (A cross reference can point to a node at any level;
see @ref{Cross References}.)@refill
Usually, an @code{@@node} command and a chapter structuring command are
used in sequence, along with indexing commands. (You may follow the
@code{@@node} line with a comment line that reminds you which pointer is
which.)@refill
Here is the beginning of the chapter in this manual called ``Ending a
Texinfo File''. This shows an @code{@@node} line followed by a comment
line, an @code{@@chapter} line, and then by indexing lines.@refill
@example
@group
@@node Ending a File, Structuring, Beginning a File, Top
@@comment node-name, next, previous, up
@@chapter Ending a Texinfo File
@@cindex Ending a Texinfo file
@@cindex Texinfo file ending
@@cindex File ending
@end group
@end example
@node node
@section The @code{@@node} Command
@cindex Node, defined
@findex node
A @dfn{node} is a segment of text that begins at an @code{@@node}
command and continues until the next @code{@@node} command. The
definition of node is different from that for chapter or section. A
chapter may contain sections and a section may contain subsections;
but a node cannot contain subnodes; the text of a node continues only
until the next @code{@@node} command in the file. A node usually
contains only one chapter structuring command, the one that follows
the @code{@@node} line. On the other hand, in printed output nodes
are used only for cross references, so a chapter or section may
contain any number of nodes. Indeed, a chapter usually contains
several nodes, one for each section, subsection, and
subsubsection.@refill
To create a node, write an @code{@@node} command at the beginning of a
line, and follow it with up to four arguments, separated by commas, on
the rest of the same line. The first argument is required; it is the
name of this node. The subsequent arguments are the names of the
`Next', `Previous', and `Up' pointers, in that order, and may be omitted
if your Texinfo document is hierarchically organized (@pxref{makeinfo
Pointer Creation}).
You may insert spaces before each name if you wish; the spaces are
ignored. You must write the name of the node and the names of the
`Next', `Previous', and `Up' pointers all on the same line. Otherwise,
the formatters fail. (@inforef{Top, info, info}, for more information
about nodes in Info.)
Usually, you write one of the chapter-structuring command lines
immediately after an @code{@@node} line---for example, an
@code{@@section} or @code{@@subsection} line. (@xref{Structuring
Command Types}.)
@quotation
@strong{Please note:} The GNU Emacs Texinfo mode updating commands work
only with Texinfo files in which @code{@@node} lines are followed by chapter
structuring lines. @xref{Updating Requirements}.@refill
@end quotation
@TeX{} uses @code{@@node} lines to identify the names to use for cross
references. For this reason, you must write @code{@@node} lines in a
Texinfo file that you intend to format for printing, even if you do not
intend to format it for Info. (Cross references, such as the one at the
end of this sentence, are made with @code{@@xref} and related commands;
see @ref{Cross References}.)@refill
@menu
* Node Names:: How to choose node and pointer names.
* Writing a Node:: How to write an @code{@@node} line.
* Node Line Tips:: Keep names short.
* Node Line Requirements:: Keep names unique, without @@-commands.
* First Node:: How to write a `Top' node.
* makeinfo top command:: How to use the @code{@@top} command.
* Top Node Summary:: Write a brief description for readers.
@end menu
@node Node Names
@subsection Choosing Node and Pointer Names
@cindex Node names, choosing
The name of a node identifies the node. The pointers enable
you to reach other nodes and consist of the names of those nodes.@refill
Normally, a node's `Up' pointer contains the name of the node whose menu
mentions that node. The node's `Next' pointer contains the name of the
node that follows that node in that menu and its `Previous' pointer
contains the name of the node that precedes it in that menu. When a
node's `Previous' node is the same as its `Up' node, both node pointers
name the same node.@refill
Usually, the first node of a Texinfo file is the `Top' node, and its
`Up' and `Previous' pointers point to the @file{dir} file, which
contains the main menu for all of Info.@refill
The `Top' node itself contains the main or master menu for the manual.
Also, it is helpful to include a brief description of the manual in the
`Top' node. @xref{First Node}, for information on how to write the
first node of a Texinfo file.@refill
Even when you explicitly specify all pointers, that does not mean you
can write the nodes in the Texinfo source file in an arbitrary order!
Because @TeX{} processes the file sequentially, irrespective of node
pointers, you must write the nodes in the order you wish them to appear
in the printed output.
@node Writing a Node
@subsection How to Write an @code{@@node} Line
@cindex Writing an @code{@@node} line
@cindex @code{@@node} line writing
@cindex Node line writing
The easiest way to write an @code{@@node} line is to write @code{@@node}
at the beginning of a line and then the name of the node, like
this:@refill
@example
@@node @var{node-name}
@end example
If you are using GNU Emacs, you can use the update node commands
provided by Texinfo mode to insert the names of the pointers; or you
can leave the pointers out of the Texinfo file and let @code{makeinfo}
insert node pointers into the Info file it creates. (@xref{Texinfo
Mode}, and @ref{makeinfo Pointer Creation}.)@refill
Alternatively, you can insert the `Next', `Previous', and `Up'
pointers yourself. If you do this, you may find it helpful to use the
Texinfo mode keyboard command @kbd{C-c C-c n}. This command inserts
@samp{@@node} and a comment line listing the names of the pointers in
their proper order. The comment line helps you keep track of which
arguments are for which pointers. This comment line is especially useful
if you are not familiar with Texinfo.@refill
The template for a fully-written-out node line with `Next', `Previous',
and `Up' pointers looks like this:@refill
@example
@@node @var{node-name}, @var{next}, @var{previous}, @var{up}
@end example
If you wish, you can ignore @code{@@node} lines altogether in your first
draft and then use the @code{texinfo-insert-node-lines} command to
create @code{@@node} lines for you. However, we do not recommend this
practice. It is better to name the node itself at the same time that
you write a segment so you can easily make cross references. A large
number of cross references are an especially important feature of a good
Info file.
After you have inserted an @code{@@node} line, you should immediately
write an @@-command for the chapter or section and insert its name.
Next (and this is important!), put in several index entries. Usually,
you will find at least two and often as many as four or five ways of
referring to the node in the index. Use them all. This will make it
much easier for people to find the node.
@node Node Line Tips
@subsection @code{@@node} Line Tips
Here are three suggestions:
@itemize @bullet
@item
Try to pick node names that are informative but short.@refill
In the Info file, the file name, node name, and pointer names are all
inserted on one line, which may run into the right edge of the window.
(This does not cause a problem with Info, but is ugly.)@refill
@item
Try to pick node names that differ from each other near the beginnings
of their names. This way, it is easy to use automatic name completion in
Info.@refill
@item
By convention, node names are capitalized just as they would be for
section or chapter titles---initial and significant words are
capitalized; others are not.@refill
@end itemize
@node Node Line Requirements, First Node, Node Line Tips, node
@subsection @code{@@node} Line Requirements
@cindex Node line requirements
Here are several requirements for @code{@@node} lines:
@itemize @bullet
@cindex Unique nodename requirement
@cindex Node name must be unique
@item
All the node names for a single Info file must be unique.@refill
Duplicates confuse the Info movement commands. This means, for
example, that if you end every chapter with a summary, you must name
each summary node differently. You cannot just call each one
``Summary''. You may, however, duplicate the titles of chapters, sections,
and the like. Thus you can end each chapter in a book with a section
called ``Summary'', so long as the node names for those sections are all
different.@refill
@item
A pointer name must be the name of a node.@refill
The node to which a pointer points may come before or after the
node containing the pointer.
@cindex @@-commands in nodename
@cindex Node name, should not contain @@-commands
@item
@w{@@-commands} used in node names generally confuse Info, so you should
avoid them. For a few rare cases when this is useful, Texinfo has
limited support for using @w{@@-commands} in node names; see
@ref{Pointer Validation}.
@need 750
Thus, the beginning of the section called @code{@@chapter} looks like
this:@refill
@smallexample
@group
@@node chapter, unnumbered & appendix, makeinfo top, Structuring
@@comment node-name, next, previous, up
@@section @@code@{@@@@chapter@}
@@findex chapter
@end group
@end smallexample
@item
@cindex Apostrophe in nodename
@cindex Colon in nodename
@cindex Comma in nodename
@cindex Period in nodename
@cindex Characters, invalid in node name
@cindex Invalid characters in node names
Unfortunately, you cannot use periods, commas, colons or apostrophes
within a node name; these confuse @TeX{} or the Info formatters.@refill
@need 700
For example, the following is a section title:
@smallexample
@@code@{@@@@unnumberedsec@}, @@code@{@@@@appendixsec@}, @@code@{@@@@heading@}
@end smallexample
@noindent
The corresponding node name is:
@smallexample
unnumberedsec appendixsec heading
@end smallexample
@cindex Case in nodename
@item
Case is significant.
@end itemize
@node First Node, makeinfo top command, Node Line Requirements, node
@comment node-name, next, previous, up
@subsection The First Node
@cindex Top node is first
@cindex First node
The first node of a Texinfo file is the @dfn{Top} node, except in an
included file (@pxref{Include Files}). The Top node contains the main
or master menu for the document, and a short summary of the document
(@pxref{Top Node Summary}).
@cindex Up node of Top node
@cindex (dir) as Up node of Top node
The Top node (which must be named @samp{top} or @samp{Top}) should have
as its `Up' node the name of a node in another file, where there is a
menu that leads to this file. Specify the file name in parentheses. If
the file is to be installed directly in the Info directory file, use
@samp{(dir)} as the parent of the Top node; this is short for
@samp{(dir)top}, and specifies the Top node in the @file{dir} file,
which contains the main menu for the Info system as a whole. For
example, the @code{@@node Top} line of this manual looks like this:
@example
@@node Top, Copying, , (dir)
@end example
@noindent
(You can use the Texinfo updating commands or the @code{makeinfo}
utility to insert these pointers automatically.)
@cindex Previous node of Top node
Do not define the `Previous' node of the Top node to be @samp{(dir)}, as
it causes confusing behavior for users: if you are in the Top node and
hits @key{DEL} to go backwards, you wind up in the middle of the
some other entry in the @file{dir} file, which has nothing to do with
what you were reading.
@xref{Install an Info File}, for more information about installing
an Info file in the @file{info} directory.
@node makeinfo top command, Top Node Summary, First Node, node
@comment node-name, next, previous, up
@subsection The @code{@@top} Sectioning Command
@findex top @r{(@@-command)}
A special sectioning command, @code{@@top}, has been created for use
with the @code{@@node Top} line. The @code{@@top} sectioning command tells
@code{makeinfo} that it marks the `Top' node in the file. It provides
the information that @code{makeinfo} needs to insert node
pointers automatically. Write the @code{@@top} command at the
beginning of the line immediately following the @code{@@node Top}
line. Write the title on the remaining part of the same line as the
@code{@@top} command.@refill
In Info, the @code{@@top} sectioning command causes the title to appear on a
line by itself, with a line of asterisks inserted underneath.@refill
In @TeX{} and @code{texinfo-format-buffer}, the @code{@@top}
sectioning command is merely a synonym for @code{@@unnumbered}.
Neither of these formatters require an @code{@@top} command, and do
nothing special with it. You can use @code{@@chapter} or
@code{@@unnumbered} after the @code{@@node Top} line when you use
these formatters. Also, you can use @code{@@chapter} or
@code{@@unnumbered} when you use the Texinfo updating commands to
create or update pointers and menus.@refill
@node Top Node Summary, , makeinfo top command, node
@subsection The `Top' Node Summary
@cindex @samp{@r{Top}} node summary
You can help readers by writing a summary in the `Top' node, after the
@code{@@top} line, before the main or master menu. The summary should
briefly describe the document. In Info, this summary will appear just
before the master menu. In a printed manual, this summary will appear
on a page of its own.@refill
If you do not want the summary to appear on a page of its own in a
printed manual, you can enclose the whole of the `Top' node, including
the @code{@@node Top} line and the @code{@@top} sectioning command line
or other sectioning command line between @code{@@ifinfo} and @code{@@end
ifinfo}. This prevents any of the text from appearing in the printed
output. (@pxref{Conditionals, , Conditionally Visible Text}). You can
repeat the brief description from the `Top' node within @code{@@iftex}
@dots{} @code{@@end iftex} at the beginning of the first chapter, for
those who read the printed manual. This saves paper and may look
neater.@refill
You should write the version number of the program to which the manual
applies in the summary. This helps the reader keep track of which
manual is for which version of the program. If the manual changes more
frequently than the program or is independent of it, you should also
include an edition number for the manual. (The title page should also
contain this information: see @ref{titlepage, ,
@code{@@titlepage}}.)@refill
@node makeinfo Pointer Creation
@section Creating Pointers with @code{makeinfo}
@cindex Creating pointers with @code{makeinfo}
@cindex Pointer creation with @code{makeinfo}
@cindex Automatic pointer creation with @code{makeinfo}
The @code{makeinfo} program has a feature for automatically defining
node pointers for a hierarchically organized file.
When you take advantage of this feature, you do not need to write the
`Next', `Previous', and `Up' pointers after the name of a node.
However, you must write a sectioning command, such as @code{@@chapter}
or @code{@@section}, on the line immediately following each truncated
@code{@@node} line (except that comment lines may intervene).
In addition, you must follow the `Top' @code{@@node} line with a line
beginning with @code{@@top} to mark the `Top' node in the
file. @xref{makeinfo top, , @code{@@top}}.
Finally, you must write the name of each node (except for the `Top'
node) in a menu that is one or more hierarchical levels above the
node's hierarchical level.
This node pointer insertion feature in @code{makeinfo} relieves you from
the need to update menus and pointers manually or with Texinfo mode
commands. (@xref{Updating Nodes and Menus}.)
@node anchor
@section @code{@@anchor}: Defining Arbitrary Cross-reference Targets
@findex anchor
@cindex Anchors
@cindex Cross-reference targets, arbitrary
@cindex Targets for cross-references, arbitrary
An @dfn{anchor} is a position in your document, labeled so that
cross-references can refer to it, just as they can to nodes. You create
an anchor with the @code{@@anchor} command, and give the label as a
normal brace-delimited argument. For example:
@example
This marks the @@anchor@{x-spot@}spot.
@dots{}
@@xref@{x-spot,,the spot@}.
@end example
@noindent produces:
@example
This marks the spot.
@dots{}
See [the spot], page 1.
@end example
As you can see, the @code{@@anchor} command itself produces no output.
This example defines an anchor `x-spot' just before the word `spot'.
You can refer to it later with an @code{@@xref} or other cross-reference
command, as shown. @xref{Cross References}, for details on the
cross-reference commands.
It is best to put @code{@@anchor} commands just before the position you
wish to refer to; that way, the reader's eye is led on to the correct
text when they jump to the anchor. You can put the @code{@@anchor}
command on a line by itself if that helps readability of the source.
Spaces are always ignored after @code{@@anchor}.
Anchor names and node names may not conflict. Anchors and nodes are
given similar treatment in some ways; for example, the @code{goto-node}
command in standalone Info takes either an anchor name or a node name as
an argument. (@xref{goto-node,,,info-stnd,GNU Info}.)
@node Menus
@chapter Menus
@cindex Menus
@findex menu
@dfn{Menus} contain pointers to subordinate nodes.@footnote{Menus can
carry you to any node, regardless of the hierarchical structure; even to
nodes in a different Info file. However, the GNU Emacs Texinfo mode
updating commands work only to create menus of subordinate nodes.
Conventionally, cross references are used to refer to other nodes.} In
Info, you use menus to go to such nodes. Menus have no effect in
printed manuals and do not appear in them.
By convention, a menu is put at the end of a node since a reader who
uses the menu may not see text that follows it. Furthermore, a node
that has a menu should not contain much text. If you have a lot of text
and a menu, move most of the text into a new subnode---all but a few
lines. Otherwise, a reader with a terminal that displays only a few
lines may miss the menu and its associated text. As a practical matter,
you should locate a menu within 20 lines of the beginning of the
node.
@menu
* Menu Location:: Put a menu in a short node.
* Writing a Menu:: What is a menu?
* Menu Parts:: A menu entry has three parts.
* Less Cluttered Menu Entry:: Two part menu entry.
* Menu Example:: Two and three part menu entries.
* Other Info Files:: How to refer to a different Info file.
@end menu
@node Menu Location, Writing a Menu, Menus, Menus
@ifinfo
@heading Menus Need Short Nodes
@end ifinfo
@cindex Menu location
@cindex Location of menus
@cindex Nodes for menus are short
@cindex Short nodes for menus
The short text before a menu may look awkward in a printed manual. To
avoid this, you can write a menu near the beginning of its node and
follow the menu by an @code{@@node} line, and then an @code{@@heading}
line located within @code{@@ifinfo} and @code{@@end ifinfo}. This way,
the menu, @code{@@node} line, and title appear only in the Info file,
not the printed document.@refill
For example, the preceding two paragraphs follow an Info-only menu,
@code{@@node} line, and heading, and look like this:@refill
@example
@group
@@menu
* Menu Location:: Put a menu in a short node.
* Writing a Menu:: What is a menu?
* Menu Parts:: A menu entry has three parts.
* Less Cluttered Menu Entry:: Two part menu entry.
* Menu Example:: Two and three part entries.
* Other Info Files:: How to refer to a different
Info file.
@@end menu
@@node Menu Location, Writing a Menu, , Menus
@@ifinfo
@@heading Menus Need Short Nodes
@@end ifinfo
@end group
@end example
The Texinfo file for this document contains more than a dozen
examples of this procedure. One is at the beginning of this chapter;
another is at the beginning of @ref{Cross References}. @refill
@node Writing a Menu, Menu Parts, Menu Location, Menus
@section Writing a Menu
@cindex Writing a menu
@cindex Menu writing
A menu consists of an @code{@@menu} command on a line by
itself followed by menu entry lines or menu comment lines
and then by an @code{@@end menu} command on a line by
itself.@refill
A menu looks like this:@refill
@example
@group
@@menu
Larger Units of Text
* Files:: All about handling files.
* Multiples: Buffers. Multiple buffers; editing
several files at once.
@@end menu
@end group
@end example
In a menu, every line that begins with an @w{@samp{* }} is a @dfn{menu
entry}. (Note the space after the asterisk.) A line that does not
start with an @w{@samp{* }} may also appear in a menu. Such a line is
not a menu entry but is a menu comment line that appears in the Info
file. In the example above, the line @samp{Larger Units of Text} is a
menu comment line; the two lines starting with @w{@samp{* }} are menu
@cindex Spaces, in menus
entries. Space characters in a menu are preserved as-is; this allows
you to format the menu as you wish.
@node Menu Parts, Less Cluttered Menu Entry, Writing a Menu, Menus
@section The Parts of a Menu
@cindex Parts of a menu
@cindex Menu parts
@cindex @code{@@menu} parts
A menu entry has three parts, only the second of which is required:
@enumerate
@item
The menu entry name (optional).
@item
The name of the node (required).
@item
A description of the item (optional).
@end enumerate
The template for a menu entry looks like this:@refill
@example
* @var{menu-entry-name}: @var{node-name}. @var{description}
@end example
Follow the menu entry name with a single colon and follow the node name
with tab, comma, period, or newline.@refill
In Info, a user selects a node with the @kbd{m} (@code{Info-menu})
command. The menu entry name is what the user types after the @kbd{m}
command.@refill
The third part of a menu entry is a descriptive phrase or sentence.
Menu entry names and node names are often short; the description
explains to the reader what the node is about. A useful description
complements the node name rather than repeats it. The description,
which is optional, can spread over two or more lines; if it does, some
authors prefer to indent the second line while others prefer to align it
with the first (and all others). It's up to you.
@node Less Cluttered Menu Entry, Menu Example, Menu Parts, Menus
@comment node-name, next, previous, up
@section Less Cluttered Menu Entry
@cindex Two part menu entry
@cindex Double-colon menu entries
@cindex Menu entries with two colons
@cindex Less cluttered menu entry
@cindex Uncluttered menu entry
When the menu entry name and node name are the same, you can write
the name immediately after the asterisk and space at the beginning of
the line and follow the name with two colons.@refill
@need 800
For example, write
@example
* Name:: @var{description}
@end example
@need 800
@noindent
instead of
@example
* Name: Name. @var{description}
@end example
You should use the node name for the menu entry name whenever possible,
since it reduces visual clutter in the menu.@refill
@node Menu Example, Other Info Files, Less Cluttered Menu Entry, Menus
@comment node-name, next, previous, up
@section A Menu Example
@cindex Menu example
@cindex Example menu
A menu looks like this in Texinfo:@refill
@example
@group
@@menu
* menu entry name: Node name. A short description.
* Node name:: This form is preferred.
@@end menu
@end group
@end example
@need 800
@noindent
This produces:
@example
@group
* menu:
* menu entry name: Node name. A short description.
* Node name:: This form is preferred.
@end group
@end example
@need 700
Here is an example as you might see it in a Texinfo file:@refill
@example
@group
@@menu
Larger Units of Text
* Files:: All about handling files.
* Multiples: Buffers. Multiple buffers; editing
several files at once.
@@end menu
@end group
@end example
@need 800
@noindent
This produces:
@example
@group
* menu:
Larger Units of Text
* Files:: All about handling files.
* Multiples: Buffers. Multiple buffers; editing
several files at once.
@end group
@end example
In this example, the menu has two entries. @samp{Files} is both a menu
entry name and the name of the node referred to by that name.
@samp{Multiples} is the menu entry name; it refers to the node named
@samp{Buffers}. The line @samp{Larger Units of Text} is a comment; it
appears in the menu, but is not an entry.@refill
Since no file name is specified with either @samp{Files} or
@samp{Buffers}, they must be the names of nodes in the same Info file
(@pxref{Other Info Files, , Referring to Other Info Files}).@refill
@node Other Info Files, , Menu Example, Menus
@comment node-name, next, previous, up
@section Referring to Other Info Files
@cindex Referring to other Info files
@cindex Nodes in other Info files
@cindex Other Info files' nodes
@cindex Going to other Info files' nodes
@cindex Info; other files' nodes
You can create a menu entry that enables a reader in Info to go to a
node in another Info file by writing the file name in parentheses just
before the node name. In this case, you should use the three-part menu
entry format, which saves the reader from having to type the file
name.@refill
@need 800
The format looks like this:@refill
@example
@group
@@menu
* @var{first-entry-name}:(@var{filename})@var{nodename}. @var{description}
* @var{second-entry-name}:(@var{filename})@var{second-node}. @var{description}
@@end menu
@end group
@end example
For example, to refer directly to the @samp{Outlining} and
@samp{Rebinding} nodes in the @cite{Emacs Manual}, you would write a
menu like this:@refill
@example
@group
@@menu
* Outlining: (emacs)Outline Mode. The major mode for
editing outlines.
* Rebinding: (emacs)Rebinding. How to redefine the
meaning of a key.
@@end menu
@end group
@end example
If you do not list the node name, but only name the file, then Info
presumes that you are referring to the `Top' node.@refill
The @file{dir} file that contains the main menu for Info has menu
entries that list only file names. These take you directly to the `Top'
nodes of each Info document. (@xref{Install an Info File}.)@refill
@need 700
For example:
@example
@group
* Info: (info). Documentation browsing system.
* Emacs: (emacs). The extensible, self-documenting
text editor.
@end group
@end example
@noindent
(The @file{dir} top level directory for the Info system is an Info file,
not a Texinfo file, but a menu entry looks the same in both types of
file.)@refill
The GNU Emacs Texinfo mode menu updating commands only work with nodes
within the current buffer, so you cannot use them to create menus that
refer to other files. You must write such menus by hand.
@node Cross References
@chapter Cross References
@cindex Making cross references
@cindex Cross references
@cindex References
@dfn{Cross references} are used to refer the reader to other parts of the
same or different Texinfo files. In Texinfo, nodes and anchors are the
places to which cross references can refer.
@menu
* References:: What cross references are for.
* Cross Reference Commands:: A summary of the different commands.
* Cross Reference Parts:: A cross reference has several parts.
* xref:: Begin a reference with `See' @dots{}
* Top Node Naming:: How to refer to the beginning of another file.
* ref:: A reference for the last part of a sentence.
* pxref:: How to write a parenthetical cross reference.
* inforef:: How to refer to an Info-only file.
* uref:: How to refer to a uniform resource locator.
@end menu
@node References, Cross Reference Commands, Cross References, Cross References
@ifinfo
@heading What References Are For
@end ifinfo
Often, but not always, a printed document should be designed so that
it can be read sequentially. People tire of flipping back and forth
to find information that should be presented to them as they need
it.@refill
However, in any document, some information will be too detailed for
the current context, or incidental to it; use cross references to
provide access to such information. Also, an online help system or a
reference manual is not like a novel; few read such documents in
sequence from beginning to end. Instead, people look up what they
need. For this reason, such creations should contain many cross
references to help readers find other information that they may not
have read.@refill
In a printed manual, a cross reference results in a page reference,
unless it is to another manual altogether, in which case the cross
reference names that manual.@refill
In Info, a cross reference results in an entry that you can follow using
the Info @samp{f} command. (@inforef{Help-Adv, Some advanced Info
commands, info}.)@refill
The various cross reference commands use nodes (or anchors,
@pxref{anchor,,@code{@@anchor}}) to define cross reference locations.
This is evident in Info, in which a cross reference takes you to the
specified location. @TeX{} also uses nodes to define cross reference
locations, but the action is less obvious. When @TeX{} generates a DVI
file, it records each node's page number and uses the page numbers in making
references. Thus, if you are writing a manual that will only be
printed, and will not be used online, you must nonetheless write
@code{@@node} lines to name the places to which you make cross
references.@refill
@need 800
@node Cross Reference Commands, Cross Reference Parts, References, Cross References
@comment node-name, next, previous, up
@section Different Cross Reference Commands
@cindex Different cross reference commands
There are four different cross reference commands:@refill
@table @code
@item @@xref
Used to start a sentence in the printed manual saying @w{`See @dots{}'}
or an Info cross-reference saying @samp{*Note @var{name}: @var{node}.}.
@item @@ref
Used within or, more often, at the end of a sentence; same as
@code{@@xref} for Info; produces just the reference in the printed
manual without a preceding `See'.@refill
@item @@pxref
Used within parentheses to make a reference that suits both an Info
file and a printed book. Starts with a lower case `see' within the
printed manual. (@samp{p} is for `parenthesis'.)@refill
@item @@inforef
Used to make a reference to an Info file for which there is no printed
manual.@refill
@end table
@noindent
(The @code{@@cite} command is used to make references to books and
manuals for which there is no corresponding Info file and, therefore,
no node to which to point. @xref{cite, , @code{@@cite}}.)@refill
@node Cross Reference Parts, xref, Cross Reference Commands, Cross References
@comment node-name, next, previous, up
@section Parts of a Cross Reference
@cindex Cross reference parts
@cindex Parts of a cross reference
A cross reference command requires only one argument, which is the
name of the node to which it refers. But a cross reference command
may contain up to four additional arguments. By using these
arguments, you can provide a cross reference name for Info, a topic
description or section title for the printed output, the name of a
different Info file, and the name of a different printed
manual.@refill
Here is a simple cross reference example:@refill
@example
@@xref@{Node name@}.
@end example
@noindent
which produces
@example
*Note Node name::.
@end example
@noindent
and
@quotation
See Section @var{nnn} [Node name], page @var{ppp}.
@end quotation
@need 700
Here is an example of a full five-part cross reference:@refill
@example
@group
@@xref@{Node name, Cross Reference Name, Particular Topic,
info-file-name, A Printed Manual@}, for details.
@end group
@end example
@noindent
which produces
@example
*Note Cross Reference Name: (info-file-name)Node name,
for details.
@end example
@noindent
in Info and
@quotation
See section ``Particular Topic'' in @i{A Printed Manual}, for details.
@end quotation
@noindent
in a printed book.
The five possible arguments for a cross reference are:@refill
@enumerate
@item
The node or anchor name (required). This is the location to which the
cross reference takes you. In a printed document, the location of the
node provides the page reference only for references within the same
document.@refill
@item
The cross reference name for the Info reference, if it is to be different
from the node name. If you include this argument, it becomes
the first part of the cross reference. It is usually omitted.@refill
@item
A topic description or section name. Often, this is the title of the
section. This is used as the name of the reference in the printed
manual. If omitted, the node name is used.@refill
@item
The name of the Info file in which the reference is located, if it is
different from the current file. You need not include any @samp{.info}
suffix on the file name, since Info readers try appending it
automatically.
@item
The name of a printed manual from a different Texinfo file.@refill
@end enumerate
The template for a full five argument cross reference looks like
this:@refill
@example
@group
@@xref@{@var{node-name}, @var{cross-reference-name}, @var{title-or-topic},
@var{info-file-name}, @var{printed-manual-title}@}.
@end group
@end example
Cross references with one, two, three, four, and five arguments are
described separately following the description of @code{@@xref}.@refill
Write a node name in a cross reference in exactly the same way as in
the @code{@@node} line, including the same capitalization; otherwise, the
formatters may not find the reference.@refill
You can write cross reference commands within a paragraph, but note
how Info and @TeX{} format the output of each of the various commands:
write @code{@@xref} at the beginning of a sentence; write
@code{@@pxref} only within parentheses, and so on.@refill
@node xref, Top Node Naming, Cross Reference Parts, Cross References
@comment node-name, next, previous, up
@section @code{@@xref}
@findex xref
@cindex Cross references using @code{@@xref}
@cindex References using @code{@@xref}
The @code{@@xref} command generates a cross reference for the
beginning of a sentence. The Info formatting commands convert it into
an Info cross reference, which the Info @samp{f} command can use to
bring you directly to another node. The @TeX{} typesetting commands
convert it into a page reference, or a reference to another book or
manual.@refill
@menu
* Reference Syntax:: What a reference looks like and requires.
* One Argument:: @code{@@xref} with one argument.
* Two Arguments:: @code{@@xref} with two arguments.
* Three Arguments:: @code{@@xref} with three arguments.
* Four and Five Arguments:: @code{@@xref} with four and five arguments.
@end menu
@node Reference Syntax, One Argument, xref, xref
@ifinfo
@subheading What a Reference Looks Like and Requires
@end ifinfo
Most often, an Info cross reference looks like this:@refill
@example
*Note @var{node-name}::.
@end example
@noindent
or like this
@example
*Note @var{cross-reference-name}: @var{node-name}.
@end example
@noindent
In @TeX{}, a cross reference looks like this:
@quotation
See Section @var{section-number} [@var{node-name}], page @var{page}.
@end quotation
@noindent
or like this
@quotation
See Section @var{section-number} [@var{title-or-topic}], page @var{page}.
@end quotation
The @code{@@xref} command does not generate a period or comma to end
the cross reference in either the Info file or the printed output.
You must write that period or comma yourself; otherwise, Info will not
recognize the end of the reference. (The @code{@@pxref} command works
differently. @xref{pxref, , @code{@@pxref}}.)@refill
@quotation
@strong{Please note:} A period or comma @strong{must} follow the closing
brace of an @code{@@xref}. It is required to terminate the cross
reference. This period or comma will appear in the output, both in
the Info file and in the printed manual.@refill
@end quotation
@code{@@xref} must refer to an Info node by name. Use @code{@@node}
to define the node (@pxref{Writing a Node}).@refill
@code{@@xref} is followed by several arguments inside braces, separated by
commas. Whitespace before and after these commas is ignored.@refill
A cross reference requires only the name of a node; but it may contain
up to four additional arguments. Each of these variations produces a
cross reference that looks somewhat different.@refill
@quotation
@strong{Please note:} Commas separate arguments in a cross reference;
avoid including them in the title or other part lest the formatters
mistake them for separators.@refill
@end quotation
@node One Argument, Two Arguments, Reference Syntax, xref
@subsection @code{@@xref} with One Argument
The simplest form of @code{@@xref} takes one argument, the name of
another node in the same Info file. The Info formatters produce
output that the Info readers can use to jump to the reference; @TeX{}
produces output that specifies the page and section number for you.@refill
@need 700
@noindent
For example,
@example
@@xref@{Tropical Storms@}.
@end example
@noindent
produces
@example
*Note Tropical Storms::.
@end example
@noindent
and
@quotation
See Section 3.1 [Tropical Storms], page 24.
@end quotation
@noindent
(Note that in the preceding example the closing brace is followed by a
period.)@refill
You can write a clause after the cross reference, like this:@refill
@example
@@xref@{Tropical Storms@}, for more info.
@end example
@noindent
which produces
@example
*Note Tropical Storms::, for more info.
@end example
@noindent
and
@quotation
See Section 3.1 [Tropical Storms], page 24, for more info.
@end quotation
@noindent
(Note that in the preceding example the closing brace is followed by a
comma, and then by the clause, which is followed by a period.)@refill
@node Two Arguments, Three Arguments, One Argument, xref
@subsection @code{@@xref} with Two Arguments
With two arguments, the second is used as the name of the Info cross
reference, while the first is still the name of the node to which the
cross reference points.@refill
@need 750
@noindent
The template is like this:
@example
@@xref@{@var{node-name}, @var{cross-reference-name}@}.
@end example
@need 700
@noindent
For example,
@example
@@xref@{Electrical Effects, Lightning@}.
@end example
@noindent
produces:
@example
*Note Lightning: Electrical Effects.
@end example
@noindent
and
@quotation
See Section 5.2 [Electrical Effects], page 57.
@end quotation
@noindent
(Note that in the preceding example the closing brace is followed by a
period; and that the node name is printed, not the cross reference name.)
You can write a clause after the cross reference, like this:@refill
@example
@@xref@{Electrical Effects, Lightning@}, for more info.
@end example
@noindent
which produces
@example
*Note Lightning: Electrical Effects, for more info.
@end example
@noindent
and
@quotation
See Section 5.2 [Electrical Effects], page 57, for more info.
@end quotation
@noindent
(Note that in the preceding example the closing brace is followed by a
comma, and then by the clause, which is followed by a period.)@refill
@node Three Arguments, Four and Five Arguments, Two Arguments, xref
@subsection @code{@@xref} with Three Arguments
A third argument replaces the node name in the @TeX{} output. The third
argument should be the name of the section in the printed output, or
else state the topic discussed by that section. Often, you will want to
use initial upper case letters so it will be easier to read when the
reference is printed. Use a third argument when the node name is
unsuitable because of syntax or meaning.@refill
Remember to avoid placing a comma within the title or topic section of
a cross reference, or within any other section. The formatters divide
cross references into arguments according to the commas; a comma
within a title or other section will divide it into two arguments. In
a reference, you need to write a title such as ``Clouds, Mist, and
Fog'' without the commas.@refill
Also, remember to write a comma or period after the closing brace of an
@code{@@xref} to terminate the cross reference. In the following
examples, a clause follows a terminating comma.@refill
@need 750
@noindent
The template is like this:
@example
@group
@@xref@{@var{node-name}, @var{cross-reference-name}, @var{title-or-topic}@}.
@end group
@end example
@need 700
@noindent
For example,
@example
@group
@@xref@{Electrical Effects, Lightning, Thunder and Lightning@},
for details.
@end group
@end example
@noindent
produces
@example
*Note Lightning: Electrical Effects, for details.
@end example
@noindent
and
@quotation
See Section 5.2 [Thunder and Lightning], page 57, for details.
@end quotation
If a third argument is given and the second one is empty, then the
third argument serves both. (Note how two commas, side by side, mark
the empty second argument.)@refill
@example
@group
@@xref@{Electrical Effects, , Thunder and Lightning@},
for details.
@end group
@end example
@noindent
produces
@example
*Note Thunder and Lightning: Electrical Effects, for details.
@end example
@noindent
and
@quotation
See Section 5.2 [Thunder and Lightning], page 57, for details.
@end quotation
As a practical matter, it is often best to write cross references with
just the first argument if the node name and the section title are the
same, and with the first and third arguments if the node name and title
are different.@refill
Here are several examples from @cite{The GNU Awk User's Guide}:@refill
@smallexample
@@xref@{Sample Program@}.
@@xref@{Glossary@}.
@@xref@{Case-sensitivity, ,Case-sensitivity in Matching@}.
@@xref@{Close Output, , Closing Output Files and Pipes@},
for more information.
@@xref@{Regexp, , Regular Expressions as Patterns@}.
@end smallexample
@node Four and Five Arguments, , Three Arguments, xref
@subsection @code{@@xref} with Four and Five Arguments
In a cross reference, a fourth argument specifies the name of another
Info file, different from the file in which the reference appears, and
a fifth argument specifies its title as a printed manual.@refill
Remember that a comma or period must follow the closing brace of an
@code{@@xref} command to terminate the cross reference. In the
following examples, a clause follows a terminating comma.@refill
@need 800
@noindent
The template is:
@example
@group
@@xref@{@var{node-name}, @var{cross-reference-name}, @var{title-or-topic},
@var{info-file-name}, @var{printed-manual-title}@}.
@end group
@end example
@need 700
@noindent
For example,
@example
@@xref@{Electrical Effects, Lightning, Thunder and Lightning,
weather, An Introduction to Meteorology@}, for details.
@end example
@noindent
produces
@example
*Note Lightning: (weather)Electrical Effects, for details.
@end example
@noindent
The name of the Info file is enclosed in parentheses and precedes
the name of the node.
@noindent
In a printed manual, the reference looks like this:@refill
@quotation
See section ``Thunder and Lightning'' in @i{An Introduction to
Meteorology}, for details.
@end quotation
@noindent
The title of the printed manual is typeset in italics; and the
reference lacks a page number since @TeX{} cannot know to which page a
reference refers when that reference is to another manual.@refill
Often, you will leave out the second argument when you use the long
version of @code{@@xref}. In this case, the third argument, the topic
description, will be used as the cross reference name in Info.@refill
@noindent
The template looks like this:
@example
@@xref@{@var{node-name}, , @var{title-or-topic}, @var{info-file-name},
@var{printed-manual-title}@}, for details.
@end example
@noindent
which produces
@example
*Note @var{title-or-topic}: (@var{info-file-name})@var{node-name}, for details.
@end example
@noindent
and
@quotation
See section @var{title-or-topic} in @var{printed-manual-title}, for details.
@end quotation
@need 700
@noindent
For example,
@example
@@xref@{Electrical Effects, , Thunder and Lightning,
weather, An Introduction to Meteorology@}, for details.
@end example
@noindent
produces
@example
@group
*Note Thunder and Lightning: (weather)Electrical Effects,
for details.
@end group
@end example
@noindent
and
@quotation
See section ``Thunder and Lightning'' in @i{An Introduction to
Meteorology}, for details.
@end quotation
On rare occasions, you may want to refer to another Info file that
is within a single printed manual---when multiple Texinfo files are
incorporated into the same @TeX{} run but make separate Info files.
In this case, you need to specify only the fourth argument, and not
the fifth.@refill
@node Top Node Naming, ref, xref, Cross References
@section Naming a `Top' Node
@cindex Naming a `Top' Node in references
@cindex @samp{@r{Top}} node naming for references
In a cross reference, you must always name a node. This means that in
order to refer to a whole manual, you must identify the `Top' node by
writing it as the first argument to the @code{@@xref} command. (This
is different from the way you write a menu entry; see @ref{Other Info
Files, , Referring to Other Info Files}.) At the same time, to
provide a meaningful section topic or title in the printed cross
reference (instead of the word `Top'), you must write an appropriate
entry for the third argument to the @code{@@xref} command.
@refill
@noindent
Thus, to make a cross reference to @cite{The GNU Make Manual},
write:@refill
@example
@@xref@{Top, , Overview, make, The GNU Make Manual@}.
@end example
@noindent
which produces
@example
*Note Overview: (make)Top.
@end example
@noindent
and
@quotation
See section ``Overview'' in @i{The GNU Make Manual}.
@end quotation
@noindent
In this example, @samp{Top} is the name of the first node, and
@samp{Overview} is the name of the first section of the manual.@refill
@node ref, pxref, Top Node Naming, Cross References
@comment node-name, next, previous, up
@section @code{@@ref}
@cindex Cross references using @code{@@ref}
@cindex References using @code{@@ref}
@findex ref
@code{@@ref} is nearly the same as @code{@@xref} except that it does
not generate a `See' in the printed output, just the reference itself.
This makes it useful as the last part of a sentence.@refill
@need 700
@noindent
For example,
@cindex Hurricanes
@example
For more information, see @@ref@{Hurricanes@}.
@end example
@noindent
produces
@example
For more information, see *Note Hurricanes::.
@end example
@noindent
and
@quotation
For more information, see Section 8.2 [Hurricanes], page 123.
@end quotation
The @code{@@ref} command sometimes leads writers to express themselves
in a manner that is suitable for a printed manual but looks awkward
in the Info format. Bear in mind that your audience will be using
both the printed and the Info format.@refill
@need 800
@noindent
For example,
@cindex Sea surges
@example
@group
Sea surges are described in @@ref@{Hurricanes@}.
@end group
@end example
@need 800
@noindent
produces
@quotation
Sea surges are described in Section 6.7 [Hurricanes], page 72.
@end quotation
@need 800
@noindent
in a printed document, and the following in Info:
@example
Sea surges are described in *Note Hurricanes::.
@end example
@quotation
@strong{Caution:} You @emph{must} write a period, comma, or right
parenthesis immediately after an @code{@@ref} command with two or more
arguments. Otherwise, Info will not find the end of the cross reference
entry and its attempt to follow the cross reference will fail. As a
general rule, you should write a period or comma after every
@code{@@ref} command. This looks best in both the printed and the Info
output.@refill
@end quotation
@node pxref, inforef, ref, Cross References
@comment node-name, next, previous, up
@section @code{@@pxref}
@cindex Cross references using @code{@@pxref}
@cindex References using @code{@@pxref}
@findex pxref
The parenthetical reference command, @code{@@pxref}, is nearly the
same as @code{@@xref}, but you use it @emph{only} inside parentheses
and you do @emph{not} type a comma or period after the command's
closing brace. The command differs from @code{@@xref} in two
ways:@refill
@enumerate
@item
@TeX{} typesets the reference for the printed manual with a lower case
`see' rather than an upper case `See'.@refill
@item
The Info formatting commands automatically end the reference with a
closing colon or period.@refill
@end enumerate
Because one type of formatting automatically inserts closing
punctuation and the other does not, you should use @code{@@pxref}
@emph{only} inside parentheses as part of another sentence. Also, you
yourself should not insert punctuation after the reference, as you do
with @code{@@xref}.@refill
@code{@@pxref} is designed so that the output looks right and works
right between parentheses both in printed output and in an Info file.
In a printed manual, a closing comma or period should not follow a
cross reference within parentheses; such punctuation is wrong. But in
an Info file, suitable closing punctuation must follow the cross
reference so Info can recognize its end. @code{@@pxref} spares you
the need to use complicated methods to put a terminator into one form
of the output and not the other.@refill
@noindent
With one argument, a parenthetical cross reference looks like
this:@refill
@cindex Flooding
@example
@dots{} storms cause flooding (@@pxref@{Hurricanes@}) @dots{}
@end example
@need 800
@noindent
which produces
@example
@group
@dots{} storms cause flooding (*Note Hurricanes::) @dots{}
@end group
@end example
@noindent
and
@quotation
@dots{} storms cause flooding (see Section 6.7 [Hurricanes], page 72) @dots{}
@end quotation
With two arguments, a parenthetical cross reference has this
template:@refill
@example
@dots{} (@@pxref@{@var{node-name}, @var{cross-reference-name}@}) @dots{}
@end example
@noindent
which produces
@example
@dots{} (*Note @var{cross-reference-name}: @var{node-name}.) @dots{}
@end example
@noindent
and
@need 1500
@quotation
@dots{} (see Section @var{nnn} [@var{node-name}], page @var{ppp}) @dots{}
@end quotation
@code{@@pxref} can be used with up to five arguments just like
@code{@@xref} (@pxref{xref, , @code{@@xref}}).@refill
@quotation
@strong{Please note:} Use @code{@@pxref} only as a parenthetical
reference. Do not try to use @code{@@pxref} as a clause in a sentence.
It will look bad in either the Info file, the printed output, or
both.@refill
Also, parenthetical cross references look best at the ends of sentences.
Although you may write them in the middle of a sentence, that location
breaks up the flow of text.@refill
@end quotation
@node inforef, uref, pxref, Cross References
@section @code{@@inforef}
@cindex Cross references using @code{@@inforef}
@cindex References using @code{@@inforef}
@findex inforef
@code{@@inforef} is used for cross references to Info files for which
there are no printed manuals. Even in a printed manual,
@code{@@inforef} generates a reference directing the user to look in
an Info file.@refill
The command takes either two or three arguments, in the following
order:@refill
@enumerate
@item
The node name.
@item
The cross reference name (optional).
@item
The Info file name.
@end enumerate
@noindent
Separate the arguments with commas, as with @code{@@xref}. Also, you
must terminate the reference with a comma or period after the
@samp{@}}, as you do with @code{@@xref}.@refill
@noindent
The template is:
@example
@@inforef@{@var{node-name}, @var{cross-reference-name}, @var{info-file-name}@},
@end example
@need 800
@noindent
Thus,
@example
@group
@@inforef@{Expert, Advanced Info commands, info@},
for more information.
@end group
@end example
@need 800
@noindent
produces
@example
@group
*Note Advanced Info commands: (info)Expert,
for more information.
@end group
@end example
@need 800
@noindent
and
@quotation
See Info file @file{info}, node @samp{Expert}, for more information.
@end quotation
@need 800
@noindent
Similarly,
@example
@group
@@inforef@{Expert, , info@}, for more information.
@end group
@end example
@need 800
@noindent
produces
@example
*Note (info)Expert::, for more information.
@end example
@need 800
@noindent
and
@quotation
See Info file @file{info}, node @samp{Expert}, for more information.
@end quotation
The converse of @code{@@inforef} is @code{@@cite}, which is used to
refer to printed works for which no Info form exists. @xref{cite, ,
@code{@@cite}}.@refill
@node uref
@section @code{@@uref@{@var{url}[, @var{text}][, @var{replacement}]@}}
@findex uref
@cindex Uniform resource locator, referring to
@cindex URL, referring to
@cindex @code{href}, producing HTML
@code{@@uref} produces a reference to a uniform resource locator (url).
It takes one mandatory argument, the url, and two optional arguments
which control the text that is displayed. In HTML output, @code{@@uref}
produces a link you can follow.
The second argument, if specified, is the text to display (the default
is the url itself); in Info and DVI output, but not in HTML output, the
url is also output.
@cindex Man page, reference to
The third argument, on the other hand, if specified is also the text to
display, but the url is @emph{not} output in any format. This is useful
when the text is already sufficiently referential, as in a man page. If
the third argument is given, the second argument is ignored.
The simple one argument form, where the url is both the target and the
text of the link:
@example
The official GNU ftp site is @@uref@{ftp://ftp.gnu.org/gnu@}.
@end example
@noindent produces:
@display
The official GNU ftp site is @uref{ftp://ftp.gnu.org/gnu}.
@end display
An example of the two-argument form:
@example
The official @@uref@{ftp://ftp.gnu.org/gnu, GNU ftp site@} holds
programs and texts.
@end example
@noindent produces:
@display
The official @uref{ftp://ftp.gnu.org/gnu, GNU ftp site} holds
programs and texts.
@end display
@noindent that is, the Info output is this:
@example
The official GNU ftp site (ftp://ftp.gnu.org/gnu) holds
programs and texts.
@end example
@noindent and the HTML output is this:
@example
The official <a href="ftp://ftp.gnu.org/gnu">GNU ftp site</a> holds
programs and texts.
@end example
An example of the three-argument form:
@example
The @@uref@{http://example.org/man.cgi/1/ls,,ls(1)@} program @dots{}
@end example
@noindent produces:
@display
The @uref{http://example.org/man.cgi/1/ls,,ls(1)} program @dots{}
@end display
@noindent but with HTML:
@example
The <a href="http://example.org/man.cgi/1/ls">ls(1)</a> program @dots{}
@end example
To merely indicate a url without creating a link people can follow, use
@code{@@url} (@pxref{url, @code{@@url}}).
Some people prefer to display url's in the unambiguous format:
@display
<URL:http://@var{host}/@var{path}>
@end display
@noindent
@cindex <URL: convention, not used
You can use this form in the input file if you wish. We feel it's not
necessary to clutter up the output with the extra @samp{<URL:} and
@samp{>}, since any software that tries to detect url's in text already
has to detect them without the @samp{<URL:} to be useful.
@node Marking Text
@chapter Marking Words and Phrases
@cindex Paragraph, marking text within
@cindex Marking words and phrases
@cindex Words and phrases, marking them
@cindex Marking text within a paragraph
@cindex Text, marking up
In Texinfo, you can mark words and phrases in a variety of ways.
The Texinfo formatters use this information to determine how to
highlight the text.
You can specify, for example, whether a word or phrase is a
defining occurrence, a metasyntactic variable, or a symbol used in a
program. Also, you can emphasize text, in several different ways.
@menu
* Indicating:: How to indicate definitions, files, etc.
* Emphasis:: How to emphasize text.
@end menu
@node Indicating, Emphasis, Marking Text, Marking Text
@comment node-name, next, previous, up
@section Indicating Definitions, Commands, etc.
@cindex Highlighting text
@cindex Indicating commands, definitions, etc.
Texinfo has commands for indicating just what kind of object a piece of
text refers to. For example, metasyntactic variables are marked by
@code{@@var}, and code by @code{@@code}. Since the pieces of text are
labelled by commands that tell what kind of object they are, it is easy
to change the way the Texinfo formatters prepare such text. (Texinfo is
an @emph{intentional} formatting language rather than a @emph{typesetting}
formatting language.)@refill
For example, in a printed manual,
code is usually illustrated in a typewriter font;
@code{@@code} tells @TeX{} to typeset this text in this font. But it
would be easy to change the way @TeX{} highlights code to use another
font, and this change would not affect how keystroke examples are
highlighted. If straight typesetting commands were used in the body
of the file and you wanted to make a change, you would need to check
every single occurrence to make sure that you were changing code and
not something else that should not be changed.@refill
@menu
* Useful Highlighting:: Highlighting provides useful information.
* code:: Indicating program code.
* kbd:: Showing keyboard input.
* key:: Specifying keys.
* samp:: Showing a literal sequence of characters.
* var:: Indicating metasyntactic variables.
* env:: Indicating environment variables.
* file:: Indicating file names.
* command:: Indicating command names.
* option:: Indicating option names.
* dfn:: Specifying definitions.
* cite:: Referring to books not in the Info system.
* acronym:: Indicating acronyms.
* url:: Indicating a World Wide Web reference.
* email:: Indicating an electronic mail address.
@end menu
@node Useful Highlighting, code, Indicating, Indicating
@ifinfo
@subheading Highlighting Commands are Useful
@end ifinfo
The highlighting commands can be used to extract useful information
from the file, such as lists of functions or file names. It is
possible, for example, to write a program in Emacs Lisp (or a keyboard
macro) to insert an index entry after every paragraph that contains
words or phrases marked by a specified command. You could do this to
construct an index of functions if you had not already made the
entries.@refill
The commands serve a variety of purposes:@refill
@table @code
@item @@code@{@var{sample-code}@}
Indicate text that is a literal example of a piece of a program.@refill
@item @@kbd@{@var{keyboard-characters}@}
Indicate keyboard input.@refill
@item @@key@{@var{key-name}@}
Indicate the conventional name for a key on a keyboard.@refill
@item @@samp@{@var{text}@}
Indicate text that is a literal example of a sequence of characters.@refill
@item @@var@{@var{metasyntactic-variable}@}
Indicate a metasyntactic variable.@refill
@item @@env@{@var{environment-variable}@}
Indicate an environment variable.@refill
@item @@file@{@var{file-name}@}
Indicate the name of a file.@refill
@item @@command@{@var{command-name}@}
Indicate the name of a command.@refill
@item @@option@{@var{option}@}
Indicate a command-line option.@refill
@item @@dfn@{@var{term}@}
Indicate the introductory or defining use of a term.@refill
@item @@cite@{@var{reference}@}
Indicate the name of a book.@refill
@item @@acronym@{@var{acronym}@}
Indicate an acronym.@refill
@item @@url@{@var{uniform-resource-locator}@}
Indicate a uniform resource locator for the World Wide Web.
@item @@email@{@var{email-address}[, @var{displayed-text}]@}
Indicate an electronic mail address.
@ignore
@item @@ctrl@{@var{ctrl-char}@}
Use for an @sc{ascii} control character.@refill
@end ignore
@end table
@node code
@subsection @code{@@code}@{@var{sample-code}@}
@findex code
@cindex Syntactic tokens, indicating
Use the @code{@@code} command to indicate text that is a piece of a
program and which consists of entire syntactic tokens. Enclose the
text in braces.
@cindex Expressions in a program, indicating
@cindex Keywords, indicating
@cindex Reserved words, indicating
Thus, you should use @code{@@code} for an expression in a program, for
the name of a variable or function used in a program, or for a
keyword in a programming language.
Use @code{@@code} for command names in languages that resemble
programming languages, such as Texinfo. For example, @code{@@code} and
@code{@@samp} are produced by writing @samp{@@code@{@@@@code@}} and
@samp{@@code@{@@@@samp@}} in the Texinfo source, respectively.
@cindex Case, not altering in @code{@@code}
It is incorrect to alter the case of a word inside an @code{@@code}
command when it appears at the beginning of a sentence. Most computer
languages are case sensitive. In C, for example, @code{Printf} is
different from the identifier @code{printf}, and most likely is a
misspelling of it. Even in languages which are not case sensitive, it
is confusing to a human reader to see identifiers spelled in different
ways. Pick one spelling and always use that. If you do not want to
start a sentence with a command name written all in lower case, you
should rearrange the sentence.
In the printed manual, @code{@@code} causes @TeX{} to typeset the
argument in a typewriter face. In the Info file, it causes the Info
formatting commands to use single quotation marks around the text.
@need 700
For example,
@example
The function returns @@code@{nil@}.
@end example
@noindent
produces this in the printed manual:
@quotation
The function returns @code{nil}.
@end quotation
@iftex
@noindent
and this in the Info file:
@example
The function returns `nil'.
@end example
@end iftex
Here are some cases for which it is preferable not to use @code{@@code}:
@itemize @bullet
@item
For shell command names such as @command{ls} (use @code{@@command}).
@item
For shell options such as @samp{-c} when such options stand alone (use
@code{@@option}).
@item
Also, an entire shell command often looks better if written using
@code{@@samp} rather than @code{@@code}. In this case, the rule is to
choose the more pleasing format.
@item
For environment variable such as @env{TEXINPUTS} (use @code{@@env}).
@item
For a string of characters shorter than a syntactic token. For example,
if you are writing about @samp{goto-ch}, which is just a part of the
name for the @code{goto-char} Emacs Lisp function, you should use
@code{@@samp}.
@item
In general, when writing about the characters used in a token; for
example, do not use @code{@@code} when you are explaining what letters
or printable symbols can be used in the names of functions. (Use
@code{@@samp}.) Also, you should not use @code{@@code} to mark text
that is considered input to programs unless the input is written in a
language that is like a programming language. For example, you should
not use @code{@@code} for the keystroke commands of GNU Emacs (use
@code{@@kbd} instead) although you may use @code{@@code} for the names
of the Emacs Lisp functions that the keystroke commands invoke.
@end itemize
Since @code{@@command}, @code{@@option}, and @code{@@env} were
introduced relatively recently, it is acceptable to use @code{@@code} or
@code{@@samp} for command names, options, and environment variables.
The new commands allow you to express the markup more precisely, but
there is no real harm in using the older commands, and of course the
long-standing manuals do so.
@node kbd
@subsection @code{@@kbd}@{@var{keyboard-characters}@}
@findex kbd
@cindex Keyboard input
Use the @code{@@kbd} command for characters of input to be typed by
users. For example, to refer to the characters @kbd{M-a},
write@refill
@example
@@kbd@{M-a@}
@end example
@noindent
and to refer to the characters @kbd{M-x shell}, write@refill
@example
@@kbd@{M-x shell@}
@end example
@cindex user input
@cindex slanted typewriter font, for @code{@@kbd}
The @code{@@kbd} command has the same effect as @code{@@code} in Info,
but by default produces a different font (slanted typewriter instead of
normal typewriter) in the printed manual, so users can distinguish the
characters they are supposed to type from those the computer outputs.
@findex kbdinputstyle
Since the usage of @code{@@kbd} varies from manual to manual, you can
control the font switching with the @code{@@kbdinputstyle} command.
This command has no effect on Info output. Write this command at the
beginning of a line with a single word as an argument, one of the
following:
@vindex distinct@r{, arg to @@kbdinputstyle}
@vindex example@r{, arg to @@kbdinputstyle}
@vindex code@r{, arg to @@kbdinputstyle}
@table @samp
@item code
Always use the same font for @code{@@kbd} as @code{@@code}.
@item example
Use the distinguishing font for @code{@@kbd} only in @code{@@example}
and similar environments.
@item distinct
(the default) Always use the distinguishing font for @code{@@kbd}.
@end table
You can embed another @@-command inside the braces of an @code{@@kbd}
command. Here, for example, is the way to describe a command that
would be described more verbosely as ``press an @samp{r} and then
press the @key{RET} key'':@refill
@example
@@kbd@{r @@key@{RET@}@}
@end example
@noindent
This produces: @kbd{r @key{RET}}
You also use the @code{@@kbd} command if you are spelling out the letters
you type; for example:@refill
@example
To give the @@code@{logout@} command,
type the characters @@kbd@{l o g o u t @@key@{RET@}@}.
@end example
@noindent
This produces:
@quotation
To give the @code{logout} command,
type the characters @kbd{l o g o u t @key{RET}}.
@end quotation
(Also, this example shows that you can add spaces for clarity. If you
really want to mention a space character as one of the characters of
input, write @kbd{@@key@{SPC@}} for it.)@refill
@node key, samp, kbd, Indicating
@comment node-name, next, previous, up
@subsection @code{@@key}@{@var{key-name}@}
@findex key
Use the @code{@@key} command for the conventional name for a key on a
keyboard, as in:@refill
@example
@@key@{RET@}
@end example
You can use the @code{@@key} command within the argument of an
@code{@@kbd} command when the sequence of characters to be typed
includes one or more keys that are described by name.@refill
@need 700
For example, to produce @kbd{C-x @key{ESC}} you would type:@refill
@example
@@kbd@{C-x @@key@{ESC@}@}
@end example
Here is a list of the recommended names for keys:
@cindex Recommended names for keys
@cindex Keys, recommended names
@cindex Names recommended for keys
@cindex Abbreviations for keys
@quotation
@table @t
@item SPC
Space
@item RET
Return
@item LFD
Linefeed (however, since most keyboards nowadays do not have a Linefeed key,
it might be better to call this character @kbd{C-j}.
@item TAB
Tab
@item BS
Backspace
@item ESC
Escape
@item DEL
Delete
@item SHIFT
Shift
@item CTRL
Control
@item META
Meta
@end table
@end quotation
@cindex META key
There are subtleties to handling words like `meta' or `ctrl' that are
names of modifier keys. When mentioning a character in which the
modifier key is used, such as @kbd{Meta-a}, use the @code{@@kbd} command
alone; do not use the @code{@@key} command; but when you are referring
to the modifier key in isolation, use the @code{@@key} command. For
example, write @samp{@@kbd@{Meta-a@}} to produce @kbd{Meta-a} and
@samp{@@key@{META@}} to produce @key{META}.
@c I don't think this is a good explanation.
@c I think it will puzzle readers more than it clarifies matters. -- rms.
@c In other words, use @code{@@kbd} for what you do, and use @code{@@key}
@c for what you talk about: ``Press @code{@@kbd@{M-a@}} to move point to
@c the beginning of the sentence. The @code{@@key@{META@}} key is often in
@c the lower left of the keyboard.''@refill
@node samp, var, key, Indicating
@comment node-name, next, previous, up
@subsection @code{@@samp}@{@var{text}@}
@findex samp
Use the @code{@@samp} command to indicate text that is a literal example
or `sample' of a sequence of characters in a file, string, pattern, etc.
Enclose the text in braces. The argument appears within single
quotation marks in both the Info file and the printed manual; in
addition, it is printed in a fixed-width font.@refill
@example
To match @@samp@{foo@} at the end of the line,
use the regexp @@samp@{foo$@}.
@end example
@noindent
produces
@quotation
To match @samp{foo} at the end of the line, use the regexp
@samp{foo$}.@refill
@end quotation
Any time you are referring to single characters, you should use
@code{@@samp} unless @code{@@kbd} or @code{@@key} is more appropriate.
Also, you may use @code{@@samp} for entire statements in C and for entire
shell commands---in this case, @code{@@samp} often looks better than
@code{@@code}. Basically, @code{@@samp} is a catchall for whatever is
not covered by @code{@@code}, @code{@@kbd}, or @code{@@key}.@refill
Only include punctuation marks within braces if they are part of the
string you are specifying. Write punctuation marks outside the braces
if those punctuation marks are part of the English text that surrounds
the string. In the following sentence, for example, the commas and
period are outside of the braces:@refill
@example
@group
In English, the vowels are @@samp@{a@}, @@samp@{e@},
@@samp@{i@}, @@samp@{o@}, @@samp@{u@}, and sometimes
@@samp@{y@}.
@end group
@end example
@noindent
This produces:
@quotation
In English, the vowels are @samp{a}, @samp{e},
@samp{i}, @samp{o}, @samp{u}, and sometimes
@samp{y}.
@end quotation
@node var
@subsection @code{@@var}@{@var{metasyntactic-variable}@}
@findex var
Use the @code{@@var} command to indicate metasyntactic variables. A
@dfn{metasyntactic variable} is something that stands for another piece of
text. For example, you should use a metasyntactic variable in the
documentation of a function to describe the arguments that are passed
to that function.@refill
Do not use @code{@@var} for the names of particular variables in
programming languages. These are specific names from a program, so
@code{@@code} is correct for them (@pxref{code}). For example, the
Emacs Lisp variable @code{texinfo-tex-command} is not a metasyntactic
variable; it is properly formatted using @code{@@code}.
Do not use @code{@@var} for environment variables either; @code{@@env}
is correct for them (see the next section).
The effect of @code{@@var} in the Info file is to change the case of the
argument to all upper case. In the printed manual and HTML output, the
argument is printed in slanted type.
@need 700
For example,
@example
To delete file @@var@{filename@},
type @@samp@{rm @@var@{filename@}@}.
@end example
@noindent
produces
@quotation
To delete file @var{filename}, type @samp{rm @var{filename}}.
@end quotation
@noindent
(Note that @code{@@var} may appear inside @code{@@code},
@code{@@samp}, @code{@@file}, etc.)@refill
Write a metasyntactic variable all in lower case without spaces, and
use hyphens to make it more readable. Thus, the Texinfo source for
the illustration of how to begin a Texinfo manual looks like
this:@refill
@example
@group
\input texinfo
@@@@setfilename @@var@{info-file-name@}
@@@@settitle @@var@{name-of-manual@}
@end group
@end example
@noindent
This produces:
@example
@group
\input texinfo
@@setfilename @var{info-file-name}
@@settitle @var{name-of-manual}
@end group
@end example
In some documentation styles, metasyntactic variables are shown with
angle brackets, for example:@refill
@example
@dots{}, type rm <filename>
@end example
@noindent
However, that is not the style that Texinfo uses. (You can, of
course, modify the sources to @file{texinfo.tex} and the Info formatting commands
to output the @code{<@dots{}>} format if you wish.)@refill
@node env
@subsection @code{@@env}@{@var{environment-variable}@}
@findex env
Use the @code{@@env} command to indicate environment variables, as used
by many operating systems, including GNU. Do not use it for
metasyntactic variables; use @code{@@var} instead (see the previous
section).
@code{@@env} is equivalent to @code{@@code} in its effects.
For example:
@example
The @@env@{PATH@} environment variable sets the search path for commands.
@end example
@noindent produces
@quotation
The @env{PATH} environment variable sets the search path for commands.
@end quotation
@node file
@subsection @code{@@file}@{@var{file-name}@}
@findex file
Use the @code{@@file} command to indicate text that is the name of a
file, buffer, or directory, or is the name of a node in Info. You can
also use the command for file name suffixes. Do not use @code{@@file}
for symbols in a programming language; use @code{@@code}.
Currently, @code{@@file} is equivalent to @code{@@samp} in its effects.
For example,@refill
@example
The @@file@{.el@} files are in
the @@file@{/usr/local/emacs/lisp@} directory.
@end example
@noindent
produces
@quotation
The @file{.el} files are in
the @file{/usr/local/emacs/lisp} directory.
@end quotation
@node command
@subsection @code{@@command}@{@var{command-name}@}
@findex command
@cindex Command names, indicating
@cindex Program names, indicating
Use the @code{@@command} command to indicate command names, such as
@command{ls} or @command{cc}.
@code{@@command} is equivalent to @code{@@code} in its effects.
For example:
@example
The command @@command@{ls@} lists directory contents.
@end example
@noindent produces
@quotation
The command @command{ls} lists directory contents.
@end quotation
You should write the name of a program in the ordinary text font, rather
than using @code{@@command}, if you regard it as a new English word,
such as `Emacs' or `Bison'.
When writing an entire shell command invocation, as in @samp{ls -l},
you should use either @code{@@samp} or @code{@@code} at your discretion.
@node option
@subsection @code{@@option}@{@var{option-name}@}
@findex option
Use the @code{@@option} command to indicate a command-line option; for
example, @option{-l} or @option{--version} or
@option{--output=@var{filename}}.
@code{@@option} is equivalent to @code{@@samp} in its effects.
For example:
@example
The option @@option@{-l@} produces a long listing.
@end example
@noindent produces
@quotation
The option @option{-l} produces a long listing.
@end quotation
In tables, putting options inside @code{@@code} produces a
more pleasing effect.
@node dfn
@comment node-name, next, previous, up
@subsection @code{@@dfn}@{@var{term}@}
@findex dfn
Use the @code{@@dfn} command to identify the introductory or defining
use of a technical term. Use the command only in passages whose
purpose is to introduce a term which will be used again or which the
reader ought to know. Mere passing mention of a term for the first
time does not deserve @code{@@dfn}. The command generates italics in
the printed manual, and double quotation marks in the Info file. For
example:@refill
@example
Getting rid of a file is called @@dfn@{deleting@} it.
@end example
@noindent
produces
@quotation
Getting rid of a file is called @dfn{deleting} it.
@end quotation
As a general rule, a sentence containing the defining occurrence of a
term should be a definition of the term. The sentence does not need
to say explicitly that it is a definition, but it should contain the
information of a definition---it should make the meaning clear.
@node cite
@subsection @code{@@cite}@{@var{reference}@}
@findex cite
Use the @code{@@cite} command for the name of a book that lacks a
companion Info file. The command produces italics in the printed
manual, and quotation marks in the Info file.
If a book is written in Texinfo, it is better to use a cross reference
command since a reader can easily follow such a reference in Info.
@xref{xref, , @code{@@xref}}.
@ignore
@c node ctrl, , cite, Indicating
@comment node-name, next, previous, up
@c subsection @code{@@ctrl}@{@var{ctrl-char}@}
@findex ctrl
The @code{@@ctrl} command is seldom used. It describes an @sc{ascii}
control character by inserting the actual character into the Info
file.
Usually, in Texinfo, you talk what you type as keyboard entry by
describing it with @code{@@kbd}: thus, @samp{@@kbd@{C-a@}} for
@kbd{C-a}. Use @code{@@kbd} in this way when talking about a control
character that is typed on the keyboard by the user. When talking
about a control character appearing in a file or a string, do not use
@code{@@kbd} since the control character is not typed. Also, do not
use @samp{C-} but spell out @code{control-}, as in @samp{control-a},
to make it easier for a reader to understand.@refill
@code{@@ctrl} is an idea from the beginnings of Texinfo which may not
really fit in to the scheme of things. But there may be times when
you want to use the command. The pattern is
@code{@@ctrl@{@var{ch}@}}, where @var{ch} is an @sc{ascii} character
whose control-equivalent is wanted. For example, to specify
@samp{control-f}, you would enter@refill
@example
@@ctrl@{f@}
@end example
@noindent
produces
@quotation
@ctrl{f}
@end quotation
In the Info file, this generates the specified control character, output
literally into the file. This is done so a user can copy the specified
control character (along with whatever else he or she wants) into another
Emacs buffer and use it. Since the `control-h',`control-i', and
`control-j' characters are formatting characters, they should not be
indicated with @code{@@ctrl}.@refill
In a printed manual, @code{@@ctrl} generates text to describe or
identify that control character: an uparrow followed by the character
@var{ch}.@refill
@end ignore
@node acronym
@subsection @code{@@acronym}@{@var{acronym}@}
@findex acronym
@cindex NASA, as acronym
@cindex F.B.I., as acronym
@cindex Abbreviations, tagging
@cindex Acronyms, tagging
Use the @code{@@acronym} command for abbreviations written in all
capital letters, such as `@acronym{NASA}'. The abbreviation is given as
the single argument in braces, as in @samp{@@acronym@{NASA@}}. As
a matter of style, or for particular abbreviations, you may prefer to
use periods, as in @samp{@@acronym@{F.B.I.@}}.
In @TeX{} and HTML, the argument is printed in a slightly smaller font
size. In Info or plain text output, this command changes nothing.
@node url
@subsection @code{@@url}@{@var{uniform-resource-locator}@}
@findex url
@cindex Uniform resource locator, indicating
@cindex URL, indicating
Use the @code{@@url} command to indicate a uniform resource locator on
the World Wide Web. This is analogous to @code{@@file}, @code{@@var},
etc., and is purely for markup purposes. It does not produce a link you
can follow in HTML output (use the @code{@@uref} command for that,
@pxref{uref,, @code{@@uref}}). It is useful for url's which do
not actually exist. For example:
@c Two lines because one is too long for smallbook format.
@example
For example, the url might be @@url@{http://example.org/path@}.
@end example
@noindent which produces:
@display
For example, the url might be @url{http://example.org/path}.
@end display
@node email
@subsection @code{@@email}@{@var{email-address}[, @var{displayed-text}]@}
@findex email
Use the @code{@@email} command to indicate an electronic mail address.
It takes one mandatory argument, the address, and one optional argument, the
text to display (the default is the address itself).
@cindex mailto link
In Info and @TeX{}, the address is shown in angle brackets, preceded by
the text to display if any. In HTML output, @code{@@email} produces a
@samp{mailto} link that usually brings up a mail composition window.
For example:
@example
Send bug reports to @@email@{bug-texinfo@@@@gnu.org@}.
Send suggestions to the @@email@{bug-texinfo@@@@gnu.org, same place@}.
@end example
@noindent produces
@display
Send bug reports to @email{bug-texinfo@@gnu.org}.
Send suggestions to the @email{bug-texinfo@@gnu.org, same place}.
@end display
@node Emphasis, , Indicating, Marking Text
@comment node-name, next, previous, up
@section Emphasizing Text
@cindex Emphasizing text
Usually, Texinfo changes the font to mark words in the text according to
what category the words belong to; an example is the @code{@@code} command.
Most often, this is the best way to mark words.
However, sometimes you will want to emphasize text without indicating a
category. Texinfo has two commands to do this. Also, Texinfo has
several commands that specify the font in which @TeX{} will typeset
text. These commands have no effect on Info and only one of them,
the @code{@@r} command, has any regular use.@refill
@menu
* emph & strong:: How to emphasize text in Texinfo.
* Smallcaps:: How to use the small caps font.
* Fonts:: Various font commands for printed output.
@end menu
@node emph & strong
@subsection @code{@@emph}@{@var{text}@} and @code{@@strong}@{@var{text}@}
@cindex Emphasizing text, font for
@findex emph
@findex strong
The @code{@@emph} and @code{@@strong} commands are for emphasis;
@code{@@strong} is stronger. In printed output, @code{@@emph} produces
@emph{italics} and @code{@@strong} produces @strong{bold}.
@need 800
For example,
@example
@group
@@quotation
@@strong@{Caution:@} @@samp@{rm * .[^.]*@} removes @@emph@{all@}
files in the directory.
@@end quotation
@end group
@end example
@iftex
@noindent
produces the following in printed output:
@quotation
@strong{Caution}: @samp{rm * .[^.]*} removes @emph{all}
files in the directory.
@end quotation
@noindent
and the following in Info:
@end iftex
@ifinfo
@noindent
produces:
@end ifinfo
@example
*Caution*: `rm * .[^.]*' removes _all_
files in the directory.
@end example
The @code{@@strong} command is seldom used except to mark what is, in
effect, a typographical element, such as the word `Caution' in the
preceding example.
In the Info output, @code{@@emph} surrounds the text with underscores
(@samp{_}), and @code{@@strong} puts asterisks around the text.
@quotation
@strong{Caution:} Do not use @code{@@strong} with the word @samp{Note};
Info will mistake the combination for a cross reference. Use a phrase
such as @strong{Please note} or @strong{Caution} instead.
@end quotation
@node Smallcaps
@subsection @code{@@sc}@{@var{text}@}: The Small Caps Font
@cindex Small caps font
@findex sc @r{(small caps font)}
Use the @samp{@@sc} command to set text in the printed and the HTML
output in @sc{a small caps font} and set text in the Info file in upper
case letters. Write the text you want to be in small caps (where
possible) between braces in lower case, like this:
@example
The @@sc@{acm@} and @@sc@{ieee@} are technical societies.
@end example
@noindent
This produces:
@display
The @sc{acm} and @sc{ieee} are technical societies.
@end display
@TeX{} typesets the small caps font in a manner that prevents the
letters from `jumping out at you on the page'. This makes small caps
text easier to read than text in all upper case---but it's usually
better to use regular mixed case anyway. The Info formatting commands
set all small caps text in upper case. In HTML, the text is upper-cased
and a smaller font is used to render it.
If the text between the braces of an @code{@@sc} command is uppercase,
@TeX{} typesets in FULL-SIZE CAPITALS. Use full-size capitals
sparingly, if ever, and since it's redundant to mark all-uppercase text
with @code{@@sc}, @command{makeinfo} warns about such usage.
You may also use the small caps font for a jargon word such as
@sc{ato} (a @sc{nasa} word meaning `abort to orbit').
There are subtleties to using the small caps font with a jargon word
such as @sc{cdr}, a word used in Lisp programming. In this case, you
should use the small caps font when the word refers to the second and
subsequent elements of a list (the @sc{cdr} of the list), but you
should use @samp{@@code} when the word refers to the Lisp function of
the same spelling.
@node Fonts
@subsection Fonts for Printing, Not Info
@cindex Fonts for printing, not for Info
@findex i @r{(italic font)}
@findex b @r{(bold font)}
@findex t @r{(typewriter font)}
@findex r @r{(Roman font)}
Texinfo provides four font commands that specify font changes in the
printed manual but have no effect in the Info file. @code{@@i}
requests @i{italic} font (in some versions of @TeX{}, a slanted font
is used), @code{@@b} requests @b{bold} face, @code{@@t} requests the
@t{fixed-width}, typewriter-style font used by @code{@@code}, and @code{@@r} requests a
@r{roman} font, which is the usual font in which text is printed. All
four commands apply to an argument that follows, surrounded by
braces.@refill
Only the @code{@@r} command has much use: in example programs, you
can use the @code{@@r} command to convert code comments from the
fixed-width font to a roman font. This looks better in printed
output.@refill
@need 700
For example,
@example
@group
@@lisp
(+ 2 2) ; @@r@{Add two plus two.@}
@@end lisp
@end group
@end example
@noindent
produces
@lisp
(+ 2 2) ; @r{Add two plus two.}
@end lisp
If possible, you should avoid using the other three font commands. If
you need to use one, it probably indicates a gap in the Texinfo
language.@refill
@node Quotations and Examples
@chapter Quotations and Examples
Quotations and examples are blocks of text consisting of one or more
whole paragraphs that are set off from the bulk of the text and
treated differently. They are usually indented.@refill
In Texinfo, you always begin a quotation or example by writing an
@@-command at the beginning of a line by itself, and end it by writing
an @code{@@end} command that is also at the beginning of a line by
itself. For instance, you begin an example by writing @code{@@example}
by itself at the beginning of a line and end the example by writing
@code{@@end example} on a line by itself, at the beginning of that
line.@refill
@findex end
@menu
* Block Enclosing Commands:: Use different constructs for
different purposes.
* quotation:: How to write a quotation.
* example:: How to write an example in a fixed-width font.
* noindent:: How to prevent paragraph indentation.
* lisp:: How to illustrate Lisp code.
* small:: Forms for @code{@@smallbook}.
* display:: How to write an example in the current font.
* format:: How to write an example that does not narrow
the margins.
* exdent:: How to undo the indentation of a line.
* flushleft & flushright:: How to push text flushleft or flushright.
* cartouche:: How to draw cartouches around examples.
@end menu
@node Block Enclosing Commands
@section Block Enclosing Commands
Here are commands for quotations and examples, explained further in the
following sections:
@table @code
@item @@quotation
Indicate text that is quoted. The text is filled, indented, and
printed in a roman font by default.@refill
@item @@example
Illustrate code, commands, and the like. The text is printed
in a fixed-width font, and indented but not filled.@refill
@item @@smallexample
Same as @code{@@example}, except that in @TeX{} this command typesets
text in a smaller font for the @code{@@smallbook} format than for the
default 8.5 by 11 inch format.
@item @@lisp
Like @code{@@example}, but specifically for illustrating Lisp code. The
text is printed in a fixed-width font, and indented but not filled.
@item @@smalllisp
Is to @code{@@lisp} as @code{@@smallexample} is to @code{@@example}.
@item @@display
Display illustrative text. The text is indented but not filled, and
no font is selected (so, by default, the font is roman).@refill
@item @@smalldisplay
Is to @code{@@display} as @code{@@smallexample} is to @code{@@example}.
@item @@format
Like @code{@@display} (the text is not filled and no font is selected),
but the text is not indented.
@item @@smallformat
Is to @code{@@format} as @code{@@smallexample} is to @code{@@example}.
@end table
The @code{@@exdent} command is used within the above constructs to
undo the indentation of a line.
The @code{@@flushleft} and @code{@@flushright} commands are used to line
up the left or right margins of unfilled text.@refill
The @code{@@noindent} command may be used after one of the above
constructs to prevent the following text from being indented as a new
paragraph.@refill
You can use the @code{@@cartouche} command within one of the above
constructs to highlight the example or quotation by drawing a box with
rounded corners around it. @xref{cartouche, , Drawing Cartouches Around
Examples}.
@node quotation
@section @code{@@quotation}
@cindex Quotations
@findex quotation
The text of a quotation is processed normally except that:
@itemize @bullet
@item
the margins are closer to the center of the page, so the whole of the
quotation is indented;@refill
@item
the first lines of paragraphs are indented no more than other
lines;@refill
@item
in the printed output, interparagraph spacing is reduced.@refill
@end itemize
@quotation
This is an example of text written between an @code{@@quotation}
command and an @code{@@end quotation} command. An @code{@@quotation}
command is most often used to indicate text that is excerpted from
another (real or hypothetical) printed work.@refill
@end quotation
Write an @code{@@quotation} command as text on a line by itself. This
line will disappear from the output. Mark the end of the quotation
with a line beginning with and containing only @code{@@end quotation}.
The @code{@@end quotation} line will likewise disappear from the
output. Thus, the following,@refill
@example
@@quotation
This is
a foo.
@@end quotation
@end example
@noindent
produces
@quotation
This is a foo.
@end quotation
@node example
@section @code{@@example}
@cindex Examples, formatting them
@cindex Formatting examples
@findex example
The @code{@@example} command is used to indicate an example that is
not part of the running text, such as computer input or output.@refill
@example
@group
This is an example of text written between an
@code{@@example} command
and an @code{@@end example} command.
The text is indented but not filled.
@end group
@group
In the printed manual, the text is typeset in a
fixed-width font, and extra spaces and blank lines are
significant. In the Info file, an analogous result is
obtained by indenting each line with five spaces.
@end group
@end example
Write an @code{@@example} command at the beginning of a line by itself.
Mark the end of the example
with an @code{@@end example} command, also written at the beginning of a
line by itself.@refill
@need 700
For example,
@example
@@example
mv foo bar
@@end example
@end example
@noindent
produces
@example
mv foo bar
@end example
The lines containing @code{@@example} and @code{@@end example}
will disappear from the output.
To make the output look good,
you should put a blank line before the
@code{@@example} and another blank line after the @code{@@end example}.
Note that blank lines inside the beginning
@code{@@example} and the ending @code{@@end example} will appear in
the output.@refill
@quotation
@strong{Caution:} Do not use tabs in the lines of an example (or anywhere
else in Texinfo, for that matter)! @TeX{} treats tabs as single
spaces, and that is not what they look like. This is a problem with
@TeX{}. (If necessary, in Emacs, you can use @kbd{M-x untabify} to
convert tabs in a region to multiple spaces.)@refill
@end quotation
Examples are often, logically speaking, ``in the middle'' of a
paragraph, and the text that continues after an example should not be
indented. The @code{@@noindent} command prevents a piece of text from
being indented as if it were a new paragraph.
@ifinfo
(@xref{noindent}.)
@end ifinfo
(The @code{@@code} command is used for examples of code that are
embedded within sentences, not set off from preceding and following
text. @xref{code, , @code{@@code}}.)
@node noindent
@section @code{@@noindent}
@findex noindent
An example or other inclusion can break a paragraph into segments.
Ordinarily, the formatters indent text that follows an example as a new
paragraph. However, you can prevent this by writing @code{@@noindent}
at the beginning of a line by itself preceding the continuation
text.@refill
@need 1500
For example:
@example
@group
@@example
This is an example
@@end example
@@noindent
This line is not indented. As you can see, the
beginning of the line is fully flush left with the line
that follows after it. (This whole example is between
@@code@{@@@@display@} and @@code@{@@@@end display@}.)
@end group
@end example
@noindent
produces
@display
@example
This is an example
@end example
@tex
% Remove extra vskip; this is a kludge to counter the effect of display
\vskip-3.5\baselineskip
@end tex
@noindent
This line is not indented. As you can see, the
beginning of the line is fully flush left with the line
that follows after it. (This whole example is between
@code{@@display} and @code{@@end display}.)
@end display
To adjust the number of blank lines properly in the Info file output,
remember that the line containing @code{@@noindent} does not generate a
blank line, and neither does the @code{@@end example} line.@refill
In the Texinfo source file for this manual, each line that says
`produces' is preceded by a line containing @code{@@noindent}.@refill
Do not put braces after an @code{@@noindent} command; they are not
necessary, since @code{@@noindent} is a command used outside of
paragraphs (@pxref{Command Syntax}).@refill
@node lisp
@section @code{@@lisp}
@findex lisp
@cindex Lisp example
The @code{@@lisp} command is used for Lisp code. It is synonymous
with the @code{@@example} command.
@lisp
This is an example of text written between an
@code{@@lisp} command and an @code{@@end lisp} command.
@end lisp
Use @code{@@lisp} instead of @code{@@example} to preserve information
regarding the nature of the example. This is useful, for example, if
you write a function that evaluates only and all the Lisp code in a
Texinfo file. Then you can use the Texinfo file as a Lisp
library.@footnote{It would be straightforward to extend Texinfo to work
in a similar fashion for C, Fortran, or other languages.}
Mark the end of @code{@@lisp} with @code{@@end lisp} on a line by
itself.@refill
@node small
@section @code{@@small@dots{}} Block Commands
@cindex Small book example
@cindex Example for a small book
@cindex Lisp example for a small book
@findex smalldisplay
@findex smallexample
@findex smallformat
@findex smalllisp
In addition to the regular @code{@@example} and @code{@@lisp} commands,
Texinfo has ``small'' example-style commands. These are
@code{@@smalldisplay}, @code{@@smallexample}, @code{@@smallformat}, and
@code{@@smalllisp}. All of these commands are designed for use with the
@code{@@smallbook} command (which causes @TeX{} to format a printed book for
a 7 by 9.25 inch trim size rather than the default 8.5 by 11 inch size).
In @TeX{}, the @code{@@small@dots{}} commands typeset text in a smaller
font for the smaller @code{@@smallbook} format than for the 8.5 by 11
inch format. Consequently, many examples containing long lines fit in a
narrower, @code{@@smallbook} page without needing to be shortened. Both
commands typeset in the normal font size when you format for the 8.5 by
11 inch size. Indeed, in this situation, the @code{@@small@dots{}}
commands are equivalent to their non-small versions.
In Info, the @code{@@small@dots{}} commands are also equivalent to their
non-small companion commands.
Mark the end of an @code{@@small@dots{}} block with a corresponding
@code{@@end small@dots{}}. For example, pair @code{@@smallexample} with
@code{@@end smallexample}.
@iftex
Here is an example written in the small font used by the
@code{@@smallexample} and @code{@@smalllisp} commands:
@ifclear smallbook
@display
@tex
% Remove extra vskip; this is a kludge to counter the effect of display
\vskip-3\baselineskip
{\smalltt
\dots{} to make sure that you have the freedom to
distribute copies of free software (and charge for
this service if you wish), that you receive source
code or can get it if you want it, that you can
change the software or use pieces of it in new free
programs; and that you know you can do these things.}
@end tex
@end display
@end ifclear
@end iftex
@ifset smallbook
@iftex
@smallexample
This is an example of text written between @code{@@smallexample} and
@code{@@end smallexample}. In Info and in an 8.5 by 11 inch manual,
this text appears in its normal size; but in a 7 by 9.25 inch manual,
this text appears in a smaller font.
@end smallexample
@end iftex
@end ifset
@ifinfo
@smallexample
This is an example of text written between @code{@@smallexample} and
@code{@@end smallexample}. In Info and in an 8.5 by 11 inch manual,
this text appears in its normal size; but in a 7 by 9.25 inch manual,
this text appears in a smaller font.
@end smallexample
@end ifinfo
The @code{@@small@dots{}} commands make it easier to prepare smaller
format manuals without forcing you to edit examples by hand to fit them
onto narrower pages.@refill
As a general rule, a printed document looks better if you use only one
of (for example) @code{@@example} or in @code{@@smallexample}
consistently within a chapter. Only occasionally should you mix the two
formats.
@xref{smallbook, , Printing ``Small'' Books}, for more information
about the @code{@@smallbook} command.@refill
@node display
@section @code{@@display} and @code{@@smalldisplay}
@cindex Display formatting
@findex display
The @code{@@display} command begins a kind of example. It is like the
@code{@@example} command
except that, in
a printed manual, @code{@@display} does not select the fixed-width
font. In fact, it does not specify the font at all, so that the text
appears in the same font it would have appeared in without the
@code{@@display} command.@refill
@display
This is an example of text written between an @code{@@display} command
and an @code{@@end display} command. The @code{@@display} command
indents the text, but does not fill it.
@end display
@findex smalldisplay
Texinfo also provides a command @code{@@smalldisplay}, which is like
@code{@@display} but uses a smaller font in @code{@@smallbook} format.
@xref{small}.
@node format
@section @code{@@format} and @code{@@smallformat}
@findex format
The @code{@@format} command is similar to @code{@@example} except
that, in the printed manual, @code{@@format} does not select the
fixed-width font and does not narrow the margins.@refill
@format
This is an example of text written between an @code{@@format} command
and an @code{@@end format} command. As you can see
from this example,
the @code{@@format} command does not fill the text.
@end format
@findex smallformat
Texinfo also provides a command @code{@@smallformat}, which is like
@code{@@format} but uses a smaller font in @code{@@smallbook} format.
@xref{small}.
@node exdent
@section @code{@@exdent}: Undoing a Line's Indentation
@cindex Indentation undoing
@findex exdent
The @code{@@exdent} command removes any indentation a line might have.
The command is written at the beginning of a line and applies only to
the text that follows the command that is on the same line. Do not use
braces around the text. In a printed manual, the text on an
@code{@@exdent} line is printed in the roman font.@refill
@code{@@exdent} is usually used within examples. Thus,@refill
@example
@group
@@example
This line follows an @@@@example command.
@@exdent This line is exdented.
This line follows the exdented line.
The @@@@end example comes on the next line.
@@end group
@end group
@end example
@noindent
produces
@example
@group
This line follows an @@example command.
@exdent This line is exdented.
This line follows the exdented line.
The @@end example comes on the next line.
@end group
@end example
In practice, the @code{@@exdent} command is rarely used.
Usually, you un-indent text by ending the example and
returning the page to its normal width.@refill
@node flushleft & flushright, cartouche, exdent, Quotations and Examples
@section @code{@@flushleft} and @code{@@flushright}
@findex flushleft
@findex flushright
The @code{@@flushleft} and @code{@@flushright} commands line up the
ends of lines on the left and right margins of a page,
but do not fill the text. The commands are written on lines of their
own, without braces. The @code{@@flushleft} and @code{@@flushright}
commands are ended by @code{@@end flushleft} and @code{@@end
flushright} commands on lines of their own.@refill
@need 1500
For example,
@example
@group
@@flushleft
This text is
written flushleft.
@@end flushleft
@end group
@end example
@noindent
produces
@quotation
@flushleft
This text is
written flushleft.
@end flushleft
@end quotation
@code{@@flushright} produces the type of indentation often used in the
return address of letters. For example,
@example
@group
@@flushright
Here is an example of text written
flushright. The @@code@{@@flushright@} command
right justifies every line but leaves the
left end ragged.
@@end flushright
@end group
@end example
@noindent
produces
@flushright
Here is an example of text written
flushright. The @code{@@flushright} command
right justifies every line but leaves the
left end ragged.
@end flushright
@node cartouche, , flushleft & flushright, Quotations and Examples
@section Drawing Cartouches Around Examples
@findex cartouche
@cindex Box with rounded corners
In a printed manual, the @code{@@cartouche} command draws a box with
rounded corners around its contents. You can use this command to
further highlight an example or quotation. For instance, you could
write a manual in which one type of example is surrounded by a cartouche
for emphasis.@refill
@code{@@cartouche} affects only the printed manual; it has no effect in
other output files.
@need 1500
For example,
@example
@group
@@example
@@cartouche
% pwd
/usr/local/share/emacs
@@end cartouche
@@end example
@end group
@end example
@noindent
surrounds the two-line example with a box with rounded corners, in the
printed manual.
@iftex
In a printed manual, the example looks like this:@refill
@example
@group
@cartouche
% pwd
/usr/local/lib/emacs/info
@end cartouche
@end group
@end example
@end iftex
@node Lists and Tables, Indices, Quotations and Examples, Top
@chapter Lists and Tables
@cindex Making lists and tables
@cindex Lists and tables, making
@cindex Tables and lists, making
Texinfo has several ways of making lists and tables. Lists can be
bulleted or numbered; two-column tables can highlight the items in
the first column; multi-column tables are also supported.
@menu
* Introducing Lists:: Texinfo formats lists for you.
* itemize:: How to construct a simple list.
* enumerate:: How to construct a numbered list.
* Two-column Tables:: How to construct a two-column table.
* Multi-column Tables:: How to construct generalized tables.
@end menu
@node Introducing Lists, itemize, Lists and Tables, Lists and Tables
@ifinfo
@heading Introducing Lists
@end ifinfo
Texinfo automatically indents the text in lists or tables, and numbers
an enumerated list. This last feature is useful if you modify the
list, since you do not need to renumber it yourself.@refill
Numbered lists and tables begin with the appropriate @@-command at the
beginning of a line, and end with the corresponding @code{@@end}
command on a line by itself. The table and itemized-list commands
also require that you write formatting information on the same line as
the beginning @@-command.@refill
Begin an enumerated list, for example, with an @code{@@enumerate}
command and end the list with an @code{@@end enumerate} command.
Begin an itemized list with an @code{@@itemize} command, followed on
the same line by a formatting command such as @code{@@bullet}, and end
the list with an @code{@@end itemize} command.@refill
@findex end
Precede each element of a list with an @code{@@item} or @code{@@itemx}
command.@refill
@sp 1
@noindent
Here is an itemized list of the different kinds of table and lists:@refill
@itemize @bullet
@item
Itemized lists with and without bullets.
@item
Enumerated lists, using numbers or letters.
@item
Two-column tables with highlighting.
@end itemize
@sp 1
@noindent
Here is an enumerated list with the same items:@refill
@enumerate
@item
Itemized lists with and without bullets.
@item
Enumerated lists, using numbers or letters.
@item
Two-column tables with highlighting.
@end enumerate
@sp 1
@noindent
And here is a two-column table with the same items and their
@w{@@-commands}:@refill
@table @code
@item @@itemize
Itemized lists with and without bullets.
@item @@enumerate
Enumerated lists, using numbers or letters.
@item @@table
@itemx @@ftable
@itemx @@vtable
Two-column tables, optionally with indexing.
@end table
@node itemize
@section @code{@@itemize}: Making an Itemized List
@cindex Itemization
@findex itemize
The @code{@@itemize} command produces sequences of indented
paragraphs, with a bullet or other mark inside the left margin
at the beginning of each paragraph for which such a mark is desired.@refill
@cindex @code{@@w}, for blank items
Begin an itemized list by writing @code{@@itemize} at the beginning of
a line. Follow the command, on the same line, with a character or a
Texinfo command that generates a mark. Usually, you will write
@code{@@bullet} after @code{@@itemize}, but you can use
@code{@@minus}, or any command or character that results in a single
character in the Info file. If you don't want any mark at all, use
@code{@@w}. (When you write the mark command such as
@code{@@bullet} after an @code{@@itemize} command, you may omit the
@samp{@{@}}.) If you don't specify a mark command, the default is
@code{@@bullet}.
Write the text of the indented paragraphs themselves after the
@code{@@itemize}, up to another line that says @code{@@end
itemize}.@refill
@findex item
Before each paragraph for which a mark in the margin is desired, write a
line that says just @code{@@item}. It is ok to have text following the
@code{@@item}.
Usually, you should put a blank line before an @code{@@item}. This
puts a blank line in the Info file. (@TeX{} inserts the proper
interline whitespace in either case.) Except when the entries are
very brief, these blank lines make the list look better.@refill
Here is an example of the use of @code{@@itemize}, followed by the
output it produces. @code{@@bullet} produces an @samp{*} in Info and a
round dot in @TeX{}.
@example
@group
@@itemize @@bullet
@@item
Some text for foo.
@@item
Some text
for bar.
@@end itemize
@end group
@end example
@noindent
This produces:
@quotation
@itemize @bullet
@item
Some text for foo.
@item
Some text
for bar.
@end itemize
@end quotation
Itemized lists may be embedded within other itemized lists. Here is a
list marked with dashes embedded in a list marked with bullets:@refill
@example
@group
@@itemize @@bullet
@@item
First item.
@@itemize @@minus
@@item
Inner item.
@@item
Second inner item.
@@end itemize
@@item
Second outer item.
@@end itemize
@end group
@end example
@noindent
This produces:
@quotation
@itemize @bullet
@item
First item.
@itemize @minus
@item
Inner item.
@item
Second inner item.
@end itemize
@item
Second outer item.
@end itemize
@end quotation
@node enumerate
@section @code{@@enumerate}: Making a Numbered or Lettered List
@cindex Enumeration
@findex enumerate
@code{@@enumerate} is like @code{@@itemize} (@pxref{itemize,,
@code{@@itemize}}), except that the labels on the items are
successive integers or letters instead of bullets.
Write the @code{@@enumerate} command at the beginning of a line. The
command does not require an argument, but accepts either a number or a
letter as an option. Without an argument, @code{@@enumerate} starts the
list with the number @samp{1}. With a numeric argument, such as
@samp{3}, the command starts the list with that number. With an upper
or lower case letter, such as @samp{a} or @samp{A}, the command starts
the list with that letter.
Write the text of the enumerated list in the same way you write an
itemized list: put @code{@@item} on a line of its own before the start
of each paragraph that you want enumerated. Do not write any other text
on the line beginning with @code{@@item}.
You should put a blank line between entries in the list.
This generally makes it easier to read the Info file.
@need 1500
Here is an example of @code{@@enumerate} without an argument:
@example
@group
@@enumerate
@@item
Underlying causes.
@@item
Proximate causes.
@@end enumerate
@end group
@end example
@noindent
This produces:
@enumerate
@item
Underlying causes.
@item
Proximate causes.
@end enumerate
@sp 1
Here is an example with an argument of @kbd{3}:@refill
@sp 1
@example
@group
@@enumerate 3
@@item
Predisposing causes.
@@item
Precipitating causes.
@@item
Perpetuating causes.
@@end enumerate
@end group
@end example
@noindent
This produces:
@enumerate 3
@item
Predisposing causes.
@item
Precipitating causes.
@item
Perpetuating causes.
@end enumerate
@sp 1
Here is a brief summary of the alternatives. The summary is constructed
using @code{@@enumerate} with an argument of @kbd{a}.@refill
@sp 1
@enumerate a
@item
@code{@@enumerate}
Without an argument, produce a numbered list, starting with the number
1.@refill
@item
@code{@@enumerate @var{positive-integer}}
With a (positive) numeric argument, start a numbered list with that
number. You can use this to continue a list that you interrupted with
other text.@refill
@item
@code{@@enumerate @var{upper-case-letter}}
With an upper case letter as argument, start a list
in which each item is marked
by a letter, beginning with that upper case letter.@refill
@item
@code{@@enumerate @var{lower-case-letter}}
With a lower case letter as argument, start a list
in which each item is marked by
a letter, beginning with that lower case letter.@refill
@end enumerate
You can also nest enumerated lists, as in an outline.@refill
@node Two-column Tables, Multi-column Tables, enumerate, Lists and Tables
@section Making a Two-column Table
@cindex Tables, making two-column
@findex table
@code{@@table} is similar to @code{@@itemize} (@pxref{itemize,,
@code{@@itemize}}), but allows you to specify a name or heading line for
each item. The @code{@@table} command is used to produce two-column
tables, and is especially useful for glossaries, explanatory
exhibits, and command-line option summaries.
@menu
* table:: How to construct a two-column table.
* ftable vtable:: Automatic indexing for two-column tables.
* itemx:: How to put more entries in the first column.
@end menu
@node table, ftable vtable, Two-column Tables, Two-column Tables
@ifinfo
@subheading Using the @code{@@table} Command
Use the @code{@@table} command to produce two-column tables.@refill
@end ifinfo
Write the @code{@@table} command at the beginning of a line and follow
it on the same line with an argument that is a Texinfo ``indicating''
command such as @code{@@code}, @code{@@samp}, @code{@@var}, or
@code{@@kbd} (@pxref{Indicating}). Although these commands are usually
followed by arguments in braces, in this case you use the command name
without an argument because @code{@@item} will supply the argument.
This command will be applied to the text that goes into the first column
of each item and determines how it will be highlighted. For example,
@code{@@code} will cause the text in the first column to be highlighted
with an @code{@@code} command. (We recommend @code{@@code} for
@code{@@table}'s of command-line options.)
@findex asis
You may also choose to use the @code{@@asis} command as an argument to
@code{@@table}. @code{@@asis} is a command that does nothing; if you
use this command after @code{@@table}, @TeX{} and the Info formatting
commands output the first column entries without added highlighting
(``as is'').@refill
(The @code{@@table} command may work with other commands besides those
listed here. However, you can only use commands that normally take
arguments in braces.)@refill
@findex item
Begin each table entry with an @code{@@item} command at the beginning
of a line. Write the first column text on the same line as the
@code{@@item} command. Write the second column text on the line
following the @code{@@item} line and on subsequent lines. (You do not
need to type anything for an empty second column entry.) You may
write as many lines of supporting text as you wish, even several
paragraphs. But only text on the same line as the @code{@@item} will
be placed in the first column, including any footnote.
Normally, you should put a blank line before an @code{@@item} line.
This puts a blank like in the Info file. Except when the entries are
very brief, a blank line looks better.@refill
@need 1500
The following table, for example, highlights the text in the first
column with an @code{@@samp} command:@refill
@example
@group
@@table @@samp
@@item foo
This is the text for
@@samp@{foo@}.
@@item bar
Text for @@samp@{bar@}.
@@end table
@end group
@end example
@noindent
This produces:
@table @samp
@item foo
This is the text for
@samp{foo}.
@item bar
Text for @samp{bar}.
@end table
If you want to list two or more named items with a single block of
text, use the @code{@@itemx} command. (@xref{itemx, ,
@code{@@itemx}}.)@refill
@node ftable vtable
@subsection @code{@@ftable} and @code{@@vtable}
@cindex Tables with indexes
@cindex Indexing table entries automatically
@findex ftable
@findex vtable
The @code{@@ftable} and @code{@@vtable} commands are the same as the
@code{@@table} command except that @code{@@ftable} automatically enters
each of the items in the first column of the table into the index of
functions and @code{@@vtable} automatically enters each of the items in
the first column of the table into the index of variables. This
simplifies the task of creating indices. Only the items on the same
line as the @code{@@item} commands are indexed, and they are indexed in
exactly the form that they appear on that line. @xref{Indices},
for more information about indices.@refill
Begin a two-column table using @code{@@ftable} or @code{@@vtable} by
writing the @@-command at the beginning of a line, followed on the same
line by an argument that is a Texinfo command such as @code{@@code},
exactly as you would for an @code{@@table} command; and end the table
with an @code{@@end ftable} or @code{@@end vtable} command on a line by
itself.
See the example for @code{@@table} in the previous section.
@node itemx
@subsection @code{@@itemx}
@cindex Two named items for @code{@@table}
@findex itemx
Use the @code{@@itemx} command inside a table when you have two or more
first column entries for the same item, each of which should appear on a
line of its own. Use @code{@@itemx} for all but the first entry;
@code{@@itemx} should always follow an @code{@@item} command. The
@code{@@itemx} command works exactly like @code{@@item} except that it
does not generate extra vertical space above the first column text.
For example,
@example
@group
@@table @@code
@@item upcase
@@itemx downcase
These two functions accept a character or a string as
argument, and return the corresponding upper case (lower
case) character or string.
@@end table
@end group
@end example
@noindent
This produces:
@table @code
@item upcase
@itemx downcase
These two functions accept a character or a string as
argument, and return the corresponding upper case (lower
case) character or string.@refill
@end table
@noindent
(Note also that this example illustrates multi-line supporting text in
a two-column table.)@refill
@node Multi-column Tables, , Two-column Tables, Lists and Tables
@section Multi-column Tables
@cindex Tables, making multi-column
@findex multitable
@code{@@multitable} allows you to construct tables with any number of
columns, with each column having any width you like.
You define the column widths on the @code{@@multitable} line itself, and
write each row of the actual table following an @code{@@item} command,
with columns separated by an @code{@@tab} command. Finally, @code{@@end
multitable} completes the table. Details in the sections below.
@menu
* Multitable Column Widths:: Defining multitable column widths.
* Multitable Rows:: Defining multitable rows, with examples.
@end menu
@node Multitable Column Widths
@subsection Multitable Column Widths
@cindex Multitable column widths
@cindex Column widths, defining for multitables
@cindex Widths, defining multitable column
You can define the column widths for a multitable in two ways: as
fractions of the line length; or with a prototype row. Mixing the two
methods is not supported. In either case, the widths are defined
entirely on the same line as the @code{@@multitable} command.
@enumerate
@item
@findex columnfractions
@cindex Line length, column widths as fraction of
To specify column widths as fractions of the line length, write
@code{@@columnfractions} and the decimal numbers (presumably less than
1) after the @code{@@multitable} command, as in:
@example
@@multitable @@columnfractions .33 .33 .33
@end example
@noindent The fractions need not add up exactly to 1.0, as these do
not. This allows you to produce tables that do not need the full line
length. You can use a leading zero if you wish.
@item
@cindex Prototype row, column widths defined by
To specify a prototype row, write the longest entry for each column
enclosed in braces after the @code{@@multitable} command. For example:
@example
@@multitable @{some text for column one@} @{for column two@}
@end example
@noindent
The first column will then have the width of the typeset `some text for
column one', and the second column the width of `for column two'.
The prototype entries need not appear in the table itself.
Although we used simple text in this example, the prototype entries can
contain Texinfo commands; markup commands such as @code{@@code} are
particularly likely to be useful.
@end enumerate
@node Multitable Rows, , Multitable Column Widths, Multi-column Tables
@subsection Multitable Rows
@cindex Multitable rows
@cindex Rows, of a multitable
@findex item
@findex tab
After the @code{@@multitable} command defining the column widths (see
the previous section), you begin each row in the body of a multitable
with @code{@@item}, and separate the column entries with @code{@@tab}.
Line breaks are not special within the table body, and you may break
input lines in your source file as necessary.
Here is a complete example of a multi-column table (the text is from
@cite{The GNU Emacs Manual}, @pxref{Split Window,, Splitting Windows,
emacs, The GNU Emacs Manual}):
@example
@@multitable @@columnfractions .15 .45 .4
@@item Key @@tab Command @@tab Description
@@item C-x 2
@@tab @@code@{split-window-vertically@}
@@tab Split the selected window into two windows,
with one above the other.
@@item C-x 3
@@tab @@code@{split-window-horizontally@}
@@tab Split the selected window into two windows
positioned side by side.
@@item C-Mouse-2
@@tab
@@tab In the mode line or scroll bar of a window,
split that window.
@@end multitable
@end example
@noindent produces:
@multitable @columnfractions .15 .45 .4
@item Key @tab Command @tab Description
@item C-x 2
@tab @code{split-window-vertically}
@tab Split the selected window into two windows,
with one above the other.
@item C-x 3
@tab @code{split-window-horizontally}
@tab Split the selected window into two windows
positioned side by side.
@item C-Mouse-2
@tab
@tab In the mode line or scroll bar of a window,
split that window.
@end multitable
@node Indices, Insertions, Lists and Tables, Top
@comment node-name, next, previous, up
@chapter Indices
@cindex Indices
Using Texinfo, you can generate indices without having to sort and
collate entries manually. In an index, the entries are listed in
alphabetical order, together with information on how to find the
discussion of each entry. In a printed manual, this information
consists of page numbers. In an Info file, this information is a menu
entry leading to the first node referenced.@refill
Texinfo provides several predefined kinds of index: an index
for functions, an index for variables, an index for concepts, and so
on. You can combine indices or use them for other than their
canonical purpose. If you wish, you can define your own indices.@refill
@menu
* Index Entries:: Choose different words for index entries.
* Predefined Indices:: Use different indices for different kinds
of entry.
* Indexing Commands:: How to make an index entry.
* Combining Indices:: How to combine indices.
* New Indices:: How to define your own indices.
@end menu
@node Index Entries, Predefined Indices, Indices, Indices
@comment node-name, next, previous, up
@section Making Index Entries
@cindex Index entries, making
@cindex Entries, making index
When you are making index entries, it is good practice to think of the
different ways people may look for something. Different people
@emph{do not} think of the same words when they look something up. A
helpful index will have items indexed under all the different words
that people may use. For example, one reader may think it obvious that
the two-letter names for indices should be listed under ``Indices,
two-letter names'', since the word ``Index'' is the general concept.
But another reader may remember the specific concept of two-letter
names and search for the entry listed as ``Two letter names for
indices''. A good index will have both entries and will help both
readers.@refill
Like typesetting, the construction of an index is a highly skilled,
professional art, the subtleties of which are not appreciated until you
need to do it yourself.@refill
@xref{Printing Indices & Menus}, for information about printing an index
at the end of a book or creating an index menu in an Info file.@refill
@node Predefined Indices, Indexing Commands, Index Entries, Indices
@comment node-name, next, previous, up
@section Predefined Indices
Texinfo provides six predefined indices:@refill
@itemize @bullet
@item
A @dfn{concept index} listing concepts that are discussed.@refill
@item
A @dfn{function index} listing functions (such as entry points of
libraries).@refill
@item
A @dfn{variables index} listing variables (such as global variables
of libraries).@refill
@item
A @dfn{keystroke index} listing keyboard commands.@refill
@item
A @dfn{program index} listing names of programs.@refill
@item
A @dfn{data type index} listing data types (such as structures defined in
header files).@refill
@end itemize
@noindent
Not every manual needs all of these, and most manuals use two or three
of them. This manual has two indices: a
concept index and an @@-command index (that is actually the function
index but is called a command index in the chapter heading). Two or
more indices can be combined into one using the @code{@@synindex} or
@code{@@syncodeindex} commands. @xref{Combining Indices}.@refill
@node Indexing Commands, Combining Indices, Predefined Indices, Indices
@comment node-name, next, previous, up
@section Defining the Entries of an Index
@cindex Defining indexing entries
@cindex Index entries
@cindex Entries for an index
@cindex Specifying index entries
@cindex Creating index entries
The data to make an index come from many individual indexing commands
scattered throughout the Texinfo source file. Each command says to add
one entry to a particular index; after formatting, the index will give
the current page number or node name as the reference.@refill
An index entry consists of an indexing command at the beginning of a
line followed, on the rest of the line, by the entry.@refill
For example, this section begins with the following five entries for
the concept index:@refill
@example
@@cindex Defining indexing entries
@@cindex Index entries
@@cindex Entries for an index
@@cindex Specifying index entries
@@cindex Creating index entries
@end example
Each predefined index has its own indexing command---@code{@@cindex}
for the concept index, @code{@@findex} for the function index, and so
on.@refill
@cindex Writing index entries
@cindex Index entry writing
Concept index entries consist of text. The best way to write an index
is to choose entries that are terse yet clear. If you can do this,
the index often looks better if the entries are not capitalized, but
written just as they would appear in the middle of a sentence.
(Capitalize proper names and acronyms that always call for upper case
letters.) This is the case convention we use in most GNU manuals'
indices.
If you don't see how to make an entry terse yet clear, make it longer
and clear---not terse and confusing. If many of the entries are several
words long, the index may look better if you use a different convention:
to capitalize the first word of each entry. But do not capitalize a
case-sensitive name such as a C or Lisp function name or a shell
command; that would be a spelling error.
Whichever case convention you use, please use it consistently!
Entries in indices other than the concept index are symbol names in
programming languages, or program names; these names are usually
case-sensitive, so use upper and lower case as required for them.
By default, entries for a concept index are printed in a small roman
font and entries for the other indices are printed in a small
@code{@@code} font. You may change the way part of an entry is
printed with the usual Texinfo commands, such as @code{@@file} for
file names and @code{@@emph} for emphasis (@pxref{Marking
Text}).@refill
@cindex Index font types
@cindex Predefined indexing commands
@cindex Indexing commands, predefined
The six indexing commands for predefined indices are:
@table @code
@item @@cindex @var{concept}
@findex cindex
Make an entry in the concept index for @var{concept}.@refill
@item @@findex @var{function}
@findex findex
Make an entry in the function index for @var{function}.@refill
@item @@vindex @var{variable}
@findex vindex
Make an entry in the variable index for @var{variable}.@refill
@item @@kindex @var{keystroke}
@findex kindex
Make an entry in the key index for @var{keystroke}.@refill
@item @@pindex @var{program}
@findex pindex
Make an entry in the program index for @var{program}.@refill
@item @@tindex @var{data type}
@findex tindex
Make an entry in the data type index for @var{data type}.@refill
@end table
@quotation
@strong{Caution:} Do not use a colon in an index entry. In Info, a
colon separates the menu entry name from the node name, so a colon in
the entry itself confuses Info. @xref{Menu Parts, , The Parts of a
Menu}, for more information about the structure of a menu entry.
@end quotation
You are not actually required to use the predefined indices for their
canonical purposes. For example, suppose you wish to index some C
preprocessor macros. You could put them in the function index along
with actual functions, just by writing @code{@@findex} commands for
them; then, when you print the ``Function Index'' as an unnumbered
chapter, you could give it the title `Function and Macro Index' and
all will be consistent for the reader. Or you could put the macros in
with the data types by writing @code{@@tindex} commands for them, and
give that index a suitable title so the reader will understand.
(@xref{Printing Indices & Menus}.)@refill
@node Combining Indices, New Indices, Indexing Commands, Indices
@comment node-name, next, previous, up
@section Combining Indices
@cindex Combining indices
@cindex Indices, combining them
Sometimes you will want to combine two disparate indices such as functions
and concepts, perhaps because you have few enough of one of them that
a separate index for them would look silly.@refill
You could put functions into the concept index by writing
@code{@@cindex} commands for them instead of @code{@@findex} commands,
and produce a consistent manual by printing the concept index with the
title `Function and Concept Index' and not printing the `Function
Index' at all; but this is not a robust procedure. It works only if
your document is never included as part of another
document that is designed to have a separate function index; if your
document were to be included with such a document, the functions from
your document and those from the other would not end up together.
Also, to make your function names appear in the right font in the
concept index, you would need to enclose every one of them between
the braces of @code{@@code}.@refill
@menu
* syncodeindex:: How to merge two indices, using @code{@@code}
font for the merged-from index.
* synindex:: How to merge two indices, using the
default font of the merged-to index.
@end menu
@node syncodeindex, synindex, Combining Indices, Combining Indices
@subsection @code{@@syncodeindex}
@findex syncodeindex
When you want to combine functions and concepts into one index, you
should index the functions with @code{@@findex} and index the concepts
with @code{@@cindex}, and use the @code{@@syncodeindex} command to
redirect the function index entries into the concept index.@refill
@findex syncodeindex
The @code{@@syncodeindex} command takes two arguments; they are the name
of the index to redirect, and the name of the index to redirect it to.
The template looks like this:@refill
@example
@@syncodeindex @var{from} @var{to}
@end example
@cindex Predefined names for indices
@cindex Two letter names for indices
@cindex Indices, two letter names
@cindex Names for indices
For this purpose, the indices are given two-letter names:@refill
@table @samp
@item cp
concept index
@item fn
function index
@item vr
variable index
@item ky
key index
@item pg
program index
@item tp
data type index
@end table
Write an @code{@@syncodeindex} command before or shortly after the
end-of-header line at the beginning of a Texinfo file. For example,
to merge a function index with a concept index, write the
following:@refill
@example
@@syncodeindex fn cp
@end example
@noindent
This will cause all entries designated for the function index to merge
in with the concept index instead.@refill
To merge both a variables index and a function index into a concept
index, write the following:@refill
@example
@group
@@syncodeindex vr cp
@@syncodeindex fn cp
@end group
@end example
@cindex Fonts for indices
The @code{@@syncodeindex} command puts all the entries from the `from'
index (the redirected index) into the @code{@@code} font, overriding
whatever default font is used by the index to which the entries are
now directed. This way, if you direct function names from a function
index into a concept index, all the function names are printed in the
@code{@@code} font as you would expect.@refill
@node synindex, , syncodeindex, Combining Indices
@subsection @code{@@synindex}
@findex synindex
The @code{@@synindex} command is nearly the same as the
@code{@@syncodeindex} command, except that it does not put the
`from' index entries into the @code{@@code} font; rather it puts
them in the roman font. Thus, you use @code{@@synindex} when you
merge a concept index into a function index.@refill
@xref{Printing Indices & Menus}, for information about printing an index
at the end of a book or creating an index menu in an Info file.@refill
@node New Indices, , Combining Indices, Indices
@section Defining New Indices
@cindex Defining new indices
@cindex Indices, defining new
@cindex New index defining
@findex defindex
@findex defcodeindex
In addition to the predefined indices, you may use the
@code{@@defindex} and @code{@@defcodeindex} commands to define new
indices. These commands create new indexing @@-commands with which
you mark index entries. The @code{@@defindex }command is used like
this:@refill
@example
@@defindex @var{name}
@end example
The name of an index should be a two letter word, such as @samp{au}.
For example:@refill
@example
@@defindex au
@end example
This defines a new index, called the @samp{au} index. At the same
time, it creates a new indexing command, @code{@@auindex}, that you
can use to make index entries. Use the new indexing command just as
you would use a predefined indexing command.@refill
For example, here is a section heading followed by a concept index
entry and two @samp{au} index entries.@refill
@example
@@section Cognitive Semantics
@@cindex kinesthetic image schemas
@@auindex Johnson, Mark
@@auindex Lakoff, George
@end example
@noindent
(Evidently, @samp{au} serves here as an abbreviation for ``author''.)
Texinfo constructs the new indexing command by concatenating the name
of the index with @samp{index}; thus, defining an @samp{au} index
leads to the automatic creation of an @code{@@auindex} command.@refill
Use the @code{@@printindex} command to print the index, as you do with
the predefined indices. For example:@refill
@example
@group
@@node Author Index, Subject Index, , Top
@@unnumbered Author Index
@@printindex au
@end group
@end example
The @code{@@defcodeindex} is like the @code{@@defindex} command, except
that, in the printed output, it prints entries in an @code{@@code} font
instead of a roman font. Thus, it parallels the @code{@@findex} command
rather than the @code{@@cindex} command.@refill
You should define new indices within or right after the end-of-header
line of a Texinfo file, before any @code{@@synindex} or
@code{@@syncodeindex} commands (@pxref{Header}).@refill
@node Insertions
@chapter Special Insertions
@cindex Inserting special characters and symbols
@cindex Special insertions
Texinfo provides several commands for inserting characters that have
special meaning in Texinfo, such as braces, and for other graphic
elements that do not correspond to simple characters you can type.
@iftex
These are:
@itemize @bullet
@item Braces and @samp{@@}.
@item Whitespace within and around a sentence.
@item Accents.
@item Dots and bullets.
@item The @TeX{} logo and the copyright symbol.
@item The pounds currency symbol.
@item The minus sign.
@item Mathematical expressions.
@item Glyphs for evaluation, macros, errors, etc.
@item Footnotes.
@item Images.
@end itemize
@end iftex
@menu
* Braces Atsigns:: How to insert braces, @samp{@@}.
* Inserting Space:: How to insert the right amount of space
within a sentence.
* Inserting Accents:: How to insert accents and special characters.
* Dots Bullets:: How to insert dots and bullets.
* TeX and copyright:: How to insert the @TeX{} logo
and the copyright symbol.
* pounds:: How to insert the pounds currency symbol.
* minus:: How to insert a minus sign.
* math:: How to format a mathematical expression.
* Glyphs:: How to indicate results of evaluation,
expansion of macros, errors, etc.
* Footnotes:: How to include footnotes.
* Images:: How to include graphics.
@end menu
@node Braces Atsigns, Inserting Space, Insertions, Insertions
@section Inserting @@ and Braces
@cindex Inserting @@, braces
@cindex Braces, inserting
@cindex Special characters, commands to insert
@cindex Commands to insert special characters
@samp{@@} and curly braces are special characters in Texinfo. To insert
these characters so they appear in text, you must put an @samp{@@} in
front of these characters to prevent Texinfo from misinterpreting
them.
Do not put braces after any of these commands; they are not
necessary.
@menu
* Inserting An Atsign:: How to insert @samp{@@}.
* Inserting Braces:: How to insert @samp{@{} and @samp{@}}.
@end menu
@node Inserting An Atsign, Inserting Braces, Braces Atsigns, Braces Atsigns
@subsection Inserting @samp{@@} with @@@@
@findex @@ @r{(single @samp{@@})}
@code{@@@@} stands for a single @samp{@@} in either printed or Info
output.
Do not put braces after an @code{@@@@} command.
@node Inserting Braces
@subsection Inserting @samp{@{} and @samp{@}}with @@@{ and @@@}
@findex @{ @r{(single @samp{@{})}
@findex @} @r{(single @samp{@}})}
@code{@@@{} stands for a single @samp{@{} in either printed or Info
output.
@code{@@@}} stands for a single @samp{@}} in either printed or Info
output.
Do not put braces after either an @code{@@@{} or an @code{@@@}}
command.
@node Inserting Space
@section Inserting Space
@cindex Inserting space
@cindex Spacing, inserting
The following sections describe commands that control spacing of various
kinds within and after sentences.
@menu
* Not Ending a Sentence:: Sometimes a . doesn't end a sentence.
* Ending a Sentence:: Sometimes it does.
* Multiple Spaces:: Inserting multiple spaces.
* dmn:: How to format a dimension.
@end menu
@node Not Ending a Sentence
@subsection Not Ending a Sentence
@cindex Not ending a sentence
@cindex Sentence non-ending punctuation
@cindex Periods, inserting
Depending on whether a period or exclamation point or question mark is
inside or at the end of a sentence, less or more space is inserted after
a period in a typeset manual. Since it is not always possible
to determine when a period ends a sentence and when it is used
in an abbreviation, special commands are needed in some circumstances.
Usually, Texinfo can guess how to handle periods, so you do not need to
use the special commands; you just enter a period as you would if you
were using a typewriter, which means you put two spaces after the
period, question mark, or exclamation mark that ends a sentence.
@findex : @r{(suppress widening)}
Use the @code{@@:}@: command after a period, question mark,
exclamation mark, or colon that should not be followed by extra space.
For example, use @code{@@:}@: after periods that end abbreviations
which are not at the ends of sentences.
For example,
@example
The s.o.p.@@: has three parts @dots{}
The s.o.p. has three parts @dots{}
@end example
@noindent
@ifinfo
produces
@end ifinfo
@iftex
produces the following. If you look carefully at this printed output,
you will see a little more whitespace after @samp{s.o.p.} in the second
line.@refill
@end iftex
@quotation
The s.o.p.@: has three parts @dots{}@*
The s.o.p. has three parts @dots{}
@end quotation
@noindent
(Incidentally, @samp{s.o.p.} is an abbreviation for ``Standard Operating
Procedure''.)
@code{@@:} has no effect on the Info output. Do not put braces after
@code{@@:}.
@node Ending a Sentence, Multiple Spaces, Not Ending a Sentence, Inserting Space
@subsection Ending a Sentence
@cindex Ending a Sentence
@cindex Sentence ending punctuation
@findex . @r{(end of sentence)}
@findex ! @r{(end of sentence)}
@findex ? @r{(end of sentence)}
Use @code{@@.}@: instead of a period, @code{@@!}@: instead of an
exclamation point, and @code{@@?}@: instead of a question mark at the end
of a sentence that ends with a single capital letter. Otherwise, @TeX{}
will think the letter is an abbreviation and will not insert the correct
end-of-sentence spacing. Here is an example:
@example
Give it to M.I.B. and to M.E.W@@. Also, give it to R.J.C@@.
Give it to M.I.B. and to M.E.W. Also, give it to R.J.C.
@end example
@noindent
@ifinfo
produces
@end ifinfo
@iftex
produces the following. If you look carefully at this printed output,
you will see a little more whitespace after the @samp{W} in the first
line.
@end iftex
@quotation
Give it to M.I.B. and to M.E.W@. Also, give it to R.J.C@.@*
Give it to M.I.B. and to M.E.W. Also, give it to R.J.C.
@end quotation
In the Info file output, @code{@@.}@: is equivalent to a simple
@samp{.}; likewise for @code{@@!}@: and @code{@@?}@:.
The meanings of @code{@@:} and @code{@@.}@: in Texinfo are designed to
work well with the Emacs sentence motion commands (@pxref{Sentences,,,
emacs, The GNU Emacs Manual}).
Do not put braces after any of these commands.
@node Multiple Spaces, dmn, Ending a Sentence, Inserting Space
@subsection Multiple Spaces
@cindex Multiple spaces
@cindex Whitespace, inserting
@cindex Space, inserting horizontal
@findex (space)
@findex (tab)
@findex (newline)
Ordinarily, @TeX{} collapses multiple whitespace characters (space, tab,
and newline) into a single space. Info output, on the other hand,
preserves whitespace as you type it, except for changing a newline into
a space; this is why it is important to put two spaces at the end of
sentences in Texinfo documents.
Occasionally, you may want to actually insert several consecutive
spaces, either for purposes of example (what your program does with
multiple spaces as input), or merely for purposes of appearance in
headings or lists. Texinfo supports three commands:
@code{@@@kbd{SPACE}}, @code{@@@kbd{TAB}}, and @code{@@@kbd{NL}}, all of
which insert a single space into the output. (Here,
@code{@@@kbd{SPACE}} represents an @samp{@@} character followed by a
space, i.e., @samp{@@ }, and @kbd{TAB} and @kbd{NL} represent the tab
character and end-of-line, i.e., when @samp{@@} is the last character on
a line.)
For example,
@example
Spacey@@ @@ @@ @@
example.
@end example
@noindent produces
@example
Spacey@ @ @ @
example.
@end example
Other possible uses of @code{@@@kbd{SPACE}} have been subsumed by
@code{@@multitable} (@pxref{Multi-column Tables}).
Do not follow any of these commands with braces.
@node dmn
@subsection @code{@@dmn}@{@var{dimension}@}: Format a Dimension
@cindex Thin space between number, dimension
@cindex Dimension formatting
@cindex Format a dimension
@findex dmn
At times, you may want to write @samp{12@dmn{pt}} or
@samp{8.5@dmn{in}} with little or no space between the number and the
abbreviation for the dimension. You can use the @code{@@dmn} command
to do this. On seeing the command, @TeX{} inserts just enough space
for proper typesetting; the Info formatting commands insert no space
at all, since the Info file does not require it.
To use the @code{@@dmn} command, write the number and then follow it
immediately, with no intervening space, by @code{@@dmn}, and then by
the dimension within braces. For example,
@example
A4 paper is 8.27@@dmn@{in@} wide.
@end example
@noindent
produces
@quotation
A4 paper is 8.27@dmn{in} wide.
@end quotation
Not everyone uses this style. Some people prefer @w{@samp{8.27 in.@@:}}
or @w{@samp{8.27 inches}} to @samp{8.27@@dmn@{in@}} in the Texinfo file.
In these cases, however, the formatters may insert a line break between
the number and the dimension, so use @code{@@w} (@pxref{w}). Also, if
you write a period after an abbreviation within a sentence, you should
write @samp{@@:} after the period to prevent @TeX{} from inserting extra
whitespace, as shown here. @xref{Not Ending a Sentence}.
@node Inserting Accents
@section Inserting Accents
@cindex Inserting accents
@cindex Accents, inserting
@cindex Floating accents, inserting
Here is a table with the commands Texinfo provides for inserting
floating accents. The commands with non-alphabetic names do not take
braces around their argument (which is taken to be the next character).
(Exception: @code{@@,} @emph{does} take braces around its argument.)
This is so as to make the source as convenient to type and read as
possible, since accented characters are very common in some languages.
@findex "
@cindex Umlaut accent
@findex '
@cindex Acute accent
@findex =
@cindex Macron accent
@findex ^
@cindex Circumflex accent
@findex `
@cindex Grave accent
@findex ~
@cindex Tilde accent
@findex ,
@cindex Cedilla accent
@findex dotaccent
@cindex Dot accent
@findex H
@cindex Hungarian umlaut accent
@findex ringaccent
@cindex Ring accent
@findex tieaccent
@cindex Tie-after accent
@findex u
@cindex Breve accent
@findex ubaraccent
@cindex Underbar accent
@findex udotaccent
@cindex Underdot accent
@findex v
@cindex Check accent
@multitable {@@questiondown@{@}} {Output} {macron/overbar accent}
@item Command @tab Output @tab What
@item @t{@@"o} @tab @"o @tab umlaut accent
@item @t{@@'o} @tab @'o @tab acute accent
@item @t{@@,@{c@}} @tab @,{c} @tab cedilla accent
@item @t{@@=o} @tab @=o @tab macron/overbar accent
@item @t{@@^o} @tab @^o @tab circumflex accent
@item @t{@@`o} @tab @`o @tab grave accent
@item @t{@@~o} @tab @~o @tab tilde accent
@item @t{@@dotaccent@{o@}} @tab @dotaccent{o} @tab overdot accent
@item @t{@@H@{o@}} @tab @H{o} @tab long Hungarian umlaut
@item @t{@@ringaccent@{o@}} @tab @ringaccent{o} @tab ring accent
@item @t{@@tieaccent@{oo@}} @tab @tieaccent{oo} @tab tie-after accent
@item @t{@@u@{o@}} @tab @u{o} @tab breve accent
@item @t{@@ubaraccent@{o@}} @tab @ubaraccent{o} @tab underbar accent
@item @t{@@udotaccent@{o@}} @tab @udotaccent{o} @tab underdot accent
@item @t{@@v@{o@}} @tab @v{o} @tab hacek or check accent
@end multitable
This table lists the Texinfo commands for inserting other characters
commonly used in languages other than English.
@findex questiondown
@cindex @questiondown{}
@findex exclamdown
@cindex @exclamdown{}
@findex aa
@cindex @aa{}
@findex AA
@cindex @AA{}
@findex ae
@cindex @ae{}
@findex AE
@cindex @AE{}
@findex dotless
@cindex @dotless{i}
@cindex @dotless{j}
@cindex Dotless i, j
@findex l
@cindex @l{}
@findex L
@cindex @L{}
@findex o
@cindex @o{}
@findex O
@cindex @O{}
@findex oe
@cindex @oe{}
@findex OE
@cindex @OE{}
@findex ss
@cindex @ss{}
@cindex Es-zet
@cindex Sharp S
@cindex German S
@multitable {x@@questiondown@{@} } {oe,OE} {es-zet or sharp S}
@item @t{@@exclamdown@{@}} @tab @exclamdown{} @tab upside-down !
@item @t{@@questiondown@{@}} @tab @questiondown{} @tab upside-down ?
@item @t{@@aa@{@},@@AA@{@}} @tab @aa{},@AA{} @tab a,A with circle
@item @t{@@ae@{@},@@AE@{@}} @tab @ae{},@AE{} @tab ae,AE ligatures
@item @t{@@dotless@{i@}} @tab @dotless{i} @tab dotless i
@item @t{@@dotless@{j@}} @tab @dotless{j} @tab dotless j
@item @t{@@l@{@},@@L@{@}} @tab @l{},@L{} @tab suppressed-L,l
@item @t{@@o@{@},@@O@{@}} @tab @o{},@O{} @tab O,o with slash
@item @t{@@oe@{@},@@OE@{@}} @tab @oe{},@OE{} @tab oe,OE ligatures
@item @t{@@ss@{@}} @tab @ss{} @tab es-zet or sharp S
@end multitable
@node Dots Bullets
@section Inserting Ellipsis and Bullets
@cindex Dots, inserting
@cindex Bullets, inserting
@cindex Ellipsis, inserting
@cindex Inserting ellipsis
@cindex Inserting dots
@cindex Special typesetting commands
@cindex Typesetting commands for dots, etc.
An @dfn{ellipsis} (a line of dots) is not typeset as a string of
periods, so a special command is used for ellipsis in Texinfo. The
@code{@@bullet} command is special, too. Each of these commands is
followed by a pair of braces, @samp{@{@}}, without any whitespace
between the name of the command and the braces. (You need to use braces
with these commands because you can use them next to other text; without
the braces, the formatters would be confused. @xref{Command Syntax, ,
@@-Command Syntax}, for further information.)@refill
@menu
* dots:: How to insert dots @dots{}
* bullet:: How to insert a bullet.
@end menu
@node dots
@subsection @code{@@dots}@{@} (@dots{}) and @code{@@enddots}@{@} (@enddots{})
@findex dots
@findex enddots
@cindex Inserting dots
@cindex Dots, inserting
Use the @code{@@dots@{@}} command to generate an ellipsis, which is
three dots in a row, appropriately spaced, like this: `@dots{}'. Do
not simply write three periods in the input file; that would work for
the Info file output, but would produce the wrong amount of space
between the periods in the printed manual.
Similarly, the @code{@@enddots@{@}} command generates an
end-of-sentence ellipsis (four dots) @enddots{}
@iftex
Here is an ellipsis: @dots{}
Here are three periods in a row: ...
In printed output, the three periods in a row are closer together than
the dots in the ellipsis.
@end iftex
@node bullet
@subsection @code{@@bullet}@{@} (@bullet{})
@findex bullet
Use the @code{@@bullet@{@}} command to generate a large round dot, or
the closest possible thing to one. In Info, an asterisk is used.@refill
Here is a bullet: @bullet{}
When you use @code{@@bullet} in @code{@@itemize}, you do not need to
type the braces, because @code{@@itemize} supplies them.
(@xref{itemize, , @code{@@itemize}}.)@refill
@node TeX and copyright, pounds, Dots Bullets, Insertions
@section Inserting @TeX{} and the Copyright Symbol
The logo `@TeX{}' is typeset in a special fashion and it needs an
@@-command. The copyright symbol, `@copyright{}', is also special.
Each of these commands is followed by a pair of braces, @samp{@{@}},
without any whitespace between the name of the command and the
braces.@refill
@menu
* tex:: How to insert the @TeX{} logo.
* copyright symbol:: How to use @code{@@copyright}@{@}.
@end menu
@node tex
@subsection @code{@@TeX}@{@} (@TeX{})
@findex tex (command)
Use the @code{@@TeX@{@}} command to generate `@TeX{}'. In a printed
manual, this is a special logo that is different from three ordinary
letters. In Info, it just looks like @samp{TeX}. The
@code{@@TeX@{@}} command is unique among Texinfo commands in that the
@samp{T} and the @samp{X} are in upper case.@refill
@node copyright symbol
@subsection @code{@@copyright}@{@} (@copyright{})
@findex copyright
Use the @code{@@copyright@{@}} command to generate `@copyright{}'. In
a printed manual, this is a @samp{c} inside a circle, and in Info,
this is @samp{(C)}.@refill
@node pounds, minus, TeX and copyright, Insertions
@section @code{@@pounds}@{@} (@pounds{}): Pounds Sterling
@findex pounds
Use the @code{@@pounds@{@}} command to generate `@pounds{}'. In a
printed manual, this is the symbol for the currency pounds sterling.
In Info, it is a @samp{#}. Other currency symbols are unfortunately not
available.
@node minus, math, pounds, Insertions
@section @code{@@minus}@{@} (@minus{}): Inserting a Minus Sign
@findex minus
Use the @code{@@minus@{@}} command to generate a minus sign. In a
fixed-width font, this is a single hyphen, but in a proportional font,
the symbol is the customary length for a minus sign---a little longer
than a hyphen, shorter than an em-dash:
@display
@samp{@minus{}} is a minus sign generated with @samp{@@minus@{@}},
`-' is a hyphen generated with the character @samp{-},
`---' is an em-dash for text.
@end display
@noindent
In the fixed-width font used by Info, @code{@@minus@{@}} is the same
as a hyphen.
You should not use @code{@@minus@{@}} inside @code{@@code} or
@code{@@example} because the width distinction is not made in the
fixed-width font they use.
When you use @code{@@minus} to specify the mark beginning each entry in
an itemized list, you do not need to type the braces
(@pxref{itemize, , @code{@@itemize}}.)
@node math, Glyphs, minus, Insertions
@section @code{@@math}: Inserting Mathematical Expressions
@findex math
@cindex Mathematical expressions
You can write a short mathematical expression with the @code{@@math}
command. Write the mathematical expression between braces, like this:
@example
@@math@{(a + b)(a + b) = a^2 + 2ab + b^2@}
@end example
@iftex
@need 1000
@noindent
This produces the following in @TeX{}:
@display
@math{(a + b)(a + b) = a^2 + 2ab + b^2}
@end display
@noindent
and the following in Info:
@end iftex
@ifinfo
@noindent
This produces the following in Info:
@end ifinfo
@example
(a + b)(a + b) = a^2 + 2ab + b^2
@end example
Thus, the @code{@@math} command has no effect on the Info output.
For complex mathematical expressions, you can also use @TeX{} directly
(@pxref{Raw Formatter Commands}). When you use @TeX{} directly,
remember to write the mathematical expression between one or two
@samp{$} (dollar-signs) as appropriate.
@node Glyphs
@section Glyphs for Examples
@cindex Glyphs
In Texinfo, code is often illustrated in examples that are delimited
by @code{@@example} and @code{@@end example}, or by @code{@@lisp} and
@code{@@end lisp}. In such examples, you can indicate the results of
evaluation or an expansion using @samp{@result{}} or
@samp{@expansion{}}. Likewise, there are commands to insert glyphs
to indicate
printed output, error messages, equivalence of expressions, and the
location of point.@refill
The glyph-insertion commands do not need to be used within an example, but
most often they are. Every glyph-insertion command is followed by a pair of
left- and right-hand braces.@refill
@menu
* Glyphs Summary::
* result:: How to show the result of expression.
* expansion:: How to indicate an expansion.
* Print Glyph:: How to indicate printed output.
* Error Glyph:: How to indicate an error message.
* Equivalence:: How to indicate equivalence.
* Point Glyph:: How to indicate the location of point.
@end menu
@node Glyphs Summary, result, Glyphs, Glyphs
@ifinfo
@subheading Glyphs Summary
Here are the different glyph commands:@refill
@end ifinfo
@table @asis
@item @result{}
@code{@@result@{@}} points to the result of an expression.@refill
@item @expansion{}
@code{@@expansion@{@}} shows the results of a macro expansion.@refill
@item @print{}
@code{@@print@{@}} indicates printed output.@refill
@item @error{}
@code{@@error@{@}} indicates that the following text is an error
message.@refill
@item @equiv{}
@code{@@equiv@{@}} indicates the exact equivalence of two forms.@refill
@item @point{}
@code{@@point@{@}} shows the location of point.@refill
@end table
@menu
* result::
* expansion::
* Print Glyph::
* Error Glyph::
* Equivalence::
* Point Glyph::
@end menu
@node result, expansion, Glyphs Summary, Glyphs
@subsection @code{@@result@{@}} (@result{}): Indicating Evaluation
@cindex Result of an expression
@cindex Indicating evaluation
@cindex Evaluation glyph
@cindex Value of an expression, indicating
@findex result
Use the @code{@@result@{@}} command to indicate the result of
evaluating an expression.@refill
@iftex
The @code{@@result@{@}} command is displayed as @samp{=>} in Info and
as @samp{@result{}} in the printed output.
@end iftex
@ifinfo
The @code{@@result@{@}} command is displayed as @samp{@result{}} in Info
and as a double stemmed arrow in the printed output.@refill
@end ifinfo
Thus, the following,
@lisp
(cdr '(1 2 3))
@result{} (2 3)
@end lisp
@noindent
may be read as ``@code{(cdr '(1 2 3))} evaluates to @code{(2 3)}''.
@node expansion, Print Glyph, result, Glyphs
@subsection @code{@@expansion@{@}} (@expansion{}): Indicating an Expansion
@cindex Expansion, indicating it
@findex expansion
When an expression is a macro call, it expands into a new expression.
You can indicate the result of the expansion with the
@code{@@expansion@{@}} command.@refill
@iftex
The @code{@@expansion@{@}} command is displayed as @samp{==>} in Info and
as @samp{@expansion{}} in the printed output.
@end iftex
@ifinfo
The @code{@@expansion@{@}} command is displayed as @samp{@expansion{}}
in Info and as a long arrow with a flat base in the printed output.@refill
@end ifinfo
@need 700
For example, the following
@example
@group
@@lisp
(third '(a b c))
@@expansion@{@} (car (cdr (cdr '(a b c))))
@@result@{@} c
@@end lisp
@end group
@end example
@noindent
produces
@lisp
@group
(third '(a b c))
@expansion{} (car (cdr (cdr '(a b c))))
@result{} c
@end group
@end lisp
@noindent
which may be read as:
@quotation
@code{(third '(a b c))} expands to @code{(car (cdr (cdr '(a b c))))};
the result of evaluating the expression is @code{c}.
@end quotation
@noindent
Often, as in this case, an example looks better if the
@code{@@expansion@{@}} and @code{@@result@{@}} commands are indented
five spaces.@refill
@node Print Glyph, Error Glyph, expansion, Glyphs
@subsection @code{@@print@{@}} (@print{}): Indicating Printed Output
@cindex Printed output, indicating it
@findex print
Sometimes an expression will print output during its execution. You
can indicate the printed output with the @code{@@print@{@}} command.@refill
@iftex
The @code{@@print@{@}} command is displayed as @samp{-|} in Info and
as @samp{@print{}} in the printed output.
@end iftex
@ifinfo
The @code{@@print@{@}} command is displayed as @samp{@print{}} in Info
and similarly, as a horizontal dash butting against a vertical bar, in
the printed output.@refill
@end ifinfo
In the following example, the printed text is indicated with
@samp{@print{}}, and the value of the expression follows on the
last line.@refill
@lisp
@group
(progn (print 'foo) (print 'bar))
@print{} foo
@print{} bar
@result{} bar
@end group
@end lisp
@noindent
In a Texinfo source file, this example is written as follows:
@lisp
@group
@@lisp
(progn (print 'foo) (print 'bar))
@@print@{@} foo
@@print@{@} bar
@@result@{@} bar
@@end lisp
@end group
@end lisp
@node Error Glyph, Equivalence, Print Glyph, Glyphs
@subsection @code{@@error@{@}} (@error{}): Indicating an Error Message
@cindex Error message, indicating it
@findex error
A piece of code may cause an error when you evaluate it. You can
designate the error message with the @code{@@error@{@}} command.@refill
@iftex
The @code{@@error@{@}} command is displayed as @samp{error-->} in Info
and as @samp{@error{}} in the printed output.
@end iftex
@ifinfo
The @code{@@error@{@}} command is displayed as @samp{@error{}} in Info
and as the word `error' in a box in the printed output.@refill
@end ifinfo
@need 700
Thus,
@example
@@lisp
(+ 23 'x)
@@error@{@} Wrong type argument: integer-or-marker-p, x
@@end lisp
@end example
@noindent
produces
@lisp
(+ 23 'x)
@error{} Wrong type argument: integer-or-marker-p, x
@end lisp
@noindent
This indicates that the following error message is printed
when you evaluate the expression:
@lisp
Wrong type argument: integer-or-marker-p, x
@end lisp
@samp{@error{}} itself is not part of the error message.
@node Equivalence, Point Glyph, Error Glyph, Glyphs
@subsection @code{@@equiv@{@}} (@equiv{}): Indicating Equivalence
@cindex Equivalence, indicating it
@findex equiv
Sometimes two expressions produce identical results. You can indicate the
exact equivalence of two forms with the @code{@@equiv@{@}} command.@refill
@iftex
The @code{@@equiv@{@}} command is displayed as @samp{==} in Info and
as @samp{@equiv{}} in the printed output.
@end iftex
@ifinfo
The @code{@@equiv@{@}} command is displayed as @samp{@equiv{}} in Info
and as a three parallel horizontal lines in the printed output.@refill
@end ifinfo
Thus,
@example
@@lisp
(make-sparse-keymap) @@equiv@{@} (list 'keymap)
@@end lisp
@end example
@noindent
produces
@lisp
(make-sparse-keymap) @equiv{} (list 'keymap)
@end lisp
@noindent
This indicates that evaluating @code{(make-sparse-keymap)} produces
identical results to evaluating @code{(list 'keymap)}.
@node Point Glyph
@subsection @code{@@point@{@}} (@point{}): Indicating Point in a Buffer
@cindex Point, indicating in a buffer
@findex point
Sometimes you need to show an example of text in an Emacs buffer. In
such examples, the convention is to include the entire contents of the
buffer in question between two lines of dashes containing the buffer
name.@refill
You can use the @samp{@@point@{@}} command to show the location of point
in the text in the buffer. (The symbol for point, of course, is not
part of the text in the buffer; it indicates the place @emph{between}
two characters where point is located.)@refill
@iftex
The @code{@@point@{@}} command is displayed as @samp{-!-} in Info and
as @samp{@point{}} in the printed output.
@end iftex
@ifinfo
The @code{@@point@{@}} command is displayed as @samp{@point{}} in Info
and as a small five pointed star in the printed output.@refill
@end ifinfo
The following example shows the contents of buffer @file{foo} before
and after evaluating a Lisp command to insert the word @code{changed}.@refill
@example
@group
---------- Buffer: foo ----------
This is the @point{}contents of foo.
---------- Buffer: foo ----------
@end group
@end example
@example
@group
(insert "changed ")
@result{} nil
---------- Buffer: foo ----------
This is the changed @point{}contents of foo.
---------- Buffer: foo ----------
@end group
@end example
In a Texinfo source file, the example is written like this:@refill
@example
@@example
---------- Buffer: foo ----------
This is the @@point@{@}contents of foo.
---------- Buffer: foo ----------
(insert "changed ")
@@result@{@} nil
---------- Buffer: foo ----------
This is the changed @@point@{@}contents of foo.
---------- Buffer: foo ----------
@@end example
@end example
@node Footnotes
@section Footnotes
@cindex Footnotes
@findex footnote
A @dfn{footnote} is for a reference that documents or elucidates the
primary text.@footnote{A footnote should complement or expand upon
the primary text, but a reader should not need to read a footnote to
understand the primary text. For a thorough discussion of footnotes,
see @cite{The Chicago Manual of Style}, which is published by the
University of Chicago Press.}@refill
@menu
* Footnote Commands:: How to write a footnote in Texinfo.
* Footnote Styles:: Controlling how footnotes appear in Info.
@end menu
@node Footnote Commands
@subsection Footnote Commands
In Texinfo, footnotes are created with the @code{@@footnote} command.
This command is followed immediately by a left brace, then by the text
of the footnote, and then by a terminating right brace. Footnotes may
be of any length (they will be broken across pages if necessary), but
are usually short. The template is:
@example
ordinary text@@footnote@{@var{text of footnote}@}
@end example
As shown here, the @code{@@footnote} command should come right after the
text being footnoted, with no intervening space; otherwise, the footnote
marker might end up starting a line.
For example, this clause is followed by a sample footnote@footnote{Here
is the sample footnote.}; in the Texinfo source, it looks like
this:@refill
@example
@dots{}a sample footnote@@footnote@{Here is the sample
footnote.@}; in the Texinfo source@dots{}
@end example
In a printed manual or book, the reference mark for a footnote is a
small, superscripted number; the text of the footnote appears at the
bottom of the page, below a horizontal line.@refill
In Info, the reference mark for a footnote is a pair of parentheses
with the footnote number between them, like this: @samp{(1)}. The
reference mark is followed by a cross-reference link to the footnote's
text.
In the HTML output, footnote references are marked with a small,
superscripted number which is rendered as a hypertext link to the
footnote text.
By the way, footnotes in the argument of an @code{@@item} command for a
@code{@@table} must be on the same line as the @code{@@item}
(as usual). @xref{Two-column Tables}.
@node Footnote Styles
@subsection Footnote Styles
Info has two footnote styles, which determine where the text of the
footnote is located:@refill
@itemize @bullet
@cindex @samp{@r{End}} node footnote style
@item
In the `End' node style, all the footnotes for a single node
are placed at the end of that node. The footnotes are separated from
the rest of the node by a line of dashes with the word
@samp{Footnotes} within it. Each footnote begins with an
@samp{(@var{n})} reference mark.@refill
@need 700
@noindent
Here is an example of a single footnote in the end of node style:@refill
@example
@group
--------- Footnotes ---------
(1) Here is a sample footnote.
@end group
@end example
@cindex @samp{@r{Separate}} footnote style
@item
In the `Separate' node style, all the footnotes for a single
node are placed in an automatically constructed node of
their own. In this style, a ``footnote reference'' follows
each @samp{(@var{n})} reference mark in the body of the
node. The footnote reference is actually a cross reference
which you use to reach the footnote node.@refill
The name of the node with the footnotes is constructed
by appending @w{@samp{-Footnotes}} to the name of the node
that contains the footnotes. (Consequently, the footnotes'
node for the @file{Footnotes} node is
@w{@file{Footnotes-Footnotes}}!) The footnotes' node has an
`Up' node pointer that leads back to its parent node.@refill
@noindent
Here is how the first footnote in this manual looks after being
formatted for Info in the separate node style:@refill
@smallexample
@group
File: texinfo.info Node: Overview-Footnotes, Up: Overview
(1) The first syllable of "Texinfo" is pronounced like "speck", not
"hex". @dots{}
@end group
@end smallexample
@end itemize
A Texinfo file may be formatted into an Info file with either footnote
style.@refill
@findex footnotestyle
Use the @code{@@footnotestyle} command to specify an Info file's
footnote style. Write this command at the beginning of a line followed
by an argument, either @samp{end} for the end node style or
@samp{separate} for the separate node style.
@need 700
For example,
@example
@@footnotestyle end
@end example
@noindent
or
@example
@@footnotestyle separate
@end example
Write an @code{@@footnotestyle} command before or shortly after the
end-of-header line at the beginning of a Texinfo file. (If you
include the @code{@@footnotestyle} command between the start-of-header
and end-of-header lines, the region formatting commands will format
footnotes as specified.)@refill
If you do not specify a footnote style, the formatting commands use
their default style. Currently, @code{texinfo-format-buffer} and
@code{texinfo-format-region} use the `separate' style and
@code{makeinfo} uses the `end' style.@refill
@c !!! note: makeinfo's --footnote-style option overrides footnotestyle
@ignore
If you use @code{makeinfo} to create the Info file, the
@samp{--footnote-style} option determines which style is used,
@samp{end} for the end of node style or @samp{separate} for the
separate node style. Thus, to format the Texinfo manual in the
separate node style, you would use the following shell command:@refill
@example
makeinfo --footnote-style=separate texinfo.texi
@end example
@noindent
To format the Texinfo manual in the end of node style, you would
type:@refill
@example
makeinfo --footnote-style=end texinfo.texi
@end example
@end ignore
@ignore
If you use @code{texinfo-format-buffer} or
@code{texinfo-format-region} to create the Info file, the value of the
@code{texinfo-footnote-style} variable controls the footnote style.
It can be either @samp{"separate"} for the separate node style or
@samp{"end"} for the end of node style. (You can change the value of
this variable with the @kbd{M-x edit-options} command (@pxref{Edit
Options, , Editing Variable Values, emacs, The GNU Emacs Manual}), or
with the @kbd{M-x set-variable} command (@pxref{Examining, , Examining
and Setting Variables, emacs, The GNU Emacs Manual}).@refill
The @code{texinfo-footnote-style} variable also controls the style if
you use the @kbd{M-x makeinfo-region} or @kbd{M-x makeinfo-buffer}
command in Emacs.@refill
@end ignore
@ifinfo
This chapter contains two footnotes.@refill
@end ifinfo
@c this should be described with figures when we have them
@c perhaps in the quotation/example chapter.
@node Images
@section Inserting Images
@cindex Images, inserting
@cindex Pictures, inserting
@findex image
You can insert an image given in an external file with the
@code{@@image} command:
@example
@@image@{@var{filename}, @r{[}@var{width}@r{]}, @r{[}@var{height}@r{]}@}
@end example
@cindex Formats for images
@cindex Image formats
The @var{filename} argument is mandatory, and must not have an
extension, because the different processors support different formats:
@itemize @bullet
@item
@TeX{} reads the file @file{@var{filename}.eps} (Encapsulated PostScript
format).
@item
@pindex pdftex@r{, and images}
PDF@TeX{} reads @file{@var{filename}.pdf} (Adobe's Portable Document Format).
@item
@code{makeinfo} uses @file{@var{filename}.txt} verbatim for
Info output (more or less as if it was an @code{@@example}).
@item
@cindex GIF, unsupported due to patents
@cindex PNG image format
@cindex JPEG image format
@code{makeinfo} producing HTML output tries @file{@var{filename}.png};
if that does not exist, it tries @file{@var{filename}.jpg}. If that
does not exist either, it complains. (We cannot support GIF format due
to patents.)
@end itemize
@cindex Width of images
@cindex Height of images
@cindex Aspect ratio of images
@cindex Distorting images
The optional @var{width} and @var{height} arguments specify the size to
scale the image to (they are ignored for Info output). If neither is
specified, the image is presented in its natural size (given in the
file); if only one is specified, the other is scaled proportionately;
and if both are specified, both are respected, thus possibly distorting
the original image by changing its aspect ratio.
@cindex Dimensions and image sizes
The @var{width} and @var{height} may be specified using any valid @TeX{}
dimension, namely:
@table @asis
@item pt
@cindex Points (dimension)
point (72.27pt = 1in)
@item pc
@cindex Picas
pica (1pc = 12pt)
@item bp
@cindex Big points
big point (72bp = 1in)
@item in
@cindex Inches
inch
@item cm
@cindex Centimeters
centimeter (2.54cm = 1in)
@item mm
@cindex Millimeters
millimeter (10mm = 1cm)
@item dd
@cindex Did@^ot points
did@^ot point (1157dd = 1238pt)
@item cc
@cindex Ciceros
cicero (1cc = 12dd)
@item sp
@cindex Scaled points
scaled point (65536sp = 1pt)
@end table
@pindex ridt.eps
For example, the following will scale a file @file{ridt.eps} to one
inch vertically, with the width scaled proportionately:
@example
@@image@{ridt,,1in@}
@end example
@pindex epsf.tex
For @code{@@image} to work with @TeX{}, the file @file{epsf.tex} must be
installed somewhere that @TeX{} can find it. (The standard location is
@file{@var{texmf}/tex/generic/dvips/epsf.tex}, where @var{texmf} is a
root of your @TeX{} directory tree.) This file is included in the
Texinfo distribution and is available from
@uref{ftp://tug.org/tex/epsf.tex}.
@code{@@image} can be used within a line as well as for displayed
figures. Therefore, if you intend it to be displayed, be sure to leave
a blank line before the command, or the output will run into the
preceding text.
@node Breaks
@chapter Making and Preventing Breaks
@cindex Making line and page breaks
@cindex Preventing line and page breaks
Usually, a Texinfo file is processed both by @TeX{} and by one of the
Info formatting commands. Line, paragraph, or page breaks sometimes
occur in the `wrong' place in one or other form of output. You must
ensure that text looks right both in the printed manual and in the
Info file.@refill
For example, in a printed manual, page breaks may occur awkwardly in
the middle of an example; to prevent this, you can hold text together
using a grouping command that keeps the text from being split across
two pages. Conversely, you may want to force a page break where none
would occur normally. Fortunately, problems like these do not often
arise. When they do, use the break, break prevention, or pagination
commands.@refill
@menu
* Break Commands:: Cause and prevent splits.
* Line Breaks:: How to force a single line to use two lines.
* - and hyphenation:: How to tell TeX about hyphenation points.
* w:: How to prevent unwanted line breaks.
* sp:: How to insert blank lines.
* page:: How to force the start of a new page.
* group:: How to prevent unwanted page breaks.
* need:: Another way to prevent unwanted page breaks.
@end menu
@node Break Commands, Line Breaks, Breaks, Breaks
@ifinfo
@heading Break Commands
@end ifinfo
The break commands create or allow line and paragraph breaks:@refill
@table @code
@item @@*
Force a line break.
@item @@sp @var{n}
Skip @var{n} blank lines.@refill
@item @@-
Insert a discretionary hyphen.
@item @@hyphenation@{@var{hy-phen-a-ted words}@}
Define hyphen points in @var{hy-phen-a-ted words}.
@end table
The line-break-prevention command holds text together all on one
line:@refill
@table @code
@item @@w@{@var{text}@}
Prevent @var{text} from being split and hyphenated across two lines.@refill
@end table
@iftex
@sp 1
@end iftex
The pagination commands apply only to printed output, since Info
files do not have pages.@refill
@table @code
@item @@page
Start a new page in the printed manual.@refill
@item @@group
Hold text together that must appear on one printed page.@refill
@item @@need @var{mils}
Start a new printed page if not enough space on this one.@refill
@end table
@node Line Breaks, - and hyphenation, Break Commands, Breaks
@comment node-name, next, previous, up
@section @code{@@*}: Generate Line Breaks
@findex * @r{(force line break)}
@cindex Line breaks
@cindex Breaks in a line
The @code{@@*} command forces a line break in both the printed manual and
in Info.@refill
@need 700
For example,
@example
This line @@* is broken @@*in two places.
@end example
@noindent
produces
@example
@group
This line
is broken
in two places.
@end group
@end example
@noindent
(Note that the space after the first @code{@@*} command is faithfully
carried down to the next line.)@refill
@need 800
The @code{@@*} command is often used in a file's copyright page:@refill
@example
@group
This is edition 2.0 of the Texinfo documentation,@@*
and is for @dots{}
@end group
@end example
@noindent
In this case, the @code{@@*} command keeps @TeX{} from stretching the
line across the whole page in an ugly manner.@refill
@quotation
@strong{Please note:} Do not write braces after an @code{@@*} command;
they are not needed.@refill
Do not write an @code{@@refill} command at the end of a paragraph
containing an @code{@@*} command; it will cause the paragraph to be
refilled after the line break occurs, negating the effect of the line
break.@refill
@end quotation
@node - and hyphenation, w, Line Breaks, Breaks
@section @code{@@-} and @code{@@hyphenation}: Helping @TeX{} hyphenate
@findex -
@findex hyphenation
@cindex Hyphenation, helping @TeX{} do
@cindex Fine-tuning, and hyphenation
Although @TeX{}'s hyphenation algorithm is generally pretty good, it
does miss useful hyphenation points from time to time. (Or, far more
rarely, insert an incorrect hyphenation.) So, for documents with an
unusual vocabulary or when fine-tuning for a printed edition, you may
wish to help @TeX{} out. Texinfo supports two commands for this:
@table @code
@item @@-
Insert a discretionary hyphen, i.e., a place where @TeX{} can (but does
not have to) hyphenate. This is especially useful when you notice
an overfull hbox is due to @TeX{} missing a hyphenation (@pxref{Overfull
hboxes}). @TeX{} will not insert any hyphenation points in a word
containing @code{@@-}.
@item @@hyphenation@{@var{hy-phen-a-ted words}@}
Tell @TeX{} how to hyphenate @var{hy-phen-a-ted words}. As shown, you
put a @samp{-} at each hyphenation point. For example:
@example
@@hyphenation@{man-u-script man-u-scripts@}
@end example
@noindent @TeX{} only uses the specified hyphenation points when the
words match exactly, so give all necessary variants.
@end table
Info output is not hyphenated, so these commands have no effect there.
@node w
@section @code{@@w}@{@var{text}@}: Prevent Line Breaks
@findex w @r{(prevent line break)}
@cindex Line breaks, preventing
@cindex Hyphenation, preventing
@code{@@w@{@var{text}@}} outputs @var{text} and prohibits line breaks
within @var{text}.@refill
You can use the @code{@@w} command to prevent @TeX{} from automatically
hyphenating a long name or phrase that happens to fall near the end of a
line. For example:
@example
You can copy GNU software from @@w@{@@samp@{ftp.gnu.org@}@}.
@end example
@noindent
produces
@quotation
You can copy GNU software from @w{@samp{ftp.gnu.org}}.
@end quotation
@cindex Non-breakable space
@cindex Unbreakable space
@cindex Tied space
You can also use @code{@@w} to produce a non-breakable space:
@example
None of the formatters will break at this@@w@{ @}space.
@end example
@node sp
@section @code{@@sp} @var{n}: Insert Blank Lines
@findex sp @r{(line spacing)}
@cindex Space, inserting vertical
@cindex Blank lines
@cindex Line spacing
A line beginning with and containing only @code{@@sp @var{n}}
generates @var{n} blank lines of space in both the printed manual and
the Info file. @code{@@sp} also forces a paragraph break. For
example,
@example
@@sp 2
@end example
@noindent
generates two blank lines.
The @code{@@sp} command is most often used in the title page.@refill
@ignore
@c node br, page, sp, Breaks
@comment node-name, next, previous, up
@c section @code{@@br}: Generate Paragraph Breaks
@findex br @r{(paragraph breaks)}
@cindex Paragraph breaks
@cindex Breaks in a paragraph
The @code{@@br} command forces a paragraph break. It inserts a blank
line. You can use the command within or at the end of a line. If
used within a line, the @code{@@br@{@}} command must be followed by
left and right braces (as shown here) to mark the end of the
command.@refill
@need 700
For example,
@example
@group
This line @@br@{@}contains and is ended by paragraph breaks@@br
and is followed by another line.
@end group
@end example
@noindent
produces
@example
@group
This line
contains and is ended by paragraph breaks
and is followed by another line.
@end group
@end example
The @code{@@br} command is seldom used.
@end ignore
@node page, group, sp, Breaks
@comment node-name, next, previous, up
@section @code{@@page}: Start a New Page
@cindex Page breaks
@findex page
A line containing only @code{@@page} starts a new page in a printed
manual. The command has no effect on Info files since they are not
paginated. An @code{@@page} command is often used in the @code{@@titlepage}
section of a Texinfo file to start the copyright page.@refill
@node group, need, page, Breaks
@comment node-name, next, previous, up
@section @code{@@group}: Prevent Page Breaks
@cindex Group (hold text together vertically)
@cindex Holding text together vertically
@cindex Vertically holding text together
@findex group
The @code{@@group} command (on a line by itself) is used inside an
@code{@@example} or similar construct to begin an unsplittable vertical
group, which will appear entirely on one page in the printed output.
The group is terminated by a line containing only @code{@@end group}.
These two lines produce no output of their own, and in the Info file
output they have no effect at all.@refill
@c Once said that these environments
@c turn off vertical spacing between ``paragraphs''.
@c Also, quotation used to work, but doesn't in texinfo-2.72
Although @code{@@group} would make sense conceptually in a wide
variety of contexts, its current implementation works reliably only
within @code{@@example} and variants, and within @code{@@display},
@code{@@format}, @code{@@flushleft} and @code{@@flushright}.
@xref{Quotations and Examples}. (What all these commands have in
common is that each line of input produces a line of output.) In
other contexts, @code{@@group} can cause anomalous vertical
spacing.@refill
@need 750
This formatting requirement means that you should write:
@example
@group
@@example
@@group
@dots{}
@@end group
@@end example
@end group
@end example
@noindent
with the @code{@@group} and @code{@@end group} commands inside the
@code{@@example} and @code{@@end example} commands.
The @code{@@group} command is most often used to hold an example
together on one page. In this Texinfo manual, more than 100 examples
contain text that is enclosed between @code{@@group} and @code{@@end
group}.
If you forget to end a group, you may get strange and unfathomable
error messages when you run @TeX{}. This is because @TeX{} keeps
trying to put the rest of the Texinfo file onto the one page and does
not start to generate error messages until it has processed
considerable text. It is a good rule of thumb to look for a missing
@code{@@end group} if you get incomprehensible error messages in
@TeX{}.@refill
@node need, , group, Breaks
@comment node-name, next, previous, up
@section @code{@@need @var{mils}}: Prevent Page Breaks
@cindex Need space at page bottom
@findex need
A line containing only @code{@@need @var{n}} starts
a new page in a printed manual if fewer than @var{n} mils (thousandths
of an inch) remain on the current page. Do not use
braces around the argument @var{n}. The @code{@@need} command has no
effect on Info files since they are not paginated.@refill
@need 800
This paragraph is preceded by an @code{@@need} command that tells
@TeX{} to start a new page if fewer than 800 mils (eight-tenths
inch) remain on the page. It looks like this:@refill
@example
@group
@@need 800
This paragraph is preceded by @dots{}
@end group
@end example
The @code{@@need} command is useful for preventing orphans (single
lines at the bottoms of printed pages).@refill
@node Definition Commands
@chapter Definition Commands
@cindex Definition commands
The @code{@@deffn} command and the other @dfn{definition commands}
enable you to describe functions, variables, macros, commands, user
options, special forms and other such artifacts in a uniform
format.@refill
In the Info file, a definition causes the entity
category---`Function', `Variable', or whatever---to appear at the
beginning of the first line of the definition, followed by the
entity's name and arguments. In the printed manual, the command
causes @TeX{} to print the entity's name and its arguments on the left
margin and print the category next to the right margin. In both
output formats, the body of the definition is indented. Also, the
name of the entity is entered into the appropriate index:
@code{@@deffn} enters the name into the index of functions,
@code{@@defvr} enters it into the index of variables, and so
on.@refill
A manual need not and should not contain more than one definition for
a given name. An appendix containing a summary should use
@code{@@table} rather than the definition commands.@refill
@menu
* Def Cmd Template:: How to structure a description using a
definition command.
* Optional Arguments:: How to handle optional and repeated arguments.
* deffnx:: How to group two or more `first' lines.
* Def Cmds in Detail:: All the definition commands.
* Def Cmd Conventions:: Conventions for writing definitions.
* Sample Function Definition::
@end menu
@node Def Cmd Template, Optional Arguments, Definition Commands, Definition Commands
@section The Template for a Definition
@cindex Definition template
@cindex Template for a definition
The @code{@@deffn} command is used for definitions of entities that
resemble functions. To write a definition using the @code{@@deffn}
command, write the @code{@@deffn} command at the beginning of a line
and follow it on the same line by the category of the entity, the name
of the entity itself, and its arguments (if any). Then write the body
of the definition on succeeding lines. (You may embed examples in the
body.) Finally, end the definition with an @code{@@end deffn} command
written on a line of its own. (The other definition commands follow
the same format.)@refill
The template for a definition looks like this:
@example
@group
@@deffn @var{category} @var{name} @var{arguments}@dots{}
@var{body-of-definition}
@@end deffn
@end group
@end example
@need 700
@noindent
For example,
@example
@group
@@deffn Command forward-word count
This command moves point forward @@var@{count@} words
(or backward if @@var@{count@} is negative). @dots{}
@@end deffn
@end group
@end example
@noindent
produces
@quotation
@deffn Command forward-word count
This function moves point forward @var{count} words
(or backward if @var{count} is negative). @dots{}
@end deffn
@end quotation
Capitalize the category name like a title. If the name of the
category contains spaces, as in the phrase `Interactive Command',
write braces around it. For example:@refill
@example
@group
@@deffn @{Interactive Command@} isearch-forward
@dots{}
@@end deffn
@end group
@end example
@noindent
Otherwise, the second word will be mistaken for the name of the
entity.@refill
Some of the definition commands are more general than others. The
@code{@@deffn} command, for example, is the general definition command
for functions and the like---for entities that may take arguments. When
you use this command, you specify the category to which the entity
belongs. The @code{@@deffn} command possesses three predefined,
specialized variations, @code{@@defun}, @code{@@defmac}, and
@code{@@defspec}, that specify the category for you: ``Function'',
``Macro'', and ``Special Form'' respectively. (In Lisp, a special form
is an entity much like a function.) The @code{@@defvr} command also is
accompanied by several predefined, specialized variations for describing
particular kinds of variables.@refill
The template for a specialized definition, such as @code{@@defun}, is
similar to the template for a generalized definition, except that you
do not need to specify the category:@refill
@example
@group
@@defun @var{name} @var{arguments}@dots{}
@var{body-of-definition}
@@end defun
@end group
@end example
@noindent
Thus,
@example
@group
@@defun buffer-end flag
This function returns @@code@{(point-min)@} if @@var@{flag@}
is less than 1, @@code@{(point-max)@} otherwise.
@dots{}
@@end defun
@end group
@end example
@noindent
produces
@quotation
@defun buffer-end flag
This function returns @code{(point-min)} if @var{flag} is less than 1,
@code{(point-max)} otherwise. @dots{}
@end defun
@end quotation
@noindent
@xref{Sample Function Definition, Sample Function Definition, A Sample
Function Definition}, for a more detailed example of a function
definition, including the use of @code{@@example} inside the
definition.@refill
The other specialized commands work like @code{@@defun}.@refill
@node Optional Arguments, deffnx, Def Cmd Template, Definition Commands
@section Optional and Repeated Arguments
@cindex Optional and repeated arguments
@cindex Repeated and optional arguments
@cindex Arguments, repeated and optional
@cindex Syntax, optional & repeated arguments
@cindex Meta-syntactic chars for arguments
Some entities take optional or repeated arguments, which may be
specified by a distinctive glyph that uses square brackets and
ellipses. For @w{example}, a special form often breaks its argument list
into separate arguments in more complicated ways than a
straightforward function.@refill
@iftex
An argument enclosed within square brackets is optional.
Thus, the phrase
@samp{@code{@r{[}@var{optional-arg}@r{]}}} means that
@var{optional-arg} is optional.
An argument followed by an ellipsis is optional
and may be repeated more than once.
@c This is consistent with Emacs Lisp Reference manual
Thus, @samp{@var{repeated-args}@dots{}} stands for zero or more arguments.
Parentheses are used when several arguments are grouped
into additional levels of list structure in Lisp.
@end iftex
@c The following looks better in Info (no `r', `samp' and `code'):
@ifinfo
An argument enclosed within square brackets is optional.
Thus, [@var{optional-arg}] means that @var{optional-arg} is optional.
An argument followed by an ellipsis is optional
and may be repeated more than once.
@c This is consistent with Emacs Lisp Reference manual
Thus, @var{repeated-args}@dots{} stands for zero or more arguments.
Parentheses are used when several arguments are grouped
into additional levels of list structure in Lisp.
@end ifinfo
Here is the @code{@@defspec} line of an example of an imaginary
special form:@refill
@quotation
@defspec foobar (@var{var} [@var{from} @var{to} [@var{inc}]]) @var{body}@dots{}
@end defspec
@tex
\vskip \parskip
@end tex
@end quotation
@noindent
In this example, the arguments @var{from} and @var{to} are optional,
but must both be present or both absent. If they are present,
@var{inc} may optionally be specified as well. These arguments are
grouped with the argument @var{var} into a list, to distinguish them
from @var{body}, which includes all remaining elements of the
form.@refill
In a Texinfo source file, this @code{@@defspec} line is written like
this (except it would not be split over two lines, as it is in this
example).@refill
@example
@group
@@defspec foobar (@@var@{var@} [@@var@{from@} @@var@{to@}
[@@var@{inc@}]]) @@var@{body@}@@dots@{@}
@end group
@end example
@noindent
The function is listed in the Command and Variable Index under
@samp{foobar}.@refill
@node deffnx, Def Cmds in Detail, Optional Arguments, Definition Commands
@section Two or More `First' Lines
@cindex Two `First' Lines for @code{@@deffn}
@cindex Grouping two definitions together
@cindex Definitions grouped together
@findex deffnx
To create two or more `first' or header lines for a definition, follow
the first @code{@@deffn} line by a line beginning with @code{@@deffnx}.
The @code{@@deffnx} command works exactly like @code{@@deffn}
except that it does not generate extra vertical white space between it
and the preceding line.@refill
@need 1000
For example,
@example
@group
@@deffn @{Interactive Command@} isearch-forward
@@deffnx @{Interactive Command@} isearch-backward
These two search commands are similar except @dots{}
@@end deffn
@end group
@end example
@noindent
produces
@deffn {Interactive Command} isearch-forward
@deffnx {Interactive Command} isearch-backward
These two search commands are similar except @dots{}
@end deffn
Each definition command has an `x' form: @code{@@defunx},
@code{@@defvrx}, @code{@@deftypefunx}, etc.
The `x' forms work just like @code{@@itemx}; see @ref{itemx, , @code{@@itemx}}.
@node Def Cmds in Detail, Def Cmd Conventions, deffnx, Definition Commands
@section The Definition Commands
Texinfo provides more than a dozen definition commands, all of which
are described in this section.@refill
The definition commands automatically enter the name of the entity in
the appropriate index: for example, @code{@@deffn}, @code{@@defun},
and @code{@@defmac} enter function names in the index of functions;
@code{@@defvr} and @code{@@defvar} enter variable names in the index
of variables.@refill
Although the examples that follow mostly illustrate Lisp, the commands
can be used for other programming languages.@refill
@menu
* Functions Commands:: Commands for functions and similar entities.
* Variables Commands:: Commands for variables and similar entities.
* Typed Functions:: Commands for functions in typed languages.
* Typed Variables:: Commands for variables in typed languages.
* Abstract Objects:: Commands for object-oriented programming.
* Data Types:: The definition command for data types.
@end menu
@node Functions Commands, Variables Commands, Def Cmds in Detail, Def Cmds in Detail
@subsection Functions and Similar Entities
This section describes the commands for describing functions and similar
entities:@refill
@table @code
@findex deffn
@item @@deffn @var{category} @var{name} @var{arguments}@dots{}
The @code{@@deffn} command is the general definition command for
functions, interactive commands, and similar entities that may take
arguments. You must choose a term to describe the category of entity
being defined; for example, ``Function'' could be used if the entity is
a function. The @code{@@deffn} command is written at the beginning of a
line and is followed on the same line by the category of entity being
described, the name of this particular entity, and its arguments, if
any. Terminate the definition with @code{@@end deffn} on a line of its
own.@refill
@need 750
For example, here is a definition:
@example
@group
@@deffn Command forward-char nchars
Move point forward @@var@{nchars@} characters.
@@end deffn
@end group
@end example
@noindent
This shows a rather terse definition for a ``command'' named
@code{forward-char} with one argument, @var{nchars}.
@code{@@deffn} prints argument names such as @var{nchars} in italics or
upper case, as if @code{@@var} had been used, because we think of these
names as metasyntactic variables---they stand for the actual argument
values. Within the text of the description, write an argument name
explicitly with @code{@@var} to refer to the value of the argument. In
the example above, we used @samp{@@var@{nchars@}} in this way.
The template for @code{@@deffn} is:
@example
@group
@@deffn @var{category} @var{name} @var{arguments}@dots{}
@var{body-of-definition}
@@end deffn
@end group
@end example
@findex defun
@item @@defun @var{name} @var{arguments}@dots{}
The @code{@@defun} command is the definition command for functions.
@code{@@defun} is equivalent to @samp{@@deffn Function
@dots{}}.@refill
@need 800
@noindent
For example,
@example
@group
@@defun set symbol new-value
Change the value of the symbol @@var@{symbol@}
to @@var@{new-value@}.
@@end defun
@end group
@end example
@noindent
shows a rather terse definition for a function @code{set} whose
arguments are @var{symbol} and @var{new-value}. The argument names on
the @code{@@defun} line automatically appear in italics or upper case as
if they were enclosed in @code{@@var}. Terminate the definition with
@code{@@end defun} on a line of its own.@refill
The template is:
@example
@group
@@defun @var{function-name} @var{arguments}@dots{}
@var{body-of-definition}
@@end defun
@end group
@end example
@code{@@defun} creates an entry in the index of functions.
@findex defmac
@item @@defmac @var{name} @var{arguments}@dots{}
The @code{@@defmac} command is the definition command for macros.
@code{@@defmac} is equivalent to @samp{@@deffn Macro @dots{}} and
works like @code{@@defun}.@refill
@findex defspec
@item @@defspec @var{name} @var{arguments}@dots{}
The @code{@@defspec} command is the definition command for special
forms. (In Lisp, a special form is an entity much like a function,
@pxref{Special Forms,,, elisp, GNU Emacs Lisp Reference Manual}.)
@code{@@defspec} is equivalent to @samp{@@deffn @{Special Form@}
@dots{}} and works like @code{@@defun}.@refill
@end table
@node Variables Commands, Typed Functions, Functions Commands, Def Cmds in Detail
@subsection Variables and Similar Entities
Here are the commands for defining variables and similar
entities:@refill
@table @code
@findex defvr
@item @@defvr @var{category} @var{name}
The @code{@@defvr} command is a general definition command for
something like a variable---an entity that records a value. You must
choose a term to describe the category of entity being defined; for
example, ``Variable'' could be used if the entity is a variable.
Write the @code{@@defvr} command at the beginning of a line and
follow it on the same line by the category of the entity and the
name of the entity.
Capitalize the category name like a title. If the name of the category
contains spaces, as in the name ``User Option'', enclose it in braces.
Otherwise, the second word will be mistaken for the name of the entity.
For example,
@example
@group
@@defvr @{User Option@} fill-column
This buffer-local variable specifies
the maximum width of filled lines.
@dots{}
@@end defvr
@end group
@end example
Terminate the definition with @code{@@end defvr} on a line of its
own.@refill
The template is:
@example
@group
@@defvr @var{category} @var{name}
@var{body-of-definition}
@@end defvr
@end group
@end example
@code{@@defvr} creates an entry in the index of variables for @var{name}.
@findex defvar
@item @@defvar @var{name}
The @code{@@defvar} command is the definition command for variables.
@code{@@defvar} is equivalent to @samp{@@defvr Variable
@dots{}}.@refill
@need 750
For example:
@example
@group
@@defvar kill-ring
@dots{}
@@end defvar
@end group
@end example
The template is:
@example
@group
@@defvar @var{name}
@var{body-of-definition}
@@end defvar
@end group
@end example
@code{@@defvar} creates an entry in the index of variables for
@var{name}.@refill
@findex defopt
@item @@defopt @var{name}
@cindex User options, marking
The @code{@@defopt} command is the definition command for @dfn{user
options}, i.e., variables intended for users to change according to
taste; Emacs has many such (@pxref{Variables,,, emacs, The GNU Emacs
Manual}). @code{@@defopt} is equivalent to @samp{@@defvr @{User
Option@} @dots{}} and works like @code{@@defvar}.@refill
@end table
@node Typed Functions, Typed Variables, Variables Commands, Def Cmds in Detail
@subsection Functions in Typed Languages
The @code{@@deftypefn} command and its variations are for describing
functions in languages in which you must declare types of variables and
functions, such as C and C++.
@table @code
@findex deftypefn
@item @@deftypefn @var{category} @var{data-type} @var{name} @var{arguments}@dots{}
The @code{@@deftypefn} command is the general definition command for
functions and similar entities that may take arguments and that are
typed. The @code{@@deftypefn} command is written at the beginning of
a line and is followed on the same line by the category of entity
being described, the type of the returned value, the name of this
particular entity, and its arguments, if any.@refill
@need 800
@noindent
For example,
@example
@group
@@deftypefn @{Library Function@} int foobar
(int @@var@{foo@}, float @@var@{bar@})
@dots{}
@@end deftypefn
@end group
@end example
@need 1000
@noindent
(where the text before the ``@dots{}'', shown above as two lines, would
actually be a single line in a real Texinfo file) produces the following
in Info:
@smallexample
@group
-- Library Function: int foobar (int FOO, float BAR)
@dots{}
@end group
@end smallexample
@iftex
In a printed manual, it produces:
@quotation
@deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
@dots{}
@end deftypefn
@end quotation
@end iftex
This means that @code{foobar} is a ``library function'' that returns an
@code{int}, and its arguments are @var{foo} (an @code{int}) and
@var{bar} (a @code{float}).@refill
The argument names that you write in @code{@@deftypefn} are not subject
to an implicit @code{@@var}---since the actual names of the arguments in
@code{@@deftypefn} are typically scattered among data type names and
keywords, Texinfo cannot find them without help. Instead, you must write
@code{@@var} explicitly around the argument names. In the example
above, the argument names are @samp{foo} and @samp{bar}.@refill
The template for @code{@@deftypefn} is:@refill
@example
@group
@@deftypefn @var{category} @var{data-type} @var{name} @var{arguments} @dots{}
@var{body-of-description}
@@end deftypefn
@end group
@end example
@noindent
Note that if the @var{category} or @var{data type} is more than one
word then it must be enclosed in braces to make it a single argument.@refill
If you are describing a procedure in a language that has packages,
such as Ada, you might consider using @code{@@deftypefn} in a manner
somewhat contrary to the convention described in the preceding
paragraphs.@refill
@need 800
@noindent
For example:
@example
@group
@@deftypefn stacks private push
(@@var@{s@}:in out stack;
@@var@{n@}:in integer)
@dots{}
@@end deftypefn
@end group
@end example
@noindent
(The @code{@@deftypefn} arguments are shown split into three lines, but
would be a single line in a real Texinfo file.)
In this instance, the procedure is classified as belonging to the
package @code{stacks} rather than classified as a `procedure' and its
data type is described as @code{private}. (The name of the procedure
is @code{push}, and its arguments are @var{s} and @var{n}.)@refill
@code{@@deftypefn} creates an entry in the index of functions for
@var{name}.@refill
@item @@deftypefun @var{data-type} @var{name} @var{arguments}@dots{}
@findex deftypefun
The @code{@@deftypefun} command is the specialized definition command
for functions in typed languages. The command is equivalent to
@samp{@@deftypefn Function @dots{}}.@refill
@need 800
@noindent
Thus,
@smallexample
@group
@@deftypefun int foobar (int @@var@{foo@}, float @@var@{bar@})
@dots{}
@@end deftypefun
@end group
@end smallexample
@noindent
produces the following in Info:
@example
@group
-- Function: int foobar (int FOO, float BAR)
@dots{}
@end group
@end example
@iftex
@need 800
@noindent
and the following in a printed manual:
@quotation
@deftypefun int foobar (int @var{foo}, float @var{bar})
@dots{}
@end deftypefun
@end quotation
@end iftex
@need 800
The template is:
@example
@group
@@deftypefun @var{type} @var{name} @var{arguments}@dots{}
@var{body-of-description}
@@end deftypefun
@end group
@end example
@code{@@deftypefun} creates an entry in the index of functions for
@var{name}.@refill
@end table
@node Typed Variables, Abstract Objects, Typed Functions, Def Cmds in Detail
@subsection Variables in Typed Languages
Variables in typed languages are handled in a manner similar to
functions in typed languages. @xref{Typed Functions}. The general
definition command @code{@@deftypevr} corresponds to
@code{@@deftypefn} and the specialized definition command
@code{@@deftypevar} corresponds to @code{@@deftypefun}.@refill
@table @code
@findex deftypevr
@item @@deftypevr @var{category} @var{data-type} @var{name}
The @code{@@deftypevr} command is the general definition command for
something like a variable in a typed language---an entity that records
a value. You must choose a term to describe the category of the
entity being defined; for example, ``Variable'' could be used if the
entity is a variable.@refill
The @code{@@deftypevr} command is written at the beginning of a line
and is followed on the same line by the category of the entity
being described, the data type, and the name of this particular
entity.@refill
@need 800
@noindent
For example:
@example
@group
@@deftypevr @{Global Flag@} int enable
@dots{}
@@end deftypevr
@end group
@end example
@noindent
produces the following in Info:
@example
@group
-- Global Flag: int enable
@dots{}
@end group
@end example
@iftex
@noindent
and the following in a printed manual:
@quotation
@deftypevr {Global Flag} int enable
@dots{}
@end deftypevr
@end quotation
@end iftex
@need 800
The template is:
@example
@@deftypevr @var{category} @var{data-type} @var{name}
@var{body-of-description}
@@end deftypevr
@end example
@code{@@deftypevr} creates an entry in the index of variables for
@var{name}.@refill
@findex deftypevar
@item @@deftypevar @var{data-type} @var{name}
The @code{@@deftypevar} command is the specialized definition command
for variables in typed languages. @code{@@deftypevar} is equivalent
to @samp{@@deftypevr Variable @dots{}}.@refill
@need 800
@noindent
For example:
@example
@group
@@deftypevar int fubar
@dots{}
@@end deftypevar
@end group
@end example
@noindent
produces the following in Info:
@example
@group
-- Variable: int fubar
@dots{}
@end group
@end example
@iftex
@need 800
@noindent
and the following in a printed manual:
@quotation
@deftypevar int fubar
@dots{}
@end deftypevar
@end quotation
@end iftex
@need 800
@noindent
The template is:
@example
@group
@@deftypevar @var{data-type} @var{name}
@var{body-of-description}
@@end deftypevar
@end group
@end example
@code{@@deftypevar} creates an entry in the index of variables for
@var{name}.@refill
@end table
@node Abstract Objects
@subsection Object-Oriented Programming
Here are the commands for formatting descriptions about abstract
objects, such as are used in object-oriented programming. A class is
a defined type of abstract object. An instance of a class is a
particular object that has the type of the class. An instance
variable is a variable that belongs to the class but for which each
instance has its own value.@refill
In a definition, if the name of a class is truly a name defined in the
programming system for a class, then you should write an @code{@@code}
around it. Otherwise, it is printed in the usual text font.@refill
@table @code
@findex defcv
@item @@defcv @var{category} @var{class} @var{name}
The @code{@@defcv} command is the general definition command for
variables associated with classes in object-oriented programming. The
@code{@@defcv} command is followed by three arguments: the category of
thing being defined, the class to which it belongs, and its
name. Thus,@refill
@example
@group
@@defcv @{Class Option@} Window border-pattern
@dots{}
@@end defcv
@end group
@end example
@noindent
illustrates how you would write the first line of a definition of the
@code{border-pattern} class option of the class @code{Window}.@refill
The template is:
@example
@group
@@defcv @var{category} @var{class} @var{name}
@dots{}
@@end defcv
@end group
@end example
@code{@@defcv} creates an entry in the index of variables.
@findex defivar
@item @@defivar @var{class} @var{name}
The @code{@@defivar} command is the definition command for instance
variables in object-oriented programming. @code{@@defivar} is
equivalent to @samp{@@defcv @{Instance Variable@} @dots{}}@refill
The template is:
@example
@group
@@defivar @var{class} @var{instance-variable-name}
@var{body-of-definition}
@@end defivar
@end group
@end example
@code{@@defivar} creates an entry in the index of variables.
@findex deftypeivar
@item @@deftypeivar @var{class} @var{data-type} @var{name}
The @code{@@deftypeivar} command is the definition command for typed
instance variables in object-oriented programming. It is similar to
@code{@@defivar} with the addition of the @var{data-type} parameter to
specify the type of the instance variable. @code{@@deftypeivar} creates an
entry in the index of variables.
@findex defop
@item @@defop @var{category} @var{class} @var{name} @var{arguments}@dots{}
The @code{@@defop} command is the general definition command for
entities that may resemble methods in object-oriented programming.
These entities take arguments, as functions do, but are associated with
particular classes of objects.@refill
For example, some systems have constructs called @dfn{wrappers} that
are associated with classes as methods are, but that act more like
macros than like functions. You could use @code{@@defop Wrapper} to
describe one of these.@refill
Sometimes it is useful to distinguish methods and @dfn{operations}.
You can think of an operation as the specification for a method.
Thus, a window system might specify that all window classes have a
method named @code{expose}; we would say that this window system
defines an @code{expose} operation on windows in general. Typically,
the operation has a name and also specifies the pattern of arguments;
all methods that implement the operation must accept the same
arguments, since applications that use the operation do so without
knowing which method will implement it.@refill
Often it makes more sense to document operations than methods. For
example, window application developers need to know about the
@code{expose} operation, but need not be concerned with whether a
given class of windows has its own method to implement this operation.
To describe this operation, you would write:@refill
@example
@@defop Operation windows expose
@end example
The @code{@@defop} command is written at the beginning of a line and
is followed on the same line by the overall name of the category of
operation, the name of the class of the operation, the name of the
operation, and its arguments, if any.@refill
The template is:
@example
@group
@@defop @var{category} @var{class} @var{name} @var{arguments}@dots{}
@var{body-of-definition}
@@end defop
@end group
@end example
@code{@@defop} creates an entry, such as `@code{expose} on
@code{windows}', in the index of functions.@refill
@findex deftypeop
@item @@deftypeop @var{category} @var{class} @var{data-type} @var{name} @var{arguments}@dots{}
The @code{@@deftypeop} command is the definition command for typed
operations in object-oriented programming. It is similar to
@code{@@defop} with the addition of the @var{data-type} parameter to
specify the return type of the method. @code{@@deftypeop} creates an
entry in the index of functions.
@item @@defmethod @var{class} @var{name} @var{arguments}@dots{}
@findex defmethod
The @code{@@defmethod} command is the definition command for methods
in object-oriented programming. A method is a kind of function that
implements an operation for a particular class of objects and its
subclasses.
@ignore
@c ADR: Who cares?!?
@c KB: Oh, I don't know, I think this info is crucial!
In the Lisp Machine, methods actually were functions, but
they were usually defined with @code{defmethod}.
@end ignore
@code{@@defmethod} is equivalent to @samp{@@defop Method @dots{}}.
The command is written at the beginning of a line and is followed by
the name of the class of the method, the name of the method, and its
arguments, if any.@refill
@noindent
For example:
@example
@group
@@defmethod @code{bar-class} bar-method argument
@dots{}
@@end defmethod
@end group
@end example
@noindent
illustrates the definition for a method called @code{bar-method} of
the class @code{bar-class}. The method takes an argument.@refill
The template is:
@example
@group
@@defmethod @var{class} @var{method-name} @var{arguments}@dots{}
@var{body-of-definition}
@@end defmethod
@end group
@end example
@code{@@defmethod} creates an entry, such as `@code{bar-method} on
@code{bar-class}', in the index of functions.@refill
@item @@deftypemethod @var{class} @var{data-type} @var{name} @var{arguments}@dots{}
@findex defmethod
The @code{@@deftypemethod} command is the definition command for methods
in object-oriented typed languages, such as C++ and Java. It is similar
to the @code{@@defmethod} command with the addition of the
@var{data-type} parameter to specify the return type of the method.
@end table
@node Data Types
@subsection Data Types
Here is the command for data types:@refill
@table @code
@findex deftp
@item @@deftp @var{category} @var{name} @var{attributes}@dots{}
The @code{@@deftp} command is the generic definition command for data
types. The command is written at the beginning of a line and is
followed on the same line by the category, by the name of the type
(which is a word like @code{int} or @code{float}), and then by names of
attributes of objects of that type. Thus, you could use this command
for describing @code{int} or @code{float}, in which case you could use
@code{data type} as the category. (A data type is a category of
certain objects for purposes of deciding which operations can be
performed on them.)@refill
In Lisp, for example, @dfn{pair} names a particular data
type, and an object of that type has two slots called the
@sc{car} and the @sc{cdr}. Here is how you would write the first line
of a definition of @code{pair}.@refill
@example
@group
@@deftp @{Data type@} pair car cdr
@dots{}
@@end deftp
@end group
@end example
@need 950
The template is:
@example
@group
@@deftp @var{category} @var{name-of-type} @var{attributes}@dots{}
@var{body-of-definition}
@@end deftp
@end group
@end example
@code{@@deftp} creates an entry in the index of data types.
@end table
@node Def Cmd Conventions, Sample Function Definition, Def Cmds in Detail, Definition Commands
@section Conventions for Writing Definitions
@cindex Definition conventions
@cindex Conventions for writing definitions
When you write a definition using @code{@@deffn}, @code{@@defun}, or
one of the other definition commands, please take care to use
arguments that indicate the meaning, as with the @var{count} argument
to the @code{forward-word} function. Also, if the name of an argument
contains the name of a type, such as @var{integer}, take care that the
argument actually is of that type.@refill
@node Sample Function Definition, , Def Cmd Conventions, Definition Commands
@section A Sample Function Definition
@cindex Function definitions
@cindex Command definitions
@cindex Macro definitions
@cindex Sample function definition
A function definition uses the @code{@@defun} and @code{@@end defun}
commands. The name of the function follows immediately after the
@code{@@defun} command and it is followed, on the same line, by the
parameter list.@refill
Here is a definition from @ref{Calling Functions,,, elisp, The GNU Emacs
Lisp Reference Manual}.
@quotation
@defun apply function &rest arguments
@code{apply} calls @var{function} with @var{arguments}, just
like @code{funcall} but with one difference: the last of
@var{arguments} is a list of arguments to give to
@var{function}, rather than a single argument. We also say
that this list is @dfn{appended} to the other arguments.
@code{apply} returns the result of calling @var{function}.
As with @code{funcall}, @var{function} must either be a Lisp
function or a primitive function; special forms and macros
do not make sense in @code{apply}.
@example
(setq f 'list)
@result{} list
(apply f 'x 'y 'z)
@error{} Wrong type argument: listp, z
(apply '+ 1 2 '(3 4))
@result{} 10
(apply '+ '(1 2 3 4))
@result{} 10
(apply 'append '((a b c) nil (x y z) nil))
@result{} (a b c x y z)
@end example
An interesting example of using @code{apply} is found in the description
of @code{mapcar}.@refill
@end defun
@end quotation
@need 1200
In the Texinfo source file, this example looks like this:
@example
@group
@@defun apply function &rest arguments
@@code@{apply@} calls @@var@{function@} with
@@var@{arguments@}, just like @@code@{funcall@} but with one
difference: the last of @@var@{arguments@} is a list of
arguments to give to @@var@{function@}, rather than a single
argument. We also say that this list is @@dfn@{appended@}
to the other arguments.
@end group
@group
@@code@{apply@} returns the result of calling
@@var@{function@}. As with @@code@{funcall@},
@@var@{function@} must either be a Lisp function or a
primitive function; special forms and macros do not make
sense in @@code@{apply@}.
@end group
@group
@@example
(setq f 'list)
@@result@{@} list
(apply f 'x 'y 'z)
@@error@{@} Wrong type argument: listp, z
(apply '+ 1 2 '(3 4))
@@result@{@} 10
(apply '+ '(1 2 3 4))
@@result@{@} 10
(apply 'append '((a b c) nil (x y z) nil))
@@result@{@} (a b c x y z)
@@end example
@end group
@group
An interesting example of using @@code@{apply@} is found
in the description of @@code@{mapcar@}.
@@end defun
@end group
@end example
@noindent
In this manual, this function is listed in the Command and Variable
Index under @code{apply}.@refill
Ordinary variables and user options are described using a format like
that for functions except that variables do not take arguments.
@node Conditionals
@chapter Conditionally Visible Text
@cindex Conditionally visible text
@cindex Text, conditionally visible
@cindex Visibility of conditional text
@cindex If text conditionally visible
Sometimes it is good to use different text for different output formats.
For example, you can use the @dfn{conditional commands} to specify
different text for the printed manual and the Info output.
Conditional commands may not be nested.
The conditional commands comprise the following categories.
@itemize @bullet
@item Commands for HTML, Info, or @TeX{}.
@item Commands for not HTML, Info, or @TeX{}.
@item Raw @TeX{} or HTML commands.
@item
Substituting text for all formats, and testing if a flag is set or clear.
@end itemize
@menu
* Conditional Commands:: Specifying text for HTML, Info, or @TeX{}.
* Conditional Not Commands:: Specifying text for not HTML, Info, or @TeX{}.
* Raw Formatter Commands:: Using raw @TeX{} or HTML commands.
* set clear value:: Designating which text to format (for
all output formats); and how to set a
flag to a string that you can insert.
@end menu
@node Conditional Commands
@section Conditional Commands
@findex ifinfo
@code{@@ifinfo} begins segments of text that should be ignored by @TeX{}
when it typesets the printed manual. The segment of text appears only
in the Info file. The @code{@@ifinfo} command should appear on a line
by itself; end the Info-only text with a line containing @code{@@end
ifinfo} by itself. At the beginning of a Texinfo file, the Info
permissions are contained within a region marked by @code{@@ifinfo} and
@code{@@end ifinfo}. (@xref{Info Summary and Permissions}.)
@findex iftex
@findex ifhtml
The @code{@@iftex} and @code{@@end iftex} commands are similar to the
@code{@@ifinfo} and @code{@@end ifinfo} commands, except that they
specify text that will appear in the printed manual but not in the Info
file. Likewise for @code{@@ifhtml} and @code{@@end ifhtml}, which
specify text to appear only in HTML output.@refill
For example,
@example
@@iftex
This text will appear only in the printed manual.
@@end iftex
@@ifinfo
However, this text will appear only in Info.
@@end ifinfo
@@ifhtml
And this text will only appear in HTML.
@@end ifhtml
@end example
@noindent
The preceding example produces the following line:
@iftex
This text will appear only in the printed manual.
@end iftex
@ifinfo
However, this text will appear only in Info.
@end ifinfo
@ifhtml
And this text will only appear in HTML.
@end ifhtml
@noindent
Notice that you only see one of the input lines, depending on which
version of the manual you are reading.
@node Conditional Not Commands
@section Conditional Not Commands
@findex ifnothtml
@findex ifnotinfo
@findex ifnottex
You can specify text to be included in any output format @emph{other}
than some given one with the @code{@@ifnot@dots{}} commands:
@example
@@ifnothtml @dots{} @@end ifnothtml
@@ifnotinfo @dots{} @@end ifnotinfo
@@ifnottex @dots{} @@end ifnottex
@end example
@noindent
(The @code{@@ifnot@dots{}} command and the @code{@@end} command must
actually appear on lines by themselves.)
If the output file is not being made for the given format, the region is
included. Otherwise, it is ignored.
The regions delimited by these commands are ordinary Texinfo source as
with @code{@@iftex}, not raw formatter source as with @code{@@tex}
(@pxref{Raw Formatter Commands}).
@node Raw Formatter Commands, set clear value, Conditional Not Commands, Conditionals
@section Raw Formatter Commands
@cindex @TeX{} commands, using ordinary
@cindex HTML commands, using ordinary
@cindex Raw formatter commands
@cindex Ordinary @TeX{} commands, using
@cindex Ordinary HTML commands, using
@cindex Commands using raw @TeX{}
@cindex Commands using raw HTML
@cindex plain @TeX{}
Inside a region delineated by @code{@@iftex} and @code{@@end iftex}, you
can embed some raw @TeX{} commands. Info will ignore these commands
since they are only in that part of the file which is seen by @TeX{}.
You can write the @TeX{} commands as you would write them in a normal
@TeX{} file, except that you must replace the @samp{\} used by @TeX{}
with an @samp{@@}. For example, in the @code{@@titlepage} section of a
Texinfo file, you can use the @TeX{} command @code{@@vskip} to format
the copyright page. (The @code{@@titlepage} command causes Info to
ignore the region automatically, as it does with the @code{@@iftex}
command.)
However, many features of plain @TeX{} will not work, as they are
overridden by Texinfo features.
@findex tex
You can enter plain @TeX{} completely, and use @samp{\} in the @TeX{}
commands, by delineating a region with the @code{@@tex} and @code{@@end
tex} commands. (The @code{@@tex} command also causes Info to ignore the
region, like the @code{@@iftex} command.) The sole exception is that the
@code{@@} character still introduces a command, so that @code{@@end tex}
can be recognized properly.
@cindex Mathematical expressions
For example, here is a mathematical expression written in
plain @TeX{}:
@example
@@tex
$$ \chi^2 = \sum_@{i=1@}^N
\left (y_i - (a + b x_i)
\over \sigma_i\right)^2 $$
@@end tex
@end example
@noindent
The output of this example will appear only in a printed manual. If
you are reading this in Info, you will not see the equation that appears
in the printed manual.
@iftex
In a printed manual, the above expression looks like
this:
@end iftex
@tex
$$ \chi^2 = \sum_{i=1}^N
\left(y_i - (a + b x_i)
\over \sigma_i\right)^2 $$
@end tex
@findex ifhtml
@findex html
Analogously, you can use @code{@@ifhtml @dots{} @@end ifhtml} to delimit
a region to be included in HTML output only, and @code{@@html @dots{}
@@end html} for a region of raw HTML (again, except that @code{@@} is
still the escape character, so the @code{@@end} command can be
recognized.)
@node set clear value
@section @code{@@set}, @code{@@clear}, and @code{@@value}
You can direct the Texinfo formatting commands to format or ignore parts
of a Texinfo file with the @code{@@set}, @code{@@clear}, @code{@@ifset},
and @code{@@ifclear} commands.@refill
In addition, you can use the @code{@@set @var{flag}} command to set the
value of @var{flag} to a string of characters; and use
@code{@@value@{@var{flag}@}} to insert that string. You can use
@code{@@set}, for example, to set a date and use @code{@@value} to
insert the date in several places in the Texinfo file.@refill
@menu
* ifset ifclear:: Format a region if a flag is set.
* set value:: Expand a flag variable to a string.
* value Example:: An easy way to update edition information.
@end menu
@node ifset ifclear
@subsection @code{@@ifset} and @code{@@ifclear}
@findex ifset
When a @var{flag} is set, the Texinfo formatting commands format text
between subsequent pairs of @code{@@ifset @var{flag}} and @code{@@end
ifset} commands. When the @var{flag} is cleared, the Texinfo formatting
commands do @emph{not} format the text.
Use the @code{@@set @var{flag}} command to turn on, or @dfn{set}, a
@var{flag}; a @dfn{flag} name can be any single word, containing
letters, numerals, hyphens, or underscores.
The format for the command looks like this:@refill
@findex set
@example
@@set @var{flag}
@end example
Write the conditionally formatted text between @code{@@ifset @var{flag}}
and @code{@@end ifset} commands, like this:@refill
@example
@group
@@ifset @var{flag}
@var{conditional-text}
@@end ifset
@end group
@end example
For example, you can create one document that has two variants, such as
a manual for a `large' and `small' model:@refill
@example
You can use this machine to dig up shrubs
without hurting them.
@@set large
@@ifset large
It can also dig up fully grown trees.
@@end ifset
Remember to replant promptly @dots{}
@end example
@noindent
In the example, the formatting commands will format the text between
@code{@@ifset large} and @code{@@end ifset} because the @code{large}
flag is set.@refill
@findex clear
Use the @code{@@clear @var{flag}} command to turn off, or @dfn{clear},
a flag. Clearing a flag is the opposite of setting a flag. The
command looks like this:@refill
@example
@@clear @var{flag}
@end example
@noindent
Write the command on a line of its own.
When @var{flag} is cleared, the Texinfo formatting commands do
@emph{not} format the text between @code{@@ifset @var{flag}} and
@code{@@end ifset}; that text is ignored and does not appear in either
printed or Info output.@refill
For example, if you clear the flag of the preceding example by writing
an @code{@@clear large} command after the @code{@@set large} command
(but before the conditional text), then the Texinfo formatting commands
ignore the text between the @code{@@ifset large} and @code{@@end ifset}
commands. In the formatted output, that text does not appear; in both
printed and Info output, you see only the lines that say, ``You can use
this machine to dig up shrubs without hurting them. Remember to replant
promptly @dots{}''.
@findex ifclear
If a flag is cleared with an @code{@@clear @var{flag}} command, then
the formatting commands format text between subsequent pairs of
@code{@@ifclear} and @code{@@end ifclear} commands. But if the flag
is set with @code{@@set @var{flag}}, then the formatting commands do
@emph{not} format text between an @code{@@ifclear} and an @code{@@end
ifclear} command; rather, they ignore that text. An @code{@@ifclear}
command looks like this:@refill
@example
@@ifclear @var{flag}
@end example
@need 700
In brief, the commands are:@refill
@table @code
@item @@set @var{flag}
Tell the Texinfo formatting commands that @var{flag} is set.@refill
@item @@clear @var{flag}
Tell the Texinfo formatting commands that @var{flag} is cleared.@refill
@item @@ifset @var{flag}
If @var{flag} is set, tell the Texinfo formatting commands to format
the text up to the following @code{@@end ifset} command.@refill
If @var{flag} is cleared, tell the Texinfo formatting commands to
ignore text up to the following @code{@@end ifset} command.@refill
@item @@ifclear @var{flag}
If @var{flag} is set, tell the Texinfo formatting commands to ignore
the text up to the following @code{@@end ifclear} command.@refill
If @var{flag} is cleared, tell the Texinfo formatting commands to
format the text up to the following @code{@@end ifclear}
command.@refill
@end table
@node set value
@subsection @code{@@set} and @code{@@value}
@findex value
You can use the @code{@@set} command to specify a value for a flag,
which is expanded by the @code{@@value} command. A flag is an
identifier; for best results, use only letters and numerals in a flag
name, not @samp{-} or @samp{_}---they will work in some contexts, but
not all, due to limitations in @TeX{}. The value is just a string of
characters, the remainder of the input line.
Write the @code{@@set} command like this:
@example
@@set foo This is a string.
@end example
@noindent
This sets the value of the flag @code{foo} to ``This is a string.''.
The Texinfo formatters then replace an @code{@@value@{@var{flag}@}}
command with the string to which @var{flag} is set. Thus, when
@code{foo} is set as shown above, the Texinfo formatters convert
@example
@group
@@value@{foo@}
@exdent @r{to}
This is a string.
@end group
@end example
You can write an @code{@@value} command within a paragraph; but you
must write an @code{@@set} command on a line of its own.
If you write the @code{@@set} command like this:
@example
@@set foo
@end example
@noindent
without specifying a string, the value of @code{foo} is an empty string.
If you clear a previously set flag with @code{@@clear @var{flag}}, a
subsequent @code{@@value@{flag@}} command is invalid and the string is
replaced with an error message that says @samp{@{No value for
"@var{flag}"@}}.
For example, if you set @code{foo} as follows:@refill
@example
@@set how-much very, very, very
@end example
@noindent
then the formatters transform
@example
@group
It is a @@value@{how-much@} wet day.
@exdent @r{into}
It is a very, very, very wet day.
@end group
@end example
If you write
@example
@@clear how-much
@end example
@noindent
then the formatters transform
@example
@group
It is a @@value@{how-much@} wet day.
@exdent @r{into}
It is a @{No value for "how-much"@} wet day.
@end group
@end example
@node value Example
@subsection @code{@@value} Example
You can use the @code{@@value} command to limit the number of places you
need to change when you record an update to a manual. Here is how it is
done in @cite{The GNU Make Manual}:
@enumerate
@item
Set the flags:
@example
@group
@@set EDITION 0.35 Beta
@@set VERSION 3.63 Beta
@@set UPDATED 14 August 1992
@@set UPDATE-MONTH August 1992
@end group
@end example
@item
Write text for the first @code{@@ifinfo} section, for people reading the
Texinfo file:
@example
@group
This is Edition @@value@{EDITION@},
last updated @@value@{UPDATED@},
of @@cite@{The GNU Make Manual@},
for @@code@{make@}, version @@value@{VERSION@}.
@end group
@end example
@item
Write text for the title page, for people reading the printed manual:
@c List only the month and the year since that looks less fussy on a
@c printed cover than a date that lists the day as well.
@example
@group
@@title GNU Make
@@subtitle A Program for Directing Recompilation
@@subtitle Edition @@value@{EDITION@}, @dots{}
@@subtitle @@value@{UPDATE-MONTH@}
@end group
@end example
@noindent
(On a printed cover, a date listing the month and the year looks less
fussy than a date listing the day as well as the month and year.)
@item
Write text for the Top node, for people reading the Info file:
@example
@group
This is Edition @@value@{EDITION@}
of the @@cite@{GNU Make Manual@},
last updated @@value@{UPDATED@}
for @@code@{make@} Version @@value@{VERSION@}.
@end group
@end example
After you format the manual, the text in the first @code{@@ifinfo}
section looks like this:
@example
@group
This is Edition 0.35 Beta, last updated 14 August 1992,
of `The GNU Make Manual', for `make', Version 3.63 Beta.
@end group
@end example
@end enumerate
When you update the manual, change only the values of the flags; you do
not need to edit the three sections.
@node Internationalization
@chapter Internationalization
@cindex Internationalization
Texinfo has some support for writing in languages other than English,
although this area still needs considerable work.
For a list of the various accented and special characters Texinfo
supports, see @ref{Inserting Accents}.
@menu
* documentlanguage:: Declaring the current language.
* documentencoding:: Declaring the input encoding.
@end menu
@node documentlanguage
@section @code{@@documentlanguage @var{cc}}: Set the Document Language
@findex documentlanguage
@cindex Language, declaring
@cindex Document language, declaring
The @code{@@documentlanguage} command declares the current document
language. Write it on a line by itself, with a two-letter ISO-639
language code following (list is included below). If you have a
multilingual document, the intent is to be able to use this command
multiple times, to declare each language change. If the command is not
used at all, the default is @code{en} for English.
@cindex @file{txi-@var{cc}.tex}
At present, this command is ignored in Info and HTML output. For
@TeX{}, it causes the file @file{txi-@var{cc}.tex} to be read (if it
exists). Such a file appropriately redefines the various English words
used in @TeX{} output, such as `Chapter', `See', and so on.
@cindex Hyphenation patterns, language-dependent
It would be good if this command also changed @TeX{}'s ideas of the
current hyphenation patterns (via the @TeX{} primitive
@code{\language}), but this is unfortunately not currently implemented.
@cindex ISO 639 codes
@cindex Language codes
@cindex African languages
Here is the list of valid language codes. This list comes from
@uref{http://www.iro.umontreal.ca/contrib/po/iso-639, the free
translation project}. In the future we may wish to allow the 3-letter
POV codes described at @uref{http://www.sil.org/ethnologue/#contents}.
This will be necessary to support African languages.
@multitable @columnfractions .06 .27 .06 .27 .06 .27
@item
@code{aa} @tab Afar @tab
@code{ab} @tab Abkhazian @tab
@code{af} @tab Afrikaans
@item
@code{am} @tab Amharic @tab
@code{ar} @tab Arabic @tab
@code{as} @tab Assamese
@item
@code{ay} @tab Aymara @tab
@code{az} @tab Azerbaijani @tab
@code{ba} @tab Bashkir
@item
@code{be} @tab Byelorussian @tab
@code{bg} @tab Bulgarian @tab
@code{bh} @tab Bihari
@item
@code{bi} @tab Bislama @tab
@code{bn} @tab Bengali; Bangla @tab
@code{bo} @tab Tibetan
@item
@code{br} @tab Breton @tab
@code{ca} @tab Catalan @tab
@code{co} @tab Corsican
@item
@code{cs} @tab Czech @tab
@code{cy} @tab Welsh @tab
@code{da} @tab Danish
@item
@code{de} @tab German @tab
@code{dz} @tab Bhutani @tab
@code{el} @tab Greek
@item
@code{en} @tab English @tab
@code{eo} @tab Esperanto @tab
@code{es} @tab Spanish
@item
@code{et} @tab Estonian @tab
@code{eu} @tab Basque @tab
@code{fa} @tab Persian
@item
@code{fi} @tab Finnish @tab
@code{fj} @tab Fiji @tab
@code{fo} @tab Faroese
@item
@code{fr} @tab French @tab
@code{fy} @tab Frisian @tab
@code{ga} @tab Irish
@item
@code{gd} @tab Scots Gaelic @tab
@code{gl} @tab Galician @tab
@code{gn} @tab Guarani
@item
@code{gu} @tab Gujarati @tab
@code{ha} @tab Hausa @tab
@code{he} @tab Hebrew
@item
@code{hi} @tab Hindi @tab
@code{hr} @tab Croatian @tab
@code{hu} @tab Hungarian
@item
@code{hy} @tab Armenian @tab
@code{ia} @tab Interlingua @tab
@code{id} @tab Indonesian
@item
@code{ie} @tab Interlingue @tab
@code{ik} @tab Inupiak @tab
@code{is} @tab Icelandic
@item
@code{it} @tab Italian @tab
@code{iu} @tab Inuktitut @tab
@code{ja} @tab Japanese
@item
@code{jw} @tab Javanese @tab
@code{ka} @tab Georgian @tab
@code{kk} @tab Kazakh
@item
@code{kl} @tab Greenlandic @tab
@code{km} @tab Cambodian @tab
@code{kn} @tab Kannada
@item
@code{ks} @tab Kashmiri @tab
@code{ko} @tab Korean @tab
@code{ku} @tab Kurdish
@item
@code{ky} @tab Kirghiz @tab
@code{la} @tab Latin @tab
@code{ln} @tab Lingala
@item
@code{lt} @tab Lithuanian @tab
@code{lo} @tab Laothian @tab
@code{lv} @tab Latvian, Lettish
@item
@code{mg} @tab Malagasy @tab
@code{mi} @tab Maori @tab
@code{mk} @tab Macedonian
@item
@code{ml} @tab Malayalam @tab
@code{mn} @tab Mongolian @tab
@code{mo} @tab Moldavian
@item
@code{mr} @tab Marathi @tab
@code{ms} @tab Malay @tab
@code{mt} @tab Maltese
@item
@code{my} @tab Burmese @tab
@code{na} @tab Nauru @tab
@code{ne} @tab Nepali
@item
@code{nl} @tab Dutch @tab
@code{no} @tab Norwegian @tab
@code{oc} @tab Occitan
@item
@code{om} @tab (Afan) Oromo @tab
@code{or} @tab Oriya @tab
@code{pa} @tab Punjabi
@item
@code{pl} @tab Polish @tab
@code{ps} @tab Pashto, Pushto @tab
@code{pt} @tab Portuguese
@item
@code{qu} @tab Quechua @tab
@code{rm} @tab Rhaeto-Romance @tab
@code{rn} @tab Kirundi
@item
@code{ro} @tab Romanian @tab
@code{ru} @tab Russian @tab
@code{rw} @tab Kinyarwanda
@item
@code{sa} @tab Sanskrit @tab
@code{sd} @tab Sindhi @tab
@code{sg} @tab Sangro
@item
@code{sh} @tab Serbo-Croatian @tab
@code{si} @tab Sinhalese @tab
@code{sk} @tab Slovak
@item
@code{sl} @tab Slovenian @tab
@code{sm} @tab Samoan @tab
@code{sn} @tab Shona
@item
@code{so} @tab Somali @tab
@code{sq} @tab Albanian @tab
@code{sr} @tab Serbian
@item
@code{ss} @tab Siswati @tab
@code{st} @tab Sesotho @tab
@code{su} @tab Sundanese
@item
@code{sv} @tab Swedish @tab
@code{sw} @tab Swahili @tab
@code{ta} @tab Tamil
@item
@code{te} @tab Telugu @tab
@code{tg} @tab Tajik @tab
@code{th} @tab Thai
@item
@code{ti} @tab Tigrinya @tab
@code{tk} @tab Turkmen @tab
@code{tl} @tab Tagalog
@item
@code{tn} @tab Setswana @tab
@code{to} @tab Tonga @tab
@code{tr} @tab Turkish
@item
@code{ts} @tab Tsonga @tab
@code{tt} @tab Tatar @tab
@code{tw} @tab Twi
@item
@code{ug} @tab Uighur @tab
@code{uk} @tab Ukrainian @tab
@code{ur} @tab Urdu
@item
@code{uz} @tab Uzbek @tab
@code{vi} @tab Vietnamese @tab
@code{vo} @tab Volapuk
@item
@code{wo} @tab Wolof @tab
@code{xh} @tab Xhosa @tab
@code{yi} @tab Yiddish
@item
@code{yo} @tab Yoruba @tab
@code{za} @tab Zhuang @tab
@code{zh} @tab Chinese
@item
@code{zu} @tab Zulu
@end multitable
@node documentencoding
@section @code{@@documentencoding @var{enc}}: Set Input Encoding
@findex documentencoding
@cindex Encoding, declaring
@cindex Input encoding, declaring
@cindex Document input encoding
The @code{@@documentencoding} command declares the input document
encoding. Write it on a line by itself, with a valid encoding
specification following, such as @samp{ISO-8859-1}.
@cindex http-equiv, and charset
@cindex meta HTML tag, and charset
At present, this is used only in HTML output from @code{makeinfo}. If a
document encoding @var{enc} is specified, it is used in the
@samp{<meta>} tag is included in the @samp{<head>} of the output:
@example
<meta http-equiv="Content-Type" content="text/html; charset=@var{enc}">
@end example
@node Defining New Texinfo Commands
@chapter Defining New Texinfo Commands
@cindex Macros
@cindex Defining new Texinfo commands
@cindex New Texinfo commands, defining
@cindex Texinfo commands, defining new
@cindex User-defined Texinfo commands
Texinfo provides several ways to define new commands:
@itemize @bullet
@item
A Texinfo @dfn{macro} allows you to define a new Texinfo command as any
sequence of text and/or existing commands (including other macros). The
macro can have any number of @dfn{parameters}---text you supply each
time you use the macro.
Incidentally, these macros have nothing to do with the @code{@@defmac}
command, which is for documenting macros in the subject of the manual
(@pxref{Def Cmd Template}).
@item
@samp{@@alias} is a convenient way to define a new name for an existing
command.
@item
@samp{@@definfoenclose} allows you to define new commands with
customized output in the Info file.
@end itemize
@menu
* Defining Macros:: Defining and undefining new commands.
* Invoking Macros:: Using a macro, once you've defined it.
* Macro Details:: Beyond basic macro usage.
* alias:: Command aliases.
* definfoenclose:: Customized highlighting.
@end menu
@node Defining Macros
@section Defining Macros
@cindex Defining macros
@cindex Macro definitions
@cindex Definitions, a.k.a.@: macros
@findex macro
You use the Texinfo @code{@@macro} command to define a macro, like this:
@example
@@macro @var{macroname}@{@var{param1}, @var{param2}, @dots{}@}
@var{text} @dots{} \@var{param1}\ @dots{}
@@end macro
@end example
The @dfn{parameters} @var{param1}, @var{param2}, @dots{} correspond to
arguments supplied when the macro is subsequently used in the document
(described in the next section).
For a macro to work with @TeX{}, @var{macroname} must consist entirely
of letters: no digits, hyphens, underscores, or other special characters.
If a macro needs no parameters, you can define it either with an empty
list (@samp{@@macro foo @{@}}) or with no braces at all (@samp{@@macro
foo}).
@cindex Body of a macro
@cindex Mutually recursive macros
@cindex Recursion, mutual
The definition or @dfn{body} of the macro can contain most Texinfo
commands, including previously-defined macros. Not-yet-defined macro
invocations are not allowed; thus, it is not possible to have mutually
recursive Texinfo macros. Also, a macro definition that defines another
macro does not work in @TeX{} due to limitations in the design of
@code{@@macro}.
@cindex Parameters to macros
In the macro body, instances of a parameter name surrounded by
backslashes, as in @samp{\@var{param1}\} in the example above, are
replaced by the corresponding argument from the macro invocation. You
can use parameter names any number of times in the body, including zero.
@cindex Backslash in macros
To get a single @samp{\} in the macro expansion, use @samp{\\}. Any
other use of @samp{\} in the body yields a warning.
@cindex Spaces in macros
@cindex Whitespace in macros
The newlines after the @code{@@macro} line and before the @code{@@end
macro} line are ignored, that is, not included in the macro body. All
other whitespace is treated according to the usual Texinfo rules.
@cindex Recursive macro invocations
@findex rmacro
To allow a macro to be used recursively, that is, in an argument to a
call to itself, you must define it with @samp{@@rmacro}, like this:
@example
@@rmacro rmac
a\arg\b
@@end rmacro
@dots{}
@@rmac@{1@@rmac@{text@}2@}
@end example
This produces the output `a1atextb2b'. With @samp{@@macro} instead of
@samp{@@rmacro}, an error message is given.
@findex unmacro
@cindex Macros, undefining
@cindex Undefining macros
You can undefine a macro @var{foo} with @code{@@unmacro @var{foo}}.
It is not an error to undefine a macro that is already undefined.
For example:
@example
@@unmacro foo
@end example
@node Invoking Macros
@section Invoking Macros
@cindex Invoking macros
@cindex Expanding macros
@cindex Running macros
@cindex Macro invocation
After a macro is defined (see the previous section), you can use
(@dfn{invoke}) it in your document like this:
@example
@@@var{macroname} @{@var{arg1}, @var{arg2}, @dots{}@}
@end example
@noindent and the result will be just as if you typed the body of
@var{macroname} at that spot. For example:
@example
@@macro foo @{p, q@}
Together: \p\ & \q\.
@@end macro
@@foo@{a, b@}
@end example
@noindent produces:
@display
Together: a & b.
@end display
@cindex Backslash, and macros
Thus, the arguments and parameters are separated by commas and delimited
by braces; any whitespace after (but not before) a comma is ignored.
The braces are required in the invocation (but not the definition), even
when the macro takes no arguments, consistent with all other Texinfo
commands. For example:
@example
@@macro argless @{@}
No arguments here.
@@end macro
@@argless@{@}
@end example
@noindent produces:
@display
No arguments here.
@end display
To insert a comma, brace, or backslash in an argument, prepend a
backslash, as in
@example
@@@var{macname} @{\\\@{\@}\,@}
@end example
@noindent
which will pass the (almost certainly error-producing) argument
@samp{\@{@},} to @var{macname}.
If the macro is defined to take a single argument, and is invoked
without any braces, the entire rest of the line after the macro name is
supplied as the argument. For example:
@example
@@macro bar @{p@}
Twice: \p\ & \p\.
@@end macro
@@bar aah
@end example
@noindent produces:
@c Sorry for cheating, but let's not require macros to process the manual.
@display
Twice: aah & aah.
@end display
If the macro is defined to take a single argument, and is invoked with
braces, the braced text is passed as the argument, regardless of
commas. For example:
@example
@@macro bar @{p@}
Twice: \p\ & \p\.
@@end macro
@@bar@{a,b@}
@end example
@noindent produces:
@display
Twice: a,b & a,b.
@end display
@node Macro Details
@section Macro Details
@cindex Macro details
@cindex Details of macro usage
Due to unavoidable disparities in the @TeX{} and @command{makeinfo}
implementations, Texinfo macros have the following limitations.
@itemize @bullet
@item
All macros are expanded inside at least one @TeX{} group. This means
that @set and other such commands will have no effect inside a macro.
@item
Macros containing a command which must be on a line by itself, such as a
conditional, cannot be invoked in the middle of a line.
@item
The @TeX{} implementation cannot construct macros that define macros in
the natural way. To do this, you must use conditionals and raw @TeX{}.
For example:
@example
@@ifinfo
@@macro ctor @{name, arg@}
@@macro \name\
something involving \arg\ somehow
@@end macro
@@end macro
@@end ifinfo
@@tex
\gdef\ctor#1@{\ctorx#1,@}
\gdef\ctorx#1,#2,@{\def#1@{something involving #2 somehow@}@}
@@end tex
@end example
@item
It is best to avoid comments inside macro definitions.
@end itemize
@node alias
@section @samp{@@alias @var{new}=@var{existing}}
@cindex Aliases, command
@cindex Command aliases
@findex alias
The @samp{@@alias} command defines a new command to be just like an
existing one. This is useful for defining additional markup names, thus
preserving semantic information in the input even though the output
result may be the same.
Write the @samp{@@alias} command on a line by itself, followed by the
new command name, an equals sign, and the existing command name.
Whitespace around the equals sign is ignored. Thus:
@example
@@alias @var{new} = @var{existing}
@end example
For example, if your document contains citations for both books and
some other media (movies, for example), you might like to define a
macro @code{@@moviecite@{@}} that does the same thing as an ordinary
@code{@@cite@{@}} but conveys the extra semantic information as well.
You'd do this as follows:
@example
@@alias moviecite = cite
@end example
Macros do not always have the same effect due to vagaries of argument
parsing. Also, aliases are much simpler to define than macros. So the
command is not redundant. (It was also heavily used in the Jargon File!)
Aliases must not be recursive, directly or indirectly.
@node definfoenclose
@section @samp{definfoenclose}: Customized Highlighting
@cindex Highlighting, customized
@cindex Customized highlighting
@findex definfoenclose
A @code{@@definfoenclose} command may be used to define a highlighting
command for Info, but not for TeX. A command defined using
@code{@@definfoenclose} marks text by enclosing it in strings that
precede and follow the text. You can use this to get closer control of
your Info output.
Presumably, if you define a command with @code{@@definfoenclose} for Info,
you will create a corresponding command for @TeX{}, either in
@file{texinfo.tex}, @file{texinfo.cnf}, or within an @samp{@@iftex} in
your document.
Write a @code{@@definfoenclose} command on a line and follow it with
three arguments separated by commas. The first argument to
@code{@@definfoenclose} is the @@-command name (without the @code{@@});
the second argument is the Info start delimiter string; and the third
argument is the Info end delimiter string. The latter two arguments
enclose the highlighted text in the Info file. A delimiter string may
contain spaces. Neither the start nor end delimiter is required. If
you do not want a start delimiter but do want an end delimiter, you must
follow the command name with two commas in a row; otherwise, the Info
formatting commands will naturally misinterpret the end delimiter string
you intended as the start delimiter string.
If you do a @code{@@definfoenclose} on the name of a pre-defined macro
(such as @code{@@emph}, @code{@@strong}, @code{@@t}, or @code{@@i}), the
enclosure definition will override the built-in definition.
An enclosure command defined this way takes one argument in braces; this
is intended for new markup commands (@pxref{Marking Text}).
@findex phoo
For example, you can write:
@example
@@definfoenclose phoo,//,\\
@end example
@noindent
near the beginning of a Texinfo file to define @code{@@phoo} as an Info
formatting command that inserts `//' before and `\\' after the argument
to @code{@@phoo}. You can then write @code{@@phoo@{bar@}} wherever you
want `//bar\\' highlighted in Info.
Also, for TeX formatting, you could write
@example
@@iftex
@@global@@let@@phoo=@@i
@@end iftex
@end example
@noindent
to define @code{@@phoo} as a command that causes TeX to typeset the
argument to @code{@@phoo} in italics.
Note that each definition applies to its own formatter: one for TeX,
the other for @code{texinfo-format-buffer} or
@code{texinfo-format-region}. The @code{@@definfoenclose} command need
not be within @samp{@@ifinfo}, but the raw @TeX{} commands do need to be
in @samp{@@iftex}.
@findex headword
Here is another example: write
@example
@@definfoenclose headword, , :
@end example
@noindent
near the beginning of the file, to define @code{@@headword} as an Info
formatting command that inserts nothing before and a colon after the
argument to @code{@@headword}.
@samp{@@definfoenclose} definitions must not be recursive, directly or
indirectly.
@node Hardcopy
@chapter Formatting and Printing Hardcopy
@cindex Format and print hardcopy
@cindex Printing hardcopy
@cindex Hardcopy, printing it
@cindex Making a printed manual
@cindex Sorting indices
@cindex Indices, sorting
@cindex @TeX{} index sorting
@pindex texindex
There are three major shell commands for making a printed manual from a
Texinfo file: one for converting the Texinfo file into a file that will be
printed, a second for sorting indices, and a third for printing the
formatted document. When you use the shell commands, you can either
work directly in the operating system shell or work within a shell
inside GNU Emacs.
If you are using GNU Emacs, you can use commands provided by Texinfo
mode instead of shell commands. In addition to the three commands to
format a file, sort the indices, and print the result, Texinfo mode
offers key bindings for commands to recenter the output buffer, show the
print queue, and delete a job from the print queue.
@menu
* Use TeX:: Use @TeX{} to format for hardcopy.
* Format with tex/texindex:: How to format with explicit shell commands.
* Format with texi2dvi:: A simpler way to format.
* Print with lpr:: How to print.
* Within Emacs:: How to format and print from an Emacs shell.
* Texinfo Mode Printing:: How to format and print in Texinfo mode.
* Compile-Command:: How to print using Emacs's compile command.
* Requirements Summary:: @TeX{} formatting requirements summary.
* Preparing for TeX:: What to do before you use @TeX{}.
* Overfull hboxes:: What are and what to do with overfull hboxes.
* smallbook:: How to print small format books and manuals.
* A4 Paper:: How to print on European A4 paper.
* pagesizes:: How to print with customized page sizes.
* Cropmarks and Magnification:: How to print marks to indicate the size
of pages and how to print scaled up output.
* PDF Output:: Portable Document Format output.
@end menu
@node Use TeX
@section Use @TeX{}
The typesetting program called @TeX{} is used for formatting a Texinfo
file. @TeX{} is a very powerful typesetting program and, if used correctly,
does an exceptionally good job. (@xref{Obtaining TeX, , How to Obtain
@TeX{}}, for information on how to obtain @TeX{}.)
The @code{makeinfo}, @code{texinfo-format-region}, and
@code{texinfo-format-buffer} commands read the very same @@-commands
in the Texinfo file as does @TeX{}, but process them differently to
make an Info file (@pxref{Creating an Info File}).
@node Format with tex/texindex
@section Format with @code{tex} and @code{texindex}
@cindex Shell formatting with @code{tex} and @code{texindex}
@cindex Formatting with @code{tex} and @code{texindex}
@cindex DVI file
Format the Texinfo file with the shell command @code{tex} followed by
the name of the Texinfo file. For example:
@example
tex foo.texi
@end example
@noindent @TeX{} will produce a @dfn{DVI file} as well as several auxiliary
files containing information for indices, cross references, etc. The
DVI file (for @dfn{DeVice Independent} file) can be printed on virtually
any device (see the following sections).
@pindex texindex
The @code{tex} formatting command itself does not sort the indices; it
writes an output file of unsorted index data. (The @code{texi2dvi}
command automatically generates indices; @pxref{Format with texi2dvi,,
Format with @code{texi2dvi}}.) To generate a printed index after
running the @code{tex} command, you first need a sorted index to work
from. The @code{texindex} command sorts indices. (The source file
@file{texindex.c} comes as part of the standard Texinfo distribution,
among other places.)@refill
@cindex Names of index files
@cindex Index file names
The @code{tex} formatting command outputs unsorted index files under
names that obey a standard convention: the name of your main input file
with any @samp{.tex} (or similar, @pxref{tex invocation,,, web2c,
Web2c}) extension removed, followed by the two letter names of indices.
For example, the raw index output files for the input file
@file{foo.texinfo} would be @file{foo.cp}, @file{foo.vr}, @file{foo.fn},
@file{foo.tp}, @file{foo.pg} and @file{foo.ky}. Those are exactly the
arguments to give to @code{texindex}.
@need 1000
@cindex Wildcards
@cindex Globbing
Instead of specifying all the unsorted index file names explicitly, you
can use @samp{??} as shell wildcards and give the command in this
form:
@example
texindex foo.??
@end example
@noindent
This command will run @code{texindex} on all the unsorted index files,
including any that you have defined yourself using @code{@@defindex}
or @code{@@defcodeindex}. (You may execute @samp{texindex foo.??}
even if there are similarly named files with two letter extensions
that are not index files, such as @samp{foo.el}. The @code{texindex}
command reports but otherwise ignores such files.)
For each file specified, @code{texindex} generates a sorted index file
whose name is made by appending @samp{s} to the input file name. The
@code{@@printindex} command looks for a file with that name
(@pxref{Printing Indices & Menus}). @code{texindex} does not alter the
raw index output file.
After you have sorted the indices, you need to rerun the @code{tex}
formatting command on the Texinfo file. This regenerates the DVI file,
this time with up-to-date index entries.
Finally, you may need to run @code{tex} one more time, to get the page
numbers in the cross-references correct.
To summarize, this is a five step process:
@enumerate
@item
Run @code{tex} on your Texinfo file. This generates a DVI file (with
undefined cross-references and no indices), and the raw index files
(with two letter extensions).
@item
Run @code{texindex} on the raw index files. This creates the
corresponding sorted index files (with three letter extensions).
@item
Run @code{tex} again on your Texinfo file. This regenerates the DVI
file, this time with indices and defined cross-references, but with page
numbers for the cross-references from last time, generally incorrect.
@item
Sort the indices again, with @code{texindex}.
@item
Run @code{tex} one last time. This time the correct page numbers are
written for the cross-references.
@end enumerate
@pindex texi2dvi
Alternatively, it's a one-step process: run @code{texi2dvi}
(@pxref{Format with texi2dvi}).
You need not run @code{texindex} each time after you run @code{tex}. If
you do not, on the next run, the @code{tex} formatting command will use
whatever sorted index files happen to exist from the previous use of
@code{texindex}. This is usually ok while you are debugging.
@cindex Auxiliary files, avoiding
@findex novalidate
@cindex Pointer validation, suppressing
@cindex Chapters, formatting one at a time
Sometimes you may wish to print a document while you know it is
incomplete, or to print just one chapter of a document. In that case,
the usual auxiliary files that @TeX{} creates and warnings @TeX{} gives
when cross-references are not satisfied are just nuisances. You can
avoid them with the @code{@@novalidate} command, which you must give
@emph{before} the @code{@@setfilename} command
(@pxref{setfilename,,@code{@@setfilename}}). Thus, the beginning of
your file would look approximately like this:
@example
\input texinfo
@@novalidate
@@setfilename myfile.info
@dots{}
@end example
@noindent @code{@@novalidate} also turns off validation in
@code{makeinfo}, just like its @code{--no-validate} option
(@pxref{Pointer Validation}).
@node Format with texi2dvi
@section Format with @code{texi2dvi}
@pindex texi2dvi @r{(shell script)}
The @code{texi2dvi} command automatically runs both @code{tex} and
@code{texindex} as many times as necessary to produce a DVI file with
sorted indices and all cross-references resolved. It simplifies the
@code{tex}---@code{texindex}---@code{tex}---@code{tex} sequence
described in the previous section.
To run @code{texi2dvi} on an input file @file{foo.texi}, do this (where
@samp{prompt$ } is your shell prompt):
@example
prompt$ @kbd{texi2dvi foo.texi}
@end example
As shown in this example, the input filenames to @code{texi2dvi} must
include any extension (@samp{.texi}, @samp{.texinfo}, etc.). Under
MS-DOS and perhaps in other circumstances, you may need to run @samp{sh
texi2dvi foo.texi} instead of relying on the operating system to invoke
the shell on the @samp{texi2dvi} script.
Perhaps the most useful option to @code{texi2dvi} is
@samp{--texinfo=@var{cmd}}. This inserts @var{cmd} on a line by itself
after the @code{@@setfilename} in a temporary copy of the input file
before running @TeX{}. With this, you can specify different printing
formats, such as @code{@@smallbook} (@pxref{smallbook}),
@code{@@afourpaper} (@pxref{A4 Paper}), or @code{@@pageparams}
(@pxref{pagesizes}), without actually changing the document source.
(You can also do this on a site-wide basis with @file{texinfo.cnf};
@pxref{Preparing for TeX,,Preparing for @TeX{}}).
For a list of other options, run @samp{texi2dvi --help}.
@node Print with lpr, Within Emacs, Format with texi2dvi, Hardcopy
@section Shell Print Using @code{lpr -d}
@pindex lpr @r{(DVI print command)}
The precise command to print a DVI file depends on your system
installation, but @samp{lpr -d} is common. The command may require the
DVI file name without any extension or with a @samp{.dvi}
extension. (If it is @samp{lpr}, you must include the @samp{.dvi}.)
For example, the following commands, will (perhaps) suffice to sort the
indices, format, and print the @cite{Bison Manual}:
@example
@group
tex bison.texinfo
texindex bison.??
tex bison.texinfo
lpr -d bison.dvi
@end group
@end example
@noindent
(Remember that the shell commands may be different at your site; but
these are commonly used versions.)@refill
@need 1000
Using the @code{texi2dvi} shell script, you simply need type:@refill
@example
@group
texi2dvi bison.texinfo
lpr -d bison.dvi
@end group
@end example
@cindex Shell printing, on MS-DOS/MS-Windows
@cindex Printing DVI files, on MS-DOS/MS-Windows
@pindex lpr@r{-d, replacements on MS-DOS/MS-Windows}
@code{lpr} is a standard program on Unix systems, but it is usually
absent on MS-DOS/MS-Windows. Some network packages come with a
program named @code{lpr}, but these are usually limited to sending files
to a print server over the network, and generally don't support the
@samp{-d} option. If you are unfortunate enough to work on one of these
systems, you have several alternative ways of printing DVI files:
@itemize @bullet{}
@item Find and install a Unix-like @code{lpr} program, or its clone.
If you can do that, you will be able to print DVI files just like
described above.
@item Send the DVI files to a network printer queue for DVI files.
Some network printers have special queues for printing DVI files. You
should be able to set up your network software to send files to that
queue. In some cases, the version of @code{lpr} which comes with your
network software will have a special option to send a file to specific
queues, like this:
@example
lpr -Qdvi -hprint.server.domain bison.dvi
@end example
@item Convert the DVI file to a Postscript or PCL file and send it to your
local printer. @xref{dvips invocation,,, dvips, Dvips}, and the man
pages for @code{dvilj}, for detailed description of these tools. Once
the DVI file is converted to the format your local printer understands
directly, just send it to the appropriate port, usually @samp{PRN}.
@end itemize
@node Within Emacs
@section From an Emacs Shell
@cindex Print, format from Emacs shell
@cindex Format, print from Emacs shell
@cindex Shell, format, print from
@cindex Emacs shell, format, print from
@cindex GNU Emacs shell, format, print from
You can give formatting and printing commands from a shell within GNU
Emacs. To create a shell within Emacs, type @kbd{M-x shell}. In this
shell, you can format and print the document. @xref{Hardcopy, , Format
and Print Hardcopy}, for details.
You can switch to and from the shell buffer while @code{tex} is
running and do other editing. If you are formatting a long document
on a slow machine, this can be very convenient.@refill
You can also use @code{texi2dvi} from an Emacs shell. For example,
here is how to use @code{texi2dvi} to format and print @cite{Using and
Porting GNU CC} from a shell within Emacs:
@example
@group
texi2dvi gcc.texinfo
lpr -d gcc.dvi
@end group
@end example
@ifinfo
@xref{Texinfo Mode Printing}, for more information about formatting
and printing in Texinfo mode.@refill
@end ifinfo
@node Texinfo Mode Printing, Compile-Command, Within Emacs, Hardcopy
@section Formatting and Printing in Texinfo Mode
@cindex Region printing in Texinfo mode
@cindex Format and print in Texinfo mode
@cindex Print and format in Texinfo mode
Texinfo mode provides several predefined key commands for @TeX{}
formatting and printing. These include commands for sorting indices,
looking at the printer queue, killing the formatting job, and
recentering the display of the buffer in which the operations
occur.@refill
@table @kbd
@item C-c C-t C-b
@itemx M-x texinfo-tex-buffer
Run @code{texi2dvi} on the current buffer.@refill
@item C-c C-t C-r
@itemx M-x texinfo-tex-region
Run @TeX{} on the current region.@refill
@item C-c C-t C-i
@itemx M-x texinfo-texindex
Sort the indices of a Texinfo file formatted with
@code{texinfo-tex-region}.@refill
@item C-c C-t C-p
@itemx M-x texinfo-tex-print
Print a DVI file that was made with @code{texinfo-tex-region} or
@code{texinfo-tex-buffer}.@refill
@item C-c C-t C-q
@itemx M-x tex-show-print-queue
Show the print queue.@refill
@item C-c C-t C-d
@itemx M-x texinfo-delete-from-print-queue
Delete a job from the print queue; you will be prompted for the job
number shown by a preceding @kbd{C-c C-t C-q} command
(@code{texinfo-show-tex-print-queue}).@refill
@item C-c C-t C-k
@itemx M-x tex-kill-job
Kill the currently running @TeX{} job started by either
@code{texinfo-tex-region} or @code{texinfo-tex-buffer}, or any other
process running in the Texinfo shell buffer.@refill
@item C-c C-t C-x
@itemx M-x texinfo-quit-job
Quit a @TeX{} formatting job that has stopped because of an error by
sending an @key{x} to it. When you do this, @TeX{} preserves a record
of what it did in a @file{.log} file.@refill
@item C-c C-t C-l
@itemx M-x tex-recenter-output-buffer
Redisplay the shell buffer in which the @TeX{} printing and formatting
commands are run to show its most recent output.@refill
@end table
@need 1000
Thus, the usual sequence of commands for formatting a buffer is as
follows (with comments to the right):@refill
@example
@group
C-c C-t C-b @r{Run @code{texi2dvi} on the buffer.}
C-c C-t C-p @r{Print the DVI file.}
C-c C-t C-q @r{Display the printer queue.}
@end group
@end example
The Texinfo mode @TeX{} formatting commands start a subshell in Emacs
called the @file{*tex-shell*}. The @code{texinfo-tex-command},
@code{texinfo-texindex-command}, and @code{tex-dvi-print-command}
commands are all run in this shell.
You can watch the commands operate in the @samp{*tex-shell*} buffer,
and you can switch to and from and use the @samp{*tex-shell*} buffer
as you would any other shell buffer.@refill
@need 1500
The formatting and print commands depend on the values of several variables.
The default values are:@refill
@example
@group
@r{Variable} @r{Default value}
texinfo-texi2dvi-command "texi2dvi"
texinfo-tex-command "tex"
texinfo-texindex-command "texindex"
texinfo-delete-from-print-queue-command "lprm"
texinfo-tex-trailer "@@bye"
tex-start-of-header "%**start"
tex-end-of-header "%**end"
tex-dvi-print-command "lpr -d"
tex-show-queue-command "lpq"
@end group
@end example
You can change the values of these variables with the @kbd{M-x
edit-options} command (@pxref{Edit Options, , Editing Variable Values,
emacs, The GNU Emacs Manual}), with the @kbd{M-x set-variable} command
(@pxref{Examining, , Examining and Setting Variables, emacs, The GNU
Emacs Manual}), or with your @file{.emacs} initialization file
(@pxref{Init File, , , emacs, The GNU Emacs Manual}).@refill
@cindex Customize Emacs package
@findex Development/Docs/Texinfo Customize group
Beginning with version 20, GNU Emacs offers a user-friendly interface,
called @dfn{Customize}, for changing values of user-definable variables.
@xref{Easy Customization, , Easy Customization Interface, emacs, The GNU
Emacs Manual}, for more details about this. The Texinfo variables can
be found in the @samp{Development/Docs/Texinfo} group, once you invoke
the @kbd{M-x customize} command.
@node Compile-Command, Requirements Summary, Texinfo Mode Printing, Hardcopy
@section Using the Local Variables List
@cindex Local variables
@cindex Compile command for formatting
@cindex Format with the compile command
Yet another way to apply the @TeX{} formatting command to a Texinfo file
is to put that command in a @dfn{local variables list} at the end of the
Texinfo file. You can then specify the @code{tex} or @code{texi2dvi}
commands as a @code{compile-command} and have Emacs run it by typing
@kbd{M-x compile}. This creates a special shell called the
@file{*compilation*} buffer in which Emacs runs the compile command.
For example, at the end of the @file{gdb.texinfo} file, after the
@code{@@bye}, you could put the following:@refill
@example
@group
Local Variables:
compile-command: "texi2dvi gdb.texinfo"
End:
@end group
@end example
@noindent
This technique is most often used by programmers who also compile programs
this way; see @ref{Compilation, , , emacs, The GNU Emacs Manual}.@refill
@node Requirements Summary
@section @TeX{} Formatting Requirements Summary
@cindex Requirements for formatting
@cindex Minimal requirements for formatting
@cindex Formatting requirements
Every Texinfo file that is to be input to @TeX{} must begin with a
@code{\input} command and must contain an @code{@@setfilename} command:
@example
\input texinfo
@@setfilename @var{arg-not-used-by-@TeX{}}
@end example
@noindent
The first command instructs @TeX{} to load the macros it needs to
process a Texinfo file and the second command opens auxiliary files.
Every Texinfo file must end with a line that terminates @TeX{}'s
processing and forces out unfinished pages:
@example
@@bye
@end example
Strictly speaking, these lines are all a Texinfo file needs to be
processed successfully by @TeX{}.
Usually, however, the beginning includes an @code{@@settitle} command to
define the title of the printed manual, an @code{@@setchapternewpage}
command, a title page, a copyright page, and permissions. Besides an
@code{@@bye}, the end of a file usually includes indices and a table of
contents. (And of course most manuals contain a body of text as well.)
For more information, see:
@itemize @bullet
@item @ref{settitle, , @code{@@settitle}}
@item @ref{setchapternewpage, , @code{@@setchapternewpage}}
@item @ref{Headings, ,Page Headings}
@item @ref{Titlepage & Copyright Page}
@item @ref{Printing Indices & Menus}
@item @ref{Contents}
@end itemize
@node Preparing for TeX
@section Preparing for @TeX{}
@cindex Preparing for @TeX{}
@cindex @TeX{} input initialization
@cindex @code{TEXINPUTS} environment variable
@vindex TEXINPUTS
@cindex @b{.profile} initialization file
@cindex @b{.cshrc} initialization file
@cindex Initialization file for @TeX{} input
@TeX{} needs to know where to find the @file{texinfo.tex} file that you
have told it to input with the @samp{\input texinfo} command at the
beginning of the first line. The @file{texinfo.tex} file tells @TeX{}
how to handle @@-commands; it is included in all standard GNU
distributions.
@pindex texinfo.tex@r{, installing}
Usually, the @file{texinfo.tex} file is put under the default directory
that contains @TeX{} macros
(@file{/usr/local/share/texmf/tex/texinfo/texinfo.tex} by default) when
GNU Emacs or other GNU software is installed. In this case, @TeX{} will
find the file and you do not need to do anything special.
Alternatively, you can put @file{texinfo.tex} in the current directory
when you run @TeX{}, and @TeX{} will find it there.
@pindex epsf.tex@r{, installing}
Also, you should install @file{epsf.tex} in the same place as
@file{texinfo.tex}, if it is not already installed from another
distribution. This file is needed to support the @code{@@image} command
(@pxref{Images}).
@pindex texinfo.cnf @r{installation}
@cindex Customizing of @TeX{} for Texinfo
@cindex Site-wide Texinfo configuration file
Optionally, you may create an additional @file{texinfo.cnf}, and install
it as well. This file is read by @TeX{} when the @code{@@setfilename}
command is executed (@pxref{setfilename,, @code{@@setfilename}}). You can put any
commands you like there, according to local site-wide conventions. They
will be read by @TeX{} when processing any Texinfo document. For
example, if @file{texinfo.cnf} contains the line @samp{@@afourpaper}
(@pxref{A4 Paper}), then all Texinfo documents will be processed with
that page size in effect. If you have nothing to put in
@file{texinfo.cnf}, you do not need to create it.
@vindex TEXINPUTS
If neither of the above locations for these system files suffice for
you, you can specify the directories explicitly. For
@file{texinfo.tex}, you can do this by writing the complete path for the
file after the @code{\input} command. Another way, that works for both
@file{texinfo.tex} and @file{texinfo.cnf} (and any other file @TeX{}
might read), is to set the @code{TEXINPUTS} environment variable in your
@file{.cshrc} or @file{.profile} file.
Which you use of @file{.cshrc} or @file{.profile} depends on
whether you use a Bourne shell-compatible (@code{sh}, @code{bash},
@code{ksh}, @dots{}) or C shell-compatible (@code{csh}, @code{tcsh})
command interpreter. The latter read the @file{.cshrc} file for
initialization information, and the former read @file{.profile}.
In a @file{.cshrc} file, you could use the following @code{csh} command
sequence:
@example
setenv TEXINPUTS .:/home/me/mylib:/usr/lib/tex/macros
@end example
@need 1000
In a @file{.profile} file, you could use the following @code{sh} command
sequence:
@example
@group
TEXINPUTS=.:/home/me/mylib:/usr/lib/tex/macros
export TEXINPUTS
@end group
@end example
On MS-DOS/MS-Windows, you would say it like this@footnote{Note the use
of the @samp{;} character, instead of @samp{:}, as directory separator
on these systems.}:
@example
@group
set TEXINPUTS=.;d:/home/me/mylib;c:/usr/lib/tex/macros
@end group
@end example
@noindent
It is customary for DOS/Windows users to put such commands in the
@file{autoexec.bat} file, or in the Windows Registry.@refill
@noindent
These settings would cause @TeX{} to look for @file{\input} file first
in the current directory, indicated by the @samp{.}, then in a
hypothetical user's @file{me/mylib} directory, and finally in a system
directory @file{/usr/lib/tex/macros}.
@cindex Dumping a .fmt file
@cindex Format file, dumping
Finally, you may wish to dump a @file{.fmt} file (@pxref{Memory dumps,,,
web2c, Web2c}) so that @TeX{} can load Texinfo faster. (The
disadvantage is that then updating @file{texinfo.tex} requires
redumping.) You can do this by running this command, assuming
@file{epsf.tex} is findable by @TeX{}:
@example
initex texinfo @@dump
@end example
(@code{@@dump} is a @TeX{} primitive.) You'll then need to move
@file{texinfo.fmt} to wherever your @code{.fmt} files are found;
typically this will be in the subdirectory @file{web2c} of your @TeX{}
installation, for example, @file{/usr/local/share/tex/web2c}.
@node Overfull hboxes
@section Overfull ``hboxes''
@cindex Overfull @samp{hboxes}
@cindex @samp{hboxes}, overfull
@cindex Final output
@TeX{} is sometimes unable to typeset a line without extending it into
the right margin. This can occur when @TeX{} comes upon what it
interprets as a long word that it cannot hyphenate, such as an
electronic mail network address or a very long title. When this
happens, @TeX{} prints an error message like this:
@example
Overfull @@hbox (20.76302pt too wide)
@end example
@findex hbox
@noindent
(In @TeX{}, lines are in ``horizontal boxes'', hence the term, ``hbox''.
@samp{@@hbox} is a @TeX{} primitive not needed in the Texinfo language.)
@TeX{} also provides the line number in the Texinfo source file and
the text of the offending line, which is marked at all the places that
@TeX{} considered hyphenation.
@xref{Debugging with TeX, , Catching Errors with @TeX{} Formatting},
for more information about typesetting errors.
If the Texinfo file has an overfull hbox, you can rewrite the sentence
so the overfull hbox does not occur, or you can decide to leave it. A
small excursion into the right margin often does not matter and may not
even be noticeable.
If you have many overfull boxes and/or an antipathy to rewriting, you
can coerce @TeX{} into greatly increasing the allowable interword
spacing, thus (if you're lucky) avoiding many of the bad line breaks,
like this:
@findex \emergencystretch
@example
@@tex
\global\emergencystretch = .9\hsize
@@end tex
@end example
@noindent
(You can adjust the fraction as needed.) This huge value for
@code{\emergencystretch} cannot be the default, since then the typeset
output would generally be of noticeably lower quality. The default
value is @samp{.15\hsize}. @code{\hsize} is the @TeX{} dimension
containing the current line width.
@cindex Black rectangle in hardcopy
@cindex Rectangle, black in hardcopy
@cindex Box, ugly black in hardcopy
@cindex Ugly black rectangles in hardcopy
For what overfull boxes you have, however, @TeX{} will print a large,
ugly, black rectangle beside the line that contains the overfull hbox
unless told otherwise. This is so you will notice the location of the
problem if you are correcting a draft.
@findex finalout
To prevent such a monstrosity from marring your final printout, write
the following in the beginning of the Texinfo file on a line of its own,
before the @code{@@titlepage} command:
@example
@@finalout
@end example
@node smallbook
@section Printing ``Small'' Books
@findex smallbook
@cindex Small book size
@cindex Book, printing small
@cindex Page sizes for books
@cindex Size of printed book
By default, @TeX{} typesets pages for printing in an 8.5 by 11 inch
format. However, you can direct @TeX{} to typeset a document in a 7 by
9.25 inch format that is suitable for bound books by inserting the
following command on a line by itself at the beginning of the Texinfo
file, before the title page:@refill
@example
@@smallbook
@end example
@noindent
(Since many books are about 7 by 9.25 inches, this command might better
have been called the @code{@@regularbooksize} command, but it came to be
called the @code{@@smallbook} command by comparison to the 8.5 by 11 inch format.)
If you write the @code{@@smallbook} command between the
start-of-header and end-of-header lines, the Texinfo mode @TeX{}
region formatting command, @code{texinfo-tex-region}, will format the
region in ``small'' book size (@pxref{Start of Header}).@refill
@xref{small}, for information about
commands that make it easier to produce examples for a smaller manual.
@xref{Format with texi2dvi}, and @ref{Preparing for TeX,,Preparing for
@TeX{}}, for other ways to format with @code{@@smallbook} that do not
require changing the source file.
@node A4 Paper
@section Printing on A4 Paper
@cindex A4 paper, printing on
@cindex Paper size, European A4
@cindex European A4 paper
@findex afourpaper
You can tell @TeX{} to format a document for printing on European size
A4 paper with the @code{@@afourpaper} command. Write the command on a
line by itself near the beginning of the Texinfo file, before the title
page. For example, this is how you would write the header for this
manual:
@example
@group
\input texinfo @@c -*-texinfo-*-
@@c %**start of header
@@setfilename texinfo
@@settitle Texinfo
@@afourpaper
@@c %**end of header
@end group
@end example
@xref{Format with texi2dvi}, and @ref{Preparing for TeX,,Preparing for
@TeX{}}, for other ways to format with @code{@@afourpaper} that do not
require changing the source file.
@findex afourlatex
You may or may not prefer the formatting that results from the command
@code{@@afourlatex}. There's also @code{@@afourwide} for A4 paper in
wide format.
@node pagesizes
@section @code{@@pagesizes} [@var{width}][, @var{height}]: Custom page sizes
@findex pagesizes
@cindex Custom page sizes
@cindex Page sizes, customized
@cindex Text width and height
@cindex Width of text area
@cindex Height of text area
@cindex Depth of text area
You can explicitly specify the height and (optionally) width of the main
text area on the page with the @code{@@pagesizes} command. Write this
on a line by itself near the beginning of the Texinfo file, before the
title page. The height comes first, then the width if desired,
separated by a comma. Examples:
@example
@@pagesizes 200mm,150mm @c for b5 paper
@end example
@noindent and
@example
@@pagesizes 11.5in @c for legal paper
@end example
@cindex B5 paper, printing on
@cindex Legal paper, printing on
This would be reasonable for printing on B5-size paper. To emphasize,
this command specifies the size of the @emph{text area}, not the size of
the paper (which is 250@dmn{mm} by 177@dmn{mm} for B5, 14@dmn{in} by
8.5@dmn{in} for legal).
@cindex Margins on page, not controllable
To make more elaborate changes, such as changing any of the page
margins, you must define a new command in @file{texinfo.tex} (or
@file{texinfo.cnf}, @pxref{Preparing for TeX,,Preparing for @TeX{}}).
@xref{Format with texi2dvi}, and @ref{Preparing for TeX,,Preparing for
@TeX{}}, for other ways to specify @code{@@pagesizes} that do not
require changing the source file.
@code{@@pagesizes} is ignored by @code{makeinfo}.
@node Cropmarks and Magnification
@section Cropmarks and Magnification
@findex cropmarks
@cindex Cropmarks for printing
@cindex Printing cropmarks
You can (attempt to) direct @TeX{} to print cropmarks at the corners of
pages with the @code{@@cropmarks} command. Write the @code{@@cropmarks}
command on a line by itself between @code{@@iftex} and @code{@@end
iftex} lines near the beginning of the Texinfo file, before the title
page, like this:@refill
@example
@group
@@iftex
@@cropmarks
@@end iftex
@end group
@end example
This command is mainly for printers that typeset several pages on one
sheet of film; but you can attempt to use it to mark the corners of a
book set to 7 by 9.25 inches with the @code{@@smallbook} command.
(Printers will not produce cropmarks for regular sized output that is
printed on regular sized paper.) Since different printing machines work
in different ways, you should explore the use of this command with a
spirit of adventure. You may have to redefine the command in
@file{texinfo.tex}.
@findex mag @r{(@TeX{} command)}
@cindex Magnified printing
@cindex Larger or smaller pages
You can attempt to direct @TeX{} to typeset pages larger or smaller than
usual with the @code{\mag} @TeX{} command. Everything that is typeset
is scaled proportionally larger or smaller. (@code{\mag} stands for
``magnification''.) This is @emph{not} a Texinfo @@-command, but is a
plain @TeX{} command that is prefixed with a backslash. You have to
write this command between @code{@@tex} and @code{@@end tex}
(@pxref{Raw Formatter Commands}).
Follow the @code{\mag} command with an @samp{=} and then a number that
is 1000 times the magnification you desire. For example, to print pages
at 1.2 normal size, write the following near the beginning of the
Texinfo file, before the title page:
@example
@group
@@tex
\mag=1200
@@end tex
@end group
@end example
With some printing technologies, you can print normal-sized copies that
look better than usual by giving a larger-than-normal master to your
print shop. They do the reduction, thus effectively increasing the
resolution.
Depending on your system, DVI files prepared with a
nonstandard-@code{\mag} may not print or may print only with certain
magnifications. Be prepared to experiment.
@node PDF Output
@section PDF Output
@cindex PDF output
@pindex pdftex
You can generate a PDF output file from Texinfo source by using the
@command{pdftex} program to process your file instead of plain
@command{tex}. Just run @samp{pdftex foo.texi} instead of @samp{tex
foo.texi}, or give the @samp{--pdf} option to @command{texi2dvi}.
PDF stands for Portable Document Format, and was invented by Adobe
Systems. The
@uref{http://www.adobe.com/prodindex/acrobat/adobepdf.html, file format
definition} is freely available, as is a
@uref{http://www.foolabs.com/xpdf/, free viewer} for the X window
system. Since PDF is a binary format, there is no @samp{@@ifpdf} or
@samp{@@pdf} command by analogy with the other output formats.
Despite the `portable' in the name, PDF files are nowhere near as
portable in practice as the plain ASCII formats (Info, HTML) Texinfo
also supports (portability relative to DVI is arguable). They also tend
to be much larger and do not support the bitmap fonts used by @TeX{} (by
default) very well. Nevertheless, a PDF file does preserve an actual
printed document on a screen as faithfully as possible, unlike HTML,
say, so have their place.
PDF support in Texinfo is fairly rudimentary.
@node Creating and Installing Info Files
@chapter Creating and Installing Info Files
This chapter describes how to create and install info files. @xref{Info
Files}, for general information about the file format itself.
@menu
* Creating an Info File::
* Install an Info File::
@end menu
@node Creating an Info File
@section Creating an Info File
@cindex Creating an Info file
@cindex Info, creating an online file
@cindex Formatting a file for Info
@code{makeinfo} is a program that converts a Texinfo file into an Info
file, HTML file, or plain text. @code{texinfo-format-region} and
@code{texinfo-format-buffer} are GNU Emacs functions that convert
Texinfo to Info.
For information on installing the Info file in the Info system,
@pxref{Install an Info File}.
@menu
* makeinfo advantages:: @code{makeinfo} provides better error checking.
* Invoking makeinfo:: How to run @code{makeinfo} from a shell.
* makeinfo options:: Specify fill-column and other options.
* Pointer Validation:: How to check that pointers point somewhere.
* makeinfo in Emacs:: How to run @code{makeinfo} from Emacs.
* texinfo-format commands:: Two Info formatting commands written
in Emacs Lisp are an alternative
to @code{makeinfo}.
* Batch Formatting:: How to format for Info in Emacs Batch mode.
* Tag and Split Files:: How tagged and split files help Info
to run better.
* makeinfo html:: Generating HTML output.
@end menu
@node makeinfo advantages
@subsection @code{makeinfo} Preferred
The @code{makeinfo} utility creates an Info file from a Texinfo source
file more quickly than either of the Emacs formatting commands and
provides better error messages. We recommend it. @code{makeinfo} is a
C program that is independent of Emacs. You do not need to run Emacs to
use @code{makeinfo}, which means you can use @code{makeinfo} on machines
that are too small to run Emacs. You can run @code{makeinfo} in any one
of three ways: from an operating system shell, from a shell inside
Emacs, or by typing the @kbd{C-c C-m C-r} or the @kbd{C-c C-m C-b}
command in Texinfo mode in Emacs.
@refill
The @code{texinfo-format-region} and the @code{texinfo-format-buffer}
commands are useful if you cannot run @code{makeinfo}. Also, in some
circumstances, they format short regions or buffers more quickly than
@code{makeinfo}.@refill
@node Invoking makeinfo
@subsection Running @code{makeinfo} from a Shell
To create an Info file from a Texinfo file, type @code{makeinfo}
followed by the name of the Texinfo file. Thus, to create the Info
file for Bison, type the following to the shell:
@example
makeinfo bison.texinfo
@end example
(You can run a shell inside Emacs by typing @kbd{M-x shell}.)@refill
@ifinfo
Sometimes you will want to specify options. For example, if you wish
to discover which version of @code{makeinfo} you are using,
type:@refill
@example
makeinfo --version
@end example
@xref{makeinfo options}, for more information.
@end ifinfo
@node makeinfo options
@comment node-name, next, previous, up
@subsection Options for @code{makeinfo}
@cindex @code{makeinfo} options
@cindex Options for @code{makeinfo}
The @code{makeinfo} command takes a number of options. Most often,
options are used to set the value of the fill column and specify the
footnote style. Each command line option is a word preceded by
@samp{--} or a letter preceded by @samp{-}. You can use abbreviations
for the long option names as long as they are unique.@refill
For example, you could use the following shell command to create an Info
file for @file{bison.texinfo} in which each line is filled to only 68
columns:@refill
@example
makeinfo --fill-column=68 bison.texinfo
@end example
You can write two or more options in sequence, like this:@refill
@example
makeinfo --no-split --fill-column=70 @dots{}
@end example
@noindent
This would keep the Info file together as one possibly very long
file and would also set the fill column to 70.@refill
The options are:
@table @code
@item -D @var{var}
@opindex -D @var{var}
Cause the variable @var{var} to be defined. This is equivalent to
@code{@@set @var{var}} in the Texinfo file (@pxref{set clear value}).
@item --commands-in-node-names
@opindex --commands-in-node-names
Allow @code{@@}-commands in node names. This is not recommended, as it
can probably never be implemented in @TeX{}. It also makes
@code{makeinfo} much slower. Also, this option is ignored when
@samp{--no-validate} is used. @xref{Pointer Validation}, for more
details.
@item --error-limit=@var{limit}
@itemx -e @var{limit}
@opindex --error-limit=@var{limit}
@opindex -e @var{limit}
Set the maximum number of errors that @code{makeinfo} will report
before exiting (on the assumption that continuing would be useless);
default 100.
@item --fill-column=@var{width}
@itemx -f @var{width}
@opindex --fill-column=@var{width}
@opindex -f @var{width}
Specify the maximum number of columns in a line; this is the right-hand
edge of a line. Paragraphs that are filled will be filled to this
width. (Filling is the process of breaking up and connecting lines so
that lines are the same length as or shorter than the number specified
as the fill column. Lines are broken between words.) The default value
is 72. Ignored with @samp{--html}.
@item --footnote-style=@var{style}
@itemx -s @var{style}
@opindex --footnote-style=@var{style}
@opindex -s @var{style}
Set the footnote style to @var{style}, either @samp{end} for the end
node style (the default) or @samp{separate} for the separate node style.
The value set by this option overrides the value set in a Texinfo file
by an @code{@@footnotestyle} command (@pxref{Footnotes}). When the
footnote style is @samp{separate}, @code{makeinfo} makes a new node
containing the footnotes found in the current node. When the footnote
style is @samp{end}, @code{makeinfo} places the footnote references at
the end of the current node. Ignored with @samp{--html}.
@item --force
@itemx -F
@opindex --force
@opindex -F
Ordinarily, if the input file has errors, the output files are not
created. With this option, they are preserved.
@item --help
@itemx -h
@opindex --help
@opindex -h
Print a usage message listing all available options, then exit successfully.
@item --html
Generate HTML output rather than Info. @xref{makeinfo html}.
@item -I @var{dir}
@opindex -I @var{dir}
Append @var{dir} to the directory search list for finding files that
are included using the @code{@@include} command. By default,
@code{makeinfo} searches only the current directory. If @var{dir} is
not given, the current directory @file{.} is appended. Note that
@var{dir} can actually be a list of several directories separated by the
usual path separator character (@samp{:} on Unix, @samp{;} on
MS-DOS/MS-Windows).
@item --macro-expand=@var{file}
@itemx -E @var{file}
Output the Texinfo source with all the macros expanded to the named
file. Normally, the results of macro expansion are used internally by
@code{makeinfo} and then discarded. This option is used by
@command{texi2dvi} if you are using an old version of @file{texinfo.tex}
that does not support @code{@@macro}.
@item --no-headers
@opindex --no-headers
@cindex Plain text output
@cindex ASCII text output
@cindex Generating plain text files
@cindex @file{INSTALL} file, generating
For Info output, do not include menus or node lines in the output and
write to standard output (unless @option{--output} is specified). This
results in an @sc{ascii} file that you cannot read in Info since it does
not contain the requisite nodes or menus. It is primarily useful to
extract certain pieces of a manual into separate files to be included in
a distribution, such as @file{INSTALL} files.
@cindex Navigation links, omitting
For HTML output, if @samp{--no-split} is also specified, do not include a
navigation links at the top of each node. @xref{makeinfo html}.
@item --no-split
@opindex --no-split
@cindex Splitting of output files
@cindex Output file splitting
Suppress the splitting stage of @code{makeinfo}. By default, large
output files (where the size is greater than 70k bytes) are split into
smaller subfiles. For Info output, each one is approximately 50k bytes.
For HTML output, each file contains one node (@pxref{makeinfo html}).
@item --no-pointer-validate
@itemx --no-validate
@opindex --no-pointer-validate
@opindex --no-validate
@cindex Pointer validation, suppressing
Suppress the pointer-validation phase of @code{makeinfo}. This can also
be done with the @code{@@novalidate} command (@pxref{Use TeX,,Use
@TeX{}}). Normally, after a Texinfo file is processed, some consistency
checks are made to ensure that cross references can be resolved, etc.
@xref{Pointer Validation}.
@item --no-warn
@opindex --no-warn
Suppress warning messages (but @emph{not} error messages). You might
want this if the file you are creating has examples of Texinfo cross
references within it, and the nodes that are referenced do not actually
exist.
@item --number-sections
@opindex --number-sections
Output chapter, section, and appendix numbers as in printed manuals.
@item --no-number-footnotes
@opindex --no-number-footnotes
Suppress automatic footnote numbering. By default, @code{makeinfo}
numbers each footnote sequentially in a single node, resetting the
current footnote number to 1 at the start of each node.
@item --output=@var{file}
@itemx -o @var{file}
@opindex --output=@var{file}
@opindex -o @var{file}
Specify that the output should be directed to @var{file} and not to the
file name specified in the @code{@@setfilename} command found in the
Texinfo source (@pxref{setfilename}). If @var{file} is @samp{-}, output
goes to standard output and @samp{--no-split} is implied. For split
HTML output, @var{file} is the name of the output file for the top node
(@pxref{makeinfo html}).
@item -P @var{dir}
@opindex -P @var{dir}
Prepend @var{dir} to the directory search list for @code{@@include}.
If @var{dir} is not given, the current directory @file{.} is prepended.
See @samp{-I} for more details.
@item --paragraph-indent=@var{indent}
@itemx -p @var{indent}
@opindex --paragraph-indent=@var{indent}
@opindex -p @var{indent}
Set the paragraph indentation style to @var{indent}. The value set by
this option overrides the value set in a Texinfo file by an
@code{@@paragraphindent} command (@pxref{paragraphindent}). The value
of @var{indent} is interpreted as follows:
@table @asis
@item @samp{asis}
Preserve any existing indentation at the starts of paragraphs.
@item @samp{0} or @samp{none}
Delete any existing indentation.
@item @var{num}
Indent each paragraph by @var{num} spaces.
@end table
@item --reference-limit=@var{limit}
@itemx -r @var{limit}
@opindex --reference-limit=@var{limit}
@opindex -r @var{limit}
Set the value of the number of references to a node that
@code{makeinfo} will make without reporting a warning. If a node has more
than this number of references in it, @code{makeinfo} will make the
references but also report a warning. The default is 1000.
@item -U @var{var}
Cause @var{var} to be undefined. This is equivalent to
@code{@@clear @var{var}} in the Texinfo file (@pxref{set clear value}).
@item --verbose
@opindex --verbose
Cause @code{makeinfo} to display messages saying what it is doing.
Normally, @code{makeinfo} only outputs messages if there are errors or
warnings.
@item --version
@itemx -V
@opindex --version
@opindex -V
Print the version number, then exit successfully.
@end table
@node Pointer Validation
@subsection Pointer Validation
@cindex Pointer validation with @code{makeinfo}
@cindex Validation of pointers
If you do not suppress pointer validation with the @samp{--no-validate}
option or the @code{@@novalidate} command in the source file (@pxref{Use
TeX,,Use @TeX{}}), @code{makeinfo} will check the validity of the final
Info file. Mostly, this means ensuring that nodes you have referenced
really exist. Here is a complete list of what is checked:
@enumerate
@item
If a `Next', `Previous', or `Up' node reference is a reference to a
node in the current file and is not an external reference such as to
@file{(dir)}, then the referenced node must exist.@refill
@item
In every node, if the `Previous' node is different from the `Up' node,
then the node pointed to by the `Previous' field must have a `Next'
field which points back to this node.@refill
@item
Every node except the `Top' node must have an `Up' pointer.@refill
@item
The node referenced by an `Up' pointer must itself reference the current
node through a menu item, unless the node referenced by `Up'
has the form `(@var{file})'.
@item
If the `Next' reference of a node is not the same as the `Next' reference
of the `Up' reference, then the node referenced by the `Next' pointer
must have a `Previous' pointer that points back to the current node.
This rule allows the last node in a section to point to the first node
of the next chapter.@refill
@item
Every node except `Top' should be referenced by at least one other node,
either via the `Previous' or `Next' links, or via a menu or a
cross-reference.@refill
@end enumerate
@cindex @@-commands in @@node, limited support
Some Texinfo documents might fail during the validation phase because
they use commands like @code{@@value} and @code{@@definfoenclose} in
node definitions and cross-references inconsistently. Consider the
following example:
@example
@group
@@set nodename Node 1
@@node @@value@{nodename@}, Node 2, Top, Top
This is node 1.
@@node Node 2, , Node 1, Top
This is node 2.
@end group
@end example
@noindent
Here, the node ``Node 1'' was referenced both verbatim and through
@code{@@value}.
By default, @code{makeinfo} fails such cases, because node names are not
fully expanded until they are written to the output file. You should
always try to reference nodes consistently; e.g., in the above example,
the second @code{@@node} line should have also used @code{@@value}.
However, if, for some reason, you @emph{must} reference node names
inconsistently, and @code{makeinfo} fails to validate the file, you can
use the @samp{--commands-in-node-names} option to force @code{makeinfo}
to perform the expensive expansion of all node names it finds in the
document. This might considerably slow down the program, though;
twofold increase in conversion time was measured for large documents
such as the Jargon file.
@cindex @@value in @@node lines
The support for @code{@@}-commands in @code{@@node} directives is not
general enough to be freely used. For example, if the example above
redefined @code{nodename} somewhere in the document, @code{makeinfo}
will fail to convert it, even if invoked with the
@samp{--commands-in-node-names} option.
@samp{--commands-in-node-names} has no effect if the @samp{--no-validate}
option is given.
@node makeinfo in Emacs
@subsection Running @code{makeinfo} inside Emacs
@cindex Running @code{makeinfo} in Emacs
@cindex @code{makeinfo} inside Emacs
@cindex Shell, running @code{makeinfo} in
You can run @code{makeinfo} in GNU Emacs Texinfo mode by using either the
@code{makeinfo-region} or the @code{makeinfo-buffer} commands. In
Texinfo mode, the commands are bound to @kbd{C-c C-m C-r} and @kbd{C-c
C-m C-b} by default.@refill
@table @kbd
@item C-c C-m C-r
@itemx M-x makeinfo-region
Format the current region for Info.@refill
@findex makeinfo-region
@item C-c C-m C-b
@itemx M-x makeinfo-buffer
Format the current buffer for Info.@refill
@findex makeinfo-buffer
@end table
When you invoke either @code{makeinfo-region} or
@code{makeinfo-buffer}, Emacs prompts for a file name, offering the
name of the visited file as the default. You can edit the default
file name in the minibuffer if you wish, before pressing @key{RET} to
start the @code{makeinfo} process.@refill
The Emacs @code{makeinfo-region} and @code{makeinfo-buffer} commands
run the @code{makeinfo} program in a temporary shell buffer. If
@code{makeinfo} finds any errors, Emacs displays the error messages in
the temporary buffer.@refill
@cindex Errors, parsing
@cindex Parsing errors
@findex next-error
You can parse the error messages by typing @kbd{C-x `}
(@code{next-error}). This causes Emacs to go to and position the
cursor on the line in the Texinfo source that @code{makeinfo} thinks
caused the error. @xref{Compilation, , Running @code{make} or
Compilers Generally, emacs, The GNU Emacs Manual}, for more
information about using the @code{next-error} command.@refill
In addition, you can kill the shell in which the @code{makeinfo}
command is running or make the shell buffer display its most recent
output.@refill
@table @kbd
@item C-c C-m C-k
@itemx M-x makeinfo-kill-job
@findex makeinfo-kill-job
Kill the current running @code{makeinfo} job
(from @code{makeinfo-region} or @code{makeinfo-buffer}).@refill
@item C-c C-m C-l
@itemx M-x makeinfo-recenter-output-buffer
@findex makeinfo-recenter-output-buffer
Redisplay the @code{makeinfo} shell buffer to display its most recent
output.@refill
@end table
@noindent
(Note that the parallel commands for killing and recentering a @TeX{}
job are @kbd{C-c C-t C-k} and @kbd{C-c C-t C-l}. @xref{Texinfo Mode
Printing}.)@refill
You can specify options for @code{makeinfo} by setting the
@code{makeinfo-options} variable with either the @kbd{M-x
edit-options} or the @kbd{M-x set-variable} command, or by setting the
variable in your @file{.emacs} initialization file.@refill
For example, you could write the following in your @file{.emacs} file:@refill
@example
@group
(setq makeinfo-options
"--paragraph-indent=0 --no-split
--fill-column=70 --verbose")
@end group
@end example
@c If you write these three cross references using xref, you see
@c three references to the same named manual, which looks strange.
@iftex
For more information, see @ref{makeinfo options, , Options for
@code{makeinfo}}, as well as ``Editing Variable Values,'' ``Examining
and Setting Variables,'' and ``Init File'' in @cite{The GNU Emacs
Manual}.
@end iftex
@noindent
@ifinfo
For more information, see@*
@ref{Edit Options, , Editing Variable Values, emacs, The GNU Emacs Manual},@*
@ref{Examining, , Examining and Setting Variables, emacs, The GNU Emacs Manual},@*
@ref{Init File, , , emacs, The GNU Emacs Manual}, and@*
@ref{makeinfo options, , Options for @code{makeinfo}}.
@end ifinfo
@node texinfo-format commands
@comment node-name, next, previous, up
@subsection The @code{texinfo-format@dots{}} Commands
@findex texinfo-format-region
@findex texinfo-format-buffer
In GNU Emacs in Texinfo mode, you can format part or all of a Texinfo
file with the @code{texinfo-format-region} command. This formats the
current region and displays the formatted text in a temporary buffer
called @samp{*Info Region*}.@refill
Similarly, you can format a buffer with the
@code{texinfo-format-buffer} command. This command creates a new
buffer and generates the Info file in it. Typing @kbd{C-x C-s} will
save the Info file under the name specified by the
@code{@@setfilename} line which must be near the beginning of the
Texinfo file.@refill
@table @kbd
@item C-c C-e C-r
@itemx @code{texinfo-format-region}
Format the current region for Info.
@findex texinfo-format-region
@item C-c C-e C-b
@itemx @code{texinfo-format-buffer}
Format the current buffer for Info.
@findex texinfo-format-buffer
@end table
The @code{texinfo-format-region} and @code{texinfo-format-buffer}
commands provide you with some error checking, and other functions can
provide you with further help in finding formatting errors. These
procedures are described in an appendix; see @ref{Catching Mistakes}.
However, the @code{makeinfo} program is often faster and
provides better error checking (@pxref{makeinfo in Emacs}).@refill
@node Batch Formatting
@comment node-name, next, previous, up
@subsection Batch Formatting
@cindex Batch formatting for Info
@cindex Info batch formatting
You can format Texinfo files for Info using @code{batch-texinfo-format}
and Emacs Batch mode. You can run Emacs in Batch mode from any shell,
including a shell inside of Emacs. (@xref{Command Switches, , Command
Line Switches and Arguments, emacs, The GNU Emacs Manual}.)@refill
Here is a shell command to format all the files that end in
@file{.texinfo} in the current directory:
@example
emacs -batch -funcall batch-texinfo-format *.texinfo
@end example
@noindent
Emacs processes all the files listed on the command line, even if an
error occurs while attempting to format some of them.@refill
Run @code{batch-texinfo-format} only with Emacs in Batch mode as shown;
it is not interactive. It kills the Batch mode Emacs on completion.@refill
@code{batch-texinfo-format} is convenient if you lack @code{makeinfo}
and want to format several Texinfo files at once. When you use Batch
mode, you create a new Emacs process. This frees your current Emacs, so
you can continue working in it. (When you run
@code{texinfo-format-region} or @code{texinfo-format-buffer}, you cannot
use that Emacs for anything else until the command finishes.)@refill
@node Tag and Split Files
@comment node-name, next, previous, up
@subsection Tag Files and Split Files
@cindex Making a tag table automatically
@cindex Tag table, making automatically
If a Texinfo file has more than 30,000 bytes,
@code{texinfo-format-buffer} automatically creates a tag table
for its Info file; @code{makeinfo} always creates a tag table. With
a @dfn{tag table}, Info can jump to new nodes more quickly than it can
otherwise.@refill
@cindex Indirect subfiles
In addition, if the Texinfo file contains more than about 70,000
bytes, @code{texinfo-format-buffer} and @code{makeinfo} split the
large Info file into shorter @dfn{indirect} subfiles of about 50,000
bytes each. Big files are split into smaller files so that Emacs does
not need to make a large buffer to hold the whole of a large Info
file; instead, Emacs allocates just enough memory for the small, split-off
file that is needed at the time. This way, Emacs avoids wasting
memory when you run Info. (Before splitting was implemented, Info
files were always kept short and @dfn{include files} were designed as
a way to create a single, large printed manual out of the smaller Info
files. @xref{Include Files}, for more information. Include files are
still used for very large documents, such as @cite{The Emacs Lisp
Reference Manual}, in which each chapter is a separate file.)@refill
When a file is split, Info itself makes use of a shortened version of
the original file that contains just the tag table and references to
the files that were split off. The split-off files are called
@dfn{indirect} files.@refill
The split-off files have names that are created by appending @w{@samp{-1}},
@w{@samp{-2}}, @w{@samp{-3}} and so on to the file name specified by the
@code{@@setfilename} command. The shortened version of the original file
continues to have the name specified by @code{@@setfilename}.@refill
At one stage in writing this document, for example, the Info file was saved
as the file @file{test-texinfo} and that file looked like this:@refill
@example
@group
Info file: test-texinfo, -*-Text-*-
produced by texinfo-format-buffer
from file: new-texinfo-manual.texinfo
^_
Indirect:
test-texinfo-1: 102
test-texinfo-2: 50422
@end group
@group
test-texinfo-3: 101300
^_^L
Tag table:
(Indirect)
Node: overview^?104
Node: info file^?1271
@end group
@group
Node: printed manual^?4853
Node: conventions^?6855
@dots{}
@end group
@end example
@noindent
(But @file{test-texinfo} had far more nodes than are shown here.) Each of
the split-off, indirect files, @file{test-texinfo-1},
@file{test-texinfo-2}, and @file{test-texinfo-3}, is listed in this file
after the line that says @samp{Indirect:}. The tag table is listed after
the line that says @samp{Tag table:}. @refill
In the list of indirect files, the number following the file name
records the cumulative number of bytes in the preceding indirect files,
not counting the file list itself, the tag table, or the permissions
text in each file. In the tag table, the number following the node name
records the location of the beginning of the node, in bytes from the
beginning of the (unsplit) output.
If you are using @code{texinfo-format-buffer} to create Info files,
you may want to run the @code{Info-validate} command. (The
@code{makeinfo} command does such a good job on its own, you do not
need @code{Info-validate}.) However, you cannot run the @kbd{M-x
Info-validate} node-checking command on indirect files. For
information on how to prevent files from being split and how to
validate the structure of the nodes, see @ref{Using
Info-validate}.@refill
@node makeinfo html
@subsection Generating HTML
@cindex HTML
As an alternative to the normal Info format output you can use the
@samp{--html} option to generate output in HTML format, for installation
on a web site (for example). In this release, HTML output from
@code{makeinfo} is monolithic, splitting the output by chapter or node
is not supported. We hope to implement this feature soon.
The HTML output file is named according to @code{@@setfilename}, but
with any @samp{.info} extension replaced with @samp{.html}.
Texinfo input marked up with the @code{@@ifhtml} command will produce
output only with the @samp{--html} option supplied. Input marked up
with the @code{@@html} is passed literally to the output (suppressing
the normal escaping of input @samp{<}, @samp{>} and @samp{&} characters
which have special significance in HTML).
The @samp{--footnote-style} option is currently ignored for HTML output;
footnotes are hyperlinked at the end of the output file.
The HTML generated is mostly standard (i.e., HTML 2.0, RFC1866). The
exception is that HTML 3.2 tables are generated from the
@code{@@multitable} command, but tagged to degrade as well as possible
in browsers without table support. Please report output from an
error-free run of @code{makeinfo} which violates the HTML 3.2 DTD as a
bug.
Navigation bars are inserted at the start of nodes, similarly to Info
output. The @samp{--no-headers} option will suppress this if used with
@samp{--no-split}. Header @code{<link>} elements in split output can
support info-like navigation with browsers like Lynx and @w{Emacs W3}
which implement this @w{HTML 1.0} feature. You still won't normally get
the multi-file regexp and index search facilities provided by Info
readers. Otherwise, hyperlinks are generated from Texinfo commands
where appropriate. @samp{@@xref} commands to other documents are
generated assuming the other document is available in HTML form too, and
@samp{.html} is appended to the @samp{@@xref} Info file name. This
presumably will often not work.
@node Install an Info File
@section Installing an Info File
@cindex Installing an Info file
@cindex Info file installation
@cindex @file{dir} directory for Info installation
Info files are usually kept in the @file{info} directory. You can read
Info files using the standalone Info program or the Info reader built
into Emacs. (@inforef{Top, info, info}, for an introduction to Info.)
@menu
* Directory File:: The top level menu for all Info files.
* New Info File:: Listing a new info file.
* Other Info Directories:: How to specify Info files that are
located in other directories.
* Installing Dir Entries:: How to specify what menu entry to add
to the Info directory.
* Invoking install-info:: @code{install-info} options.
@end menu
@node Directory File
@subsection The Directory File @file{dir}
For Info to work, the @file{info} directory must contain a file that
serves as a top level directory for the Info system. By convention,
this file is called @file{dir}. (You can find the location of this file
within Emacs by typing @kbd{C-h i} to enter Info and then typing
@kbd{C-x C-f} to see the pathname to the @file{info} directory.)
The @file{dir} file is itself an Info file. It contains the top level
menu for all the Info files in the system. The menu looks like
this:@refill
@example
@group
* Menu:
* Info: (info). Documentation browsing system.
* Emacs: (emacs). The extensible, self-documenting
text editor.
* Texinfo: (texinfo). With one source file, make
either a printed manual using
TeX or an Info file.
@dots{}
@end group
@end example
Each of these menu entries points to the `Top' node of the Info file
that is named in parentheses. (The menu entry does not need to
specify the `Top' node, since Info goes to the `Top' node if no node
name is mentioned. @xref{Other Info Files, , Nodes in Other Info
Files}.)@refill
Thus, the @samp{Info} entry points to the `Top' node of the
@file{info} file and the @samp{Emacs} entry points to the `Top' node
of the @file{emacs} file.@refill
In each of the Info files, the `Up' pointer of the `Top' node refers
back to the @code{dir} file. For example, the line for the `Top'
node of the Emacs manual looks like this in Info:@refill
@example
File: emacs Node: Top, Up: (DIR), Next: Distrib
@end example
@noindent
In this case, the @file{dir} file name is written in upper case
letters---it can be written in either upper or lower case. This is not
true in general, it is a special case for @file{dir}.
@node New Info File
@subsection Listing a New Info File
@cindex Adding a new info file
@cindex Listing a new info file
@cindex New info file, listing it in @file{dir} file
@cindex Info file, listing a new
@cindex @file{dir} file listing
To add a new Info file to your system, you must write a menu entry to
add to the menu in the @file{dir} file in the @file{info} directory.
For example, if you were adding documentation for GDB, you would write
the following new entry:@refill
@example
* GDB: (gdb). The source-level C debugger.
@end example
@noindent
The first part of the menu entry is the menu entry name, followed by a
colon. The second part is the name of the Info file, in parentheses,
followed by a period. The third part is the description.
The name of an Info file often has a @file{.info} extension. Thus, the
Info file for GDB might be called either @file{gdb} or @file{gdb.info}.
The Info reader programs automatically try the file name both with and
without @file{.info}@footnote{On MS-DOS/MS-Windows systems, Info will
try the @file{.inf} extension as well.}; so it is better to avoid
clutter and not to write @samp{.info} explicitly in the menu entry. For
example, the GDB menu entry should use just @samp{gdb} for the file
name, not @samp{gdb.info}.
@node Other Info Directories
@subsection Info Files in Other Directories
@cindex Installing Info in another directory
@cindex Info installed in another directory
@cindex Another Info directory
@cindex @file{dir} files and Info directories
If an Info file is not in the @file{info} directory, there are three
ways to specify its location:@refill
@enumerate
@item
Write the pathname in the @file{dir} file as the second part of the menu.
@item
If you are using Emacs, list the name of the file in a second @file{dir}
file, in its directory; and then add the name of that directory to the
@code{Info-directory-list} variable in your personal or site
initialization file.
This variable tells Emacs where to look for @file{dir} files (the files
must be named @file{dir}). Emacs merges the files named @file{dir} from
each of the listed directories. (In Emacs version 18, you can set the
@code{Info-directory} variable to the name of only one
directory.)@refill
@item
Specify the Info directory name in the @code{INFOPATH} environment
variable in your @file{.profile} or @file{.cshrc} initialization file.
(Only you and others who set this environment variable will be able to
find Info files whose location is specified this way.)
@end enumerate
For example, to reach a test file in the @file{/home/bob/info}
directory, you could add an entry like this to the menu in the
standard @file{dir} file:@refill
@example
* Test: (/home/bob/info/info-test). Bob's own test file.
@end example
@noindent
In this case, the absolute file name of the @file{info-test} file is
written as the second part of the menu entry.@refill
Alternatively, you could write the following in your @file{.emacs}
file:@refill
@vindex Info-directory-list
@example
@group
(require 'info)
(setq Info-directory-list
(cons (expand-file-name "/home/bob/info") Info-directory-list))
@end group
@end example
This tells Emacs to merge the @file{dir} file from the
@file{/home/bob/info} directory with the system @file{dir} file. Info
will list the @file{/home/bob/info/info-test} file as a menu entry in
the @file{/home/bob/info/dir} file. Emacs does the merging only
when @kbd{M-x info} is first run, so if you want to set
@code{Info-directory-list} in an Emacs session where you've already run
@code{info}, you must @code{(setq Info-dir-contents nil)} to force Emacs
to recompose the @file{dir} file.
@vindex INFOPATH
Finally, you can tell Info where to look by setting the @code{INFOPATH}
environment variable in your shell startup file, such as @file{.cshrc},
@file{.profile} or @file{autoexec.bat}. If you use a Bourne-compatible
shell such as @code{sh} or @code{bash} for your shell command
interpreter, you set the @code{INFOPATH} environment variable in the
@file{.profile} initialization file; but if you use @code{csh} or
@code{tcsh}, you set the variable in the @file{.cshrc} initialization
file. On MS-DOS/MS-Windows systems, you must set @code{INFOPATH} in
your @file{autoexec.bat} file or in the Registry. Each type of shell
uses a different syntax.
@itemize @bullet
@item
In a @file{.cshrc} file, you could set the @code{INFOPATH}
variable as follows:@refill
@smallexample
setenv INFOPATH .:~/info:/usr/local/emacs/info
@end smallexample
@item
In a @file{.profile} file, you would achieve the same effect by
writing:@refill
@smallexample
INFOPATH=.:$HOME/info:/usr/local/emacs/info
export INFOPATH
@end smallexample
@item
@pindex autoexec.bat
In a @file{autoexec.bat} file, you write this command@footnote{Note the
use of @samp{;} as the directory separator, and a different syntax for
using values of other environment variables.}:
@smallexample
set INFOPATH=.;%HOME%/info;c:/usr/local/emacs/info
@end smallexample
@end itemize
@noindent
The @samp{.} indicates the current directory as usual. Emacs uses the
@code{INFOPATH} environment variable to initialize the value of Emacs's
own @code{Info-directory-list} variable. The stand-alone Info reader
merges any files named @file{dir} in any directory listed in the
@env{INFOPATH} variable into a single menu presented to you in the node
called @samp{(dir)Top}.
@cindex @samp{:} @r{last in @env{INFOPATH}}
However you set @env{INFOPATH}, if its last character is a
colon@footnote{On MS-DOS/MS-Windows systems, use semi-colon instead.}, this
is replaced by the default (compiled-in) path. This gives you a way to
augment the default path with new directories without having to list all
the standard places. For example (using @code{sh} syntax):
@example
INFOPATH=/local/info:
export INFOPATH
@end example
@noindent
will search @file{/local/info} first, then the standard directories.
Leading or doubled colons are not treated specially.
@cindex @file{dir} file, creating your own
When you create your own @file{dir} file for use with
@code{Info-directory-list} or @env{INFOPATH}, it's easiest to start by
copying an existing @file{dir} file and replace all the text after the
@samp{* Menu:} with your desired entries. That way, the punctuation and
special CTRL-_ characters that Info needs will be present.
@node Installing Dir Entries, Invoking install-info, Other Info Directories, Install an Info File
@subsection Installing Info Directory Files
When you install an Info file onto your system, you can use the program
@code{install-info} to update the Info directory file @file{dir}.
Normally the makefile for the package runs @code{install-info}, just
after copying the Info file into its proper installed location.
@findex dircategory
@findex direntry
In order for the Info file to work with @code{install-info}, you should
use the commands @code{@@dircategory} and
@code{@@direntry}@dots{}@code{@@end direntry} in the Texinfo source
file. Use @code{@@direntry} to specify the menu entries to add to the
Info directory file, and use @code{@@dircategory} to specify which part
of the Info directory to put it in. Here is how these commands are used
in this manual:
@smallexample
@@dircategory Texinfo documentation system
@@direntry
* Texinfo: (texinfo). The GNU documentation format.
* install-info: (texinfo)Invoking install-info. @dots{}
@dots{}
@@end direntry
@end smallexample
Here's what this produces in the Info file:
@smallexample
INFO-DIR-SECTION Texinfo documentation system
START-INFO-DIR-ENTRY
* Texinfo: (texinfo). The GNU documentation format.
* install-info: (texinfo)Invoking install-info. @dots{}
@dots{}
END-INFO-DIR-ENTRY
@end smallexample
@noindent
The @code{install-info} program sees these lines in the Info file, and
that is how it knows what to do.
Always use the @code{@@direntry} and @code{@@dircategory} commands near
the beginning of the Texinfo input, before the first @code{@@node}
command. If you use them later on in the input, @code{install-info}
will not notice them.
If you use @code{@@dircategory} more than once in the Texinfo source,
each usage specifies the `current' category; any subsequent
@code{@@direntry} commands will add to that category.
Here are some recommended @code{@@dircategory} categories: `GNU
packages', `GNU programming tools', `GNU programming documentation',
`GNU Emacs Lisp', `GNU libraries', `Linux', `TeX', `Individual
utilities'. The idea is to include the `invoking' node for every
program installed by a package under `Individual utilities', and an
entry for the manual as a whole in the appropriate other category.
@node Invoking install-info
@subsection Invoking install-info
@pindex install-info
@code{install-info} inserts menu entries from an Info file into the
top-level @file{dir} file in the Info system (see the previous sections
for an explanation of how the @file{dir} file works). It's most often
run as part of software installation, or when constructing a @file{dir} file
for all manuals on a system. Synopsis:
@example
install-info [@var{option}]@dots{} [@var{info-file} [@var{dir-file}]]
@end example
If @var{info-file} or @var{dir-file} are not specified, the options
(described below) that define them must be. There are no compile-time
defaults, and standard input is never used. @code{install-info} can
read only one Info file and write only one @file{dir} file per invocation.
@cindex @file{dir}, created by @code{install-info}
If @var{dir-file} (however specified) does not exist,
@code{install-info} creates it if possible (with no entries).
@cindex Compressed files, reading
@cindex Dir files, compressed
If any input file is compressed with @code{gzip} (@pxref{Invoking
gzip,,,gzip, Gzip}), @code{install-info} automatically uncompresses it
for reading. And if @var{dir-file} is compressed, @code{install-info}
also automatically leaves it compressed after writing any changes.
If @var{dir-file} itself does not exist, @code{install-info} tries to
open @file{@var{dir-file}.gz}.
Options:
@table @code
@item --delete
@opindex --delete
Delete the entries in @var{info-file} from @var{dir-file}. The file
name in the entry in @var{dir-file} must be @var{info-file} (except for
an optional @samp{.info} in either one). Don't insert any new entries.
@item --dir-file=@var{name}
@itemx -d @var{name}
@opindex --dir-file=@var{name}
@opindex -d @var{name}
Specify file name of the Info directory file. This is equivalent to
using the @var{dir-file} argument.
@item --entry=@var{text}
@itemx -e @var{text}
@opindex --entry=@var{text}
@opindex -e @var{text}
Insert @var{text} as an Info directory entry; @var{text} should have the
form of an Info menu item line plus zero or more extra lines starting
with whitespace. If you specify more than one entry, they are all
added. If you don't specify any entries, they are determined from
information in the Info file itself.
@item --help
@itemx -h
@opindex --help
@opindex -h
Display a usage message listing basic usage and all available options,
then exit successfully.
@item --info-file=@var{file}
@itemx -i @var{file}
@opindex --info-file=@var{file}
@opindex -i @var{file}
Specify Info file to install in the directory.
Equivalent to using the @var{info-file} argument.
@item --info-dir=@var{dir}
@itemx -D @var{dir}
@opindex --info-dir=@var{dir}
@opindex -D @var{dir}
Specify the directory where @file{dir} resides.
Equivalent to @samp{--dir-file=@var{dir}/dir}.
@item --item=@var{text}
@opindex --item=@var{text}
Same as @samp{--entry=@var{text}}. An Info directory entry is actually
a menu item.
@item --quiet
@opindex --quiet
Suppress warnings.
@item --remove
@itemx -r
@opindex --remove
@opindex -r
Same as @samp{--delete}.
@item --section=@var{sec}
@itemx -s @var{sec}
@opindex --section=@var{sec}
@opindex -s @var{sec}
Put this file's entries in section @var{sec} of the directory. If you
specify more than one section, all the entries are added in each of the
sections. If you don't specify any sections, they are determined from
information in the Info file itself.
@item --version
@itemx -V
@opindex --version
@opindex -V
@cindex version number, finding
Display version information and exit successfully.
@end table
@node Command List
@appendix @@-Command List
@cindex Alphabetical @@-command list
@cindex List of @@-commands
@cindex @@-command list
@cindex Reference to @@-commands
Here is an alphabetical list of the @@-commands in Texinfo. Square
brackets, @t{[}@w{ }@t{]}, indicate optional arguments; an ellipsis,
@samp{@dots{}}, indicates repeated text.
@sp 1
@table @code
@item @@@var{whitespace}
An @code{@@} followed by a space, tab, or newline produces a normal,
stretchable, interword space. @xref{Multiple Spaces}.
@item @@!
Generate an exclamation point that really does end a sentence (usually
after an end-of-sentence capital letter). @xref{Ending a Sentence}.
@item @@"
@itemx @@'
Generate an umlaut or acute accent, respectively, over the next
character, as in @"o and @'o. @xref{Inserting Accents}.
@item @@*
Force a line break. Do not end a paragraph that uses @code{@@*} with
an @code{@@refill} command. @xref{Line Breaks}.@refill
@item @@,@{@var{c}@}
Generate a cedilla accent under @var{c}, as in @,{c}. @xref{Inserting
Accents}.
@item @@-
Insert a discretionary hyphenation point. @xref{- and hyphenation}.
@item @@.
Produce a period that really does end a sentence (usually after an
end-of-sentence capital letter). @xref{Ending a Sentence}.
@item @@:
Indicate to @TeX{} that an immediately preceding period, question
mark, exclamation mark, or colon does not end a sentence. Prevent
@TeX{} from inserting extra whitespace as it does at the end of a
sentence. The command has no effect on the Info file output.
@xref{Not Ending a Sentence}.
@item @@=
Generate a macron (bar) accent over the next character, as in @=o.
@xref{Inserting Accents}.
@item @@?
Generate a question mark that really does end a sentence (usually after
an end-of-sentence capital letter). @xref{Ending a Sentence}.
@item @@@@
Stands for an at sign, @samp{@@}.
@xref{Braces Atsigns, , Inserting @@ and braces}.
@item @@^
@itemx @@`
Generate a circumflex (hat) or grave accent, respectively, over the next
character, as in @^o.
@xref{Inserting Accents}.
@item @@@{
Stands for a left brace, @samp{@{}.
@xref{Braces Atsigns, , Inserting @@ and braces}.
@item @@@}
Stands for a right-hand brace, @samp{@}}.@*
@xref{Braces Atsigns, , Inserting @@ and braces}.
@item @@~
Generate a tilde accent over the next character, as in @~N.
@xref{Inserting Accents}.
@item @@AA@{@}
@itemx @@aa@{@}
Generate the uppercase and lowercase Scandinavian A-ring letters,
respectively: @AA{}, @aa{}. @xref{Inserting Accents}.
@item @@acronym@{@var{abbrev}@}
Tag @var{abbrev} as an acronym, that is, an abbreviation written in all
capital letters, such as `NASA'. @xref{acronym,, @code{acronym}}.
@item @@AE@{@}
@itemx @@ae@{@}
Generate the uppercase and lowercase AE ligatures, respectively:
@AE{}, @ae{}. @xref{Inserting Accents}.
@item @@afourlatex
@itemx @@afourpaper
@itemx @@afourwide
Change page dimensions for the A4 paper size. @xref{A4 Paper}.
@item @@alias @var{new}=@var{existing}
Make the command @samp{@@@var{new}} an alias for the existing command
@samp{@@@var{existing}}. @xref{alias}.
@item @@anchor@{@var{name}@}
Define @var{name} as the current location for use as a cross-reference
target. @xref{anchor,, @code{@@anchor}}.
@item @@appendix @var{title}
Begin an appendix. The title appears in the table
of contents of a printed manual. In Info, the title is
underlined with asterisks. @xref{unnumbered & appendix, , The
@code{@@unnumbered} and @code{@@appendix} Commands}.@refill
@item @@appendixsec @var{title}
@itemx @@appendixsection @var{title}
Begin an appendix section within an appendix. The section title appears
in the table of contents of a printed manual. In Info, the title is
underlined with equal signs. @code{@@appendixsection} is a longer
spelling of the @code{@@appendixsec} command. @xref{unnumberedsec
appendixsec heading, , Section Commands}.@refill
@item @@appendixsubsec @var{title}
Begin an appendix subsection within an appendix. The title appears
in the table of contents of a printed manual. In Info, the title is
underlined with hyphens. @xref{unnumberedsubsec appendixsubsec
subheading, , Subsection Commands}.@refill
@item @@appendixsubsubsec @var{title}
Begin an appendix subsubsection within an appendix subsection. The
title appears in the table of contents of a printed manual. In Info,
the title is underlined with periods. @xref{subsubsection,, The
`subsub' Commands}.@refill
@item @@asis
Used following @code{@@table}, @code{@@ftable}, and @code{@@vtable} to
print the table's first column without highlighting (``as is'').
@xref{Two-column Tables, , Making a Two-column Table}.@refill
@item @@author @var{author}
Typeset @var{author} flushleft and underline it. @xref{title
subtitle author, , The @code{@@title} and @code{@@author}
Commands}.@refill
@item @@b@{@var{text}@}
Print @var{text} in @b{bold} font. No effect in Info. @xref{Fonts}.@refill
@ignore
@item @@br
Force a paragraph break. If used within a line, follow @code{@@br}
with braces. @xref{br, , @code{@@br}}.@refill
@end ignore
@item @@bullet@{@}
Generate a large round dot, or the closest possible
thing to one. @xref{bullet, , @code{@@bullet}}.@refill
@item @@bye
Stop formatting a file. The formatters do not see the contents of a
file following an @code{@@bye} command. @xref{Ending a File}.@refill
@item @@c @var{comment}
Begin a comment in Texinfo. The rest of the line does not appear in
either the Info file or the printed manual. A synonym for
@code{@@comment}. @xref{Comments, , Comments}.@refill
@item @@cartouche
Highlight an example or quotation by drawing a box with rounded
corners around it. Pair with @code{@@end cartouche}. No effect in
Info. @xref{cartouche, , Drawing Cartouches Around Examples}.)@refill
@item @@center @var{line-of-text}
Center the line of text following the command.
@xref{titlefont center sp, , @code{@@center}}.@refill
@item @@centerchap @var{line-of-text}
Like @code{@@chapter}, but centers the chapter title. @xref{chapter,,
@code{@@chapter}}.
@item @@chapheading @var{title}
Print a chapter-like heading in the text, but not in the table of
contents of a printed manual. In Info, the title is underlined with
asterisks. @xref{majorheading & chapheading, , @code{@@majorheading}
and @code{@@chapheading}}.@refill
@item @@chapter @var{title}
Begin a chapter. The chapter title appears in the table of
contents of a printed manual. In Info, the title is underlined with
asterisks. @xref{chapter, , @code{@@chapter}}.@refill
@item @@cindex @var{entry}
Add @var{entry} to the index of concepts. @xref{Index Entries, ,
Defining the Entries of an Index}.@refill
@item @@cite@{@var{reference}@}
Highlight the name of a book or other reference that lacks a
companion Info file. @xref{cite, , @code{@@cite}}.@refill
@item @@clear @var{flag}
Unset @var{flag}, preventing the Texinfo formatting commands from
formatting text between subsequent pairs of @code{@@ifset @var{flag}}
and @code{@@end ifset} commands, and preventing
@code{@@value@{@var{flag}@}} from expanding to the value to which
@var{flag} is set.
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
@item @@code@{@var{sample-code}@}
Highlight text that is an expression, a syntactically complete token
of a program, or a program name. @xref{code, , @code{@@code}}.@refill
@item @@command@{@var{command-name}@}
Indicate a command name, such as @command{ls}.
@xref{command,, @code{@@command}}.
@item @@comment @var{comment}
Begin a comment in Texinfo. The rest of the line does not appear in
either the Info file or the printed manual. A synonym for @code{@@c}.
@xref{Comments}.
@item @@contents
Print a complete table of contents. Has no effect in Info, which uses
menus instead. @xref{Contents, , Generating a Table of
Contents}.@refill
@item @@copyright@{@}
Generate a copyright symbol. @xref{copyright symbol, ,
@code{@@copyright}}.@refill
@ignore
@item @@ctrl@{@var{ctrl-char}@}
Describe an @sc{ascii} control character. Insert actual control character
into Info file. @xref{ctrl, , @code{@@ctrl}}.@refill
@end ignore
@item @@defcodeindex @var{index-name}
Define a new index and its indexing command. Print entries in an
@code{@@code} font. @xref{New Indices, , Defining New
Indices}.@refill
@item @@defcv @var{category} @var{class} @var{name}
@itemx @@defcvx @var{category} @var{class} @var{name}
Format a description for a variable associated with a class in
object-oriented programming. Takes three arguments: the category of
thing being defined, the class to which it belongs, and its name.
@xref{Definition Commands}, and @ref{deffnx,, Def Cmds in Detail}.
@item @@deffn @var{category} @var{name} @var{arguments}@dots{}
@itemx @@deffnx @var{category} @var{name} @var{arguments}@dots{}
Format a description for a function, interactive command, or similar
entity that may take arguments. @code{@@deffn} takes as arguments the
category of entity being described, the name of this particular
entity, and its arguments, if any. @xref{Definition Commands}.@refill
@item @@defindex @var{index-name}
Define a new index and its indexing command. Print entries in a roman
font. @xref{New Indices, , Defining New Indices}.@refill
@item @@definfoenclose @var{newcmd}, @var{before}, @var{after},
Create new @@-command @var{newcmd} for Info that marks text by enclosing
it in strings that precede and follow the text. @xref{definfoenclose}.
@item @@defivar @var{class} @var{instance-variable-name}
@itemx @@defivarx @var{class} @var{instance-variable-name}
This command formats a description for an instance variable in
object-oriented programming. The command is equivalent to @samp{@@defcv
@{Instance Variable@} @dots{}}. @xref{Definition Commands}, and
@ref{deffnx,, Def Cmds in Detail}.
@item @@defmac @var{macroname} @var{arguments}@dots{}
@itemx @@defmacx @var{macroname} @var{arguments}@dots{}
Format a description for a macro. The command is equivalent to
@samp{@@deffn Macro @dots{}}. @xref{Definition Commands}, and
@ref{deffnx,, Def Cmds in Detail}.
@item @@defmethod @var{class} @var{method-name} @var{arguments}@dots{}
@itemx @@defmethodx @var{class} @var{method-name} @var{arguments}@dots{}
Format a description for a method in object-oriented programming. The
command is equivalent to @samp{@@defop Method @dots{}}. Takes as
arguments the name of the class of the method, the name of the
method, and its arguments, if any. @xref{Definition Commands}, and
@ref{deffnx,, Def Cmds in Detail}.
@item @@defop @var{category} @var{class} @var{name} @var{arguments}@dots{}
@itemx @@defopx @var{category} @var{class} @var{name} @var{arguments}@dots{}
Format a description for an operation in object-oriented programming.
@code{@@defop} takes as arguments the overall name of the category of
operation, the name of the class of the operation, the name of the
operation, and its arguments, if any. @xref{Definition
Commands}, and @ref{Abstract Objects}.
@item @@defopt @var{option-name}
@itemx @@defoptx @var{option-name}
Format a description for a user option. The command is equivalent to
@samp{@@defvr @{User Option@} @dots{}}. @xref{Definition Commands}, and
@ref{deffnx,, Def Cmds in Detail}.
@item @@defspec @var{special-form-name} @var{arguments}@dots{}
@itemx @@defspecx @var{special-form-name} @var{arguments}@dots{}
Format a description for a special form. The command is equivalent to
@samp{@@deffn @{Special Form@} @dots{}}. @xref{Definition Commands},
and @ref{deffnx,, Def Cmds in Detail}.
@item @@deftp @var{category} @var{name-of-type} @var{attributes}@dots{}
@itemx @@deftpx @var{category} @var{name-of-type} @var{attributes}@dots{}
Format a description for a data type. @code{@@deftp} takes as arguments
the category, the name of the type (which is a word like @samp{int} or
@samp{float}), and then the names of attributes of objects of that type.
@xref{Definition Commands}, and @ref{Data Types}.
@item @@deftypefn @var{classification} @var{data-type} @var{name} @var{arguments}@dots{}
@itemx @@deftypefnx @var{classification} @var{data-type} @var{name} @var{arguments}@dots{}
Format a description for a function or similar entity that may take
arguments and that is typed. @code{@@deftypefn} takes as arguments the
classification of entity being described, the type, the name of the
entity, and its arguments, if any. @xref{Definition Commands}, and
@ref{deffnx,, Def Cmds in Detail}.
@item @@deftypefun @var{data-type} @var{function-name} @var{arguments}@dots{}
@itemx @@deftypefunx @var{data-type} @var{function-name} @var{arguments}@dots{}
Format a description for a function in a typed language.
The command is equivalent to @samp{@@deftypefn Function @dots{}}.
@xref{Definition Commands}, and @ref{deffnx,, Def Cmds in Detail}.
@item @@deftypeivar @var{class} @var{data-type} @var{variable-name}
@itemx @@deftypeivarx @var{class} @var{data-type} @var{variable-name}
Format a description for a typed instance variable in object-oriented
programming. @xref{Definition Commands}, and @ref{Abstract Objects}.
@item @@deftypemethod @var{class} @var{data-type} @var{method-name} @var{arguments}@dots{}
@itemx @@deftypemethodx @var{class} @var{data-type} @var{method-name} @var{arguments}@dots{}
Format a description for a typed method in object-oriented programming.
@xref{Definition Commands}, and @ref{deffnx,, Def Cmds in Detail}.
@item @@deftypeop @var{category} @var{class} @var{data-type} @var{name} @var{arguments}@dots{}
@itemx @@deftypeopx @var{category} @var{class} @var{data-type} @var{name} @var{arguments}@dots{}
Format a description for a typed operation in object-oriented programming.
@xref{Definition Commands}, and @ref{Abstract Objects}.
@item @@deftypevar @var{data-type} @var{variable-name}
@itemx @@deftypevarx @var{data-type} @var{variable-name}
Format a description for a variable in a typed language. The command is
equivalent to @samp{@@deftypevr Variable @dots{}}. @xref{Definition
Commands}, and @ref{deffnx,, Def Cmds in Detail}.
@item @@deftypevr @var{classification} @var{data-type} @var{name}
@itemx @@deftypevrx @var{classification} @var{data-type} @var{name}
Format a description for something like a variable in a typed
language---an entity that records a value. Takes as arguments the
classification of entity being described, the type, and the name of the
entity. @xref{Definition Commands}, and @ref{deffnx,, Def Cmds in
Detail}.
@item @@defun @var{function-name} @var{arguments}@dots{}
@itemx @@defunx @var{function-name} @var{arguments}@dots{}
Format a description for functions. The command is equivalent to
@samp{@@deffn Function @dots{}}. @xref{Definition Commands}, and
@ref{deffnx,, Def Cmds in Detail}.
@item @@defvar @var{variable-name}
@itemx @@defvarx @var{variable-name}
Format a description for variables. The command is equivalent to
@samp{@@defvr Variable @dots{}}. @xref{Definition Commands}, and
@ref{deffnx,, Def Cmds in Detail}.
@item @@defvr @var{category} @var{name}
@itemx @@defvrx @var{category} @var{name}
Format a description for any kind of variable. @code{@@defvr} takes
as arguments the category of the entity and the name of the entity.
@xref{Definition Commands},
and @ref{deffnx,, Def Cmds in Detail}.
@item @@detailmenu
Avoid @code{makeinfo} confusion stemming from the detailed node listing
in a master menu. @xref{Master Menu Parts}.
@item @@dfn@{@var{term}@}
Highlight the introductory or defining use of a term.
@xref{dfn, , @code{@@dfn}}.@refill
@item @@dircategory @var{dirpart}
Specify a part of the Info directory menu where this file's entry should
go. @xref{Installing Dir Entries}.
@item @@direntry
Begin the Info directory menu entry for this file. Pair with
@code{@@end direntry}. @xref{Installing Dir Entries}.
@item @@display
Begin a kind of example. Like @code{@@example} (indent text, do not
fill), but do not select a new font. Pair with @code{@@end display}.
@xref{display, , @code{@@display}}.
@item @@dmn@{@var{dimension}@}
Format a unit of measure, as in 12@dmn{pt}. Causes @TeX{} to insert a
thin space before @var{dimension}. No effect in Info.
@xref{dmn, , @code{@@dmn}}.
@item @@documentencoding @var{enc}
Declare the input encoding as @var{enc}.
@xref{documentencoding,, @code{@@documentencoding}}.
@item @@documentlanguage @var{CC}
Declare the document language as the two-character ISO-639 abbreviation
@var{CC}. @xref{documentlanguage,, @code{@@documentlanguage}}.
@item @@dotaccent@{@var{c}@}
Generate a dot accent over the character @var{c}, as in @dotaccent{o}.
@xref{Inserting Accents}.
@item @@dots@{@}
Insert an ellipsis: @samp{@dots{}}.
@xref{dots, , @code{@@dots}}.@refill
@item @@email@{@var{address}[, @var{displayed-text}]@}
Indicate an electronic mail address.
@xref{email, , @code{@@email}}.
@item @@emph@{@var{text}@}
Highlight @var{text}; text is displayed in @emph{italics} in printed
output, and surrounded by asterisks in Info. @xref{Emphasis, ,
Emphasizing Text}.
@item @@end @var{environment}
Ends @var{environment}, as in @samp{@@end example}. @xref{Formatting
Commands,,@@-commands}.
@item @@env@{@var{environment-variable}@}
Indicate an environment variable name, such as @env{PATH}.
@xref{env,, @code{@@env}}.
@item @@enddots@{@}
Generate an end-of-sentence of ellipsis, like this @enddots{}
@xref{dots,,@code{@@dots@{@}}}.
@item @@enumerate [@var{number-or-letter}]
Begin a numbered list, using @code{@@item} for each entry.
Optionally, start list with @var{number-or-letter}. Pair with
@code{@@end enumerate}. @xref{enumerate, ,
@code{@@enumerate}}.@refill
@item @@equiv@{@}
Indicate to the reader the exact equivalence of two forms with a
glyph: @samp{@equiv{}}. @xref{Equivalence}.@refill
@item @@error@{@}
Indicate to the reader with a glyph that the following text is
an error message: @samp{@error{}}. @xref{Error Glyph}.@refill
@item @@evenfooting [@var{left}] @@| [@var{center}] @@| [@var{right}]
@itemx @@evenheading [@var{left}] @@| [@var{center}] @@| [@var{right}]
Specify page footings resp.@: headings for even-numbered (left-hand)
pages. Only allowed inside @code{@@iftex}. @xref{Custom Headings, ,
How to Make Your Own Headings}.@refill
@item @@everyfooting [@var{left}] @@| [@var{center}] @@| [@var{right}]
@itemx @@everyheading [@var{left}] @@| [@var{center}] @@| [@var{right}]
Specify page footings resp.@: headings for every page. Not relevant to
Info. @xref{Custom Headings, , How to Make Your Own Headings}.@refill
@item @@example
Begin an example. Indent text, do not fill, and select fixed-width font.
Pair with @code{@@end example}. @xref{example, ,
@code{@@example}}.@refill
@item @@exampleindent @var{indent}
Indent example-like environments by @var{indent} number of spaces
(perhaps 0). @xref{exampleindent,, Paragraph Indenting}.
@item @@exclamdown@{@}
Produce an upside-down exclamation point. @xref{Inserting Accents}.
@item @@exdent @var{line-of-text}
Remove any indentation a line might have. @xref{exdent, ,
Undoing the Indentation of a Line}.@refill
@item @@expansion@{@}
Indicate the result of a macro expansion to the reader with a special
glyph: @samp{@expansion{}}.
@xref{expansion, , @expansion{} Indicating an Expansion}.@refill
@item @@file@{@var{filename}@}
Highlight the name of a file, buffer, node, or directory. @xref{file, ,
@code{@@file}}.@refill
@item @@finalout
Prevent @TeX{} from printing large black warning rectangles beside
over-wide lines. @xref{Overfull hboxes}.@refill
@item @@findex @var{entry}
Add @var{entry} to the index of functions. @xref{Index Entries, ,
Defining the Entries of an Index}.@refill
@item @@flushleft
@itemx @@flushright
Left justify every line but leave the right end ragged.
Leave font as is. Pair with @code{@@end flushleft}.
@code{@@flushright} analogous.
@xref{flushleft & flushright, , @code{@@flushleft} and
@code{@@flushright}}.@refill
@item @@footnote@{@var{text-of-footnote}@}
Enter a footnote. Footnote text is printed at the bottom of the page
by @TeX{}; Info may format in either `End' node or `Separate' node style.
@xref{Footnotes}.@refill
@item @@footnotestyle @var{style}
Specify an Info file's footnote style, either @samp{end} for the end
node style or @samp{separate} for the separate node style.
@xref{Footnotes}.@refill
@item @@format
Begin a kind of example. Like @code{@@display}, but do not narrow the
margins. Pair with @code{@@end format}. @xref{example,,
@code{@@example}}.
@item @@ftable @var{formatting-command}
Begin a two-column table, using @code{@@item} for each entry.
Automatically enter each of the items in the first column into the
index of functions. Pair with @code{@@end ftable}. The same as
@code{@@table}, except for indexing. @xref{ftable vtable, ,
@code{@@ftable} and @code{@@vtable}}.@refill
@item @@group
Hold text together that must appear on one printed page. Pair with
@code{@@end group}. Not relevant to Info. @xref{group, ,
@code{@@group}}.@refill
@item @@H@{@var{c}@}
Generate the long Hungarian umlaut accent over @var{c}, as in @H{o}.
@item @@heading @var{title}
Print an unnumbered section-like heading in the text, but not in the
table of contents of a printed manual. In Info, the title is
underlined with equal signs. @xref{unnumberedsec appendixsec heading,
, Section Commands}.@refill
@item @@headings @var{on-off-single-double}
Turn page headings on or off, and/or specify single-sided or double-sided
page headings for printing. @xref{headings on off, , The
@code{@@headings} Command}.
@item @@html
Enter HTML completely. Pair with @code{@@end html}. @xref{Raw
Formatter Commands}.
@item @@hyphenation@{@var{hy-phen-a-ted words}@}
Explicitly define hyphenation points. @xref{- and hyphenation,,
@code{@@-} and @code{@@hyphenation}}.
@item @@i@{@var{text}@}
Print @var{text} in @i{italic} font. No effect in Info.
@xref{Fonts}.@refill
@item @@ifclear @var{flag}
If @var{flag} is cleared, the Texinfo formatting commands format text
between @code{@@ifclear @var{flag}} and the following @code{@@end
ifclear} command.
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
@item @@ifhtml
@itemx @@ifinfo
Begin a stretch of text that will be ignored by @TeX{} when it typesets
the printed manual. The text appears only in the HTML resp.@: Info
file. Pair with @code{@@end ifhtml} resp.@: @code{@@end ifinfo}.
@xref{Conditionals}.
@item @@ifnothtml
@itemx @@ifnotinfo
@itemx @@ifnottex
Begin a stretch of text that will be ignored in one output format but
not the others. The text appears only in the format not specified.
Pair with @code{@@end ifnothtml} resp.@: @code{@@end ifnotinfo} resp.@:
@code{@@end ifnotinfo}. @xref{Conditionals}.
@item @@ifset @var{flag}
If @var{flag} is set, the Texinfo formatting commands format text
between @code{@@ifset @var{flag}} and the following @code{@@end ifset}
command.
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
@item @@iftex
Begin a stretch of text that will not appear in the Info file, but
will be processed only by @TeX{}. Pair with @code{@@end iftex}.
@xref{Conditionals, , Conditionally Visible Text}.@refill
@item @@ignore
Begin a stretch of text that will not appear in either the Info file
or the printed output. Pair with @code{@@end ignore}.
@xref{Comments, , Comments and Ignored Text}.@refill
@item @@image@{@var{filename}, [@var{width}], [@var{height}]@}
Include graphics image in external @var{filename} scaled to the given
@var{width} and/or @var{height}. @xref{Images}.
@item @@include @var{filename}
Incorporate the contents of the file @var{filename} into the Info file
or printed document. @xref{Include Files}.@refill
@item @@inforef@{@var{node-name}, [@var{entry-name}], @var{info-file-name}@}
Make a cross reference to an Info file for which there is no printed
manual. @xref{inforef, , Cross references using
@code{@@inforef}}.@refill
@item \input @var{macro-definitions-file}
Use the specified macro definitions file. This command is used only
in the first line of a Texinfo file to cause @TeX{} to make use of the
@file{texinfo} macro definitions file. The backslash in @code{\input}
is used instead of an @code{@@} because @TeX{} does not
recognize @code{@@} until after it has read the definitions file.
@xref{Header, , The Texinfo File Header}.@refill
@item @@item
Indicate the beginning of a marked paragraph for @code{@@itemize} and
@code{@@enumerate}; indicate the beginning of the text of a first column
entry for @code{@@table}, @code{@@ftable}, and @code{@@vtable}.
@xref{Lists and Tables}.@refill
@item @@itemize @var{mark-generating-character-or-command}
Produce a sequence of indented paragraphs, with a mark inside the left
margin at the beginning of each paragraph. Pair with @code{@@end
itemize}. @xref{itemize, , @code{@@itemize}}.@refill
@item @@itemx
Like @code{@@item} but do not generate extra vertical space above the
item text. @xref{itemx, , @code{@@itemx}}.@refill
@item @@kbd@{@var{keyboard-characters}@}
Indicate text that is characters of input to be typed by
users. @xref{kbd, , @code{@@kbd}}.@refill
@item @@kbdinputstyle @var{style}
Specify when @code{@@kbd} should use a font distinct from @code{@@code}.
@xref{kbd, , @code{@@kbd}}.@refill
@item @@key@{@var{key-name}@}
Indicate a name for a key on a keyboard.
@xref{key, , @code{@@key}}.@refill
@item @@kindex @var{entry}
Add @var{entry} to the index of keys.
@xref{Index Entries, , Defining the Entries of an Index}.@refill
@item @@L@{@}
@itemx @@l@{@}
Generate the uppercase and lowercase Polish suppressed-L letters,
respectively: @L{}, @l{}.
@c Possibly this can be tossed now that we have macros. --karl, 16sep96.
@c Yes, let's toss it, it's pretty weird. --karl, 15jun97.
@c @item @@global@@let@var{new-command}=@var{existing-command}
@c Equate a new highlighting command with an existing one. Only for
@c @TeX{}. Write definition inside of @code{@@iftex} @dots{} @code{@@end
@c iftex}. @xref{Customized Highlighting}.@refill
@item @@lisp
Begin an example of Lisp code. Indent text, do not fill, and select
fixed-width font. Pair with @code{@@end lisp}. @xref{lisp, , @code{@@lisp}}.
@item @@lowersections
Change subsequent chapters to sections, sections to subsections, and so
on. @xref{Raise/lower sections, , @code{@@raisesections} and
@code{@@lowersections}}.@refill
@item @@macro @var{macroname} @{@var{params}@}
Define a new Texinfo command @code{@@@var{macroname}@{@var{params}@}}.
Only supported by @code{makeinfo} and @code{texi2dvi}. @xref{Defining
Macros}.
@item @@majorheading @var{title}
Print a chapter-like heading in the text, but not in the table of
contents of a printed manual. Generate more vertical whitespace before
the heading than the @code{@@chapheading} command. In Info, the chapter
heading line is underlined with asterisks. @xref{majorheading &
chapheading, , @code{@@majorheading} and @code{@@chapheading}}.@refill
@item @@math@{@var{mathematical-expression}@}
Format a mathematical expression.
@xref{math, , @code{@@math}: Inserting Mathematical Expressions}.
@item @@menu
Mark the beginning of a menu of nodes in Info. No effect in a printed
manual. Pair with @code{@@end menu}. @xref{Menus}.@refill
@item @@minus@{@}
Generate a minus sign, `@minus{}'. @xref{minus, , @code{@@minus}}.@refill
@item @@multitable @var{column-width-spec}
Begin a multi-column table. Pair with @code{@@end multitable}.
@xref{Multitable Column Widths}.
@item @@need @var{n}
Start a new page in a printed manual if fewer than @var{n} mils
(thousandths of an inch) remain on the current page. @xref{need, ,
@code{@@need}}.@refill
@item @@node @var{name}, @var{next}, @var{previous}, @var{up}
Define the beginning of a new node in Info, and serve as a locator for
references for @TeX{}. @xref{node, , @code{@@node}}.@refill
@item @@noindent
Prevent text from being indented as if it were a new paragraph.
@xref{noindent, , @code{@@noindent}}.@refill
@item @@novalidate
Suppress validation of node references, omit creation of auxiliary files
with @TeX{}. Use before @code{@@setfilename}. @xref{Pointer Validation}.
@item @@O@{@}
@itemx @@o@{@}
Generate the uppercase and lowercase O-with-slash letters, respectively:
@O{}, @o{}.
@item @@oddfooting [@var{left}] @@| [@var{center}] @@| [@var{right}]
@itemx @@oddheading [@var{left}] @@| [@var{center}] @@| [@var{right}]
Specify page footings resp.@: headings for odd-numbered (right-hand)
pages. Only allowed inside @code{@@iftex}. @xref{Custom Headings, ,
How to Make Your Own Headings}.@refill
@item @@OE@{@}
@itemx @@oe@{@}
Generate the uppercase and lowercase OE ligatures, respectively:
@OE{}, @oe{}. @xref{Inserting Accents}.
@item @@option@{@var{option-name}@}
Indicate a command-line option, such as @option{-l} or @option{--help}.
@xref{option,, @code{@@option}}.
@item @@page
Start a new page in a printed manual. No effect in Info.
@xref{page, , @code{@@page}}.@refill
@item @@pagesizes [@var{width}][, @var{height}]
Change page dimensions. @xref{pagesizes}.
@item @@paragraphindent @var{indent}
Indent paragraphs by @var{indent} number of spaces (perhaps 0); preserve
source file indentation if @var{indent} is @code{asis}.
@xref{paragraphindent,, Paragraph Indenting}.
@item @@pindex @var{entry}
Add @var{entry} to the index of programs. @xref{Index Entries, , Defining
the Entries of an Index}.@refill
@item @@point@{@}
Indicate the position of point in a buffer to the reader with a
glyph: @samp{@point{}}. @xref{Point Glyph, , Indicating
Point in a Buffer}.@refill
@item @@pounds@{@}
Generate the pounds sterling currency sign.
@xref{pounds,,@code{@@pounds@{@}}}.
@item @@print@{@}
Indicate printed output to the reader with a glyph:
@samp{@print{}}. @xref{Print Glyph}.@refill
@item @@printindex @var{index-name}
Print an alphabetized two-column index in a printed manual or generate
an alphabetized menu of index entries for Info. @xref{Printing
Indices & Menus}.@refill
@item @@pxref@{@var{node-name}, [@var{entry}], [@var{topic-or-title}], [@var{info-file}], [@var{manual}]@}
Make a reference that starts with a lower case `see' in a printed
manual. Use within parentheses only. Do not follow command with a
punctuation mark---the Info formatting commands automatically insert
terminating punctuation as needed. Only the first argument is mandatory.
@xref{pxref, , @code{@@pxref}}.@refill
@item @@questiondown@{@}
Generate an upside-down question mark. @xref{Inserting Accents}.
@item @@quotation
Narrow the margins to indicate text that is quoted from another real
or imaginary work. Write command on a line of its own. Pair with
@code{@@end quotation}. @xref{quotation, ,
@code{@@quotation}}.@refill
@item @@r@{@var{text}@}
Print @var{text} in @r{roman} font. No effect in Info.
@xref{Fonts}.@refill
@item @@raisesections
Change subsequent sections to chapters, subsections to sections, and so
on. @xref{Raise/lower sections, , @code{@@raisesections} and
@code{@@lowersections}}.@refill
@item @@ref@{@var{node-name}, [@var{entry}], [@var{topic-or-title}], [@var{info-file}], [@var{manual}]@}
Make a reference. In a printed manual, the reference does not start
with a `See'. Follow command with a punctuation mark. Only the first
argument is mandatory. @xref{ref, , @code{@@ref}}.@refill
@item @@refill
In Info, refill and indent the paragraph after all the other processing
has been done. No effect on @TeX{}, which always refills. This command
is no longer needed, since all formatters now automatically refill.
@xref{Refilling Paragraphs}.@refill
@item @@result@{@}
Indicate the result of an expression to the reader with a special
glyph: @samp{@result{}}. @xref{result, , @code{@@result}}.@refill
@item @@ringaccent@{@var{c}@}
Generate a ring accent over the next character, as in @ringaccent{o}.
@xref{Inserting Accents}.
@item @@samp@{@var{text}@}
Highlight @var{text} that is a literal example of a sequence of
characters. Used for single characters, for statements, and often for
entire shell commands. @xref{samp, , @code{@@samp}}.@refill
@item @@sc@{@var{text}@}
Set @var{text} in a printed output in @sc{the small caps font} and
set text in the Info file in uppercase letters.
@xref{Smallcaps}.@refill
@item @@section @var{title}
Begin a section within a chapter. In a printed manual, the section
title is numbered and appears in the table of contents. In Info, the
title is underlined with equal signs. @xref{section, ,
@code{@@section}}.@refill
@item @@set @var{flag} [@var{string}]
Make @var{flag} active, causing the Texinfo formatting commands to
format text between subsequent pairs of @code{@@ifset @var{flag}} and
@code{@@end ifset} commands. Optionally, set value of @var{flag} to
@var{string}.
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.
@item @@setchapternewpage @var{on-off-odd}
Specify whether chapters start on new pages, and if so, whether on
odd-numbered (right-hand) new pages. @xref{setchapternewpage, ,
@code{@@setchapternewpage}}.
@item @@setcontentsaftertitlepage
Put the table of contents after the @samp{@@end titlepage} even if the
@code{@@contents} command is not there. @xref{Contents}.
@item @@setfilename @var{info-file-name}
Provide a name to be used by the Info file. This command is essential
for @TeX{} formatting as well, even though it produces no output.
@xref{setfilename, , @code{@@setfilename}}.
@item @@setshortcontentsaftertitlepage
Place the short table of contents after the @samp{@@end titlepage}
command even if the @code{@@shortcontents} command is not there.
@xref{Contents}.
@item @@settitle @var{title}
Provide a title for page headers in a printed manual.
@xref{settitle, , @code{@@settitle}}.@refill
@item @@shortcontents
Print a short table of contents. Not relevant to Info, which uses
menus rather than tables of contents. A synonym for
@code{@@summarycontents}. @xref{Contents, , Generating a Table of
Contents}.@refill
@item @@shorttitlepage @var{title}
Generate a minimal title page. @xref{titlepage,,@code{@@titlepage}}.
@item @@smallbook
Cause @TeX{} to produce a printed manual in a 7 by 9.25 inch format
rather than the regular 8.5 by 11 inch format. @xref{smallbook, ,
Printing Small Books}. Also, see @ref{small}.
@item @@smalldisplay
Begin a kind of example. Like @code{@@smallexample} (indent text, no
filling), but do not select the fixed-width font. In @code{@@smallbook}
format, print text in a smaller font than with @code{@@display}. Pair
with @code{@@end smalldisplay}. @xref{small}.
@item @@smallexample
Indent text to indicate an example. Do not fill, select fixed-width
font. In @code{@@smallbook} format, print text in a smaller font than
with @code{@@example}. Pair with @code{@@end smallexample}.
@xref{small}.
@item @@smallformat
Begin a kind of example. Like @code{@@smalldisplay}, but do not narrow
the margins and do not select the fixed-width font.
In @code{@@smallbook} format, print text in a smaller font than
with @code{@@format}. Pair with @code{@@end smallformat}.
@xref{small}.
@item @@smalllisp
Begin an example of Lisp code. Indent text, do not fill, select
fixed-width font. In @code{@@smallbook} format, print text in a
smaller font. Pair with @code{@@end smalllisp}. @xref{small}.
@item @@sp @var{n}
Skip @var{n} blank lines. @xref{sp, , @code{@@sp}}.@refill
@item @@ss@{@}
Generate the German sharp-S es-zet letter, @ss{}. @xref{Inserting Accents}.
@item @@strong @{@var{text}@}
Emphasize @var{text} by typesetting it in a @strong{bold} font for the
printed manual and by surrounding it with asterisks for Info.
@xref{emph & strong, , Emphasizing Text}.@refill
@item @@subheading @var{title}
Print an unnumbered subsection-like heading in the text, but not in
the table of contents of a printed manual. In Info, the title is
underlined with hyphens. @xref{unnumberedsubsec appendixsubsec
subheading, , @code{@@unnumberedsubsec} @code{@@appendixsubsec}
@code{@@subheading}}.@refill
@item @@subsection @var{title}
Begin a subsection within a section. In a printed manual, the
subsection title is numbered and appears in the table of contents. In
Info, the title is underlined with hyphens. @xref{subsection, ,
@code{@@subsection}}.@refill
@item @@subsubheading @var{title}
Print an unnumbered subsubsection-like heading in the text, but not in
the table of contents of a printed manual. In Info, the title is
underlined with periods. @xref{subsubsection, , The `subsub'
Commands}.@refill
@item @@subsubsection @var{title}
Begin a subsubsection within a subsection. In a printed manual,
the subsubsection title is numbered and appears in the table of
contents. In Info, the title is underlined with periods.
@xref{subsubsection, , The `subsub' Commands}.@refill
@item @@subtitle @var{title}
In a printed manual, set a subtitle in a normal sized font flush to
the right-hand side of the page. Not relevant to Info, which does not
have title pages. @xref{title subtitle author, , @code{@@title}
@code{@@subtitle} and @code{@@author} Commands}.@refill
@item @@summarycontents
Print a short table of contents. Not relevant to Info, which uses
menus rather than tables of contents. A synonym for
@code{@@shortcontents}. @xref{Contents, , Generating a Table of
Contents}.@refill
@item @@syncodeindex @var{from-index} @var{into-index}
Merge the index named in the first argument into the index named in
the second argument, printing the entries from the first index in
@code{@@code} font. @xref{Combining Indices}.@refill
@item @@synindex @var{from-index} @var{into-index}
Merge the index named in the first argument into the index named in
the second argument. Do not change the font of @var{from-index}
entries. @xref{Combining Indices}.@refill
@item @@t@{@var{text}@}
Print @var{text} in a @t{fixed-width}, typewriter-like font.
No effect in Info. @xref{Fonts}.@refill
@item @@tab
Separate columns in a multitable. @xref{Multitable Rows}.
@item @@table @var{formatting-command}
Begin a two-column table, using @code{@@item} for each entry. Write
each first column entry on the same line as @code{@@item}. First
column entries are printed in the font resulting from
@var{formatting-command}. Pair with @code{@@end table}.
@xref{Two-column Tables, , Making a Two-column Table}.
Also see @ref{ftable vtable, , @code{@@ftable} and @code{@@vtable}},
and @ref{itemx, , @code{@@itemx}}.@refill
@item @@TeX@{@}
Insert the logo @TeX{}. @xref{TeX and copyright, , Inserting @TeX{}
and @copyright{}}.@refill
@item @@tex
Enter @TeX{} completely. Pair with @code{@@end tex}. @xref{Raw
Formatter Commands}.
@item @@thischapter
@itemx @@thischaptername
@itemx @@thisfile
@itemx @@thispage
@itemx @@thistitle
Only allowed in a heading or footing. Stands for the number and name of
the current chapter (in the format `Chapter 1: Title'), the chapter name
only, the filename, the current page number, and the title of the
document, respectively. @xref{Custom Headings, , How to Make Your Own
Headings}.@refill
@item @@tieaccent@{@var{cc}@}
Generate a tie-after accent over the next two characters @var{cc}, as in
`@tieaccent{oo}'. @xref{Inserting Accents}.
@item @@tindex @var{entry}
Add @var{entry} to the index of data types. @xref{Index Entries, ,
Defining the Entries of an Index}.@refill
@item @@title @var{title}
In a printed manual, set a title flush to the left-hand side of the
page in a larger than normal font and underline it with a black rule.
Not relevant to Info, which does not have title pages. @xref{title
subtitle author, , The @code{@@title} @code{@@subtitle} and
@code{@@author} Commands}.@refill
@item @@titlefont@{@var{text}@}
In a printed manual, print @var{text} in a larger than normal font.
Not relevant to Info, which does not have title pages.
@xref{titlefont center sp, , The @code{@@titlefont} @code{@@center}
and @code{@@sp} Commands}.@refill
@item @@titlepage
Indicate to Texinfo the beginning of the title page. Write command on
a line of its own. Pair with @code{@@end titlepage}. Nothing between
@code{@@titlepage} and @code{@@end titlepage} appears in Info.
@xref{titlepage, , @code{@@titlepage}}.@refill
@item @@today@{@}
Insert the current date, in `1 Jan 1900' style. @xref{Custom
Headings, , How to Make Your Own Headings}.@refill
@item @@top @var{title}
In a Texinfo file to be formatted with @code{makeinfo}, identify the
topmost @code{@@node} line in the file, which must be written on the line
immediately preceding the @code{@@top} command. Used for
@code{makeinfo}'s node pointer insertion feature. The title is
underlined with asterisks. Both the @code{@@node} line and the @code{@@top}
line normally should be enclosed by @code{@@ifinfo} and @code{@@end
ifinfo}. In @TeX{} and @code{texinfo-format-buffer}, the @code{@@top}
command is merely a synonym for @code{@@unnumbered}. @xref{makeinfo
Pointer Creation, , Creating Pointers with @code{makeinfo}}.
@item @@u@{@var{c}@}
@itemx @@ubaraccent@{@var{c}@}
@itemx @@udotaccent@{@var{c}@}
Generate a breve, underbar, or underdot accent, respectively, over or
under the character @var{c}, as in @u{o}, @ubaraccent{o},
@udotaccent{o}. @xref{Inserting Accents}.
@item @@unnumbered @var{title}
In a printed manual, begin a chapter that appears without chapter
numbers of any kind. The title appears in the table of contents of a
printed manual. In Info, the title is underlined with asterisks.
@xref{unnumbered & appendix, , @code{@@unnumbered} and
@code{@@appendix}}.@refill
@item @@unnumberedsec @var{title}
In a printed manual, begin a section that appears without section
numbers of any kind. The title appears in the table of contents of a
printed manual. In Info, the title is underlined with equal signs.
@xref{unnumberedsec appendixsec heading, , Section Commands}.@refill
@item @@unnumberedsubsec @var{title}
In a printed manual, begin an unnumbered subsection within a
chapter. The title appears in the table of contents of a printed
manual. In Info, the title is underlined with hyphens.
@xref{unnumberedsubsec appendixsubsec subheading, ,
@code{@@unnumberedsubsec} @code{@@appendixsubsec}
@code{@@subheading}}.@refill
@item @@unnumberedsubsubsec @var{title}
In a printed manual, begin an unnumbered subsubsection within a
chapter. The title appears in the table of contents of a printed
manual. In Info, the title is underlined with periods.
@xref{subsubsection, , The `subsub' Commands}.@refill
@item @@uref@{@var{url}[, @var{displayed-text}][, @var{replacement}@}
Define a cross reference to an external uniform resource locator for the
World Wide Web. @xref{uref, , @code{@@uref}}.@refill
@item @@url@{@var{url}@}
Indicate text that is a uniform resource locator for the World Wide
Web. @xref{url, , @code{@@url}}.@refill
@item @@v@{@var{c}@}
Generate check accent over the character @var{c}, as in @v{o}.
@xref{Inserting Accents}.
@item @@value@{@var{flag}@}
Replace @var{flag} with the value to which it is set by @code{@@set
@var{flag}}.
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
@item @@var@{@var{metasyntactic-variable}@}
Highlight a metasyntactic variable, which is something that stands for
another piece of text. @xref{var, , Indicating Metasyntactic
Variables}.@refill
@item @@vindex @var{entry}
Add @var{entry} to the index of variables. @xref{Index Entries, ,
Defining the Entries of an Index}.@refill
@item @@vskip @var{amount}
In a printed manual, insert whitespace so as to push text on the
remainder of the page towards the bottom of the page. Used in
formatting the copyright page with the argument @samp{0pt plus
1filll}. (Note spelling of @samp{filll}.) @code{@@vskip} may be used
only in contexts ignored for Info. @xref{Copyright & Permissions, ,
The Copyright Page and Printed Permissions}.@refill
@item @@vtable @var{formatting-command}
Begin a two-column table, using @code{@@item} for each entry.
Automatically enter each of the items in the first column into the
index of variables. Pair with @code{@@end vtable}. The same as
@code{@@table}, except for indexing. @xref{ftable vtable, ,
@code{@@ftable} and @code{@@vtable}}.@refill
@item @@w@{@var{text}@}
Prevent @var{text} from being split across two lines. Do not end a
paragraph that uses @code{@@w} with an @code{@@refill} command.
@xref{w, , @code{@@w}}.@refill
@item @@xref@{@var{node-name}, [@var{entry}], [@var{topic-or-title}], [@var{info-file}], [@var{manual}]@}
Make a reference that starts with `See' in a printed manual. Follow
command with a punctuation mark. Only the first argument is
mandatory. @xref{xref, , @code{@@xref}}.@refill
@end table
@node Tips
@appendix Tips and Hints
Here are some tips for writing Texinfo documentation:@refill
@cindex Tips
@cindex Usage tips
@cindex Hints
@itemize @bullet
@item
Write in the present tense, not in the past or the future.
@item
Write actively! For example, write ``We recommend that @dots{}'' rather
than ``It is recommended that @dots{}''.
@item
Use 70 or 72 as your fill column. Longer lines are hard to read.
@item
Include a copyright notice and copying permissions.
@end itemize
@subsubheading Index, Index, Index!
Write many index entries, in different ways.
Readers like indices; they are helpful and convenient.
Although it is easiest to write index entries as you write the body of
the text, some people prefer to write entries afterwards. In either
case, write an entry before the paragraph to which it applies. This
way, an index entry points to the first page of a paragraph that is
split across pages.
Here are more hints we have found valuable:
@itemize @bullet
@item
Write each index entry differently, so each entry refers to a different
place in the document.
@item
Write index entries only where a topic is discussed significantly. For
example, it is not useful to index ``debugging information'' in a
chapter on reporting bugs. Someone who wants to know about debugging
information will certainly not find it in that chapter.
@item
Consistently capitalize the first word of every concept index entry,
or else consistently use lower case. Terse entries often call for
lower case; longer entries for capitalization. Whichever case
convention you use, please use one or the other consistently! Mixing
the two styles looks bad.
@item
Always capitalize or use upper case for those words in an index for
which this is proper, such as names of countries or acronyms. Always
use the appropriate case for case-sensitive names, such as those in C or
Lisp.
@item
Write the indexing commands that refer to a whole section immediately
after the section command, and write the indexing commands that refer to
a paragraph before that paragraph.
In the example that follows, a blank line comes after the index
entry for ``Leaping'':
@example
@group
@@section The Dog and the Fox
@@cindex Jumping, in general
@@cindex Leaping
@@cindex Dog, lazy, jumped over
@@cindex Lazy dog jumped over
@@cindex Fox, jumps over dog
@@cindex Quick fox jumps over dog
The quick brown fox jumps over the lazy dog.
@end group
@end example
@noindent
(Note that the example shows entries for the same concept that are
written in different ways---@samp{Lazy dog}, and @samp{Dog, lazy}---so
readers can look up the concept in different ways.)
@end itemize
@subsubheading Blank Lines
@itemize @bullet
@item
Insert a blank line between a sectioning command and the first following
sentence or paragraph, or between the indexing commands associated with
the sectioning command and the first following sentence or paragraph, as
shown in the tip on indexing. Otherwise, a formatter may fold title and
paragraph together.
@item
Always insert a blank line before an @code{@@table} command and after an
@code{@@end table} command; but never insert a blank line after an
@code{@@table} command or before an @code{@@end table} command.
@need 1000
For example,
@example
@group
Types of fox:
@@table @@samp
@@item Quick
Jump over lazy dogs.
@end group
@group
@@item Brown
Also jump over lazy dogs.
@@end table
@end group
@group
@@noindent
On the other hand, @dots{}
@end group
@end example
Insert blank lines before and after @code{@@itemize} @dots{} @code{@@end
itemize} and @code{@@enumerate} @dots{} @code{@@end enumerate} in the
same way.
@end itemize
@subsubheading Complete Phrases
Complete phrases are easier to read than @dots{}
@itemize @bullet
@item
Write entries in an itemized list as complete sentences; or at least, as
complete phrases. Incomplete expressions @dots{} awkward @dots{} like
this.
@item
Write the prefatory sentence or phrase for a multi-item list or table as
a complete expression. Do not write ``You can set:''; instead, write
``You can set these variables:''. The former expression sounds cut off.
@end itemize
@subsubheading Editions, Dates and Versions
Write the edition and version numbers and date in three places in every
manual:
@enumerate
@item
In the first @code{@@ifinfo} section, for people reading the Texinfo file.
@item
In the @code{@@titlepage} section, for people reading the printed manual.
@item
In the `Top' node, for people reading the Info file.
@end enumerate
@noindent
Also, it helps to write a note before the first @code{@@ifinfo}
section to explain what you are doing.
@need 800
@noindent
For example:
@example
@group
@@c ===> NOTE! <==
@@c Specify the edition and version numbers and date
@@c in *three* places:
@@c 1. First ifinfo section 2. title page 3. top node
@@c To find the locations, search for !!set
@end group
@group
@@ifinfo
@@c !!set edition, date, version
This is Edition 4.03, January 1992,
of the @@cite@{GDB Manual@} for GDB Version 4.3.
@dots{}
@end group
@end example
@noindent
---or use @code{@@set} and @code{@@value}
(@pxref{value Example, , @code{@@value} Example}).
@subsubheading Definition Commands
Definition commands are @code{@@deffn}, @code{@@defun},
@code{@@defmac}, and the like, and enable you to write descriptions in
a uniform format.@refill
@itemize @bullet
@item
Write just one definition command for each entity you define with a
definition command. The automatic indexing feature creates an index
entry that leads the reader to the definition.
@item
Use @code{@@table} @dots{} @code{@@end table} in an appendix that
contains a summary of functions, not @code{@@deffn} or other definition
commands.
@end itemize
@subsubheading Capitalization
@itemize @bullet
@item
Capitalize ``Texinfo''; it is a name. Do not write the @samp{x} or
@samp{i} in upper case.
@item
Capitalize ``Info''; it is a name.
@item
Write @TeX{} using the @code{@@TeX@{@}} command. Note the uppercase
@samp{T} and @samp{X}. This command causes the formatters to
typeset the name according to the wishes of Donald Knuth, who wrote
@TeX{}.
@end itemize
@subsubheading Spaces
Do not use spaces to format a Texinfo file, except inside of
@code{@@example} @dots{} @code{@@end example} and similar commands.
@need 700
For example, @TeX{} fills the following:
@example
@group
@@kbd@{C-x v@}
@@kbd@{M-x vc-next-action@}
Perform the next logical operation
on the version-controlled file
corresponding to the current buffer.
@end group
@end example
@need 950
@noindent
so it looks like this:
@iftex
@quotation
@kbd{C-x v}
@kbd{M-x vc-next-action}
Perform the next logical operation on the version-controlled file
corresponding to the current buffer.
@end quotation
@end iftex
@ifinfo
@quotation
`C-x v' `M-x vc-next-action' Perform the next logical operation on the
version-controlled file corresponding to the current buffer.
@end quotation
@end ifinfo
@noindent
In this case, the text should be formatted with
@code{@@table}, @code{@@item}, and @code{@@itemx}, to create a table.
@subsubheading @@code, @@samp, @@var, and @samp{---}
@itemize @bullet
@item
Use @code{@@code} around Lisp symbols, including command names.
For example,
@example
The main function is @@code@{vc-next-action@}, @dots{}
@end example
@item
Avoid putting letters such as @samp{s} immediately after an
@samp{@@code}. Such letters look bad.
@item
Use @code{@@var} around meta-variables. Do not write angle brackets
around them.
@item
Use three hyphens in a row, @samp{---}, to indicate a long dash. @TeX{}
typesets these as a long dash and the Info formatters reduce three
hyphens to two.
@end itemize
@subsubheading Periods Outside of Quotes
Place periods and other punctuation marks @emph{outside} of quotations,
unless the punctuation is part of the quotation. This practice goes
against publishing conventions in the United States, but enables the
reader to distinguish between the contents of the quotation and the
whole passage.
For example, you should write the following sentence with the period
outside the end quotation marks:
@example
Evidently, @samp{au} is an abbreviation for ``author''.
@end example
@noindent
since @samp{au} does @emph{not} serve as an abbreviation for
@samp{author.} (with a period following the word).
@subsubheading Introducing New Terms
@itemize @bullet
@item
Introduce new terms so that a reader who does not know them can
understand them from context; or write a definition for the term.
For example, in the following, the terms ``check in'', ``register'' and
``delta'' are all appearing for the first time; the example sentence should be
rewritten so they are understandable.
@quotation
The major function assists you in checking in a file to your
version control system and registering successive sets of changes to
it as deltas.
@end quotation
@item
Use the @code{@@dfn} command around a word being introduced, to indicate
that the reader should not expect to know the meaning already, and
should expect to learn the meaning from this passage.
@end itemize
@subsubheading @@pxref
@c !!! maybe include this in the tips on pxref
@ignore
By the way, it is okay to use pxref with something else in front of
it within the parens, as long as the pxref is followed by the close
paren, and the material inside the parens is not part of a larger
sentence. Also, you can use xref inside parens as part of a complete
sentence so long as you terminate the cross reference with punctuation.
@end ignore
Absolutely never use @code{@@pxref} except in the special context for
which it is designed: inside parentheses, with the closing parenthesis
following immediately after the closing brace. One formatter
automatically inserts closing punctuation and the other does not. This
means that the output looks right both in printed output and in an Info
file, but only when the command is used inside parentheses.
@subsubheading Invoking from a Shell
You can invoke programs such as Emacs, GCC, and @code{gawk} from a
shell. The documentation for each program should contain a section that
describes this. Unfortunately, if the node names and titles for these
sections are all different, readers find it hard to search for the
section.@refill
Name such sections with a phrase beginning with the word
@w{`Invoking @dots{}'}, as in `Invoking Emacs'; this way
users can find the section easily.
@subsubheading ANSI C Syntax
When you use @code{@@example} to describe a C function's calling
conventions, use the ANSI C syntax, like this:@refill
@example
void dld_init (char *@@var@{path@});
@end example
@noindent
And in the subsequent discussion, refer to the argument values by
writing the same argument names, again highlighted with
@code{@@var}.@refill
@need 800
Avoid the obsolete style that looks like this:@refill
@example
#include <dld.h>
dld_init (path)
char *path;
@end example
Also, it is best to avoid writing @code{#include} above the
declaration just to indicate that the function is declared in a
header file. The practice may give the misimpression that the
@code{#include} belongs near the declaration of the function. Either
state explicitly which header file holds the declaration or, better
yet, name the header file used for a group of functions at the
beginning of the section that describes the functions.@refill
@subsubheading Bad Examples
Here are several examples of bad writing to avoid:
In this example, say, `` @dots{} you must @code{@@dfn}@{check
in@} the new version.'' That flows better.
@quotation
When you are done editing the file, you must perform a
@code{@@dfn}@{check in@}.
@end quotation
In the following example, say, ``@dots{} makes a unified interface such as VC
mode possible.''
@quotation
SCCS, RCS and other version-control systems all perform similar
functions in broadly similar ways (it is this resemblance which makes
a unified control mode like this possible).
@end quotation
And in this example, you should specify what `it' refers to:
@quotation
If you are working with other people, it assists in coordinating
everyone's changes so they do not step on each other.
@end quotation
@subsubheading And Finally @dots{}
@itemize @bullet
@item
Pronounce @TeX{} as if the @samp{X} were a Greek `chi', as the last
sound in the name `Bach'. But pronounce Texinfo as in `speck':
``teckinfo''.
@item
Write notes for yourself at the very end of a Texinfo file after the
@code{@@bye}. None of the formatters process text after the
@code{@@bye}; it is as if the text were within @code{@@ignore} @dots{}
@code{@@end ignore}.
@end itemize
@node Sample Texinfo File
@appendix A Sample Texinfo File
@cindex Sample Texinfo file, no comments
Here is a complete, short sample Texinfo file, without any commentary.
You can see this file, with comments, in the first chapter.
@xref{Short Sample, , A Short Sample Texinfo File}.
@sp 1
@example
\input texinfo @@c -*-texinfo-*-
@@c %**start of header
@@setfilename sample.info
@@settitle Sample Document
@@c %**end of header
@@setchapternewpage odd
@@ifinfo
This is a short example of a complete Texinfo file.
Copyright 1990 Free Software Foundation, Inc.
@@end ifinfo
@@titlepage
@@sp 10
@@comment The title is printed in a large font.
@@center @@titlefont@{Sample Title@}
@@c The following two commands start the copyright page.
@@page
@@vskip 0pt plus 1filll
Copyright @@copyright@{@} 1990 Free Software Foundation, Inc.
@@end titlepage
@@node Top, First Chapter, , (dir)
@@comment node-name, next, previous, up
@@menu
* First Chapter:: The first chapter is the
only chapter in this sample.
* Concept Index:: This index has two entries.
@@end menu
@@node First Chapter, Concept Index, Top, Top
@@comment node-name, next, previous, up
@@chapter First Chapter
@@cindex Sample index entry
This is the contents of the first chapter.
@@cindex Another sample index entry
Here is a numbered list.
@@enumerate
@@item
This is the first item.
@@item
This is the second item.
@@end enumerate
The @@code@{makeinfo@} and @@code@{texinfo-format-buffer@}
commands transform a Texinfo file such as this into
an Info file; and @@TeX@{@} typesets it for a printed
manual.
@@node Concept Index, , First Chapter, Top
@@comment node-name, next, previous, up
@@unnumbered Concept Index
@@printindex cp
@@contents
@@bye
@end example
@node Sample Permissions
@appendix Sample Permissions
@cindex Permissions
@cindex Sample permissions
@cindex Copying permissions
Texinfo files should contain sections that tell the readers that they
have the right to copy and distribute the Texinfo file, the Info file,
and the printed manual.@refill
Also, if you are writing a manual about software, you should explain
that the software is free and either include the GNU General Public
License (GPL) or provide a reference to it. @xref{Distrib, ,
Distribution, emacs, The GNU Emacs Manual}, for an example of the text
that could be used in the software ``Distribution'', ``General Public
License'', and ``NO WARRANTY'' sections of a document. @xref{Copying,
, Texinfo Copying Conditions}, for an example of a brief explanation
of how the copying conditions provide you with rights. @refill
@menu
* Inserting Permissions:: How to put permissions in your document.
* ifinfo Permissions:: Sample @samp{ifinfo} copying permissions.
* Titlepage Permissions:: Sample Titlepage copying permissions.
@end menu
@node Inserting Permissions, ifinfo Permissions, Sample Permissions, Sample Permissions
@ifinfo
@section Inserting Permissions
@end ifinfo
In a Texinfo file, the first @code{@@ifinfo} section usually begins
with a line that says what the file documents. This is what a person
reading the unprocessed Texinfo file or using the advanced Info
command @kbd{g *} sees first. @inforef{Expert, Advanced Info
commands, info}, for more information. (A reader using the regular
Info commands usually starts reading at the first node and skips
this first section, which is not in a node.)@refill
In the @code{@@ifinfo} section, the summary sentence is followed by a
copyright notice and then by the copying permission notice. One of
the copying permission paragraphs is enclosed in @code{@@ignore} and
@code{@@end ignore} commands. This paragraph states that the Texinfo
file can be processed through @TeX{} and printed, provided the printed
manual carries the proper copying permission notice. This paragraph
is not made part of the Info file since it is not relevant to the Info
file; but it is a mandatory part of the Texinfo file since it permits
people to process the Texinfo file in @TeX{} and print the
results.@refill
In the printed manual, the Free Software Foundation copying permission
notice follows the copyright notice and publishing information and is
located within the region delineated by the @code{@@titlepage} and
@code{@@end titlepage} commands. The copying permission notice is exactly
the same as the notice in the @code{@@ifinfo} section except that the
paragraph enclosed in @code{@@ignore} and @code{@@end ignore} commands is
not part of the notice.@refill
To make it simple to insert a permission notice into each section of
the Texinfo file, sample permission notices for each section are
reproduced in full below.@refill
You may need to specify the correct name of a section mentioned in the
permission notice. For example, in @cite{The GDB Manual}, the name of
the section referring to the General Public License is called the ``GDB
General Public License'', but in the sample shown below, that section is
referred to generically as the ``GNU General Public License''. If the
Texinfo file does not carry a copy of the General Public License, leave
out the reference to it, but be sure to include the rest of the
sentence.
@node ifinfo Permissions, Titlepage Permissions, Inserting Permissions, Sample Permissions
@comment node-name, next, previous, up
@section @samp{ifinfo} Copying Permissions
@cindex @samp{ifinfo} permissions
In the @code{@@ifinfo} section of a Texinfo file, the standard Free
Software Foundation permission notice reads as follows:@refill
@example
This file documents @dots{}
Copyright 1999 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and
this permission notice are preserved on all copies.
@@ignore
Permission is granted to process this file through TeX
and print the results, provided the printed document
carries a copying permission notice identical to this
one except for the removal of this paragraph (this
paragraph not being relevant to the printed manual).
@@end ignore
Permission is granted to copy and distribute modified
versions of this manual under the conditions for
verbatim copying, provided also that the sections
entitled ``Copying'' and ``GNU General Public License''
are included exactly as in the original, and provided
that the entire resulting derived work is distributed
under the terms of a permission notice identical to this
one.
Permission is granted to copy and distribute
translations of this manual into another language,
under the above conditions for modified versions,
except that this permission notice may be stated in a
translation approved by the Free Software Foundation.
@end example
@node Titlepage Permissions, , ifinfo Permissions, Sample Permissions
@comment node-name, next, previous, up
@section Titlepage Copying Permissions
@cindex Titlepage permissions
In the @code{@@titlepage} section of a Texinfo file, the standard Free
Software Foundation copying permission notice follows the copyright
notice and publishing information. The standard phrasing is as
follows:@refill
@example
Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and
this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified
versions of this manual under the conditions for
verbatim copying, provided also that the sections
entitled ``Copying'' and ``GNU General Public License''
are included exactly as in the original, and provided
that the entire resulting derived work is distributed
under the terms of a permission notice identical to this
one.
Permission is granted to copy and distribute
translations of this manual into another language,
under the above conditions for modified versions,
except that this permission notice may be stated in a
translation approved by the Free Software Foundation.
@end example
@node Include Files
@appendix Include Files
@cindex Include files
When @TeX{} or an Info formatting command sees an @code{@@include}
command in a Texinfo file, it processes the contents of the file named
by the command and incorporates them into the DVI or Info file being
created. Index entries from the included file are incorporated into
the indices of the output file.@refill
Include files let you keep a single large document as a collection of
conveniently small parts.@refill
@menu
* Using Include Files:: How to use the @code{@@include} command.
* texinfo-multiple-files-update:: How to create and update nodes and
menus when using included files.
* Include File Requirements:: What @code{texinfo-multiple-files-update} expects.
* Sample Include File:: A sample outer file with included files
within it; and a sample included file.
* Include Files Evolution:: How use of the @code{@@include} command
has changed over time.
@end menu
@node Using Include Files, texinfo-multiple-files-update, Include Files, Include Files
@section How to Use Include Files
@findex include
To include another file within a Texinfo file, write the
@code{@@include} command at the beginning of a line and follow it on
the same line by the name of a file to be included. For
example:@refill
@example
@@include buffers.texi
@end example
An included file should simply be a segment of text that you expect to
be included as is into the overall or @dfn{outer} Texinfo file; it
should not contain the standard beginning and end parts of a Texinfo
file. In particular, you should not start an included file with a
line saying @samp{\input texinfo}; if you do, that phrase is inserted
into the output file as is. Likewise, you should not end an included
file with an @code{@@bye} command; nothing after @code{@@bye} is
formatted.@refill
In the past, you were required to write an @code{@@setfilename} line at the
beginning of an included file, but no longer. Now, it does not matter
whether you write such a line. If an @code{@@setfilename} line exists
in an included file, it is ignored.@refill
Conventionally, an included file begins with an @code{@@node} line that
is followed by an @code{@@chapter} line. Each included file is one
chapter. This makes it easy to use the regular node and menu creating
and updating commands to create the node pointers and menus within the
included file. However, the simple Emacs node and menu creating and
updating commands do not work with multiple Texinfo files. Thus you
cannot use these commands to fill in the `Next', `Previous', and `Up'
pointers of the @code{@@node} line that begins the included file. Also,
you cannot use the regular commands to create a master menu for the
whole file. Either you must insert the menus and the `Next',
`Previous', and `Up' pointers by hand, or you must use the GNU Emacs
Texinfo mode command, @code{texinfo-multiple-files-update}, that is
designed for @code{@@include} files.@refill
@node texinfo-multiple-files-update, Include File Requirements, Using Include Files, Include Files
@section @code{texinfo-multiple-files-update}
@findex texinfo-multiple-files-update
GNU Emacs Texinfo mode provides the @code{texinfo-multiple-files-update}
command. This command creates or updates `Next', `Previous', and `Up'
pointers of included files as well as those in the outer or overall
Texinfo file, and it creates or updates a main menu in the outer file.
Depending whether you call it with optional arguments, the command
updates only the pointers in the first @code{@@node} line of the
included files or all of them:@refill
@table @kbd
@item M-x texinfo-multiple-files-update
Called without any arguments:@refill
@itemize @minus
@item
Create or update the `Next', `Previous', and `Up' pointers of the
first @code{@@node} line in each file included in an outer or overall
Texinfo file.@refill
@item
Create or update the `Top' level node pointers of the outer or
overall file.@refill
@item
Create or update a main menu in the outer file.@refill
@end itemize
@item C-u M-x texinfo-multiple-files-update
Called with @kbd{C-u} as a prefix argument:
@itemize @minus{}
@item
Create or update pointers in the first @code{@@node} line in each
included file.
@item
Create or update the `Top' level node pointers of the outer file.
@item
Create and insert a master menu in the outer file. The master menu
is made from all the menus in all the included files.@refill
@end itemize
@item C-u 8 M-x texinfo-multiple-files-update
Called with a numeric prefix argument, such as @kbd{C-u 8}:
@itemize @minus
@item
Create or update @strong{all} the `Next', `Previous', and `Up' pointers
of all the included files.@refill
@item
Create or update @strong{all} the menus of all the included
files.@refill
@item
Create or update the `Top' level node pointers of the outer or
overall file.@refill
@item
And then create a master menu in the outer file. This is similar to
invoking @code{texinfo-master-menu} with an argument when you are
working with just one file.@refill
@end itemize
@end table
Note the use of the prefix argument in interactive use: with a regular
prefix argument, just @w{@kbd{C-u}}, the
@code{texinfo-multiple-files-update} command inserts a master menu;
with a numeric prefix argument, such as @kbd{C-u 8}, the command
updates @strong{every} pointer and menu in @strong{all} the files and then inserts a
master menu.@refill
@node Include File Requirements, Sample Include File, texinfo-multiple-files-update, Include Files
@section Include File Requirements
@cindex Include file requirements
@cindex Requirements for include files
If you plan to use the @code{texinfo-multiple-files-update} command,
the outer Texinfo file that lists included files within it should
contain nothing but the beginning and end parts of a Texinfo file, and
a number of @code{@@include} commands listing the included files. It
should not even include indices, which should be listed in an included
file of their own.@refill
Moreover, each of the included files must contain exactly one highest
level node (conventionally, @code{@@chapter} or equivalent),
and this node must be the first node in the included file.
Furthermore, each of these highest level nodes in each included file
must be at the same hierarchical level in the file structure.
Usually, each is an @code{@@chapter}, an @code{@@appendix}, or an
@code{@@unnumbered} node. Thus, normally, each included file contains
one, and only one, chapter or equivalent-level node.@refill
The outer file should contain only @emph{one} node, the `Top' node. It
should @emph{not} contain any nodes besides the single `Top' node. The
@code{texinfo-multiple-files-update} command will not process
them.@refill
@node Sample Include File, Include Files Evolution, Include File Requirements, Include Files
@section Sample File with @code{@@include}
@cindex Sample @code{@@include} file
@cindex Include file sample
@cindex @code{@@include} file sample
Here is an example of a complete outer Texinfo file with @code{@@include} files
within it before running @code{texinfo-multiple-files-update}, which
would insert a main or master menu:@refill
@example
@group
\input texinfo @@c -*-texinfo-*-
@c %**start of header
@@setfilename include-example.info
@@settitle Include Example
@c %**end of header
@end group
@group
@@setchapternewpage odd
@@titlepage
@@sp 12
@@center @@titlefont@{Include Example@}
@@sp 2
@@center by Whom Ever
@end group
@group
@@page
@@vskip 0pt plus 1filll
Copyright @@copyright@{@} 1999 Free Software Foundation, Inc.
@@end titlepage
@end group
@group
@@ifinfo
@@node Top, First, , (dir)
@@top Master Menu
@@end ifinfo
@end group
@group
@@include foo.texinfo
@@include bar.texinfo
@@include concept-index.texinfo
@end group
@group
@@summarycontents
@@contents
@@bye
@end group
@end example
An included file, such as @file{foo.texinfo}, might look like
this:@refill
@example
@group
@@node First, Second, , Top
@@chapter First Chapter
Contents of first chapter @dots{}
@end group
@end example
The full contents of @file{concept-index.texinfo} might be as simple as this:
@example
@group
@@node Concept Index
@@unnumbered Concept Index
@@printindex cp
@end group
@end example
The outer Texinfo source file for @cite{The GNU Emacs Lisp Reference
Manual} is named @file{elisp.texi}. This outer file contains a master
menu with 417 entries and a list of 41 @code{@@include}
files.@refill
@node Include Files Evolution, , Sample Include File, Include Files
@comment node-name, next, previous, up
@section Evolution of Include Files
When Info was first created, it was customary to create many small
Info files on one subject. Each Info file was formatted from its own
Texinfo source file. This custom meant that Emacs did not need to
make a large buffer to hold the whole of a large Info file when
someone wanted information; instead, Emacs allocated just enough
memory for the small Info file that contained the particular
information sought. This way, Emacs could avoid wasting memory.@refill
References from one file to another were made by referring to the file
name as well as the node name. (@xref{Other Info Files, , Referring to
Other Info Files}. Also, see @ref{Four and Five Arguments, ,
@code{@@xref} with Four and Five Arguments}.)@refill
Include files were designed primarily as a way to create a single,
large printed manual out of several smaller Info files. In a printed
manual, all the references were within the same document, so @TeX{}
could automatically determine the references' page numbers. The Info
formatting commands used include files only for creating joint
indices; each of the individual Texinfo files had to be formatted for
Info individually. (Each, therefore, required its own
@code{@@setfilename} line.)@refill
However, because large Info files are now split automatically, it is
no longer necessary to keep them small.@refill
Nowadays, multiple Texinfo files are used mostly for large documents,
such as @cite{The GNU Emacs Lisp Reference Manual}, and for projects
in which several different people write different sections of a
document simultaneously.@refill
In addition, the Info formatting commands have been extended to work
with the @code{@@include} command so as to create a single large Info
file that is split into smaller files if necessary. This means that
you can write menus and cross references without naming the different
Texinfo files.@refill
@node Headings
@appendix Page Headings
@cindex Headings
@cindex Footings
@cindex Page numbering
@cindex Page headings
@cindex Formatting headings and footings
Most printed manuals contain headings along the top of every page
except the title and copyright pages. Some manuals also contain
footings. (Headings and footings have no meaning to Info, which is
not paginated.)@refill
@menu
* Headings Introduced:: Conventions for using page headings.
* Heading Format:: Standard page heading formats.
* Heading Choice:: How to specify the type of page heading.
* Custom Headings:: How to create your own headings and footings.
@end menu
@node Headings Introduced, Heading Format, Headings, Headings
@ifinfo
@heading Headings Introduced
@end ifinfo
Texinfo provides standard page heading formats for manuals that are
printed on one side of each sheet of paper and for manuals that are
printed on both sides of the paper. Typically, you will use these
formats, but you can specify your own format if you wish.@refill
In addition, you can specify whether chapters should begin on a new
page, or merely continue the same page as the previous chapter; and if
chapters begin on new pages, you can specify whether they must be
odd-numbered pages.@refill
By convention, a book is printed on both sides of each sheet of paper.
When you open a book, the right-hand page is odd-numbered, and
chapters begin on right-hand pages---a preceding left-hand page is
left blank if necessary. Reports, however, are often printed on just
one side of paper, and chapters begin on a fresh page immediately
following the end of the preceding chapter. In short or informal
reports, chapters often do not begin on a new page at all, but are
separated from the preceding text by a small amount of whitespace.@refill
The @code{@@setchapternewpage} command controls whether chapters begin
on new pages, and whether one of the standard heading formats is used.
In addition, Texinfo has several heading and footing commands that you
can use to generate your own heading and footing formats.@refill
In Texinfo, headings and footings are single lines at the tops and
bottoms of pages; you cannot create multiline headings or footings.
Each header or footer line is divided into three parts: a left part, a
middle part, and a right part. Any part, or a whole line, may be left
blank. Text for the left part of a header or footer line is set
flushleft; text for the middle part is centered; and, text for the
right part is set flushright.@refill
@node Heading Format, Heading Choice, Headings Introduced, Headings
@comment node-name, next, previous, up
@section Standard Heading Formats
Texinfo provides two standard heading formats, one for manuals printed
on one side of each sheet of paper, and the other for manuals printed
on both sides of the paper.
By default, nothing is specified for the footing of a Texinfo file,
so the footing remains blank.@refill
The standard format for single-sided printing consists of a header
line in which the left-hand part contains the name of the chapter, the
central part is blank, and the right-hand part contains the page
number.@refill
@need 950
A single-sided page looks like this:
@example
@group
_______________________
| |
| chapter page number |
| |
| Start of text ... |
| ... |
| |
@end group
@end example
The standard format for two-sided printing depends on whether the page
number is even or odd. By convention, even-numbered pages are on the
left- and odd-numbered pages are on the right. (@TeX{} will adjust the
widths of the left- and right-hand margins. Usually, widths are
correct, but during double-sided printing, it is wise to check that
pages will bind properly---sometimes a printer will produce output in
which the even-numbered pages have a larger right-hand margin than the
odd-numbered pages.)@refill
In the standard double-sided format, the left part of the left-hand
(even-numbered) page contains the page number, the central part is
blank, and the right part contains the title (specified by the
@code{@@settitle} command). The left part of the right-hand
(odd-numbered) page contains the name of the chapter, the central part
is blank, and the right part contains the page number.@refill
@need 750
Two pages, side by side as in an open book, look like this:@refill
@example
@group
_______________________ _______________________
| | | |
| page number title | | chapter page number |
| | | |
| Start of text ... | | More text ... |
| ... | | ... |
| | | |
@end group
@end example
@noindent
The chapter name is preceded by the word ``Chapter'', the chapter number
and a colon. This makes it easier to keep track of where you are in the
manual.@refill
@node Heading Choice, Custom Headings, Heading Format, Headings
@comment node-name, next, previous, up
@section Specifying the Type of Heading
@TeX{} does not begin to generate page headings for a standard Texinfo
file until it reaches the @code{@@end titlepage} command. Thus, the
title and copyright pages are not numbered. The @code{@@end
titlepage} command causes @TeX{} to begin to generate page headings
according to a standard format specified by the
@code{@@setchapternewpage} command that precedes the
@code{@@titlepage} section.@refill
@need 1000
There are four possibilities:@refill
@table @asis
@item No @code{@@setchapternewpage} command
Cause @TeX{} to specify the single-sided heading format, with chapters
on new pages. This is the same as @code{@@setchapternewpage on}.@refill
@item @code{@@setchapternewpage on}
Specify the single-sided heading format, with chapters on new pages.@refill
@item @code{@@setchapternewpage off}
Cause @TeX{} to start a new chapter on the same page as the last page of
the preceding chapter, after skipping some vertical whitespace. Also
cause @TeX{} to typeset for single-sided printing. (You can override
the headers format with the @code{@@headings double} command; see
@ref{headings on off, , The @code{@@headings} Command}.)@refill
@item @code{@@setchapternewpage odd}
Specify the double-sided heading format, with chapters on new pages.@refill
@end table
@noindent
Texinfo lacks an @code{@@setchapternewpage even} command.@refill
@node Custom Headings, , Heading Choice, Headings
@comment node-name, next, previous, up
@section How to Make Your Own Headings
You can use the standard headings provided with Texinfo or specify
your own. By default, Texinfo has no footers, so if you specify them,
the available page size for the main text will be slightly reduced.
Texinfo provides six commands for specifying headings and
footings:
@itemize @bullet
@item
@code{@@everyheading} @code{@@everyfooting} generate page headers and
footers that are the same for both even- and odd-numbered pages.
@item
@code{@@evenheading} and @code{@@evenfooting} command generate headers
and footers for even-numbered (left-hand) pages.
@item
@code{@@oddheading} and @code{@@oddfooting} generate headers and footers
for odd-numbered (right-hand) pages.
@end itemize
Write custom heading specifications in the Texinfo file immediately
after the @code{@@end titlepage} command. Enclose your specifications
between @code{@@iftex} and @code{@@end iftex} commands since the
@code{texinfo-format-buffer} command may not recognize them. Also,
you must cancel the predefined heading commands with the
@code{@@headings off} command before defining your own
specifications.@refill
@need 1000
Here is how to tell @TeX{} to place the chapter name at the left, the
page number in the center, and the date at the right of every header
for both even- and odd-numbered pages:@refill
@example
@group
@@iftex
@@headings off
@@everyheading @@thischapter @@| @@thispage @@| @@today@{@}
@@end iftex
@end group
@end example
@noindent
You need to divide the left part from the central part and the central
part from the right part by inserting @samp{@@|} between parts.
Otherwise, the specification command will not be able to tell where
the text for one part ends and the next part begins.@refill
Each part can contain text or @@-commands. The text
is printed as if the part were within an ordinary paragraph in the
body of the page. The @@-commands replace
themselves with the page number, date, chapter name, or
whatever.@refill
@need 950
Here are the six heading and footing commands:@refill
@findex everyheading
@findex everyfooting
@table @code
@item @@everyheading @var{left} @@| @var{center} @@| @var{right}
@itemx @@everyfooting @var{left} @@| @var{center} @@| @var{right}
The `every' commands specify the format for both even- and odd-numbered
pages. These commands are for documents that are printed on one side
of each sheet of paper, or for documents in which you want symmetrical
headers or footers.@refill
@findex evenheading
@findex evenfooting
@findex oddheading
@findex oddfooting
@item @@evenheading @var{left} @@| @var{center} @@| @var{right}
@itemx @@oddheading @var{left} @@| @var{center} @@| @var{right}
@itemx @@evenfooting @var{left} @@| @var{center} @@| @var{right}
@itemx @@oddfooting @var{left} @@| @var{center} @@| @var{right}
The `even' and `odd' commands specify the format for even-numbered
pages and odd-numbered pages. These commands are for books and
manuals that are printed on both sides of each sheet of paper.
@end table
Use the @samp{@@this@dots{}} series of @@-commands to
provide the names of chapters
and sections and the page number. You can use the
@samp{@@this@dots{}} commands in the left, center, or right portions
of headers and footers, or anywhere else in a Texinfo file so long as
they are between @code{@@iftex} and @code{@@end iftex} commands.@refill
@need 1000
Here are the @samp{@@this@dots{}} commands:@refill
@table @code
@findex thispage
@item @@thispage
Expands to the current page number.@refill
@c !!! Karl Berry says that `thissection' can fail on page breaks.
@ignore
@item @@thissection
Expands to the name of the current section.@refill
@end ignore
@findex thischaptername
@item @@thischaptername
Expands to the name of the current chapter.@refill
@findex thischapter
@item @@thischapter
Expands to the number and name of the current
chapter, in the format `Chapter 1: Title'.@refill
@findex thistitle
@item @@thistitle
Expands to the name of the document, as specified by the
@code{@@settitle} command.@refill
@findex thisfile
@item @@thisfile
For @code{@@include} files only: expands to the name of the current
@code{@@include} file. If the current Texinfo source file is not an
@code{@@include} file, this command has no effect. This command does
@emph{not} provide the name of the current Texinfo source file unless
it is an @code{@@include} file. (@xref{Include Files}, for more
information about @code{@@include} files.)@refill
@end table
@noindent
You can also use the @code{@@today@{@}} command, which expands to the
current date, in `1 Jan 1900' format.@refill
@findex today
Other @@-commands and text are printed in a header or footer just as
if they were in the body of a page. It is useful to incorporate text,
particularly when you are writing drafts:@refill
@example
@group
@@iftex
@@headings off
@@everyheading @@emph@{Draft!@} @@| @@thispage @@| @@thischapter
@@everyfooting @@| @@| Version: 0.27: @@today@{@}
@@end iftex
@end group
@end example
Beware of overlong titles: they may overlap another part of the
header or footer and blot it out.@refill
@node Catching Mistakes
@appendix Formatting Mistakes
@cindex Structure, catching mistakes in
@cindex Nodes, catching mistakes
@cindex Catching mistakes
@cindex Correcting mistakes
@cindex Mistakes, catching
@cindex Problems, catching
@cindex Debugging the Texinfo structure
Besides mistakes in the content of your documentation, there
are two kinds of mistake you can make with Texinfo: you can make mistakes
with @@-commands, and you can make mistakes with the structure of the
nodes and chapters.@refill
Emacs has two tools for catching the @@-command mistakes and two for
catching structuring mistakes.@refill
For finding problems with @@-commands, you can run @TeX{} or a region
formatting command on the region that has a problem; indeed, you can
run these commands on each region as you write it.@refill
For finding problems with the structure of nodes and chapters, you can use
@kbd{C-c C-s} (@code{texinfo-show-structure}) and the related @code{occur}
command and you can use the @kbd{M-x Info-validate} command.@refill
@menu
* makeinfo Preferred:: @code{makeinfo} finds errors.
* Debugging with Info:: How to catch errors with Info formatting.
* Debugging with TeX:: How to catch errors with @TeX{} formatting.
* Using texinfo-show-structure:: How to use @code{texinfo-show-structure}.
* Using occur:: How to list all lines containing a pattern.
* Running Info-Validate:: How to find badly referenced nodes.
@end menu
@node makeinfo Preferred, Debugging with Info, Catching Mistakes, Catching Mistakes
@ifinfo
@heading @code{makeinfo} Find Errors
@end ifinfo
The @code{makeinfo} program does an excellent job of catching errors
and reporting them---far better than @code{texinfo-format-region} or
@code{texinfo-format-buffer}. In addition, the various functions for
automatically creating and updating node pointers and menus remove
many opportunities for human error.@refill
If you can, use the updating commands to create and insert pointers
and menus. These prevent many errors. Then use @code{makeinfo} (or
its Texinfo mode manifestations, @code{makeinfo-region} and
@code{makeinfo-buffer}) to format your file and check for other
errors. This is the best way to work with Texinfo. But if you
cannot use @code{makeinfo}, or your problem is very puzzling, then you
may want to use the tools described in this appendix.@refill
@node Debugging with Info, Debugging with TeX, makeinfo Preferred, Catching Mistakes
@comment node-name, next, previous, up
@section Catching Errors with Info Formatting
@cindex Catching errors with Info formatting
@cindex Debugging with Info formatting
After you have written part of a Texinfo file, you can use the
@code{texinfo-format-region} or the @code{makeinfo-region} command to
see whether the region formats properly.@refill
Most likely, however, you are reading this section because for some
reason you cannot use the @code{makeinfo-region} command; therefore, the
rest of this section presumes that you are using
@code{texinfo-format-region}.@refill
If you have made a mistake with an @@-command,
@code{texinfo-format-region} will stop processing at or after the
error and display an error message. To see where in the buffer the
error occurred, switch to the @samp{*Info Region*} buffer; the cursor
will be in a position that is after the location of the error. Also,
the text will not be formatted after the place where the error
occurred (or more precisely, where it was detected).@refill
For example, if you accidentally end a menu with the command @code{@@end
menus} with an `s' on the end, instead of with @code{@@end menu}, you
will see an error message that says:@refill
@example
@@end menus is not handled by texinfo
@end example
@noindent
The cursor will stop at the point in the buffer where the error
occurs, or not long after it. The buffer will look like this:@refill
@example
@group
---------- Buffer: *Info Region* ----------
* Menu:
* Using texinfo-show-structure:: How to use
`texinfo-show-structure'
to catch mistakes.
* Running Info-Validate:: How to check for
unreferenced nodes.
@@end menus
@point{}
---------- Buffer: *Info Region* ----------
@end group
@end example
The @code{texinfo-format-region} command sometimes provides slightly
odd error messages. For example, the following cross reference fails to format:@refill
@example
(@@xref@{Catching Mistakes, for more info.)
@end example
@noindent
In this case, @code{texinfo-format-region} detects the missing closing
brace but displays a message that says @samp{Unbalanced parentheses}
rather than @samp{Unbalanced braces}. This is because the formatting
command looks for mismatches between braces as if they were
parentheses.@refill
Sometimes @code{texinfo-format-region} fails to detect mistakes. For
example, in the following, the closing brace is swapped with the
closing parenthesis:@refill
@example
(@@xref@{Catching Mistakes), for more info.@}
@end example
@noindent
Formatting produces:
@example
(*Note for more info.: Catching Mistakes)
@end example
The only way for you to detect this error is to realize that the
reference should have looked like this:@refill
@example
(*Note Catching Mistakes::, for more info.)
@end example
Incidentally, if you are reading this node in Info and type @kbd{f
@key{RET}} (@code{Info-follow-reference}), you will generate an error
message that says:
@example
No such node: "Catching Mistakes) The only way @dots{}
@end example
@noindent
This is because Info perceives the example of the error as the first
cross reference in this node and if you type a @key{RET} immediately
after typing the Info @kbd{f} command, Info will attempt to go to the
referenced node. If you type @kbd{f catch @key{TAB} @key{RET}}, Info
will complete the node name of the correctly written example and take
you to the `Catching Mistakes' node. (If you try this, you can return
from the `Catching Mistakes' node by typing @kbd{l}
(@code{Info-last}).)
@c !!! section on using Elisp debugger ignored.
@ignore
Sometimes @code{texinfo-format-region} will stop long after the
original error; this is because it does not discover the problem until
then. In this case, you will need to backtrack.@refill
@c menu
@c * Using the Emacs Lisp Debugger:: How to use the Emacs Lisp debugger.
@c end menu
@c node Using the Emacs Lisp Debugger
@c appendixsubsec Using the Emacs Lisp Debugger
@c index Using the Emacs Lisp debugger
@c index Emacs Lisp debugger
@c index Debugger, using the Emacs Lisp
If an error is especially elusive, you can turn on the Emacs Lisp
debugger and look at the backtrace; this tells you where in the
@code{texinfo-format-region} function the problem occurred. You can
turn on the debugger with the command:@refill
@example
M-x set-variable @key{RET} debug-on-error @key{RET} t @key{RET}
@end example
@noindent
and turn it off with
@example
M-x set-variable @key{RET} debug-on-error @key{RET} nil @key{RET}
@end example
Often, when you are using the debugger, it is easier to follow what is
going on if you use the Emacs Lisp files that are not byte-compiled.
The byte-compiled sources send octal numbers to the debugger that may
look mysterious. To use the uncompiled source files, load
@file{texinfmt.el} and @file{texinfo.el} with the @kbd{M-x load-file}
command.@refill
The debugger will not catch an error if @code{texinfo-format-region}
does not detect one. In the example shown above,
@code{texinfo-format-region} did not find the error when the whole
list was formatted, but only when part of the list was formatted.
When @code{texinfo-format-region} did not find an error, the debugger
did not find one either. @refill
However, when @code{texinfo-format-region} did report an error, it
invoked the debugger. This is the backtrace it produced:@refill
@example
---------- Buffer: *Backtrace* ----------
Signalling: (search-failed "[@},]")
re-search-forward("[@},]")
(while ...)
(let ...)
texinfo-format-parse-args()
(let ...)
texinfo-format-xref()
funcall(texinfo-format-xref)
(if ...)
(let ...)
(if ...)
(while ...)
texinfo-format-scan()
(save-excursion ...)
(let ...)
texinfo-format-region(103370 103631)
* call-interactively(texinfo-format-region)
---------- Buffer: *Backtrace* ----------
@end example
The backtrace is read from the bottom up.
@code{texinfo-format-region} was called interactively; and it, in
turn, called various functions, including @code{texinfo-format-scan},
@code{texinfo-format-xref} and @code{texinfo-format-parse-args}.
Inside the function @code{texinfo-format-parse-args}, the function
@code{re-search-forward} was called; it was this function that could
not find the missing right-hand brace.@refill
@xref{Lisp Debug, , Debugging Emacs Lisp, emacs, The GNU Emacs
Manual}, for more information.@refill
@end ignore
@node Debugging with TeX, Using texinfo-show-structure, Debugging with Info, Catching Mistakes
@comment node-name, next, previous, up
@section Catching Errors with @TeX{} Formatting
@cindex Catching errors with @TeX{} formatting
@cindex Debugging with @TeX{} formatting
You can also catch mistakes when you format a file with @TeX{}.@refill
Usually, you will want to do this after you have run
@code{texinfo-format-buffer} (or, better, @code{makeinfo-buffer}) on
the same file, because @code{texinfo-format-buffer} sometimes displays
error messages that make more sense than @TeX{}. (@xref{Debugging
with Info}, for more information.)@refill
For example, @TeX{} was run on a Texinfo file, part of which is shown
here:@refill
@example
---------- Buffer: texinfo.texi ----------
name of the Texinfo file as an extension. The
@@samp@{??@} are `wildcards' that cause the shell to
substitute all the raw index files. (@@xref@{sorting
indices, for more information about sorting
indices.)@@refill
---------- Buffer: texinfo.texi ----------
@end example
@noindent
(The cross reference lacks a closing brace.)
@TeX{} produced the following output, after which it stopped:@refill
@example
---------- Buffer: *tex-shell* ----------
Runaway argument?
@{sorting indices, for more information about sorting
indices.) @@refill @@ETC.
! Paragraph ended before @@xref was complete.
<to be read again>
@@par
l.27
?
---------- Buffer: *tex-shell* ----------
@end example
In this case, @TeX{} produced an accurate and
understandable error message:
@example
Paragraph ended before @@xref was complete.
@end example
@noindent
@samp{@@par} is an internal @TeX{} command of no relevance to Texinfo.
@samp{l.27} means that @TeX{} detected the problem on line 27 of the
Texinfo file. The @samp{?} is the prompt @TeX{} uses in this
circumstance.@refill
Unfortunately, @TeX{} is not always so helpful, and sometimes you must
truly be a Sherlock Holmes to discover what went wrong.@refill
In any case, if you run into a problem like this, you can do one of three
things.@refill
@enumerate
@item
You can tell @TeX{} to continue running and ignore just this error by
typing @key{RET} at the @samp{?} prompt.@refill
@item
You can tell @TeX{} to continue running and to ignore all errors as best
it can by typing @kbd{r @key{RET}} at the @samp{?} prompt.@refill
This is often the best thing to do. However, beware: the one error
may produce a cascade of additional error messages as its consequences
are felt through the rest of the file. To stop @TeX{} when it is
producing such an avalanche of error messages, type @kbd{C-c} (or
@kbd{C-c C-c}, if you are running a shell inside Emacs).
@item
You can tell @TeX{} to stop this run by typing @kbd{x @key{RET}}
at the @samp{?} prompt.@refill
@end enumerate
If you are running @TeX{} inside Emacs, you need to switch to the shell
buffer and line at which @TeX{} offers the @samp{?} prompt.
Sometimes @TeX{} will format a file without producing error messages even
though there is a problem. This usually occurs if a command is not ended
but @TeX{} is able to continue processing anyhow. For example, if you fail
to end an itemized list with the @code{@@end itemize} command, @TeX{} will
write a DVI file that you can print out. The only error message that
@TeX{} will give you is the somewhat mysterious comment that@refill
@example
(@@end occurred inside a group at level 1)
@end example
@noindent
However, if you print the DVI file, you will find that the text
of the file that follows the itemized list is entirely indented as if
it were part of the last item in the itemized list. The error message
is the way @TeX{} says that it expected to find an @code{@@end}
command somewhere in the file; but that it could not determine where
it was needed.@refill
Another source of notoriously hard-to-find errors is a missing
@code{@@end group} command. If you ever are stumped by
incomprehensible errors, look for a missing @code{@@end group} command
first.@refill
If the Texinfo file lacks header lines,
@TeX{} may stop in the
beginning of its run and display output that looks like the following.
The @samp{*} indicates that @TeX{} is waiting for input.@refill
@example
This is TeX, Version 3.14159 (Web2c 7.0)
(test.texinfo [1])
*
@end example
@noindent
In this case, simply type @kbd{\end @key{RET}} after the asterisk. Then
write the header lines in the Texinfo file and run the @TeX{} command
again. (Note the use of the backslash, @samp{\}. @TeX{} uses @samp{\}
instead of @samp{@@}; and in this circumstance, you are working
directly with @TeX{}, not with Texinfo.)@refill
@node Using texinfo-show-structure, Using occur, Debugging with TeX, Catching Mistakes
@comment node-name, next, previous, up
@section Using @code{texinfo-show-structure}
@cindex Showing the structure of a file
@findex texinfo-show-structure
It is not always easy to keep track of the nodes, chapters, sections, and
subsections of a Texinfo file. This is especially true if you are revising
or adding to a Texinfo file that someone else has written.@refill
In GNU Emacs, in Texinfo mode, the @code{texinfo-show-structure}
command lists all the lines that begin with the @@-commands that
specify the structure: @code{@@chapter}, @code{@@section},
@code{@@appendix}, and so on. With an argument (@w{@kbd{C-u}}
as prefix argument, if interactive),
the command also shows the @code{@@node} lines. The
@code{texinfo-show-structure} command is bound to @kbd{C-c C-s} in
Texinfo mode, by default.@refill
The lines are displayed in a buffer called the @samp{*Occur*} buffer,
indented by hierarchical level. For example, here is a part of what was
produced by running @code{texinfo-show-structure} on this manual:@refill
@example
@group
Lines matching "^@@\\(chapter \\|sect\\|subs\\|subh\\|
unnum\\|major\\|chapheading \\|heading \\|appendix\\)"
in buffer texinfo.texi.
@dots{}
4177:@@chapter Nodes
4198: @@heading Two Paths
4231: @@section Node and Menu Illustration
4337: @@section The @@code@{@@@@node@} Command
4393: @@subheading Choosing Node and Pointer Names
4417: @@subsection How to Write an @@code@{@@@@node@} Line
4469: @@subsection @@code@{@@@@node@} Line Tips
@dots{}
@end group
@end example
This says that lines 4337, 4393, and 4417 of @file{texinfo.texi} begin
with the @code{@@section}, @code{@@subheading}, and @code{@@subsection}
commands respectively. If you move your cursor into the @samp{*Occur*}
window, you can position the cursor over one of the lines and use the
@kbd{C-c C-c} command (@code{occur-mode-goto-occurrence}), to jump to
the corresponding spot in the Texinfo file. @xref{Other Repeating
Search, , Using Occur, emacs, The GNU Emacs Manual}, for more
information about @code{occur-mode-goto-occurrence}.@refill
The first line in the @samp{*Occur*} window describes the @dfn{regular
expression} specified by @var{texinfo-heading-pattern}. This regular
expression is the pattern that @code{texinfo-show-structure} looks for.
@xref{Regexps, , Using Regular Expressions, emacs, The GNU Emacs Manual},
for more information.@refill
When you invoke the @code{texinfo-show-structure} command, Emacs will
display the structure of the whole buffer. If you want to see the
structure of just a part of the buffer, of one chapter, for example,
use the @kbd{C-x n n} (@code{narrow-to-region}) command to mark the
region. (@xref{Narrowing, , , emacs, The GNU Emacs Manual}.) This is
how the example used above was generated. (To see the whole buffer
again, use @kbd{C-x n w} (@code{widen}).)@refill
If you call @code{texinfo-show-structure} with a prefix argument by
typing @w{@kbd{C-u C-c C-s}}, it will list lines beginning with
@code{@@node} as well as the lines beginning with the @@-sign commands
for @code{@@chapter}, @code{@@section}, and the like.@refill
You can remind yourself of the structure of a Texinfo file by looking at
the list in the @samp{*Occur*} window; and if you have mis-named a node
or left out a section, you can correct the mistake.@refill
@node Using occur, Running Info-Validate, Using texinfo-show-structure, Catching Mistakes
@comment node-name, next, previous, up
@section Using @code{occur}
@cindex Occurrences, listing with @code{@@occur}
@findex occur
Sometimes the @code{texinfo-show-structure} command produces too much
information. Perhaps you want to remind yourself of the overall structure
of a Texinfo file, and are overwhelmed by the detailed list produced by
@code{texinfo-show-structure}. In this case, you can use the @code{occur}
command directly. To do this, type@refill
@example
@kbd{M-x occur}
@end example
@noindent
and then, when prompted, type a @dfn{regexp}, a regular expression for
the pattern you want to match. (@xref{Regexps, , Regular Expressions,
emacs, The GNU Emacs Manual}.) The @code{occur} command works from
the current location of the cursor in the buffer to the end of the
buffer. If you want to run @code{occur} on the whole buffer, place
the cursor at the beginning of the buffer.@refill
For example, to see all the lines that contain the word
@samp{@@chapter} in them, just type @samp{@@chapter}. This will
produce a list of the chapters. It will also list all the sentences
with @samp{@@chapter} in the middle of the line.@refill
If you want to see only those lines that start with the word
@samp{@@chapter}, type @samp{^@@chapter} when prompted by
@code{occur}. If you want to see all the lines that end with a word
or phrase, end the last word with a @samp{$}; for example,
@samp{catching mistakes$}. This can be helpful when you want to see
all the nodes that are part of the same chapter or section and
therefore have the same `Up' pointer.@refill
@xref{Other Repeating Search, , Using Occur, emacs , The GNU Emacs Manual},
for more information.@refill
@node Running Info-Validate, , Using occur, Catching Mistakes
@comment node-name, next, previous, up
@section Finding Badly Referenced Nodes
@findex Info-validate
@cindex Nodes, checking for badly referenced
@cindex Checking for badly referenced nodes
@cindex Looking for badly referenced nodes
@cindex Finding badly referenced nodes
@cindex Badly referenced nodes
You can use the @code{Info-validate} command to check whether any of
the `Next', `Previous', `Up' or other node pointers fail to point to a
node. This command checks that every node pointer points to an
existing node. The @code{Info-validate} command works only on Info
files, not on Texinfo files.@refill
The @code{makeinfo} program validates pointers automatically, so you
do not need to use the @code{Info-validate} command if you are using
@code{makeinfo}. You only may need to use @code{Info-validate} if you
are unable to run @code{makeinfo} and instead must create an Info file
using @code{texinfo-format-region} or @code{texinfo-format-buffer}, or
if you write an Info file from scratch.@refill
@menu
* Using Info-validate:: How to run @code{Info-validate}.
* Unsplit:: How to create an unsplit file.
* Tagifying:: How to tagify a file.
* Splitting:: How to split a file manually.
@end menu
@node Using Info-validate, Unsplit, Running Info-Validate, Running Info-Validate
@subsection Running @code{Info-validate}
@cindex Running @code{Info-validate}
@cindex Info validating a large file
@cindex Validating a large file
To use @code{Info-validate}, visit the Info file you wish to check and
type:@refill
@example
M-x Info-validate
@end example
@noindent
Note that the @code{Info-validate} command requires an upper case
`I'. You may also need to create a tag table before running
@code{Info-validate}. @xref{Tagifying}.
If your file is valid, you will receive a message that says ``File appears
valid''. However, if you have a pointer that does not point to a node,
error messages will be displayed in a buffer called @samp{*problems in
info file*}.@refill
For example, @code{Info-validate} was run on a test file that contained
only the first node of this manual. One of the messages said:@refill
@example
In node "Overview", invalid Next: Texinfo Mode
@end example
@noindent
This meant that the node called @samp{Overview} had a `Next' pointer that
did not point to anything (which was true in this case, since the test file
had only one node in it).@refill
Now suppose we add a node named @samp{Texinfo Mode} to our test case
but we do not specify a `Previous' for this node. Then we will get
the following error message:@refill
@example
In node "Texinfo Mode", should have Previous: Overview
@end example
@noindent
This is because every `Next' pointer should be matched by a
`Previous' (in the node where the `Next' points) which points back.@refill
@code{Info-validate} also checks that all menu entries and cross references
point to actual nodes.@refill
@code{Info-validate} requires a tag table and does not work with files
that have been split. (The @code{texinfo-format-buffer} command
automatically splits large files.) In order to use @code{Info-validate}
on a large file, you must run @code{texinfo-format-buffer} with an
argument so that it does not split the Info file; and you must create a
tag table for the unsplit file.
@node Unsplit, Tagifying, Using Info-validate, Running Info-Validate
@comment node-name, next, previous, up
@subsection Creating an Unsplit File
@cindex Creating an unsplit file
@cindex Unsplit file creation
You can run @code{Info-validate} only on a single Info file that has a
tag table. The command will not work on the indirect subfiles that
are generated when a master file is split. If you have a large file
(longer than 70,000 bytes or so), you need to run the
@code{texinfo-format-buffer} or @code{makeinfo-buffer} command in such
a way that it does not create indirect subfiles. You will also need
to create a tag table for the Info file. After you have done this,
you can run @code{Info-validate} and look for badly referenced
nodes.@refill
The first step is to create an unsplit Info file. To prevent
@code{texinfo-format-buffer} from splitting a Texinfo file into
smaller Info files, give a prefix to the @kbd{M-x
texinfo-format-buffer} command:@refill
@example
C-u M-x texinfo-format-buffer
@end example
@noindent
or else
@example
C-u C-c C-e C-b
@end example
@noindent
When you do this, Texinfo will not split the file and will not create
a tag table for it. @refill
@cindex Making a tag table manually
@cindex Tag table, making manually
@node Tagifying, Splitting, Unsplit, Running Info-Validate
@subsection Tagifying a File
After creating an unsplit Info file, you must create a tag table for
it. Visit the Info file you wish to tagify and type:@refill
@example
M-x Info-tagify
@end example
@noindent
(Note the upper case @samp{I} in @code{Info-tagify}.) This creates an
Info file with a tag table that you can validate.@refill
The third step is to validate the Info file:@refill
@example
M-x Info-validate
@end example
@noindent
(Note the upper case @samp{I} in @code{Info-validate}.)
In brief, the steps are:@refill
@example
@group
C-u M-x texinfo-format-buffer
M-x Info-tagify
M-x Info-validate
@end group
@end example
After you have validated the node structure, you can rerun
@code{texinfo-format-buffer} in the normal way so it will construct a
tag table and split the file automatically, or you can make the tag
table and split the file manually.@refill
@node Splitting, , Tagifying, Running Info-Validate
@comment node-name, next, previous, up
@subsection Splitting a File Manually
@cindex Splitting an Info file manually
@cindex Info file, splitting manually
You should split a large file or else let the
@code{texinfo-format-buffer} or @code{makeinfo-buffer} command do it
for you automatically. (Generally you will let one of the formatting
commands do this job for you. @xref{Creating an Info File}.)@refill
The split-off files are called the indirect subfiles.@refill
Info files are split to save memory. With smaller files, Emacs does not
have make such a large buffer to hold the information.@refill
If an Info file has more than 30 nodes, you should also make a tag
table for it. @xref{Using Info-validate}, for information
about creating a tag table. (Again, tag tables are usually created
automatically by the formatting command; you only need to create a tag
table yourself if you are doing the job manually. Most likely, you
will do this for a large, unsplit file on which you have run
@code{Info-validate}.)@refill
@c Info-split is autoloaded in `loaddefs.el' in Emacs 18.51
@ignore
Before running @code{Info-split}, you need to load the @code{info} library
into Emacs by giving the command @kbd{M-x load-library @key{RET} info
@key{RET}}.
@end ignore
Visit the Info file you wish to tagify and split and type the two
commands:@refill
@example
M-x Info-tagify
M-x Info-split
@end example
@noindent
(Note that the @samp{I} in @samp{Info} is upper case.)@refill
When you use the @code{Info-split} command, the buffer is modified into a
(small) Info file which lists the indirect subfiles. This file should be
saved in place of the original visited file. The indirect subfiles are
written in the same directory the original file is in, with names generated
by appending @samp{-} and a number to the original file name.@refill
The primary file still functions as an Info file, but it contains just
the tag table and a directory of subfiles.@refill
@node Refilling Paragraphs
@appendix Refilling Paragraphs
@cindex Refilling paragraphs
@cindex Filling paragraphs
@cindex Paragraphs, filling
@findex refill
The @code{@@refill} command refills and, optionally, indents the first
line of a paragraph.@footnote{Perhaps the command should have been
called the @code{@@refillandindent} command, but @code{@@refill} is
shorter and the name was chosen before indenting was possible.} The
@code{@@refill} command is no longer important, but we describe it here
because you once needed it. You will see it in many old Texinfo
files.@refill
Without refilling, paragraphs containing long @@-constructs may look
bad after formatting because the formatter removes @@-commands and
shortens some lines more than others. In the past, neither the
@code{texinfo-format-region} command nor the
@code{texinfo-format-buffer} command refilled paragraphs
automatically. The @code{@@refill} command had to be written at the
end of every paragraph to cause these formatters to fill them. (Both
@TeX{} and @code{makeinfo} have always refilled paragraphs
automatically.) Now, all the Info formatters automatically fill and
indent those paragraphs that need to be filled and indented.@refill
The @code{@@refill} command causes @code{texinfo-format-region} and
@code{texinfo-format-buffer} to refill a paragraph in the Info file
@emph{after} all the other processing has been done. For this reason,
you can not use @code{@@refill} with a paragraph containing either
@code{@@*} or @code{@@w@{ @dots{} @}} since the refilling action will
override those two commands.@refill
The @code{texinfo-format-region} and @code{texinfo-format-buffer}
commands now automatically append @code{@@refill} to the end of each
paragraph that should be filled. They do not append @code{@@refill} to
the ends of paragraphs that contain @code{@@*} or @w{@code{@@w@{ @dots{}@}}}
and therefore do not refill or indent them.@refill
@node Command Syntax
@appendix @@-Command Syntax
@cindex @@-command syntax
@cindex Syntax, of @@-commands
@cindex Command syntax
The character @samp{@@} is used to start special Texinfo commands.
(It has the same meaning that @samp{\} has in plain @TeX{}.) Texinfo
has four types of @@-command:@refill
@table @asis
@item 1. Non-alphabetic commands.
These commands consist of an @@ followed by a punctuation mark or other
character that is not part of the alphabet. Non-alphabetic commands are
almost always part of the text within a paragraph, and never take any
argument. The two characters (@@ and the other one) are complete in
themselves; none is followed by braces. The non-alphabetic commands
are: @code{@@.}, @code{@@:}, @code{@@*}, @code{@@@kbd{SPACE}},
@code{@@@kbd{TAB}}, @code{@@@kbd{NL}}, @code{@@@@}, @code{@@@{}, and
@code{@@@}}.@refill
@item 2. Alphabetic commands that do not require arguments.
These commands start with @@ followed by a word followed by left- and
right-hand braces. These commands insert special symbols in the
document; they do not require arguments. For example,
@code{@@dots@{@}} @result{} @samp{@dots{}}, @code{@@equiv@{@}}
@result{} @samp{@equiv{}}, @code{@@TeX@{@}} @result{} `@TeX{}',
and @code{@@bullet@{@}} @result{} @samp{@bullet{}}.@refill
@item 3. Alphabetic commands that require arguments within braces.
These commands start with @@ followed by a letter or a word, followed by an
argument within braces. For example, the command @code{@@dfn} indicates
the introductory or defining use of a term; it is used as follows: @samp{In
Texinfo, @@@@-commands are @@dfn@{mark-up@} commands.}@refill
@item 4. Alphabetic commands that occupy an entire line.
These commands occupy an entire line. The line starts with @@,
followed by the name of the command (a word); for example, @code{@@center}
or @code{@@cindex}. If no argument is needed, the word is followed by
the end of the line. If there is an argument, it is separated from
the command name by a space. Braces are not used.@refill
@end table
@cindex Braces and argument syntax
Thus, the alphabetic commands fall into classes that have
different argument syntaxes. You cannot tell to which class a command
belongs by the appearance of its name, but you can tell by the
command's meaning: if the command stands for a glyph, it is in
class 2 and does not require an argument; if it makes sense to use the
command together with other text as part of a paragraph, the command
is in class 3 and must be followed by an argument in braces;
otherwise, it is in class 4 and uses the rest of the line as its
argument.@refill
The purpose of having a different syntax for commands of classes 3 and
4 is to make Texinfo files easier to read, and also to help the GNU
Emacs paragraph and filling commands work properly. There is only one
exception to this rule: the command @code{@@refill}, which is always
used at the end of a paragraph immediately following the final period
or other punctuation character. @code{@@refill} takes no argument and
does @emph{not} require braces. @code{@@refill} never confuses the
Emacs paragraph commands because it cannot appear at the beginning of
a line.@refill
@node Obtaining TeX
@appendix How to Obtain @TeX{}
@cindex Obtaining @TeX{}
@cindex @TeX{}, how to obtain
@c !!! Here is information about obtaining TeX. Update it whenever.
@c !!! Also consider updating TeX.README on ftp.gnu.org.
@c Updated by RJC on 1 March 1995, conversation with MacKay.
@c Updated by kb@cs.umb.edu on 29 July 1996.
@c Updated by kb@cs.umb.edu on 25 April 1997.
@c Updated by kb@cs.umb.edu on 27 February 1998.
@TeX{} is freely redistributable. You can obtain @TeX{} for Unix
systems via anonymous ftp or on physical media. The core material
consists of the Web2c @TeX{} distribution (@uref{http://tug.org/web2c}).
Instructions for retrieval by anonymous ftp and information on other
available distributions:
@example
@uref{ftp://tug.org/tex/unixtex.ftp}
@uref{http://tug.org/unixtex.ftp}
@end example
The Free Software Foundation provides a core distribution on its Source
Code CD-ROM suitable for printing Texinfo manuals. To order it, contact:
@display
@group
Free Software Foundation, Inc.
59 Temple Place Suite 330
Boston, MA @ @ 02111-1307
USA
Telephone: @w{+1-617-542-5942}
Fax: (including Japan) @w{+1-617-542-2652}
Free Dial Fax (in Japan):
@w{ } @w{ } @w{ } 0031-13-2473 (KDD)
@w{ } @w{ } @w{ } 0066-3382-0158 (IDC)
Electronic mail: @code{gnu@@gnu.org}
@end group
@end display
Many other @TeX{} distributions are available; see
@uref{http://tug.org/}.
@c These are no longer ``new'', and the explanations
@c are all given elsewhere anyway, I think. --karl, 25apr97.
@c So ignore the entire appendix.
@ignore
@c node New Features, Command and Variable Index, Obtaining TeX, Top
@c appendix Second Edition Features
@tex
% Widen the space for the first column so three control-character
% strings fit in the first column. Switched back to default .8in
% value at end of chapter.
\global\tableindent=1.0in
@end tex
The second edition of the Texinfo manual describes more than 20 new
Texinfo mode commands and more than 50 previously undocumented Texinfo
@@-commands. This edition is more than twice the length of the first
edition.@refill
Here is a brief description of the new commands.@refill
@c menu
* New Texinfo Mode Commands:: The updating commands are especially useful.
* New Commands:: Many newly described @@-commands.
@c end menu
@c node New Texinfo Mode Commands, New Commands, Obtaining TeX, Obtaining TeX
@c appendixsec New Texinfo Mode Commands
Texinfo mode provides commands and features especially designed for
working with Texinfo files. More than 20 new commands have been
added, including commands for automatically creating and updating
both nodes and menus. This is a tedious task when done by hand.@refill
The keybindings are intended to be somewhat mnemonic.@refill
@c subheading Update all nodes and menus
The @code{texinfo-master-menu} command is the primary command:
@table @kbd
@item C-c C-u m
@itemx M-x texinfo-master-menu
Create or update a master menu.
With @kbd{C-u} as a prefix argument,
first create or update all nodes
and regular menus.
@end table
@c subheading Update Pointers
@noindent
Create or update `Next', `Previous', and `Up' node pointers.@refill
@noindent
@xref{Updating Nodes and Menus}.
@table @kbd
@item C-c C-u C-n
@itemx M-x texinfo-update-node
Update a node.
@item C-c C-u C-e
@itemx M-x texinfo-every-node-update
Update every node in the buffer.
@end table
@c subheading Update Menus
@noindent
Create or update menus.@refill
@noindent
@xref{Updating Nodes and Menus}.
@table @kbd
@item C-c C-u C-m
@itemx M-x texinfo-make-menu
Make or update a menu.
@item C-c C-u C-a
@itemx M-x texinfo-all-menus-update
Make or update all the menus in a buffer.
With @kbd{C-u} as a prefix argument,
first update all the nodes.
@end table
@c subheading Insert Title as Description
@noindent
Insert a node's chapter or section title in the space for the
description in a menu entry line; position point so you can edit the
insert. (This command works somewhat differently than the other
insertion commands, which insert only a predefined string.)@refill
@noindent
@xref{Inserting, Inserting Frequently Used Commands}.
@table @kbd
@item C-c C-c C-d
Insert title.
@end table
@c subheading Format for Info
@noindent
Provide keybindings both for the Info formatting commands that are
written in Emacs Lisp and for @code{makeinfo} that is written in
C.@refill
@noindent
@xref{Info Formatting}.
@noindent
Use the Emacs lisp @code{texinfo-format@dots{}} commands:
@table @kbd
@item C-c C-e C-r
Format the region.
@item C-c C-e C-b
Format the buffer.
@end table
@noindent
Use @code{makeinfo}:
@table @kbd
@item C-c C-m C-r
Format the region.
@item C-c C-m C-b
Format the buffer.
@item C-c C-m C-l
Recenter the @code{makeinfo} output buffer.
@item C-c C-m C-k
Kill the @code{makeinfo} formatting job.
@end table
@c subheading Typeset and Print
@noindent
Typeset and print Texinfo documents from within Emacs.@refill
@ifinfo
@noindent
@xref{Printing}.
@end ifinfo
@iftex
@noindent
@xref{Printing, , Formatting and Printing}.
@end iftex
@table @kbd
@item C-c C-t C-b
Run @code{texi2dvi} on the buffer.
@item C-c C-t C-r
Run @TeX{} on the region.
@item C-c C-t C-i
Run @code{texindex}.
@item C-c C-t C-p
Print the DVI file.
@item C-c C-t C-q
Show the print queue.
@item C-c C-t C-d
Delete a job from the print queue.
@item C-c C-t C-k
Kill the current @TeX{} formatting job.
@item C-c C-t C-x
Quit a currently stopped @TeX{} formatting job.
@item C-c C-t C-l
Recenter the output buffer.
@end table
@c subheading Other Updating Commands
@noindent
The ``other updating commands'' do not have standard keybindings because
they are used less frequently.@refill
@noindent
@xref{Other Updating Commands}.
@table @kbd
@item M-x texinfo-insert-node-lines
Insert missing @code{@@node} lines using
section titles as node names.
@item M-x texinfo-multiple-files-update
Update a multi-file document.
With a numeric prefix, such as @kbd{C-u 8},
update @strong{every} pointer and
menu in @strong{all} the files and
then insert a master menu.
@item M-x texinfo-indent-menu-description
Indent descriptions in menus.
@item M-x texinfo-sequential-node-update
Insert node pointers in strict sequence.
@end table
@c no.de New Commands, , New Texinfo Mode Commands, Obtaining TeX
@c appendix.sec New Texinfo @@-Commands
The second edition of the Texinfo manual describes more than 50
commands that were not described in the first edition. A third or so
of these commands existed in Texinfo but were not documented in the
manual; the others are new. Here is a listing, with brief
descriptions of them:@refill
@c subheading Indexing
@noindent
Create your own index, and merge indices.@refill
@noindent
@xref{Indices}.
@table @kbd
@item @@defindex @var{index-name}
Define a new index and its indexing command.
See also the @code{@@defcodeindex} command.
@c written verbosely to avoid overfull hbox
@item @@synindex @var{from-index} @var{into-index}
Merge the @var{from-index} index into the @var{into-index} index.
See also the @code{@@syncodeindex} command.
@end table
@c subheading Definitions
@noindent
Describe functions, variables, macros,
commands, user options, special forms, and other such artifacts in a
uniform format.@refill
@noindent
@xref{Definition Commands}.
@table @kbd
@item @@deffn @var{category} @var{name} @var{arguments}@dots{}
Format a description for functions, interactive
commands, and similar entities.
@item @@defvr, @@defop, @dots{}
15 other related commands.
@end table
@c subheading Glyphs
@noindent
Indicate the results of evaluation, expansion,
printed output, an error message, equivalence of expressions, and the
location of point.@refill
@noindent
@xref{Glyphs}.
@table @kbd
@item @@equiv@{@}
@itemx @equiv{}
Equivalence:
@item @@error@{@}
@itemx @error{}
Error message
@item @@expansion@{@}
@itemx @expansion{}
Macro expansion
@item @@point@{@}
@itemx @point{}
Position of point
@item @@print@{@}
@itemx @print{}
Printed output
@item @@result@{@}
@itemx @result{}
Result of an expression
@end table
@c subheading Page Headings
@noindent
Customize page headings.
@noindent
@xref{Headings}.
@table @kbd
@item @@headings @var{on-off-single-double}
Headings on or off, single, or double-sided.
@item @@evenfooting [@var{left}] @@| [@var{center}] @@| [@var{right}]
Footings for even-numbered (left-hand) pages.
@item @@evenheading, @@everyheading, @@oddheading, @dots{}
Five other related commands.
@item @@thischapter
Insert name of chapter and chapter number.
@item @@thischaptername, @@thisfile, @@thistitle, @@thispage
Related commands.
@end table
@c subheading Formatting
@noindent
Format blocks of text.
@noindent
@xref{Quotations and Examples}, and@*
@ref{Lists and Tables, , Making Lists and Tables}.
@table @kbd
@item @@cartouche
Draw rounded box surrounding text (not in Info).
@item @@enumerate @var{optional-arg}
Enumerate a list with letters or numbers.
@item @@exdent @var{line-of-text}
Remove indentation.
@item @@flushleft
Left justify.
@item @@flushright
Right justify.
@item @@format
Do not narrow nor change font.
@item @@ftable @var{formatting-command}
@itemx @@vtable @var{formatting-command}
Two-column table with indexing.
@item @@lisp
For an example of Lisp code.
@item @@smallexample
@itemx @@smalllisp
Like @@table and @@lisp @r{but for} @@smallbook.
@end table
@c subheading Conditionals
@noindent
Conditionally format text.
@noindent
@xref{set clear value, , @code{@@set} @code{@@clear} @code{@@value}}.@refill
@table @kbd
@item @@set @var{flag} [@var{string}]
Set a flag. Optionally, set value
of @var{flag} to @var{string}.
@item @@clear @var{flag}
Clear a flag.
@item @@value@{@var{flag}@}
Replace with value to which @var{flag} is set.
@item @@ifset @var{flag}
Format, if @var{flag} is set.
@item @@ifclear @var{flag}
Ignore, if @var{flag} is set.
@end table
@c subheading @@heading series for Titles
@noindent
Produce unnumbered headings that do not appear in a table of contents.
@noindent
@xref{Structuring}.
@table @kbd
@item @@heading @var{title}
Unnumbered section-like heading not listed
in the table of contents of a printed manual.
@item @@chapheading, @@majorheading, @@c subheading, @@subsubheading
Related commands.
@end table
@need 1000
@c subheading Font commands
@need 1000
@noindent
@xref{Smallcaps}, and @*
@ref{Fonts}.
@table @kbd
@item @@r@{@var{text}@}
Print in roman font.
@item @@sc@{@var{text}@}
Print in @sc{small caps} font.
@end table
@c subheading Miscellaneous
@noindent
See @ref{title subtitle author, , @code{@@title} @code{@@subtitle} and @code{@@author} Commands},@*
see @ref{Customized Highlighting},@*
see @ref{Overfull hboxes},@*
see @ref{Footnotes},@*
see @ref{dmn, , Format a Dimension},@*
see @ref{Raise/lower sections, , @code{@@raisesections} and @code{@@lowersections}},@*
see @ref{math, , @code{@@math}: Inserting Mathematical Expressions}.@*
see @ref{minus, , Inserting a Minus Sign},@*
see @ref{paragraphindent, , Paragraph Indenting},@*
see @ref{Cross Reference Commands},@*
see @ref{title subtitle author, , @code{@@title} @code{@@subtitle} and @code{@@author}}, and@*
see @ref{Custom Headings, , How to Make Your Own Headings}.
@table @kbd
@item @@author @var{author}
Typeset author's name.
@c @item @@definfoenclose @var{new-command}, @var{before}, @var{after},
@c Define a highlighting command for Info. (Info only.)
@item @@finalout
Produce cleaner printed output.
@item @@footnotestyle @var{end-or-separate}
Specify footnote style.
@item @@dmn@{@var{dimension}@}
Format a dimension.
@item @@global@@let@var{new-cmd}=@var{existing-cmd}
Define a highlighting command for @TeX{}. (@TeX{} only.)
@item @@lowersections
Reduce hierarchical level of sectioning commands.
@item @@math@{@var{mathematical-expression}@}
Format a mathematical expression.
@item @@minus@{@}
Generate a minus sign.
@item @@paragraphindent @var{asis-or-number}
Specify paragraph indentation.
@item @@raisesections
Raise hierarchical level of sectioning commands.
@item @@ref@{@var{node-name}, @r{[}@var{entry}@r{]}, @r{[}@var{topic-or-title}@r{]}, @r{[}@var{info-file}@r{]}, @r{[}@var{manual}@r{]}@}
Make a reference. In the printed manual, the
reference does not start with the word `see'.
@item @@title @var{title}
Typeset @var{title} in the alternative
title page format.
@item @@subtitle @var{subtitle}
Typeset @var{subtitle} in the alternative
title page format.
@item @@today@{@}
Insert the current date.
@end table
@tex
% Switch width of first column of tables back to default value
\global\tableindent=.8in
@end tex
@end ignore
@node Command and Variable Index
@unnumbered Command and Variable Index
This is an alphabetical list of all the @@-commands, assorted Emacs Lisp
functions, and several variables. To make the list easier to use, the
commands are listed without their preceding @samp{@@}.@refill
@printindex fn
@node Concept Index
@unnumbered Concept Index
@printindex cp
@bye
|