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
|
\def\filename{endfloat}
\def\fileversion{v2.7}
\def\filedate{2019/04/15}
\def\docdate{2019/04/15}
%
% \CheckSum{872}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
%
% \iffalse
%% Description: LaTeX style to put figures and tables at end of article
%% Keywords: LaTeX, style-option, float, figure, table
%% Authors: James Darrell McCauley <jdm5548@diamond.tamu.edu>,
%% Jeff Goldberg <jeffrey@goldmark.org>,
%% Axel Sommerfeldt <axel.sommerfeldt@f-m.fm>
%% Maintainer: -none-
%% Latest Version: Version 2.7 <April 2019>
% \fi
%
% \DoNotIndex{\documentclass,\usepackage,\hfuzz,\small,\tt,\begin,\end}
% \DoNotIndex{\NeedsTeXFormat,\filedate,\fileversion,\DoNotIndex}
% \DoNotIndex{\def,\edeg,\xdef,\gdef,\let,\divide,\advance,\multiply}
% \DoNotIndex{\",\-,\H,\',\\,\{,\},\^,\ }
% \DoNotIndex{\begingroup,\endgroup,\catcode,\global,\relax,\space}
% \DoNotIndex{\string,\immediate}
% \DoNotIndex{\normalsize,\large,\Large,\small,\tiny,\bf}
% \DoNotIndex{\@z}
% \DoNotIndex{\ifthenelse,\and,\equal,\whiledo,\if,\fi,\else}
% \DoNotIndex{\CodelineIndex,\EnableCrossrefs,\DisableCrossrefs}
% \DoNotIndex{\DocInput,\AltMacroFont}
% \DoNotIndex{\RecordChanges,\OnlyDescription}
% \DoNotIndex{\@input,\@namedef,\@whilesw,\clearpage,\ifnum,\ifx}
% \DoNotIndex{\jobname,\message,\MessageBreak,\newcommand}
% \DoNotIndex{\protect,\providecommand,\ProvidesPackage,\renewcommand}
% \DoNotIndex{\section,\setlength}
%
% \changes{v0.1}{1992/02/25}{created by Darrell McCauley (jdm)}
% \changes{v1.0}{1992/03/01}{cleaned up and released jdm}
% \changes{v2.0}{1992/06/02}{incorporated changes made by bj (see v1.99). jdm}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \changes{v2.1c}{1994/07/20}{Modify documentation -jpg}
% \changes{v2.3}{1995/03/05}{Fix figure* bug and docs -jpg}
%
% \newcommand*{\pkg}[1]{\textsf{#1}}
% \newcommand*{\file}[1]{\texttt{#1}}
% \newcommand*{\cls}[1]{\textsl{#1}}
% \newcommand{\bs}{\texttt{\char'134}}
% \newcommand*\x{\discretionary{-}{}{}}
%
% \title{The \texttt{\filename} package\thanks{This file
% has version number \fileversion, last
% revised \filedate, documentation dated \docdate.}}
% \author{James Darrell McCauley
% \and Jeff Goldberg\thanks{JPG (jeffrey@goldmark.org)
% is responsible for all modifications
% from version 2.1 upwards. Since there is almost no original code
% left, he has claimed co-authorship from version 2.4.}
% \and Axel Sommerfeldt\thanks{Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
% is responsible for all modifications from version 2.5 to 2.7.}
% }
%
% \date{\docdate}
%
% \maketitle
%
% \begin{abstract}
% The purpose of this package is to put all figures on pages by themselves
% at the end of an article in a section named Figures. Likewise for tables.
% Markers, like ``[Figure 3 about here]'' appear in the text (by default)
% near where the figure (or table) would normally have occurred.
% This is usually required when preparing submissions to journals.
%
% A number of package options and other mechanisms are provided to
% give the user control over various aspects of the package's behavior.
%
% Loading this package will change the output of \LaTeX.
% \end{abstract}
%
% \tableofcontents
% \section{In many voices}
%
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% This documentation was put in its current form by Jeff Goldberg,
% who has tried to indicate when he is (when
% I am) speaking. See \autoref{sec:history} for more detail.
% However, both the original author, Darrell McCauley, and
% a major contributor, Brian Junker, use the first person
% singular. In this version I no longer work to keep it clear
% who wrote what portions of the documentation and the code, but
% have allowed things to blend together a little more, since the
% constant interpolations were hindering readability. Generally
% the user documentation was written by Darrell MaCauley (jdm),
% but anything that refers to \LaTeXe\ features was added
% by me (jpg). Also, where you find spelling and typographical
% errors, you are likely to be reading my text.
%
% Axel Sommerfeldt has added a section about dealing with
% other floating environments than |figure| and |table|, and
% made adaptions to other sections affected by the
% changes of version 2.5, 2.6, and 2.7.
% Furthermore he has added paragraphs about his \pkg{caption}
% package in section \ref{sec:removingcaptions} ``Removing captions''.
%
% This documentation is long. Most users won't need to read beyond
% the first few pages, but there are a number of ways to customize
% the behavior of \pkg{endfloat} and these are detailed as the
% documentation progresses. The package is unusual in the way
% it does its job, so it can interact with other packages and
% other aspects of \LaTeX\ in ways that may be surprising.
% Although the package is flexible in some respects, it is
% highly limited in others.
% Tools and hints are provided to help you control these interactions,
% but these do require some reading. But you only need to take
% a look at these sections when the need arises.
%
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
%
% \section{Why write this package?}
%
% Many journals require tables and figures to be separated from the text
% when you submit those ugly double spaced copies. They also usually want
% a list of figures/tables before these sections (capability added in v2.0,
% control through package options added in v2.2).
%
% I (jdm) am writing a set of styles that look exactly like a journal, but just
% by adding one style option, I wanted the user to meet the requirements
% for formatting submissions. I encourage others to do the
% same.\footnote{Note that jdm, working in old \LaTeX209
% did not have the distinction between class, package and package
% options available to him at the time he made his comment.
% The most coherent way to do what is needed is to use a class,
% let's say \cls{submit}, which would load \pkg{endfloat} and
% presumably some double spacing packages among other things. Once
% that class is defined, then other classes which are specific
% to particular journals can be defined.}
%
% \section{Usage}
% \subsection{Loading}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% Just include the package in your preamble
% \begin{quote}
% |\usepackage[|\ldots|]{endfloat}|
% \end{quote}
%
% Note that versions 2.1 and beyond will no longer work with
% \LaTeX209. Get your administrator to upgrade your site
% to the new standard, \LaTeXe. Although version~2.0 (a \LaTeX209 version)
% will usually work with \LaTeXe, it will not do so in combination
% with certain other packages.
%
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% \subsection{What it does}
%
% Merely loading the package will get it working. Loading it will
% have \LaTeX\ produce two extra files with
% \texttt{.ttt} and \texttt{.fff} extensions
% (for tables and figures, respectively).
%
% This puts all figures and tables at the end of your document
% each on a page by itself\footnote{This
% is the default. See \autoref{sec:separator} to see how
% to have multiple floats per page.}
% and creates a List of Figures and/or List of Tables section
% at the end (when appropriate and controllable by options).
% The floats are processed using |\baselinestretch{1}| irrespective
% of what is used in the document as a whole. This can be
% reset to, say 1.4, by using
% \begin{quote}
% |\AtBeginDelayedFloats{%|\\
% | \renewcommand{\baselinestretch}{1.4}}|
% \end{quote}
% which is available from version 2.4. See \autoref{sec:hooks}
% for more discussion.
%
% It also leaves notes in the text (i.e., ``[Figure 4 about here.]'').
% If you would rather not have these, this can be turned off by
% using the |nomarkers| options. If you
% do not like the look of this marker, you can change
% their text and appearance
% (see \autoref{sec:language}).
%
% \subsection{Starred floats}
% The |figure*| and |table*| versions are supported by the current
% version.\footnote{I (jpg) very stupidly introduced a bug in version 2.2
% which wrecked |figure*|. It has been brought to my attention and
% fixed. I offer my thanks and my apologies.}
%
% \subsection{Options} \label{sec:options}
%
% Under version 2.2 and higher,
% the \pkg{endfloat} package uses package options. The options
% are summarized in table~\ref{tab:options}. In addition to these
% options, see sections~\ref{sec:extra} and~\ref{sec:hooks} for more
% advanced ways of controlling output.
%
% \begin{table}
% \caption{Options and defaults} \label{tab:options}
% \smallskip
% \begin{tabular}{lcll}
% \hline
% \multicolumn{1}{c}{Option} &
% \multicolumn{1}{c}{Default}&
% \multicolumn{1}{c}{Default implication} &
% \multicolumn{1}{c}{Descriptions} \\
% \hline
% |nofiglist| & off & & no list of figures \\
% |notablist| & off & & no list of tables \\
% |nolists| & & |nofiglist|, |notablist| & neither list \\
% |figlist| & on & & list of figures \\
% |tablist| & on & & list of tables \\
% |lists| & & |figlist|, |tablist| & list of tables and figures \\
% |nofighead| & on & & no `Figures' section header \\
% |notabhead| & on & & no `Tables' section header \\
% |noheads| & & |nofighead|, |notabhead| & neither of the headers \\
% |fighead| & off & & `Figures' section header \\
% |tabhead| & off & & `Tables' section header \\
% |heads| & & |fighead|, |tabhead| & Both section headers \\
% |markers| & on & & Place markers in the text \\
% |nomarkers| & off & & no markers in text \\
% |tablesfirst| & off & & Put tables before figures \\
% |figuresfirst| & on & & Put figures before tables \\
% |tablesonly| & off & & Handle tables only \\
% |figuresonly| & off & & Handle figures only \\
% |notables| & off & & Disregard tables \\
% |nofigures| & off & & Disregard figures \\
% |disable| & & & Disables the package \\
% \hline
% \end{tabular}
% \end{table}
%
% The list of tables and figures can be suppressed by using the
% \texttt{nofiglist} and \texttt{notablist} options. Both
% can be suppressed with the \texttt{nolists} option.\footnote{In
% versions prior to 2.2 the command for turning off the lists turned
% on the headers (the equivalent of the |heads| option). That is
% not the case with these options. The |lists| and the |heads|
% options are entirely orthogonal.}
% The default is \texttt{lists}.
%
% A section header for `Tables' and `Figures' can be produced by using
% the option |tabhead|, |fighead|, respectively, and |heads| for both.
% The defaults are |notabhead| and |nofighead|.
%
% If you want the headers instead of the lists you would need to
% use both the |nolists| and the |heads| options.
%
% If you want to suppress the markers in the text, use the
% option \texttt{nomarkers}. The default is
% \texttt{markers}.
%
% Normally the figures at the end appear before the tables.
% This can be changed by using the option \texttt{tablesfirst}.
% The default is \texttt{figuresfirst}.
%
% If nothing else if specified, both figures and tables will be handled
% by the \pkg{endfloat} package.
% This can be altered by usage of the options |tables|\x|only|
% resp. |figures|\x|only|.
%
% \medskip
%
% A typical usage might be something like
% \begin{quote}
% |\documentclass[a4paper,12pt]{article}|\\
% |\usepackage[nolists,tablesfirst]{endfloat}|\\
% \ldots\\
% |\begin{document}|
% \end{quote}
% which would suppress the list of tables and figures as well as
% the corresponding section headers, and would have the tables
% precede the figures.
%
% \subsubsection{Contradictions and dilemmas}
%
% It is not recommended that one specify conflicting options, but
% if you insist, here are the rules. In table~\ref{tab:options} the third
% column indicates what other options are implied by default. That
% is |heads| turns on |fighead| by default, but that implication
% can be overruled by explicitly stating the |nofighead| option.
%
% \begin{enumerate}
% \item \label{rule:elsewhere}
% When one option is more specific than the other the more specific
% one holds true, and the more general will only partially hold.
% So specifying \texttt{fighead} and \texttt{noheads} will be the
% same as saying \texttt{fighead} and \texttt{notabhead}.
% \item
% The order in which the options appear is relevant.
% \item
% If some of the obsolete commands for these options are used
% all bets are off on these interactions.
% \end{enumerate}
%
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
%
% \section{Modifying marker text}\label{sec:language}
%
% \changes{v1.0b}{1992/03/10}{adaptation for LaTeX 2.09 and
% international namegiving by Ronald Kappert
% R.Kappert@urc.kun.nl}
% \DescribeMacro{\tableplace}
% \DescribeMacro{\figureplace}
% \DescribeMacro{\floatplace}
% Announcements in any language can be generated by
% using |\re|\x|new|\x|command| to redefine |\table|\x|place| and
% |\figure|\x|place|, or by redefining |\float|\x|place|.
%
% The defaults are
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \begin{quote}
% |\newcommand\figureplace{\floatplace{figure}}|\\
% |\newcommand\tableplace{\floatplace{table}}|\\
% \\
% |\newcommand\floatplace[1]{%|\\
% | \begin{center}|\\
% | [\csname #1name\endcsname~%|\\
% | \csname thepost#1\endcsname\ about here.]|\\
% | \end{center}}|
% \end{quote}
%
% These redefinitions may be placed in the \file{endfloat.cfg}
% file (see \autoref{sec:extra} for more information).
%
% WARNING! The name of the counters |post|\x|tbl| and |post|\x|fig|
% have been changed to |post|\x|table| and |post|\x|figure| in version 2.5.
% However, |\the|\x|post|\x|tbl| and |\the|\x|post|\x|fig| are still available for
% usage inside redefined versions of |\table|\x|place| and |\figure|\x|place|
% so old documents (hopefully) will still work.
%
% Hooks for the \texttt{babel} package are not (yet) provided, so
% you will have to do things by hand:
% \begin{quote}
% |\renewcommand{\figurename}{Abra} % if no babel|\\
% |\renewcommand{\figureplace}{%|\\
% | \begin{center}|\\
% | [A(z) \thepostfigure.~\figurename itt legyen.]|\\
% | \end{center}}|
% \end{quote}
%
% If you wish to change the name of the figure or table section
% heading, you can do that in the usual way (via the \texttt{babel}
% package, or by redefining |\figure|\x|section| and |\table|\x|section|
% directly).
%
% \DescribeMacro{\efloatheading}
% Endfloat uses |\efloat|\x|heading| for applying this heading.
% By default it is defined to use |\mark|\x|both| for that purpose:
% \begin{quote}
% |\newcommand\efloatheading[1]{%|\\
% | \markboth{\uppercase{#1}}{\uppercase{#1}}}|
% \end{quote}
% forcing the headings applied in uppercase. You may change this by using
% |\re|\x|new|\x|command| to redefine |\efloat|\x|heading| as you wish:
% \begin{quote}
% |\renewcommand\efloatheading[1]{|\meta{code that applies \#1 as heading}|}|
% \end{quote}
% It makes most sense to place such a redefinition in the configuration
% file (see \autoref{sec:extra}).
%
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v1.0b}{1992/03/10}{adaptation for LaTeX 2.09 and
% international namegiving by Ronald Kappert
% R.Kappert@urc.kun.nl}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
%
% \section{Commands before processing delayed material} \label{sec:hooks}
%
% \DescribeMacro{\AtBeginFigures}
% \DescribeMacro{\AtBeginTables}
% \DescribeMacro{\AtBeginDelayedFloats}
% If you wish to have some more control over how the tables and figures
% are processed, you can make use of the commands |\At|\x|Begin|\x|Delayed|\x|Floats|,
% |\At|\x|Begin|\x|Figures|, and |\At|\x|Begin|\x|Tables|.
% If you wanted to ensure that the tables begin
% on a recto page, you could for example say something like
% |\At|\x|Begin|\x|Tables{\clear|\x|double|\x|page}| in the preamble of your
% document.\footnote{It is difficult for me to imagine a situation where
% one would be using \pkg{endfloat} and the class option \texttt{twoside},
% without which \texttt{\bslash cleardoublepage}
% is the same as \texttt{\bslash clearpage}, together.
% Another, more realistic example would be to adjust the
% \texttt{\bslash baselinestretch} for table and figure processing.}
% Material in |\At|\x|Begin|\x|Tables| and |\At|\x|Begin|\x|Figures| is processed after
% the list of tables or list of figures (if those options are set) and
% just before the files with the delayed material in input. These are
% also processed after the original definitions of the table and figure
% environments are restored.
%
% These commands can be used either in the preamble of your document,
% or in the \file{endfloat.cfg} file (see \autoref{sec:extra}).
%
% \section{Insert own code into the delayed material} \label{sec:addto}
%
% \DescribeMacro{\addtodelayedfloat}
% |\addtodelayedfloat| will add own code to delayed floats.
% For example
% \begin{quote}
% |\addtodelayedfloat{figure}{\clearpage}|
% \end{quote}
% will add |\clear|\x|page| to the delayed figures.
%
% Note: The argument will be stored detokenized to the intermediate
% file.
% If this is not what you want, use the starred variant
% |\add|\x|to|\x|delayed|\x|float*| instead, for example
% \begin{quote}
% |\addtodelayedfloat{figure}{\sometext}|
% \end{quote}
% will add |\some|\x|text| to the delayed figures while
% \begin{quote}
% |\addtodelayedfloat*{figure}{\sometext}|
% \end{quote}
% will add the current content of |\some|\x|text| to the delayed
% figures.
%
% \section{Processing delayed floats before the end}
%
% \DescribeMacro{\processdelayedfloats}
% If you wish to process
% the floats prior to the end of the document, you may do so with the
% |\processdelayedfloats| command, which has been made available from
% version~2.4 onward. This will process all of the
% unprocessed tables and figures up to that point. You may wish
% to use this command at the end of every chapter for example.
%
% If you do use this, there are several points which should be noted.
% \begin{enumerate}
% \item All outstanding floats will be processed at the
% end of the document.
% \item If you use the |lists| option you will get a list of all
% tables and figures in the document. Not just the ones for
% the current chapter. Using lists may have other odd consequences.
% \item It is your responsibility to set |\table|\x|place| and
% |\figure|\x|place| correctly, as well as to possibly reset
% the counters |\the|\x|post|\x|table| and |\the|\x|post|\x|figure| (\autoref{sec:language})
% as you wish. If you do not reset them, they will continue to
% increase throughout the document.
% \end{enumerate}
%
% \section{Several floats per page}\label{sec:separator}
%
% \DescribeMacro{\efloatpreamble}
% Endfloat applies |\efloat|\x|preamble| before typesetting the very first
% (delayed) float in their respective files.
% By default it is defined to do nothing.
% You may change this by using
% |\re|\x|new|\x|command| to redefine |\efloat|\x|preamble| as you wish.
%
% \medskip
%
% \DescribeMacro{\efloatseparator}
% Endfloat places |\efloat|\x|separator| between the floats in their
% respective files. By default it is defined to be |\clear|\x|page|
% forcing one float per page. You may change this by using
% |\re|\x|new|\x|command| to redefine |\efloat|\x|separator| as you wish.
% One possibility, suggested by a user, is
% \begin{quote}
% |\renewcommand{\efloatseparator}{\mbox{}}|
% \end{quote}
%
% \DescribeMacro{\efloatpostamble}
% Endfloat applies |\efloat|\x|postamble| after typesetting the very last
% (delayed) float in their respective files.
% By default it is defined to be |\efloat|\x|separator|.
% You may change this by using
% |\re|\x|new|\x|command| to redefine |\efloat|\x|postamble| as you wish.
%
% \iffalse
% \medskip
% It makes most sense to place such redefinitions in the configuration
% file (see \autoref{sec:extra}).
% \fi
%
% \medskip
%
% \DescribeMacro{\efloattype}
% If you need to know what floats are actually processed, you could draw on
% |\efloat|\x|type| which is set to the environment type currently processed,
% for example |figure| or |table|.
%
% \section{Other customizations}\label{sec:customizations}
%
% \DescribeMacro{\efloatbegin}
% \DescribeMacro{\efloatend}
% |\efloat|\x|begin| will be typeset before the processing of each delayed
% float while |\efloat|\x|end| will be typeset after each processing.
% By default the first is defined to be |\clear|\x|page|, the second is
% defined to do nothing.
%
% \medskip
%
% \DescribeMacro{\efloatbeginlist}
% \DescribeMacro{\efloatendlist}
% |\efloat|\x|begin|\x|list| will be typeset before each list of delayed floats
% while |\efloat|\x|end|\x|list| will be typeset after each list.
% By default the first is defined to be |\normal|\x|size|, the second is
% defined to be |\clear|\x|page|.
%
% \section{Configuration file and other end environments}\label{sec:extra}
%
% Many users have suggested options to the package which are
% often journal specific. Many of the suggestion options are
% also not specific to how \pkg{endfloat} itself works, but to how
% captions and lists of figures and tables are to appear.
% Instead of burdening the package with options that, in the
% end, are specific to particular journals, I have added a
% configuration file for \pkg{endfloat} which will allow
% you to make many of these redefinitions without
% having to further increase the size of \pkg{endfloat} itself.
%
% As of version 2.4 \pkg{endfloat} will look for a file
% called \file{endfloat.cfg} in \TeX's input path. If it
% is found, it will be included after \pkg{endfloat} is loaded.
% The purpose of this configuration file is to allow the user to
% include additional definitions related to \pkg{endfloat}.
% For example, any redefinition of \verb"\floatplace" can
% go in this file, so that the preamble does not need to
% be filled with material that only makes sense when
% \pkg{endfloat} is loaded.\footnote{However, if you find yourself
% placing other material (such as double spacing or modification
% of title page and abstract) into \file{endfloat.cfg} to
% simulate a journal submission class, you should really
% do the right thing and create a journal submission class.
% Creating a minor class (one that loads an existing class
% such as \cls{article} is not difficult. See the
% \textit{Class Guide}\cite{LT3:ClassGuide} for instructions. Future versions
% of the \pkg{endfloat} documentation may include a sample.}
%
% The configuration file can also provided
% so that the user could specify environments other
% than |figure| and |table| (and their |*|-ed counterparts) which can
% be delayed until the end of the document.
%
% \subsection{Modified figures and tables}
%
% As stated in \autoref{sec:envnames}, \pkg{endfloat} will
% utterly fail if one does something like
% \begin{quote}
% |\newenvironment{foo}{...\begin{table}...}|\\
% | {...\end{table}...}|
% \end{quote}
% because \pkg{endfloat} will make |\begin{table}| go into a verbatim
% like mode and look for the literal string |\end{table}|, which it
% will not see in |\end{foo}|.
%
% However, inserting the following code into the document preamble
% may be worth a try:
% \begin{quote}
% |\DeclareDelayedFloatFlavor{foo}{table}|
% \end{quote}
% This tells the \pkg{endfloat} package that |foo| should be treated as |table|,
% at least from \pkg{endfloat}'s point of view.
% If you keep your fingers crossed this may actually work.
%
% \subsection{Environments based on figures and tables}\label{sec:flavor}
%
% The \pkg{rotating} package\cite{RahBar:rotating}
% contains definitions of environments
% |side|\x|ways|\x|figure| and |side|\x|ways|\x|table|\footnote{These
% require support from the dvi driver, such as \texttt{dvips}.},
% and it would be nice to have these work in documents which also
% use \pkg{endfloat}.
%
% This can be archived with
% \begin{quote}
% |\DeclareDelayedFloatFlavor{sidewaysfigure}{figure}|\\
% |\DeclareDelayedFloatFlavor{sidewaystable}{table}|
% \end{quote}
% after loading both, the \pkg{endfloat} and \pkg{rotating} package.
%
% The general syntax of |\Declare|\x|Delayed|\x|Float|\x|Flavor| is
% \begin{quote}
% |\DeclareDelayedFloatFlavo|(|u|)|r|\marg{environment}\marg{is a variant of}
% \end{quote}
% so for example
% \begin{quote}
% |\usepackage{endfloat,threeparttable}|\\
% |\DeclareDelayedFloatFlavour{threeparttable}{table}|
% \end{quote}
% makes the |three|\x|part|\x|table| environment known to the \pkg{endfloat} package
% as a variant of the floating environment |table|.
%
% This works with the |long|\x|table| environment as well:
% \begin{quote}
% |\usepackage{endfloat,longtable}|\\
% |\DeclareDelayedFloatFlavour*{longtable}{table}|
% \end{quote}
% Note that we use the starred variant |\Declare|\x|Delayed|\x|Float|\x|Flavor*|
% here which only redefines |long|\x|table| to be delayed, but leaves the unnumbered
% |long|\x|table*| environment (provided by the \pkg{caption} resp.~\pkg{ltcaption} package)
% unchanged.
%
% \subsubsection{The ctable package}\label{sec:ctable}
%
% Since |\ctable| offered by the \pkg{ctable} package\cite{Dekker:ctable}
% is a command and not an environment, it cannot be declared as delayed
% environment straight-ahead, i.e.
% \begin{quote}
% |\DeclareDelayedFloatFlavor{ctable}{table}|
% \end{quote}
% is not sufficient here since the \pkg{endfloat} package is only
% capable of delaying environments.
% A dirty (but working) solution is using |ctable| as environment
% and not as command. An example document:
% \begin{quote}
% |\documentclass{book}|\\
% |\usepackage{ctable}|\\
% |\usepackage{endfloat}|\\
% |\DeclareDelayedFloatFlavor{ctable}{table}|\\
% |\begin{document}|\\
% ||\\
% |\begin{ctable}[|\\
% | cap=Test,|\\
% | caption=Test,|\\
% | ]{cc}{|\\
% | \tnote[]{}|\\
% | }{\FL|\\
% | A & B \ML|\\
% | 1 & 2 \NN|\\
% | 3 & 4 \LL}|\\
% |\end{ctable}|\\
% ||\\
% |\end{document}|
% \end{quote}
%
% \subsection{Other floating environments}\label{sec:other}
%
% By using |\new|\x|float| offered by the \pkg{float} package\cite{Lingnau:float},
% or |\Declare|\x|New|\x|Float|\x|Type| offered by the \pkg{floatrow} package\cite{Lapko:floatrow},
% or |\Declare|\x|Floating|\x|Environment| offered by the \pkg{newfloat}
% package\cite{Sommerfeldt:newfloat}
% one can define new floating environments. These environments
% can be made supported by the \pkg{endfloat} package, too, e.g.
% \begin{quote}
% |\usepackage{newfloat,endfloat}|\\
% |\DeclareFloatingEnvironment{map}|\\
% |\DeclareDelayedFloat{map}{Maps}|
% \end{quote}
% will define a new floating environment called ``map'' and
% set up the \pkg{endfloat} package to handle this environment, too.
%
% The trick is using the command
% \begin{quote}
% |\DeclareDelayedFloat|\marg{float}\oarg{file extension}\marg{heading}
% \end{quote}
% which makes the new floating environment known to the \pkg{endfloat} package.
%
% The \meta{file extension} specifies the file where the floating environments
% will be stored, like |fff| for figures and |ttt| for tables.
% If no \meta{file extension} is given, |ef|\meta{float} will be used, e.g. |efmap|
% will be used as file extension in the code example above.
%
% The \meta{heading} will be used for the section header, if selected.
% If |\list|\meta{float}|name| is not defined, it will be used for the list heading, too.
%
% The package options |nolists|, |lists|, |noheads|, and |heads| will be respected
% for new environments, too. But if you would like to set individual options for
% them, you can do so by using
% \begin{quote}
% |\SetupDelayedFloat|\marg{float}\marg{options}
% \end{quote}
% where options are |nolist|, |list|, |nohead|, and |head| analogous to the package
% options for figures and tables specified in section \ref{sec:options}.
%
% By the way, |\Setup|\x|Delayed|\x|Float| works for the environments |figure| and
% |table|, too, so
% \begin{quote}
% |\usepackage[nofiglist,fighead]{endfloat}|
% \end{quote}
% is identical to
% \begin{quote}
% |\usepackage{endfloat}|\\
% |\SetupDelayedFloat{figure}{nolist,head}|
% \end{quote}
% and (if you prefer using key-value options instead)
% \begin{quote}
% |\usepackage{endfloat}|\\
% |\SetupDelayedFloat{figure}{list=false,head=true}|
% \end{quote}
%
% \subsection[Changing list and caption appearance]
% {Changing the appearence of ``lists of'' and captions}
%
% When the |lists| option is used, the \LaTeX\ commands |\list|\-|of|\-|tables|
% and |\list|\-|of|\-|figures| are called. These produce lists indicating
% the page number that each table or figure appear on. With \pkg{endfloat}
% in use this information is usually superfluous, and -- rumor has it --
% undesirable by at least some journals.
% What seems to be required
% when using lists is that either the list does not the figure or table number,
% and/or the caption doesn't not contain the caption text.
%
% This section provides a few rudimentary samples of what you might
% put into the configuration file to get these effects. I have chosen
% not to make these package options, because they are often too journal
% specific. The availability of the configuration file means that
% you can put this things there, and the differences between \pkg{endfloat}
% using and non-\pkg{endfloat} using \LaTeX\ source documents is minimal.
%
% \subsubsection{Removing captions}
% \label{sec:removingcaptions}
%
% \DescribeMacro{\captionsetup}
% If you have included the \pkg{caption} package in your document
% you can omit the caption text by adding
% \begin{quote}
% |\captionsetup{labelsep=none,textformat=empty}|
% \end{quote}
% to the preamble of your document.~\footnote{%
% This needs at least version $3.2$ of the \pkg{caption} package.}
% If this should be done for figures (or tables) only one can use the
% optional argument of |\caption|\x|setup|, e.g.:
% \begin{quote}
% |\captionsetup[figure]{labelsep=none,textformat=empty}|
% \end{quote}
% See \pkg{caption} package documentation for details and alternatives.
%
% \DescribeMacro{\@makecaption}
% If the \pkg{caption} package is not used, the simplest thing
% is to provide a redefinition of |\@makecaption|.
% You should model your redefinition after the one used in the
% document class you actually use instead of blindly
% following what is here. |\@makecaption| takes two arguments, the
% first will be something like ``figure 3'' and the second will
% be the caption text. We will simply ignore the second argument.
% Most of the tricky bit of the definition
% is about testing whether the caption is longer than a line. Since
% we will only be using the first argument, we can safely assume that
% the caption will fit on one line.\footnote{If you have
% \texttt{\bs figurename} as something absurdly long or a
% very narrow \texttt{\bs textwidth},
% then you will have to use a more complicated version.}
% Your redefinition of |\@makecaption| may look like
% \begin{quote}
% |\renewcommand{\@makecaption}[2]{%|\\
% | \vskip\abovecaptionskip|\\
% | \hbox to \hsize{\hfil #1\hfil}%|\\
% | \vskip\belowcaptionskip}|
% \end{quote}
%
% \DescribeMacro{\caption}
% This still leaves one problem. If you use
% \begin{quote}\ttfamily
% |\caption|\oarg{short caption text}\marg{full caption text}
% \end{quote}
% only the short caption text will ever appear in the list of tables or
% figures. The following redefinition of |\caption| will take care of
% that.
%
% Again, first of all a solution for usage with the \pkg{caption} package:~\footnote{%
% This needs at least version $3.3$ of the \pkg{caption} package.}
% \begin{quote}
% |\captionsetup{list-entry=heading}|
% \end{quote}
%
% If the \pkg{caption} package is not used,
% the following code should be used instead:
% \begin{quote}
% |\let\OrigCaption\caption|\\
% |\renewcommand{\caption}[2][X]{\OrigCaption[#2]{}}|
% \end{quote}
%
% \subsubsection{Eliminating numbers from lists of tables and figures}
%
% This is a bit trickier, and I have heard that it doesn't work
% with all versions of \LaTeXe, but I am unwilling to reinstall
% and older version for debugging this.
% A user [get the name] suggested that page numbers be suppressed
% in the lists of figures and tables.
%
% \begin{macro}{\l@figure}
% \begin{macro}{\l@table}
% All this requires is a redefinition of |\l@figure| and |\l@table|
% which are defined in \texttt{classes.txt}. Also see section~2.4.1 of the
% \emph{Companion} to see how these macros are called.
%
% The real only trick here is that |\l@figure| is defined to take
% two arguments, but the second is never used. The way it will be
% called will give it something like
% \begin{quote}
% |{\numberline {3} Caption of that figure}{85}|
% \end{quote}
% as arguments, where the second argument is the page number.
% The |\numberline| command will make use of the \LaTeX\ register
% |\@tempdima| for the width of the box containing the table
% or figure number. So we need to set that.
% The rest is pretty unsophisticated. You can, of course, modify it
% at will.
% \begin{quote}
% |\renewcommand*{\l@figure}[2]{%|\\
% | \setlength\@tempdima{2.3em}%|\\
% | \noindent\hspace*{1.5em}#1\hfil\newline }|
% \end{quote}
% And for tables:
% \begin{quote}
% |\let\l@table\l@figure|
% \end{quote}
% \end{macro}
% \end{macro}
%
% \section{Obsolete commands}\label{sec:obsolete}
%
% Versions of the package prior to 2.2 had some commands which the
% user could specify in the preamble to do what \emph{some} of the
% options do now. Although I would like to eventually remove those
% commands, they are documented in the \textit{Companion}; so they
% will remain for quite some time.
%
% \section{Caveats}\label{sec:caveats}
%
% Some of the things that are listed here may be considered bugs,
% design errors, interactions to watch out for, or just the
% way life is sometimes. They are, at least, a matter of concern, and you
% should watch out for them.
%
% \subsection{Literal strings}
%
% When floats are being read, \LaTeX\ is in verbatim mode. Among
% other things, this means that the lines like
% \begin{quote}
% |\end{figure}|
% \end{quote}
% or
% \begin{quote}
% |\end{figure}%|
% \end{quote}
% must appear on lines by themselves without any whitespace before
% or after them. A complete reimplementation of the most difficult
% part of the package is required to fix this limitation, but
% it is among the distant goals I have.
%
% \subsection{Extra files}
% This creates two extra files: \texttt{\meta{jobname}.fff} and
% \texttt{\meta{jobname}.ttt}. Any files by those names
% in the current directory will be overwritten.
%
% \subsection{Environment names} \label{sec:envnames}
%
% Because of how the redefinitions of \texttt{figure} and \texttt{table}
% are actually implemented, it is crucial that these environment
% names be used. That is, you cannot simply define a new environment which
% calls \texttt{figure} or \texttt{table} since the former must
% look for the literal string
% \begin{quote}
% |\end{figure}|
% \end{quote}
% in the document, while doing no expansion of control sequences.
% The latter does the same, but wants |table| instead of
% |figure|. This caution generally applies to all `verbatim-like'
% environments
%
% Although I haven't been able to confirm this yet, the
% \LaTeX\ system ScientificWord\footnote{A registered trademark.
% Write to info@tcisoft.com for more information.}
% may automatically put floats
% inside a macro called \verb"\FFRAME". If so, I hope
% that either someone from ScientificWord or one of its
% users will create something for \verb"\FFRAME" similarly to
% what I have done for \verb"\sidewaystable" in the sample configuration
% file (\autoref{sec:extra}).
%
% \subsection{The Environment's environment}\label{sec:envenv}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% Because no \TeX\ expansion is done while the material in these
% floats are read in, but is delayed until the floats are
% processed at the end of the document, it will be the state of
% \TeX\ at the end which will matter. For example, a document
% with something like
% \begin{quote}
% |\newcommand{\XXX}{YYY}|\\
% \ldots\\
% |\begin{table}|\\
% \ldots\\
% \ldots |\XXX| \ldots\\
% \ldots\\
% |\end{table}|\\
% \ldots\\
% |\renewcommand{\XXX}{ZZZ}|\\
% \ldots\\
% |\end{document}|
% \end{quote}
% will process the table with |\XXX| expanding to |ZZZ|.
%
% In any particular instance, the user can use either re-redefine
% |\XXX| before the end of document, or can re-redefine it using
% on of the hooks, |\At|\x|Begin|\x|Delayed|\x|Floats|, |\At|\x|Begin|\x|Tables|,
% or |\At|\x|Begin|\x|Figures|, which are discussed in \autoref{sec:hooks}.
%
% \subsection{Verbatim in delayed floats}\label{sec:verbatim}
%
% There should be no problem with verbatim text within a
% float unless that verbatim text contains an |\end{figure}| or
% |\end{table}| in a figure or table respectively. I don't see
% a fix for this. All I can imagine is that you create a new
% delayed type which behaves exactly like |figure| (or |table|)
% (even writing |\begin{figure}| and |\end{figure}| to the
% \texttt{.fff} file. [\textit{mutatis mutandis} for |table|])
% In future versions, I may create a sample like this in the
% sample configuration file, but it is a low priority since
% the only time one would write such a figure or table would
% be in a document about \LaTeX\ and it is difficult to imagine
% circumstances where a document about \LaTeX\ would need to
% be subject to \pkg{endfloat}.
%
% \subsection{Ordering End Document material}\label{sec:enddocument}
%
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg}
%
% Version 2.1 uses the \LaTeXe\ directive |\AtEndDocument|. This
% makes it \LaTeXe\ specific, but it means that it can be used
% with other packages that use that directive. Previous versions
% of \pkg{endfloat} redefined |\enddocument|. Now several
% packages or commands can add stuff at the ends of documents
% and still work together. This does mean that \emph{the order
% of loading packages can be important!} If you use several
% packages that may use the |\AtEndDocument| directive and you
% get funny results, try loading them in a different order.
% It that doesn't work, complain to the maintainer of the packages
% so that they will work out a way for the packages to interact
% correctly.
%
% \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% \subsubsection{General ordering and wish list}\label{sec:order}
%
% I believe that the output of a \LaTeXe\ run should be independent
% of the order in which package are loaded. It would be possible
% to set this up, but it would take coordination of all package
% writers who use |\AtEndDocument|. The actual call to |\AtEndDocument|
% would not occur during package loading, but some new command,
% like |\ExecuteAtEndDocument| would be called by the user after
% all such packages are loaded, with tags for each thing in the
% packages, so something like
% \begin{quote}
% |\usepackage{lastpage}|\\
% |\usepackage{endfloat,xyzzy}|\\
% |\ExecuteAtEndDocument{endfloat,xyzzy,lastpage}|
% \end{quote}
% and the order of End Document material would be the \pkg{endfloat}
% material, followed by \textsf{xyzzy}, and finally by \pkg{lastpage}.
% The package \pkg{xyzzy} is fictitious, while the
% package \pkg{lastpage}\cite{Goldberg:lastpage} exists,
% it doesn't really matter what these do.
%
% I will have to wait until someone else develops such a system, but
% I will gladly modify the packages I am responsible for maintaining
% to comply with it. Until then
% I will include a message
% which begins with \texttt{AED}
% in every usage of |\At|\x|End|\x|Document|, and try to minimize any side
% effects my usage may have.
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% \subsection{What are packages for?} \label{sec:monoton}
%
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
%
% One option is to not have packages like \pkg{endfloat} actually call
% |\At|\x|End|\x|Document|, but merely define a user level command which
% would make the call itself. This way, the order of those particular
% commands would matter, but not the ordering of the package loading.
%
% Another advantage of this is that packages could easily be things
% which make commands available, but do not actually entail
% a change in \texttt{.dvi} output themselves. It is classes,
% and options to classes which do that. That is, the actual
% loading of packages should have no visible effects, other than
% making new commands available. (Typeface changing
% packages, such as \textsf{times}, are obvious, and principled, exceptions.)
% The disadvantage is that it leads
% to two-step modifications (loading and calling) to change
% a document.
%
% I would propose any package (other than typeface changing
% packages) which changes output instead of merely providing additional
% commands, should be clearly labeled as doing such in the documentation
% and in a message.
%
% \subsection{Float position specifiers} \label{sec:gobble}
%
% Float position specifiers are passed to the temporary files
% and are used when those floats are processed. This may lead
% to funny results, especially if the first figure or first table uses
% |[p]| while the |heads| option is being used. This can lead to
% that float, floating to the page after the header.
% Most other float specifiers will not lead to any problems, because
% the package mucks about the various float specification parameters.
%
% \subsection{Misplaced headers} \label{sec:buggyheads}
%
% Version 2.2c contains a partial fix to a problem with the placement
% of floats around the section headers produced by the |heads| option.
% There were two variants of the problem. In one the first float
% after the header would float above the header. This has been fixed
% by using the \LaTeXe\ command |\suppressfloats|. The other
% problem is that that the first float may float to a page float
% after the page with the header on it.
%
% This has been partially fixed, but
% if users use the |[p]| specification on their first floats or if
% there are large floats, the problem can still
% show up. It is recommended that whenever the user wants a |[p]| that
% an |[hp]| be used instead. In normal running (without \pkg{endfloat}),
% this should only rarely effect the document, but it will help avoid
% the problem with the floating end float. An |[h]| may also be needed for
% large floats. There is only need to be concerned about the first
% figure and first table.
%
% The natural solution to this problem will require that the bug
% in described in \autoref{sec:gobble} be resolved.
%
% \subsection{Known incompatibilities}
%
% Above I have outlined sources of potential conflicts and incompatibilities
% with other packages. Those sections contain a discussion of potential
% work-arounds. Here I list where I know of specific incompatibilities
% with distributed packages. This list is not complete. If you know
% on an addition, please let me know.
%
% \subsubsection{Environment names}
%
% The packages listed here all have the problem described in
% \autoref{sec:envnames}. The work-arounds are also described
% there. \pkg{rotating}, \emph{Scientific Word}.
%
% \subsubsection{Ordering end material}
%
% The following packages put things at the end of the document, and
% peculiar results are possible if you don't pay attention to the
% order in which packages are loaded. This is described in
% \autoref{sec:order}. The package \pkg{lastpage} is among
% these, as are recent versions of the package \pkg{harvard}.
%
% \subsubsection{Conflicting \cs{enddocument}}
%
% Prior to \LaTeXe's provision of the hook |\AtEndDocument|, package
% writers were forced to redefine |\enddocument|. Some did so
% in ways that over wrote any other package's redefinition of the
% same. When you encounter such a package you should try to get
% its author to release a modified version. Version~2.0 of \pkg{endfloat}
% was such a packages. So was the winter 1993 version of~\pkg{harvard}
% (which has been fixed). But
% for those using an old version of \pkg{harvard} you will encounter
% problems.
%
% \subsubsection{Miscellaneous}
%
% There are several other potential conflicts that don't fall into
% the broader categories.
%
% \begin{itemize}
% \item |\listoftables| and |\listoffigurers| are left undefined
% in class \cls{elsart}. But this is because Elsevier does
% not want those lists. Elsevier, bless them, does not want
% floats at the end for submissions to its journals. So
% there is no reason to use \pkg{endfloat} (with or without lists)
% with class \cls{elsart}. Let's hope that other publishers
% will follow Elsevier's lead in understanding that the
% submission rules which were created were created for a reason,
% and when those reasons no longer apply, the rules should be changed.
%
% I look forward to the day when \pkg{endfloat} will serve
% no purpose.
%
% \item The \pkg{float} package appears to work in my limited tests.
%
% \item The \pkg{floatrow} package appears to work in my limited tests.
% But please note that the \pkg{endfloat} package needs to be loaded
% \emph{after} the \pkg{floatrow} package.
%
% \item The \pkg{newfloat} package appears to work in my limited tests, too.
%
% \end{itemize}
%
% \section{Support}\label{sec:support}
%
% As is usual, this package is provided with no warranty whatsoever.
% However, it is my desire to make it useful and usable, although
% I may very well fail at that. If you
% need a feature added, see whether the hooks will allow you to
% do what you want. If something goes wrong look over
% \autoref{sec:caveats}.
% \iffalse % Currently this package has no active maintainer
% But if you need to get in touch
% with the maintainer, you should send email at
% \texttt{axel.sommerfeldt@f-m.fm}.
% \fi
%
% \section{History}\label{sec:history}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
%
% \subsection{The burden of history}
%
% By version 2.2 the file was getting so that most of the bytes
% were things that had been commented out of previous versions,
% and changelog messages. Instead of this making things clearer
% to the maintainer, it turns out to be clutter. I (jpg) have started
% to throw out some of history (it is not really useful to see
% who corrected what typo or cleaned up what extraneous space
% with a |%| in 1991. Although my purge of history is far
% from complete, it should be noted that I do want to preserve
% the spirit of the history. I have already been miscredited
% with original authorship. I have made extensive modifications
% and extensions, but the basic core (even if only a small amount
% of version 2.0 code remains) and concept are JDM's.
%
% \subsection{Author}
% The file was written by Darrell McCauley (jdm5548@diamond.tamu.edu)
% in February and March 1992. He acknowledges that much of the
% guts are adapted from
% \texttt{comment.sty} by Victor Eijkhout (eijkhout@csrd.uiuc.edu).
% So, although Jeff Goldberg (jeffrey@goldmark.org) has maintained
% this afterwards, he should not be credited with writing the package,
% but only with extending and maintaining it.
% He has contributed enough so that by version~2.4 he claimed
% co-authorship.
% The same applies to Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
% who build version 2.5 with permission of Jeff Goldberg and has
% maintained this package from version 2.6 to version 2.7.
%
% \subsection{Version 2.7}
%
% Version 2.7 was build by Axel Sommerfeldt (axel.sommerfeldt@f-m.fm),
% and introduces the following changes:
% \begin{itemize}
% \item
% A new package option |disable| has been added which disables the
% functionality of the \pkg{endfloat} package
% (\autoref{sec:options}).
% \item
% A new command |\add|\x|to|\x|delayed|\x|float| has beed added
% which adds code to a specific delayed float type
% (\autoref{sec:addto}).
% \item
% More customization was introduced with the new macros
% |\efloat|\x|begin|, |\efloat|\x|end|, |\efloat|\x|begin|\x|list|,
% and |\efloat|\x|end|\x|list|.
% They can be re-defined by the user to influence the process
% of delayed floats and the typesetting of lists of delayed floats
% (\autoref{sec:customizations}).
% \item
% Unfortunately the bugfix regarding the usage of UTF-8 characters
% in floating environments introduced in version 2.6 was flawed,
% this has been fixed.
% \end{itemize}
%
% \subsection{Version 2.6}
%
% Version 2.6 was build by Axel Sommerfeldt (axel.sommerfeldt@f-m.fm),
% and introduces the following changes:
% \begin{itemize}
% \item
% New package options |no|\x|tables| and |no|\x|figures| have been added
% to allow better control over which floating environments
% will be handled by the \pkg{endfloat} package (\autoref{sec:options}).
% \item
% New macros called |\efloat|\x|type|, |\efloat|\x|heading|, |\efloat|\x|preamble|,
% and |\efloat|\x|postamble| have been added which allow the user more control
% over how the delayed floats are typeset (\autoref{sec:separator}).
% \item
% A percent sign (|%|) is now allowed at the end of |\end|\marg{environment}, too, e.g.:
% \begin{quote}
% |\begin{figure}|\\
% | |\ldots\\
% |\end{figure}%|
% \end{quote}
% \item
% Two bugs have been fixed regarding the usage of UTF-8 characters in floating environments.
% \end{itemize}
%
% \subsection{Version 2.5}
%
% Version 2.5 was build by Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
% with permission of Jeff Goldberg, and introduces the following changes:
% \begin{itemize}
% \item
% New commands
% |\Declare|\x|Delayed|\x|Float| and |\Declare|\x|Delayed|\x|Float|\x|Flavor|
% for handling floating environments other than |figure| and |table|,
% and |\Setup|\x|Delayed|\x|Float| for setting options
% (\autoref{sec:flavor} and \autoref{sec:other}).
% To make this possible a lot of internal code had to be reorganized,
% but by trying to keep original versions of macros and trying to leave the
% operational sequence itself as original as possible this hopefully won't break
% compatibility with existing documents or extensions written for the
% \pkg{endfloat} package.
%
% \item
% New package options |tables|\x|only| and |figures|\x|only| have been added
% to allow better control over which floating environments
% will be handled by the \pkg{endfloat} package (\autoref{sec:options}).
%
% \item
% The \pkg{endfloat} package should cooperate with
% the \pkg{floatrow} package now, at least if you load it \emph{after}
% the \pkg{floatrow} package.
%
% \item
% Older versions of the \pkg{endfloat} package used to process |figure| and
% |table| as starred variant always, but at least version $2.4$ did not.
% It had stored all of them as starred variant into the temporary files, but had
% processed them as non-starred always.
% To make this more consistent the version $2.5$ does store the environments
% as they are now, and processes them the same way, i.e.~non-starred
% variants will be stored and processed as non-starred, and starred variants
% will be stored and processed as starred.
% \end{itemize}
% If you notice a change in behaviour after updating the \pkg{endfloat}
% package to version 2.5, please contact me (Axel) and I'll try to fix this.
%
% \subsection{Version 2.4}
%
% Version 2.4 involves the largest set of additional features
% since at least version 2.2 (which added all the options). Some
% of these are
% \begin{itemize}
%
% \item
% This version adds various user hooks, both as commands:
% |\At|\x|Begin|\x|Figures|, |\At|\x|Begin|\x|Tables|, and
% |\At|\x|Begin|\x|Delayed|\x|Floats| (\autoref{sec:hooks}),
% and |\efloat|\x|separator| (\autoref{sec:separator}).
%
% \item
% Most importantly, there is the addition of a configuration file
% (\autoref{sec:extra}). An example configuration file contains
% code which allows \pkg{endfloat} to work properly with
% the \texttt{sidewaystable} environment of the \pkg{rotating}
% package.
%
% \item
% Additionally, all figures and tables are written as |figure*| and
% |table*| in the temporary files, eliminating the need to force single
% column mode when table and figures are processed.
%
% \item
% There are a fair number of internal changes to the code (which
% make it easier for the various hooks to work).
%
% \item
% Also changed some internal command names, such as |\xtable|,
% which did not include |@| to names that to include |@| such as
% |\ef@extable|. Also renamed all commands |\end...| to something
% else so as to not use up valuable environment name space.
%
% \item
% Removed dead code. It was making this too hard to read.
%
% \item
% Documentation changes to reflect user level changes. Also added
% more to the Caveats section (\autoref{sec:caveats}).
%
% \end{itemize}
%
% During the past few months I have received a wonderful level
% of feedback from users. Many made very useful suggestions.
% Even those queries which resulted from a misunderstanding of
% how to use the package have been lead me to modify the
% documentation. I had intended to acknowledge all of you,
% but the list has grown too long. You know who you are. Thanks,
% and good luck with your journal submissions!
%
% \subsection{Version 2.3}
%
% Very minor changes in the organization of some parts of the
% code, but I fixed a bug I introduced while ``cleaning up'' for
% for version~2.2: I had misunderstood part of the original
% code and commented out a necessary trick to allow for |figure*|
% The bug was very real, so I am releasing this version~2.3 as soon
% as I can document it, and am not waiting to include other planned
% improvements.
%
% \subsection{Version 2.2}
%
% A user (Kate Hedstrom) pointed out a number of bugs and shortcomings,
% which led me (jpg) to finally sit down and make some of the changes
% I had been planning on making. The effect of the |tablesfirst| option
% was specifically requested, and also work on the bug discussed
% in \autoref{sec:buggyheads}. Although my bug fix is partial,
% version 2.2 includes the means to suppress the headers altogether.
%
% \subsubsection{Package options}
%
% I, jpg, have used the package option facility of \LaTeXe\
% to get other options (described in \autoref{sec:options}).
% I also made some cosmetic changes (breaking up lines to reduce
% the number of overfull boxes when printing the documentation,
% line breaks and indentation to make the code more readable.
% I also replaced some |\def|s with |\newcommand|s and
% |\providecommand|s. This are not logged, because I actually
% found that all of the logging information was hampering my
% ability to read and modify the code.
%
% \subsubsection{Internal commands}
%
% In version 2.2, I also replaced some code internal
% to |\xfigure| and |\xtable| with |\efloat@foundendfig|
% and |\efloat@foundendtab|. This was merely a stylistic
% change.
%
% I also deleted some some definitions
% which are not used. These had had probably been left as hooks, but with
% not enough for them to be useful hooks. There are some cases where
% I have left these in when I could see what they could be used for.
% I have tried to add a note as to their potential use.
%
% \subsubsection{Documentation}
%
% Massive changes to user documentation, and some to the code
% documentation.
%
% \subsection{Version 2.1}
%
% I, Jeffrey Goldberg, in June 1994 wanted to use Darrell McCauley's
% \file{endfloat.sty} with \LaTeXe. It worked fine until I
% needed to use the \LaTeXe\ directive |\At|\x|End|\x|Document| for
% some other function, and discovered that it was not functioning
% and that it was because version 2.0 (and earlier) of
% \texttt{endnotes.sty} redefined |\end|\x|document|. The
% fix that I needed was trivial, but it made the file no
% longer compatible with \LaTeX209. As a consequence, it seemed
% that the only way I could make up for this crime was to make
% it fully compatible with \LaTeXe.
%
% \subsection{Minor changes (version 2.0)}
%
% A series of changes and fixes were made in March 1992. Many
% by the original author others by Ronald Kappert (R.Kappert@urc.kun.nl)
% who replaced literal strings with |\figurename|, and so on; and
% by schultz@unixg.ubc.ca who pointed out gobbling bug with
% |\nomarkersintext|.
%
% \subsection{Brian Junker's modifications (version 2.0)}
%
% Brian Junker (brian@stat.cmu.edu) made a number of fixes.
% Here are his change comments:
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
%
% \begin{enumerate}
% \item Changed ``comment" to ``figure" and ``komment" to
% ``table" throughout, to avoid collisions with other
% style files' definitions of ``comment". Also
% fixes |\begin{table}| ends with |\end{komment}|
% error generated by my (older) version of PC\TeX.
%
% \item Fixed gobble of float position specifiers.
% There are two ways to do this:
% \begin{enumerate}
% \item |\write\ifnextchar[{\gobbleuntilnext}{}|
% into every
% environment written to |\jobname.fff|, etc.;
% \item save \LaTeX's old def's of |\figure| and |\table|
% and re-use them when processing fig's and tables.
% I chose the latter approach, for maximum
% consistency with \LaTeX, other style files, etc.
% \end{enumerate}
%
% \item Added def's of |\tablename| and |\figurename|,
% which my version of PC-\TeX\ seemed to need.
% [backward compatibility for earlier versions ---jdm]
%
% \item Moved formatting of figure and table markers to
% |\figure|\x|place| and |\table|\x|place|.
%
% \item Style change: in-text markers are now
% centered reminders like ``[Figure 4 about here.]".
%
% \item Style change: added list of tables and
% figures to the table and figure sections.
% Change back to old format with |\nofiglist| and
% |\notablist|.
%
% \item Changed default to |\markersintext|.
%
% \item Fixed trivial typo in |\@openposttbls|
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \end{enumerate}
% All changes marked |% bj| at end of line.
% ---Brian Junker (brian@stat.cmu.edu)
%
% \section{Wish list}
%
% I doubt that I will really work on this wish list in the near future
% but in addition to solving the know bugs, there is one major sort of
% change that I (jpg) would like to see:
% \begin{itemize}
% \item
% Updating the verbatim writing by using the tools in the
% |verbatim| standard packages, and the |moreverb| package.
% Since they provide more generalized an cleaner verbatim code
% then this which dates back to the earliest days of \LaTeX.
% \end{itemize}
%
% \begin{thebibliography}{1}
%
% \bibitem{Goldberg:lastpage}
% Jeffrey Goldberg.
% \newblock The \texttt{lastpage} package.
% \newblock Electronic documentation
%
% \bibitem{A-W:GMS94}
% Michel Goossens, Frank Mittelbach, and Alexander Samarin.
% \newblock {\em The {\LaTeX} Companion}
% \newblock Addison-Wesley, Reading, Massachusetts, 1994.
%
% \bibitem{LT3:ClassGuide}
% The \LaTeX3 Project.
% \newblock \emph{\LaTeXe\ for class and package writers}
% \newblock (Preliminary draft) June 1994
% \newblock Electronic Documentation
%
% \bibitem{Lingnau:float}
% Anselm Lingnau.
% \newblock An Improved Environment for Floats
% \newblock August 2001 (version~1.3)
% \newblock Electronic Documentation
%
% \bibitem{Lapko:floatrow}
% Olga Lapko.
% \newblock The floatrow package
% \newblock August 2009 (version~0.3)
% \newblock Electronic Documentation
%
% \bibitem{Sommerfeldt:newfloat}
% Axel Sommerfeldt.
% \newblock The newfloat package
% \newblock November 2011 (version~1.0)
% \newblock Electronic Documentation
%
% \bibitem{RahBar:rotating}
% Sebastian Rahtz and Leonor Barroca.
% \newblock A style option for rotated objects in \LaTeX{}
% \newblock April 1994 (version~2)
% \newblock Electronic Documentation
%
% \bibitem{Dekker:ctable}
% Wybo Dekker.
% \newblock The ctable package
% \newblock October 2015 (version~1.31)
% \newblock Electronic Documentation
% \end{thebibliography}
%
% \StopEventually{\PrintIndex\PrintChanges}
% \clearpage
%
% \section{The documentation driver file}
%
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% The next bit of code contains the documentation driver file for
% \TeX{}, i.e., the file that will produce the documentation you are
% currently reading. It will be extracted from this file by the
% \texttt{docstrip} program.
% \begin{macrocode}
%<*driver>
\documentclass{ltxdoc}
\setlength\hfuzz{2pt} % ignore small overfulls
%
\usepackage{ifpdf}
\ifpdf
\usepackage{mathptmx,courier}
\usepackage[scaled=0.90]{helvet}
\fi
%
\usepackage{hypdoc}
\ifpdf\usepackage{hypdestopt}\fi
\hypersetup{pdfkeywords={LaTeX, package, endfloat},pdfstartpage={},pdfstartview={}}
%
\CodelineIndex
\EnableCrossrefs
%\DisableCrossrefs % Say \DisableCrossrefs if index is ready
%\RecordChanges % Gather update information
\OnlyDescription % comment out for implementation details
\begin{document}
\let\subsectionautorefname\sectionautorefname
\let\subsubsectionautorefname\sectionautorefname
\DocInput{endfloat.dtx}
\end{document}
%</driver>
% \end{macrocode}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
%
% \section{The implementation}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
%
% \subsection{File and package identification}
%
% We start by checking if this file was already loaded. If not we
% identify the current version.
% \changes{v2.1}{1994/06/25}{Use LaTeX2e package form. jpg}
% \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{endfloat}[\filedate\space\fileversion\space
LaTeX2e package puts figures and tables at end (jdm)]
% \end{macrocode}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e package form. jpg}
%
% \subsection{How it was written}
% [this subsection mostly based on jdm's original text.]
%
% Overview: redefine the figure and table environment following
% the |comment| environment of
% \texttt{comment.sty} written by Victor Eijkhout
% \texttt{eijkhout@csrd.uiuc.edu}.
%
% Instead of processing what was between |\begin{...}| and |\end{...}|,
% every line is written to a file (|\jobname.fff| for figures, |\jobname.ttt|
% for tables). Then, when you do an |\end{document}|, the figure section
% is processed, then the table section is processed. The |tablesfirst|
% option changes this order.
%
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg}
%
% After initial versions, I [jdm] received much help from Ronald Kappert
% and Brian Junker (see change log below). \emph{Thanks guys!}
%
% \subsection{Define warning message}
%
% Since I, JPG, am making the commands options, I want to warn users
% to use the options, since these commands should be discontinued
% in future versions.
%
% Since these commands are available now for over two decades,
% I, AS, think that it would be a bad idea removing them now.
% So I decided to drop the warning message introduced by JPG instead.
%
% \subsection{Flags}
%
% Put all of the newifs for the user options and flags here.
% Note that these are global flags only,
% the ones bound to a specific environment will be defined
% inside |\Declare|\x|Delayed|\x|Float| instead.
%
% I (as) have added the definition of |\Setup|\x|Delayed|\x|Float|
% here in version 2.5.
%
% \begin{macrocode}
\newif\if@domarkers
\newif\if@tablist % bj
\newif\if@figlist % bj
\newif\if@tabhead
\newif\if@fighead
\newif\if@tablesfirst
\newif\ifefloat@figures % as
\newif\ifefloat@tables % as
\newif\ifefloat@list % as
\newif\ifefloat@head % as
% \end{macrocode}
%
% \begin{macro}{\efloat@syncobsoleteflags}
% The switches |\if@tablist|, |\if@figlist|, |\if@tabhead|, and |\if@fighead|
% are obsolete, but still needed by some old (and unmaintained) document classes
% and packages. So we still support them, and keep them in sync with the values
% actually used by the \pkg{endfloat} package.
% \changes{v2.5c}{2011/12/22}{This macro added. as}
% \begin{macrocode}
\newcommand*\efloat@syncobsoleteflags{%
\efloat@ifflag{tablelist}{\@tablisttrue}{\@tablistfalse}%
\efloat@ifflag{figurelist}{\@figlisttrue}{\@figlistfalse}%
\efloat@ifflag{tablehead}{\@tabheadtrue}{\@tabheadfalse}%
\efloat@ifflag{figurehead}{\@figheadtrue}{\@figheadfalse}}
% \end{macrocode}
% \end{macro}
%
%
% \subsubsection{Default values}
%
% Set default values of all of the (global) flags here.
%
% \begin{macrocode}
\@domarkerstrue
\@tablisttrue
\@figlisttrue
\@tabheadfalse
\@figheadfalse
\@tablesfirstfalse
\efloat@figurestrue % as
\efloat@tablestrue % as
\efloat@listtrue % as
\efloat@headfalse % as
% \end{macrocode}
%
% \begin{macro}{\SetupDelayedFloat}
% While global flags will be set using package options,
% environment specific flags will be set with |\Setup|\x|Delayed|\x|Float|.
% \changes{v2.5}{2011/11/26}{This command added. as}
% \changes{v2.5c}{2011/12/22}{Usage of \cs{efloat@syncobsoleteflags} added. as}
% \changes{v2.7}{2019/04/14}{Text of error message changed. as}
% \begin{macrocode}
\RequirePackage{keyval}
% \end{macrocode}
% \begin{macrocode}
\newcommand*\SetupDelayedFloat[2]{%
\def\efloat@type{#1}%
\setkeys{endfloat}{#2}}
% \end{macrocode}
% \begin{macrocode}
\define@key{endfloat}{list}[true]{\efloat@setkey{list}{#1}}
\define@key{endfloat}{nolist}[]{\efloat@setkey{list}{false}}
\define@key{endfloat}{head}[true]{\efloat@setkey{head}{#1}}
\define@key{endfloat}{nohead}[]{\efloat@setkey{head}{false}}
% \end{macrocode}
% \begin{macrocode}
\newcommand*\efloat@setkey{%
\@expandtwoargs\efloat@@setkey\efloat@type}
\newcommand*\efloat@@setkey[3]{%
\efloat@ifdelayed{#1}{%
\efloat@setflag{#1#2}{#3}%
\efloat@syncobsoleteflags}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@ifdelayed}
% Check if the given environment is a delayed float type.
% If yes, execute the given code.
% If not, issue an error message.
% \changes{v2.7}{2019/04/14}{This macro added. as}
% \begin{macrocode}
\newcommand\efloat@ifdelayed[2]{%
\@ifundefined{ef@ext@#1}%
{\PackageError{endfloat}%
{`#1' is not a delayed float type}%
{Only environments known to the `endfloat' package are allowed here.}}%
{#2}}%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@ifflag}
% |\efloat@ifflag|\marg{flag}\marg{yes-code}\marg{no-code}
% tests if a flag has been set.
% \changes{v2.5a}{2011/12/04}{This macro added. as}
% \begin{macrocode}
\newcommand*\efloat@ifflag[1]{%
\@nameuse{ef@if@#1}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@setflag}
% |\efloat@setflag|\marg{flag}\marg{value}
% sets a flag to the given boolean value.
% \changes{v2.5a}{2011/12/04}{This macro added. as}
% \begin{macrocode}
\newcommand*\efloat@setflag[2]{%
\@nameuse{if#2}%
\global\expandafter\let\csname ef@if@#1\endcsname\@firstoftwo
\else
\global\expandafter\let\csname ef@if@#1\endcsname\@secondoftwo
\fi}%
% \end{macrocode}
% \end{macro}
%
% \subsection{Other preliminaries}
%
% I (jpg) have been slowly working at making more and more of the
% code for processing tables and figures common, with the idea
% that once I have factored out all that is common with them
% I will be then be able to set up code for other floats,
% I have still a very long way to go, but common code created
% for version 2.3 is here.
%
% I (as) have added the definition of |\Declare|\x|Delayed|\x|Float|
% and |\Declare|\x|Delayed|\x|Float|\x|Flavor| here in version 2.5.
%
% \begin{macro}{\efloat@newwrite}
% attempt to reduce old |\@openpostfigs| and |\@openposttbls| to
% one command
% The first one calls |\newwrite| so, |\efloat@newwrite{ttt}|
% will have the effect of |\newwrite\efloat@postttt|.
% \begin{macrocode}
\newcommand*\efloat@newwrite[1]{%
\expandafter\newwrite\csname efloat@post#1\endcsname}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@openpost}
% |\efloat@openpost{ttt}| will be the same as
% \begin{quote}
% |\immediate\openout\efloat@postttt=\jobname.ttt\relax|
% \end{quote}
% while also calling |\efloat@setflag{ttt}{true}| to set a flag
% (|@ef@tttopen|) in the case of |ttt|.
% \changes{v2.5a}{2011/12/04}{\cs{ef@setct} replaced by \cs{efloat@setflag}. as}
% \changes{v2.5c}{2011/12/22}{\cs{efloat@setflag} replaced by \cs{ef@setct}. as}
% \begin{macrocode}
\newcommand*\efloat@openpost[1]{%
\expandafter\immediate\expandafter\openout
\csname efloat@post#1\endcsname =\jobname.#1\relax
\ef@setct{#1}{1}%
\message{(\jobname.#1)}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@closepost}
% Close the file for writing. Set a flag saying so.
% \changes{v2.6}{2018/03/24}{This macro added. as}
% \begin{macrocode}
\newcommand*\efloat@closepost[1]{%
\expandafter\immediate\expandafter\closeout\csname efloat@post#1\endcsname
\ef@setct{#1}{0}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ef@newct}
% \begin{macro}{\ef@setct}
% \begin{macro}{\ef@ifct}
% |\ef@newct{ttt}| will create a new counter called |\@ef@tttopen|
% and |\ef@setct{ttt}{1}| would set it to 1.\par
% To offer best compatibility to version $2.4$ we still use these counters
% although using |\efloat@setflag{tttopen}{1}| would be a better alternative.
% (Otherwise the \pkg{apa} document class would break.)
% \changes{v2.5c}{2011/12/22}{\cs{ef@ifct} added by as}
% \begin{macrocode}
\newcommand*\ef@newct[1]{%
\expandafter \newcount \csname @ef@#1open\endcsname}
\newcommand*\ef@setct[2]{%
\expandafter\global\csname @ef@#1open\endcsname=#2\relax}
\newcommand*\ef@ifct[1]{%
\expandafter\ifnum \csname @ef@#1open\endcsname>0 \relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\efloat@condopen}
% Conditionally open a file
% \changes{v2.5a}{2011/12/04}{\cs{ifnum} replaced by \cs{efloat@ifflag}. as}
% \begin{macrocode}
\newcommand*\efloat@condopen[1]{%
\ef@ifct{#1}{}{\efloat@openpost{#1}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@iwrite}
% Immediate write to one of these files.
% |\protected@iwrite| was taken from https://tex.stackexchange.com/questions/75951/
% \changes{v2.6}{2018/03/18}{Bugfix: Uses \cs{protected@write} now. as}
% \changes{v2.7}{2019/04/14}{Bugfix: Uses \cs{protected@iwrite} now. as}
% \begin{macrocode}
\providecommand\protected@iwrite[3]{%
\begingroup
\let\thepage\relax
#2%
\let\protect\@unexpandable@protect
\edef\reserved@a{\immediate\write #1{#3}}%
\reserved@a
\endgroup
\if@nobreak\ifvmode\nobreak\fi\fi}
% \end{macrocode}
% \begin{macrocode}
\newcommand\efloat@iwrite[1]{%
\expandafter\protected@iwrite\csname efloat@post#1\endcsname{}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\addtodelayedfloat}
% Immediate write to one of these files.
% While |\efloat@iwrite| is for internal use, this one if for usage in end-user documents.
% \changes{v2.7}{2019/04/14}{This macro added. as}
% \changes{v2.7}{2019/04/15}{Starred variant added. as}
% \begin{macrocode}
\newcommand\addtodelayedfloat{%
\@ifstar{\efloat@addto\@firstofone}{\efloat@addto\detokenize}}
% \end{macrocode}
% \begin{macrocode}
\newcommand\efloat@addto[3]{%
\efloat@ifdelayed{#2}{%
\expandafter\efloat@@addto\expandafter{\csname ef@ext@#2\endcsname}{#1{#3}}}}
% \end{macrocode}
% \begin{macrocode}
\newcommand\efloat@@addto[1]{%
\efloat@condopen{#1}\efloat@iwrite{#1}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloatheading}
% This macro changes the page headings.
% By default it is defined to use |\markboth| for this purpose,
% but you may redefine this command in the configuration file or preamble.
% \changes{v2.6}{2018/03/18}{This macro added. as}
% \begin{macrocode}
\providecommand\efloatheading[1]{%
\markboth{\uppercase{#1}}{\uppercase{#1}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloatpreamble}
% |\efloat|\x|preamble| will be typeset in front of the delayed floating environments.
% By default it does nothing; if you want it to be something else,
% you may redefine this command in the configuration file or preamble.
% \changes{v2.6}{2018/03/24}{This macro added. as}
% \begin{macrocode}
\providecommand\efloatpreamble{}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloatseparator}
% A user suggested that in some cases we may not wish
% to force \pkg{endfloat} to put each float on a page by itself.
% By default that is what it does, by defining |\efloat|\x|separator|
% to be |\clear|\x|page|. If you want it to be something else,
% you may redefine this command in the configuration file or preamble.
% \changes{v2.6}{2018/03/24}{Use \cs{providecommand} instead of \cs{newcommand} to define this macro. as}
% \begin{macrocode}
\providecommand\efloatseparator{\clearpage}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloatpostamble}
% |\efloat|\x|postamble| will be typeset at the end of the delayed floating environments.
% By default that is what it does, by defining |\efloat|\x|postamble|
% to be |\efloat|\x|separator|. If you want it to be something else,
% you may redefine this command in the configuration file or preamble.
% \changes{v2.6}{2018/03/24}{This macro added. as}
% \begin{macrocode}
\providecommand\efloatpostamble{\efloatseparator}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloatbegin}
% |\efloatbegin| will be typeset when the processing of the delayed float begins.
% \changes{v2.7}{2019/04/15}{This macro added. as}
% \begin{macrocode}
\providecommand\efloatbegin{\clearpage}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloatend}
% |\efloatend| will be typeset when the processing of the delayed float ends.
% \changes{v2.7}{2019/04/15}{This macro added. as}
% \begin{macrocode}
\providecommand\efloatend{}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloatbeginlist}
% |\efloatbeginlist| will be typeset before the list of a delayed float.
% \changes{v2.7}{2019/04/15}{This macro added. as}
% \begin{macrocode}
\providecommand\efloatbeginlist{\normalsize}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloatendlist}
% |\efloatendlist| will be typeset after the list of a delayed float.
% \changes{v2.7}{2019/04/15}{This macro added. as}
% \begin{macrocode}
\providecommand\efloatendlist{\clearpage}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ef@makeinnocent}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \begin{macrocode}
\newcommand*{\ef@makeinnocent}[1]{\catcode`#1=12 }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\figurename}
% \begin{macro}{\tablename}
% Make sure that |\tablename| and |\figurename| are defined.
% \begin{macrocode}
\providecommand{\figurename}{Figure}
\providecommand{\tablename}{Table}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\floatplace}
% Place marker.
% \changes{v1.0b}{1992/03/10}{adaptation for LaTeX 2.09 and
% international namegiving by Ronald Kappert
% R.Kappert@urc.kun.nl}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.5}{2011/11/26}{universalized by as}
% \begin{macrocode}
\newcommand{\floatplace}[1]{%
\begin{center}
[\csname #1name\endcsname~\csname thepost#1\endcsname\ about here.]
\end{center}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DeclareDelayedFloat}
% This one prepares the given environment for cooperation with the \pkg{endfloat}
% package, i.e.~|figure| resp.~|table|.
% \changes{v2.5}{2011/11/26}{This command added. as}
% \changes{v2.5a}{2011/12/04}{\cs{ef@newct} replaced by \cs{efloat@setflag}. as}
% \changes{v2.5b}{2011/12/05}{Starred variant added. as}
% \changes{v2.5c}{2011/12/22}{\cs{efloat@setflag} replaced by \cs{ef@newct}. as}
% \begin{macrocode}
\newcommand*\DeclareDelayedFloat{%
\@ifstar{\efloat@declare{*}}{\efloat@declare{}}}
\@onlypreamble\DeclareDelayedFloat
% \end{macrocode}
% \begin{macrocode}
\newcommand*\efloat@declare[2]{%
\@testopt{\efloat@@declare{#1}{#2}}{ef#2}}
\@onlypreamble\efloat@declare
% \end{macrocode}
% \begin{macrocode}
\def\efloat@@declare#1#2[#3]#4{%
% \end{macrocode}
% Counters
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \begin{macrocode}
\newcounter{post#2}%
% \end{macrocode}
% Remember the file extension in |\ef@ext@|\meta{environment}.
% \begin{macrocode}
\edef\@tempa{#3}%
\edef\@tempb{\@nameuse{ext@#2}}%
\ifx\@tempa\@tempb
\PackageError{endfloat}%
{File extension `\@tempa' is already used by the List}%
{Try using a different file extension here, e.g. `ef\expandafter\@gobbletwo\@tempa'.}%
\else
\expandafter\let\csname ef@ext@#2\endcsname\@tempa
\fi
% \end{macrocode}
% Code for opening the |\jobname.fff|
% \begin{macrocode}
\efloat@newwrite{#3}%
\ef@newct{#3}%
% \end{macrocode}
% Place marker
% (Note: The \pkg{float} package uses |\fname@|\textit{X} as float name,
% but we need |\|\textit{X}|name| in |\float|\x|place|.)
% \begin{macrocode}
\@ifundefined{#2name}{\@namedef{#2name}{\@nameuse{fname@#2}}}{}%
\efloat@namedef{#2place}{\floatplace{#2}}%
% \end{macrocode}
% Re-define float.
% \begin{macrocode}
\DeclareDelayedFloatFlavor#1{#2}{#2}%
% \end{macrocode}
% Define the heading title. (Only relevant if option |fighead| is set.)
% \begin{macrocode}
\expandafter\providecommand\csname #2section\endcsname{#4}%
% \end{macrocode}
% \begin{macrocode}
% \end{macrocode}
% Here we set-up the hooks for getting stuff into |\process...|
% commands easily.
% \begin{macrocode}
\efloat@namedef{process#2s@hook}{}%
\edef\@tempb{\def\noexpand\@tempa{\@car#2\@nil}}%
\uppercase\expandafter{\@tempb}%
\edef\@tempb{%
\noexpand\g@addto@macro\noexpand\@tempa{\@cdr#2\@nil}}%
\@tempb
\efloat@namedef{AtBegin\@tempa s}{%
\expandafter\g@addto@macro\csname process#2s@hook\endcsname}%
\expandafter\expandafter\expandafter\let\expandafter
\csname AtBegin\@tempa es\expandafter\endcsname
\csname AtBegin\@tempa s\endcsname
% \end{macrocode}
% \begin{macrocode}
\efloat@namedef{process#2s}{\efloat@process{#3}{#2}}%
\efloat@namedef{process#2es}{\@nameuse{process#2s}}%
% \end{macrocode}
% Flags: Set default values of all of the flags here.
% \begin{macrocode}
\efloat@@setkey{#2}{list}{efloat@list}%
\efloat@@setkey{#2}{head}{efloat@head}%
% \end{macrocode}
% Finally add the environment to the list of delayed floats
% \begin{macrocode}
\@cons\efloat@list{{#2}}}
\@onlypreamble\efloat@@declare
% \end{macrocode}
% \begin{macrocode}
\newcommand*\efloat@list{}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@namedef}
% Same as \cs{@namedef} from the \LaTeX\ kernal,
% but uses \cs{newcommand} instead of \cs{def}.
% \changes{v2.5c}{2011/12/23}{This macro added}
% \begin{macrocode}
\newcommand*\efloat@namedef[1]{%
\expandafter\newcommand\csname #1\endcsname}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DeclareDelayedFloatFlavor}
% \begin{macro}{\DeclareDelayedFloatFlavour}
% This one redefines the given environment, i.e. |figure| resp. |table|.
% While the non-starred variant redefines both variants (non-starred and starred),
% the starred variant only redefines the environment as given.\par
% We do this |\At|\x|Begin|\x|Document| so we are (hopefully) redefining this
% environment as the very last package.
% (Otherwise \pkg{endfloat} would not work with \pkg{floatrow}.)
% \changes{v2.5b}{2011/12/05}{This command added. as}
% \changes{v2.7}{2019/04/14}{Text of error message changed. as}
% \begin{macrocode}
\newcommand*\DeclareDelayedFloatFlavor{%
\@ifstar{\efloat@declareflavor\@gobble}%
{\efloat@declareflavor\@iden}}
\@onlypreamble\DeclareDelayedFloatFlavor
\let\DeclareDelayedFloatFlavour\DeclareDelayedFloatFlavor
\@onlypreamble\DeclareDelayedFloatFlavour
% \end{macrocode}
% \begin{macrocode}
\newcommand*\efloat@declareflavor[3]{%
\efloat@ifdelayed{#3}{%
\efloat@AtBeginDocument{%
\efloat@@declareflavor{#2}{#3}%
#1{\efloat@@declareflavor{#2*}{#3}}}}}
\@onlypreamble\efloat@declareflavor
% \end{macrocode}
% \begin{macrocode}
\newcommand*\efloat@@declareflavor[2]{%
\def\@tempa{\@efloat{#2}{#1}}%
\@ifundefined{efloat@#1@ORI}%
% \end{macrocode}
% Save old definition of the environment.
% \begin{macrocode}
{\expandafter\expandafter\expandafter\let\expandafter
\csname efloat@#1@ORI\expandafter\endcsname
\csname #1\endcsname
% \end{macrocode}
% Restore old definition of the environment at |\efloat@restore|\x|floats|.
% \begin{macrocode}
\expandafter\g@addto@macro\expandafter\efloat@restorefloats\expandafter{%
\expandafter\let
\csname #1\expandafter\endcsname
\csname efloat@#1@ORI\endcsname}%
% \end{macrocode}
% Re-define float.
% \begin{macrocode}
\expandafter\let\csname#1\endcsname\@tempa}%
% \end{macrocode}
% \begin{macrocode}
{\expandafter\ifx\csname#1\endcsname\@tempa \else
\PackageError{endfloat}%
{The environment `#1' was already redefined}%
{You can't use \noexpand\DeclareDelayedFloatFlavor twice for a given environment.}%
\fi}}
\@onlypreamble\efloat@@declareflavor
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\efloat@AtBeginDocument}
% To be compatible to version $2.4$ we usually redefine |\figure| and |\table| immediately.
% But if the \pkg{floatrow} package is loaded we can't, so we have to use
% |\At|\x|Begin|\x|Document| here.
% (Note: |\efloat@At|\x|Begin|\x|Document| will be defined using |\provide|\x|command|
% so document classes and packages can pre-define it if needed.)
% \changes{v2.5c}{2011/12/22}{This command added. as}
% \changes{v2.5d}{2011/12/23}{Revised. as}
% \begin{macrocode}
\@ifpackageloaded{floatrow}{%
\PackageInfo{endfloat}{`floatrow' package detected, delaying redefinitions}
\providecommand*\efloat@AtBeginDocument{\AtBeginDocument}
}{%
\providecommand*\efloat@AtBeginDocument{\@iden}
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@restorefloats}
% Restore the original definition of all environments (floats and flavors)
% known to the \pkg{endfloat} package.
% This macro will be filled with life by |\Declare|\x|Delayed|\x|Float|\x|Flavor|.
% \changes{v2.5}{2011/11/26}{This macro added by as}
% \begin{macrocode}
\newcommand*\efloat@restorefloats{}
% \end{macrocode}
% \end{macro}
%
% \subsection{Options and (obsolete) Commands}
%
% \begin{macro}{\efloat@SetOption}
% Sets an option (via |\efloat@Setup|) for all environments known to
% the \pkg{endfloat} package.
% \changes{v2.5}{2011/11/26}{This macro added. as}
% \begin{macrocode}
\newcommand*\efloat@SetOption[1]{%
\def\@elt##1{\efloat@Setup{##1}{#1}}%
\efloat@list
\let\@elt\relax}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@Setup}
% Within option code we can't use |\Setup|\x|Delayed|\x|Float| since
% |figure| and |table| are not declared as delayed floating environments yet.
% So we use |\efloat@Setup| instead which will simply collect the settings for
% execution at a later stage.
% \changes{v2.5a}{2011/12/03}{This macro added. as}
% \begin{macrocode}
\newcommand\efloat@Setup[2]{%
\g@addto@macro\efloat@ProcessOptions{%
\SetupDelayedFloat{#1}{#2}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@ProcessOptions}
% Processes options setup with |\efloat@Setup|.
% \changes{v2.5a}{2011/12/03}{This macro added. as}
% \begin{macrocode}
\newcommand\efloat@ProcessOptions{%
\let\efloat@SetOption\@undefined
\let\efloat@Setup\@undefined
\let\efloat@ProcessOptions\@undefined}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\markersintext}
% \begin{macro}{\nomarkersintext}
% First set up flags and defaults. First set for flagging
% whether markers appear in text.
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.2a}{1994/10/07}{Create new options}
% \begin{macrocode}
\DeclareOption{nomarkers}{\@domarkersfalse}
\DeclareOption{markers}{\@domarkerstrue}
% \end{macrocode}
% \begin{macrocode}
\newcommand{\markersintext}{\@domarkerstrue}
\newcommand{\nomarkersintext}{\@domarkersfalse}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dotablist}
% \begin{macro}{\notablist}
% Options for creating lists of Tables \ldots
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.5}{2011/11/26}{We use \cs{SetupDelayedFloat} now. as}
% \begin{macrocode}
\newcommand{\dotablist}{%
\SetupDelayedFloat{table}{list=true}}
\newcommand{\notablist}{%
\SetupDelayedFloat{table}{list=false,head=true}}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dofiglist}
% \begin{macro}{\nofiglist}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.5}{2011/11/26}{We use \cs{SetupDelayedFloat} now. as}
% \ldots and Figures
% \begin{macrocode}
\newcommand{\dofiglist}{%
\SetupDelayedFloat{figure}{list=true}}
\newcommand{\nofiglist}{%
\SetupDelayedFloat{figure}{list=false,head=true}}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% Now we make options |tablist| and |notablist| and |figlist| and
% |nofiglist|. Note that options will be processed in order of
% the |\DeclareOption| commands in this file. So by placing
% |list| after |nolist| we ensure that if both are specified, |list|
% is in effect.
%
% First two new options
% \begin{macrocode}
\DeclareOption{nolists}{\efloat@listfalse \efloat@SetOption{list=false}}
\DeclareOption{lists}{\efloat@listtrue \efloat@SetOption{list=true}}
% \end{macrocode}
% Now the more specific ones, which must come after the more
% general options to get the right interactions between semi-conflicting
% options.
% \begin{macrocode}
\DeclareOption{notablist}{\efloat@Setup{table}{list=false}}
\DeclareOption{nofiglist}{\efloat@Setup{figure}{list=false}}
\DeclareOption{tablist}{\efloat@Setup{table}{list=true}}
\DeclareOption{figlist}{\efloat@Setup{figure}{list=true}}
% \end{macrocode}
%
% The \texttt{notablist} and \texttt{nofiglist} options still leave
% a section header at the beginning of the tables and figures.
%
% Note again the role that order plays, by placing |fighead| after
% |noheads| it ensures that |fighead| will be in effect if both
% are specified.
% \begin{macrocode}
\DeclareOption{heads}{\efloat@headtrue \efloat@SetOption{head=true}}
\DeclareOption{noheads}{\efloat@headfalse \efloat@SetOption{head=false}}
% \end{macrocode}
% \begin{macrocode}
\DeclareOption{fighead}{\efloat@Setup{figure}{head=true}}
\DeclareOption{tabhead}{\efloat@Setup{table}{head=true}}
\DeclareOption{nofighead}{\efloat@Setup{figure}{head=false}}
\DeclareOption{notabhead}{\efloat@Setup{table}{head=false}}
% \end{macrocode}
% Also need option for putting tables first
% \begin{macrocode}
\DeclareOption{tablesfirst}{\@tablesfirsttrue}
\DeclareOption{figuresfirst}{\@tablesfirstfalse}
% \end{macrocode}
% \changes{v2.5a}{2011/12/03}{Options `tablesonly' and `figuresonly' added. as}
% \begin{macrocode}
\DeclareOption{tablesonly}{\efloat@figuresfalse \efloat@tablestrue}
\DeclareOption{figuresonly}{\efloat@figurestrue \efloat@tablesfalse}
% \end{macrocode}
% \changes{v2.6}{2018/03/04}{Options `tables' and `figures' added. as}
% \begin{macrocode}
\DeclareOption{notables}{\efloat@tablesfalse}
\DeclareOption{nofigures}{\efloat@figuresfalse}
% \end{macrocode}
% Other option stuff
% \changes{v2.7}{2019/01/10}{Option `disable' added. as}
% \begin{macrocode}
\newcommand*\efloat@AtEndDocument{\AtEndDocument}
\DeclareOption{disable}{%
\def\efloat@@declare#1#2[#3]#4{%
\PackageInfo{endfloat}{`#2' is not delayed since option `disable' was specified}}%
\renewcommand*\efloat@declareflavor[3]{}%
\renewcommand*\efloat@@setkey[3]{}%
\renewcommand*\efloat@AtEndDocument{\@gobble}%
\AtBeginDocument{\renewcommand*\processdelayedfloats{}}}
% \end{macrocode}
% \begin{macrocode}
\DeclareOption*{%
\PackageError{endfloat}%
{Unknown option `\CurrentOption'}%
{Please take a look at the documentation of the `endfloat' package.}}
% \end{macrocode}
% Process (global) options
% \begin{macrocode}
\ProcessOptions*
% \end{macrocode}
% For compatibility reasons we still store the original code of `figure' and `table'
% to |\@bfig| and |\@btab| although we don't make use of it anymore.
% \begin{macrocode}
\let\@bfig\figure % bj
\let\@btab\table % bj
% \end{macrocode}
% Declare `figure' and `table' as delayed floating environment, if requested
% \begin{macrocode}
\if@tablesfirst
\ifefloat@tables
\DeclareDelayedFloat{table}[ttt]{Tables}
\fi
\ifefloat@figures
\DeclareDelayedFloat{figure}[fff]{Figures}
\fi
\else
\ifefloat@figures
\DeclareDelayedFloat{figure}[fff]{Figures}
\fi
\ifefloat@tables
\DeclareDelayedFloat{table}[ttt]{Tables}
\fi
\fi
% \end{macrocode}
% Process environment specific options
% \begin{macrocode}
\efloat@ProcessOptions
% \end{macrocode}
%
% \begin{macro}{\thepostfig}
% \begin{macro}{\theposttbl}
% For compatibility reasons we still offer the old counters
% |postfig| and |posttbl|, so existing redefinitions of |\figure|\x|place|
% and |\table|\x|place| resp. existing extensions to the \pkg{endfloat} package
% will still work.
% \begin{macrocode}
\let\c@postfig\c@postfigure
\let\c@posttbl\c@posttable
\newcommand\thepostfig{\thepostfigure}
\newcommand\theposttbl{\theposttable}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsection{Parsing \texttt{figure} and \texttt{table}}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
%
% Now we get the utilities for parsing needed to
% get unmodified code into files.
% \begin{macrocode}
\let\efloat@float\relax
% \end{macrocode}
%
% \begin{macro}{\@efloat}
% the {blank space } appearing with |\nomarkersintext| was fixed by adding
% a percent sign (|%|) at strategic locations, determined by setting
% |\tracingcommands=1| ---Darrell
%
% As mentioned by the jdm above, the following is based
% on \texttt{comment.sty}. It appears that the idea is to
% turn off all control sequence processing and read in from
% input each line, until a line is found that looks like
% |\end{figure}|. Thus the actual name of the environment
% is hardcoded into the use of the macros
% (see \autoref{sec:envnames}). ---jpg]
%
% \changes{v1.1}{1992/03/13}{verified that floats were
% used before a section was
% created for them. jdm}
% \changes{v1.2}{1992/03/14}{corrected typo that may have caused figures not
% to be printed. jdm}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.0}{1992/06/02}{Corrected problem of extra blank spaces in
% the output when nomarkersintext was in effect
% (bug reported by schultz@unixg.ubc.ca).
% jdm}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \changes{v2.5}{2011/11/26}{universalized by as}
% \changes{v2.5b}{2011/12/05}{revised by as}
% \changes{v2.6}{2018/03/18}{Re-defines \cs{efloat@endtestX} and \cs{efloat@enddbltestX}, too. as}
% \changes{v2.6}{2018/03/24}{Writes \cs{efloatseparator} into the file, if necessary. as}
% \begin{macrocode}
\newcommand*\@efloat[1]{%
\expandafter\@@efloat\expandafter{\csname ef@ext@#1\endcsname}{#1}}
% \end{macrocode}
% \begin{macrocode}
\newcommand*\@@efloat[3]{%
% \end{macrocode}
% \begin{macrocode}
% If we have already done one table then the file we write to
% is already open, and there is nothing to do, else open it up.
% \begin{macrocode}
\efloat@condopen{#1}%
% \end{macrocode}
% Write |\efloatseparator| into the file, if necessary.
% \begin{macrocode}
\@nameuse{efloat@separator@#1}%
% \end{macrocode}
% Since the figures are not actually processed until much later, we don't
% use \LaTeX's figure numbering mechanism, but we use our own. Also
% put marker in text (if option set). In the future, I may combine
% the counter for the markers and the counter used as a flag for
% whether the file is open into one thing.
% \begin{macrocode}
\if@domarkers
\stepcounter{post#2}% % bj
\@nameuse{#2place}% % bj
\fi
% \end{macrocode}
% |\@currenvir| (current environment) it set to fool
% latex into expecting the end of this environment
% to match the environment name. It will be used more extensively
% when dealing with the problem discussed in \autoref{sec:envnames}.
% \begin{macrocode}
\def\@currenvir{efloat@float}%
% \end{macrocode}
% Now we set up catcodes for reading in text without processing
% things. But need to make |^^M| special since we want to read
% line by line.
% \begin{macrocode}
\begingroup
\let\do\ef@makeinnocent \dospecials
\ef@makeinnocent\^^L% and whatever other special cases
\endlinechar`\^^M \catcode`\^^M=12 %
% \end{macrocode}
% Patch |\efloat@endtest| so it contains the actual environment name.
% \begin{macrocode}
\efloat@patch\efloat@endtest{#3}% as
\efloat@patch\efloat@enddbltest{#3}% as
\efloat@patch\efloat@endtestX{#3}% as
\efloat@patch\efloat@enddbltestX{#3}% as
% \end{macrocode}
% We have read a |\begin{figure}| to get here. We need to write that
% into the file. \par
% I (jpg) would add the |[htb]| parameters to what
% gets written, but that leaves any float specifiers that had
% been employed by the user wandering around in the floated material.
% \begin{macrocode}
\def\next{\efloat@xfloat{#1}}%
\next\string\begin{#3}}%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@foundend}
% When |\ef@xfigure| is verbatim-like reading the figure it has to
% do some clean-up after it as found the |\end{figure}| or
% |\end{figure*}|. This is it. [this part written by jpg v2.2]\par
% Note that this macro will not be used by the \pkg{endfloat} package
% itself anymore, but we'll leave it here so extensions written for the
% \pkg{endfloat} package which uses it will still work.
% \begin{macrocode}
\newcommand*\efloat@foundend[2]{%
\edef\efloat@enddbltest{\string\end{#2}}%
\efloat@found@end{#1}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@found@end}
% This is the new version of \cs{efloat@foundend}, actually used
% by this package.
% \changes{v2.5}{2011/11/26}{This variant of \cs{efloat@foundend} added by as}
% \changes{v2.6}{2018/03/24}{Writing \cs{efloatseparator} delayed until next \cs{@efloat}. as}
% \begin{macrocode}
\newcommand*\efloat@found@end[1]{%
% \end{macrocode}
% Write |\end{figure}| into the file, followed by |\efloatseparator|.
% \begin{macrocode}
\efloat@iwrite{#1}{\efloat@enddbltest}%
\global\@namedef{efloat@separator@#1}{%
\efloat@iwrite{#1}{\string\efloatseparator}%
\efloat@iwrite{#1}{ }}%
% \end{macrocode}
% Re-define |\next| so the current floating environment will be closed.
% \begin{macrocode}
\def\next{\endgroup\end{efloat@float}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@xfloat}
% |\efloat@xfloat| reads line by line, checking whether each line
% is the |\end{figure}|. If it is, then write out end stuff
% to the file. Otherwise write out read in line to the
% file and do the |\next| line.
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \changes{v2.5}{2011/11/26}{universalized by as}
% \changes{v2.5}{2011/11/26}{\cs{long} added. as}
% \changes{v2.5c}{2011/12/22}{renamed from \cs{ef@xfigure} to \cs{efloat@xfloat} by as}
% \changes{v2.6}{2018/03/18}{Actual test out-sourced to \cs{efloat@if@end}. as}
% \begin{macrocode}
{\catcode`\^^M=12 \endlinechar=-1 %
\long\gdef\efloat@xfloat#1#2^^M{%
\efloat@if@end{#2}{\efloat@found@end{#1}}{\efloat@iwrite{#1}{#2}}%
\next}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@if@end}
% |\efloat@if@end| tests if the given argument marks the end of the current floating environment.
% If yes, |\@firstoftwo| will be executed, |\secondoftwo| otherwise.
% \changes{v2.6}{2018/03/18}{This macro added. as}
% \changes{v2.6}{2018/03/18}{Tests \cs{efloat@endtestX} and \cs{efloat@enddbltestX}, too. as}
% \begin{macrocode}
\newcommand\efloat@if@end[1]{%
\def\test{#1}%
\let\efloat@next\@firstoftwo
% \end{macrocode}
% Test for |\end{figure}|
% \begin{macrocode}
\ifx\test\efloat@endtest
% \end{macrocode}
% Test for |\end{figure*}|
% \begin{macrocode}
\else\ifx\test\efloat@enddbltest
% \end{macrocode}
% Test for |\end{figure}%| and |\end{figure*}%|
% \begin{macrocode}
\else\ifx\test\efloat@endtestX
\else\ifx\test\efloat@enddbltestX
% \end{macrocode}
% Finally, if none of the above, we have a line of text in the
% body of the figure which should be written to the file.
% \begin{macrocode}
\else
\let\efloat@next\@secondoftwo
\fi\fi\fi\fi \efloat@next}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@endtest}
% \iffalse
% Generalizing these end\ldots{}test so that they
% can be used for user specified floating environments will
% require more |\expandafter|s then you can shake a stick at.
% I am not looking forward to taking on that task. I should
% look at the version control package to see what I can
% lift from there, since it must be the same problem.
% \fi
% I (as) have generalized this end\ldots{}test so it can be
% used for user specific floating environments as well.
% I did this by simply replacing |figure| with |X|, this will be patched
% to the correct environment name in |\@efloat| by using |\efloat@patch|.
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.1b}{1994/07/03}{Modify documentation -jpg}
% \changes{v2.5}{2011/11/26}{`figure' replaced by 'X' and documentation modified. as}
% \changes{v2.6}{2018/03/18}{\cs{efloat@endtestX} and \cs{efloat@enddbltestX} are used for the test, too. as}
% \begin{macrocode}
{\escapechar=-1%
\catcode`\#=14 % hash mark is comment character
\catcode`\%=12 # percent sign is other character
\xdef\efloat@endtest{\string\\end\string\{X\string\}}
\xdef\efloat@enddbltest{\string\\end\string\{X\string\}}
\xdef\efloat@endtestX{\string\\end\string\{X\string\}%}
\xdef\efloat@enddbltestX{\string\\end\string\{X\string\}%}
}
% \end{macrocode}
% \begin{macrocode}
\newcommand*\efloat@patch[2]{%
\def\x##1X##2\@nil{\def#1{##1#2##2}}%
\expandafter\x#1\@nil}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ef@xfigure}
% \changes{v2.5c}{2011/12/22}{Revived by as}
% \begin{macro}{\ef@xtable}
% \changes{v2.5c}{2011/12/22}{Revived by as}
% \changes{v2.6}{2018/03/18}{Re-defines \cs{efloat@endtestX} and \cs{efloat@enddbltestX}, too. as}
% Both, |\ef@xfigure| and |\ef@xtable|, are gone with version $2.5$ of the \pkg{endfloat}
% package.
% But unfortunately some old and unmaintained document classes and packages still
% uses these internal macros, so we still provide them to stay compatible.
% \begin{macrocode}
\newcommand*\ef@xfigure{\ef@xfloat{fff}{figure}}
% \end{macrocode}
% \begin{macrocode}
\newcommand*\ef@xtable{\ef@xfloat{ttt}{table}}
% \end{macrocode}
% \begin{macrocode}
\newcommand*\ef@xfloat[2]{%
\efloat@patch\efloat@endtest{#2}%
\efloat@patch\efloat@enddbltest{#2*}%
\efloat@patch\efloat@endtestX{#2}%
\efloat@patch\efloat@enddbltestX{#2*}%
% \end{macrocode}
% \begin{macrocode}
\def\next{\efloat@xfloat{#1}}%
\next}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsection{Processing Figures and Tables}
%
% \begin{macro}{\AtBeginDelayedFloats}
% Here we set-up the hooks for getting stuff into |\process...|
% commands easily. The command |\g@addto@macro| is defined
% in \file{classes.dtx}. I was about to write it myself, when I realized that
% it must already exist for things like |\AtBeginDocument|.
% \begin{macrocode}
\newcommand*\processdelayedfloats@hook{}
\def\AtBeginDelayedFloats{%
\g@addto@macro\processdelayedfloats@hook}
\newcommand*\processotherdelayedfloats{}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@process}
% |\efloat@process|\marg{file extension}\marg{environment name}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Use LaTeX2e documentation form. jpg}
% \changes{v2.5}{2011/11/26}{universalized by as}
% \changes{v2.5a}{2011/12/04}{\cs{ifnum} replaced by \cs{efloat@ifflag}. as}
% \changes{v2.5a}{2011/12/04}{\cs{ef@setct} replaced by \cs{efloat@setflag}. as}
% \changes{v2.5c}{2011/12/22}{\cs{efloat@setflag} replaced by \cs{ef@setct}. as}
% \changes{v2.6}{2018/03/18}{Bugfix: Usage of \cs{makeatletter}\ldots\cs{makeatother} added. as}
% \changes{v2.6}{2018/03/18}{Usage of \cs{markboth} replaced by \cs{efloatheading}. as}
% \changes{v2.6}{2018/03/24}{\cs{efloat@type} replaced by \cs{efloattype}. as}
% \changes{v2.6}{2018/03/24}{Usage of \cs{@input} replaced by \cs{efloat@input}. as}
% \changes{v2.6}{2018/03/24}{Usage of \cs{efloatpreamble} and \cs{efloatpostamble} added. as}
% \changes{v2.7}{2019/04/15}{Usage of \cs{efloatbegin}, \cs{efloatend}, \cs{efloatbeginlist}, and \cs{efloatendlist} added. as}
% \begin{macrocode}
\newcommand*\efloat@process[2]{%
% \end{macrocode}
% First test to see if there are any figures to process.
% If so do it.
% \begin{macrocode}
\ef@ifct{#1}{%
% \end{macrocode}
% Close the file for writing. Set a flag saying so.
% \begin{macrocode}
\efloat@closepost{#1}%
% \end{macrocode}
% Define |\efloat|\x|type| which can be evaluated by user-defined variants of
% |\efloat|\x|heading|, |\efloat|\x|preamble|, |\efloat|\x|separator|, and |\efloat|\x|postamble|.
% \begin{macrocode}
\def\efloattype{#2}% % as
% \end{macrocode}
% \begin{macrocode}
\efloatbegin % bj
% \end{macrocode}
% Deal with headers and list of figures if necessary
% \begin{macrocode}
\efloat@ifflag{#2list}{% % bj
\begingroup
\efloatbeginlist % bj
\efloat@listof{#2}% % bj
\efloatendlist % bj
\endgroup
}{}%
\efloat@ifflag{#2head}{%
\section*{\@nameuse{#2section}}% % bj
% \end{macrocode}
% See the discussion in \autoref{sec:place} for what problem
% the |suppressfloats[t]| is here to solve. If I understand the
% \textit{Companion} correctly (page 144), this was not available
% in previous versions of \LaTeX.
% \begin{macrocode}
\suppressfloats[t]% % jpg
}{}%
\expandafter\expandafter\expandafter\efloatheading % bj
\expandafter\csname #2section\endcsname % bj
% \end{macrocode}
% Use any user defined hooks just before inputting the file.
% \begin{macrocode}
\processdelayedfloat@hook
\@nameuse{process#2s@hook}%
% \end{macrocode}
% Input the file, surrounded by |\efloatpreamble| and |\efloatpostamble|.
% \begin{macrocode}
\efloatpreamble
\efloat@input{\jobname.#1}%
\efloatpostamble
% \end{macrocode}
% \begin{macrocode}
\efloatend % as
}{}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@input}
% Input the file, surrounded by |\makeatletter| and |\makeatother|
% so characters written as (internal) macros (for example UTF-8 characters)
% will be processed without errors.
% \changes{v2.6}{2018/03/18}{This macro added. as}
% \begin{macrocode}
\newcommand*\efloat@input[1]{%
\makeatletter
\@input{#1}%
\makeatother}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\processdelayedfloat@hook}
% For generic changes document classes can use the hook
% |\process|\x|delayed|\x|float@hook|. If the float type is needed,
% it can be extracted from |\efloattype|.
% \changes{v2.5d}{2011/12/25}{This hook added}
% \begin{macrocode}
\newcommand*\processdelayedfloat@hook{}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\efloat@listof}
% This one will do the ``List of Figures'' resp. ``List of Tables''.
% \changes{v2.5}{2011/11/26}{This macro added}
% \begin{macrocode}
\newcommand*\efloat@listof[1]{%
% \end{macrocode}
% If no name is given for the list we set it to ``List of \textit{X}'' where
% \textit{X} is the heading given as second mandatory argument
% to |\Declare|\x|Delayed|\x|Float|.
% \begin{macrocode}
\expandafter\providecommand\csname list#1name\endcsname
{List of \@nameuse{#1section}}%
% \end{macrocode}
% If |\listof|\textit{X}|s| is defined, we use it here.
% Otherwise we try using |\listof| (defined by the \pkg{float} and \pkg{floatrow}
% package) instead. If this will fail, too, we have to give up (and issue an error message).
% \begin{macrocode}
\@ifundefined{listof#1s}%
{\@ifundefined{listof}%
{\PackageError{endfloat}%
{Don't know how to make List of `#1'}%
{You could try defining \protect\listof#1s on your own}}%
{\listof{#1}{\@nameuse{list#1name}}}}%
{\@nameuse{listof#1s}}}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Getting float placement correct} \label{sec:place}
%
% In versions prior to this attempt (v2.2c), when the |heads| options
% were used, the float could could either float to the next page, leaving
% the section header alone, or could float to the top of the page, leaving
% section header at the bottom of the page. The idea here is to change the
% parameters that place floats, to very very strongly
% encourage floats at the bottom of pages.
% It also allows for easy top floats. Thus obviating the need
% for float pages.
% A |\suppressfloats[t]| in the commands
% that issue the headers will make sure that the floats don't float
% above the headers.
%
% \begin{macrocode}
\renewcommand{\bottomfraction}{1.0}
\renewcommand{\topfraction}{1.0}
\renewcommand{\textfraction}{0.0}
% \end{macrocode}
%
% \subsubsection{Calling the processing commands}
%
% \begin{macro}{\processdelayedfloats}
% Note that there is an extra set |{| and |}| so that the
% restoration of the original definitions is in a group and is \emph{not}
% global. If, for some reason, you wish them to be global then use
% something like
% \begin{quote}
% |\makeatletter|\\
% |\g@addto@macro\processdelayedfloats{\efloat@restorefloats}|\\
% |\makeatother|
% \end{quote}
% \changes{v2.5}{2011/11/26}{Process float list instead of |figure| and |table|. as}
% \begin{macrocode}
\newcommand*\processdelayedfloats{{%
% \end{macrocode}
% Here we reset stuff to apply while end stuff is being processed.
% Prior to version 2.4, these were in |\processtables| and |\processfigures|.
% \begin{macrocode}
\def\baselinestretch{1}\normalsize
\efloat@restorefloats
% \end{macrocode}
% The hook comes after those settings so as to override them if desired.
% \begin{macrocode}
\processdelayedfloats@hook
% \end{macrocode}
% Process tables, figures, and others (or figures, tables, others)
% \begin{macrocode}
\efloat@processfloats
\processotherdelayedfloats}}
% \end{macrocode}
% \begin{macrocode}
\newcommand*\efloat@processfloats{%
\let\@tempa\@empty
\def\@elt##1{\g@addto@macro\@tempa{\@nameuse{process##1es}}}%
\efloat@list
\let\@elt\relax
\@tempa}
% \end{macrocode}
% \changes{v1.99}{1992/05/27}{extensive changes by bj}
% \changes{v2.1}{1994/06/25}{Modify documentation text. jpg}
% \changes{v2.1}{1994/06/25}{Use AtEndDocument. jpg}
% \begin{macrocode}
\efloat@AtEndDocument{% % jpg
\message{AED endfloat: Processing end Figures and Tables}% % jpg
\onecolumn
\processdelayedfloats }
% \end{macrocode}
% \end{macro}
%
% Use, or don't use, configuration file.
% \begin{macrocode}
\InputIfFileExists{endfloat.cfg}{%
\typeout{*** Using endfloat.cfg ***}}{}
% \end{macrocode}
%
% \begin{macrocode}
%</package>
% \end{macrocode}
%
% \section{Extra macros -- HIGHLY Experimental} \label{sec:config}
%
% \subsection{Getting new delayed environments}
%
% This section used to offer a configuration file which was able
% to integrate the environments |side|ways|figure| and |side|ways|table|
% offered by the \pkg{rotating} package\cite{RahBar:rotating}
% into the \pkg{endfloat} package.\par
% For compatibility reasons we still do, so existing documents
% including |efxmpl.cfg| will still work,~e.g.
% \begin{quote}
% \ldots\\
% |\usepackage{endfloat}|\\
% |\makeatletter|\\
% |\input{efxmpl.cfg}|\\
% |\makeatother|\\
% \ldots
% \end{quote}
%
% \begin{macrocode}
%<*config>
% \end{macrocode}
%
% We must, of course, have use of the rotating package.
% \begin{macrocode}
\RequirePackage{rotating}
% \end{macrocode}
%
% We declare |side|\x|ways|\x|figure| and |side|\x|ways|\x|table| as
% variants of the |figure| resp.~|table| environments.
% \begin{macrocode}
\DeclareDelayedFloatFlavor{sidewaysfigure}{figure}
\DeclareDelayedFloatFlavor{sidewaystable}{table}
% \end{macrocode}
%
% \begin{macrocode}
%</config>
% \end{macrocode}
%
% \emph{Note:}
% If you would like to add support of given floating environments to
% the \pkg{endfloat} package, please do not use configuration files
% but |\Declare|\x|Delayed|\x|Float| and |\Declare|\x|Delayed|\x|Float|\x|Flavor|
% instead.
%
% \Finale
%
\endinput
|