Checkin for new build system.
[mdwtools] / doafter.tex
CommitLineData
86f6a31e 1%%
2%% This is file `doafter.tex',
3%% generated with the docstrip utility.
4%%
5%% The original source files were:
6%%
7%% doafter.dtx (with options: `package,plain')
8%%
9%% IMPORTANT NOTICE
10%%
11%% doafter package -- insert a token really after a group
12%% Copyright (c) 1996 Peter Schmitt and Mark Wooding
13%%
14%% This program is free software; you can redistribute it and/or modify
15%% it under the terms of the GNU General Public License as published by
16%% the Free Software Foundation; either version 2 of the License, or
17%% (at your option) any later version.
18%%
19%% This program is distributed in the hope that it will be useful,
20%% but WITHOUT ANY WARRANTY; without even the implied warranty of
21%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22%% GNU General Public License for more details.
23%%
24%% You should have received a copy of the GNU General Public License
25%% along with this program; if not, write to the Free Software
26%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
27%%
28%% \CharacterTable
29%% {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
30%% 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
31%% Digits \0\1\2\3\4\5\6\7\8\9
32%% Exclamation \! Double quote \" Hash (number) \#
33%% Dollar \$ Percent \% Ampersand \&
34%% Acute accent \' Left paren \( Right paren \)
35%% Asterisk \* Plus \+ Comma \,
36%% Minus \- Point \. Solidus \/
37%% Colon \: Semicolon \; Less than \<
38%% Equals \= Greater than \> Question mark \?
39%% Commercial at \@ Left bracket \[ Backslash \\
40%% Right bracket \] Circumflex \^ Underscore \_
41%% Grave accent \` Left brace \{ Vertical bar \|
42%% Right brace \} Tilde \~}
43%%
44\catcode`\@=11
45\let\@@aftergroup\aftergroup
46\def\doafter#1{%
47 \def\@tempa{\@@aftergroup#1}%
48 \afterassignment\doafter@i\let\@let@token%
49}
50\def\doafter@i{%
51 \@let@token%
52 \let\aftergroup\@my@aftergroup%
53 \@@aftergroup\@prepare@after\@tempa%
54}
55\def\ag@cnt@local{0 }
56\let\ag@cnt@global\ag@cnt@local
57\def\@my@aftergroup{%
58 \begingroup%
59 \count@\ag@cnt@local%
60 \advance\count@\@ne%
61 \xdef\ag@cnt@global{\the\count@\space}%
62 \endgroup%
63 \let\ag@cnt@local\ag@cnt@global%
64 \@@aftergroup\@after@token\@@aftergroup%
65}
66\def\@after@token{%
67 \@start@after@group%
68 \@after@token%
69}
70\def\@start@after@group{%
71 \begingroup%
72 \count@\ag@cnt@global%
73 \clubpenalty\ag@cnt@local%
74 \let\@after@token\@after@token@i%
75}
76\def\@after@token@i{%
77 \advance\count@\m@ne%
78 \ifnum\count@=\clubpenalty%
79 \global\let\ag@cnt@global\ag@cnt@local%
80 \expandafter\@after@aftertoken\expandafter\@after@all%
81 \else%
82 \expandafter\@@aftergroup%
83 \fi%
84}
85\let\@after@all\endgroup
86\def\@prepare@after{%
87 \ifx\ag@cnt@local\ag@cnt@global\else%
88 \expandafter\@prepare@after@i%
89 \fi%
90}
91\def\@prepare@after@i#1{%
92 \@start@after@group%
93 \def\@after@all{\@@aftergroup#1\endgroup}%
94}
95\def\@after@aftertoken#1{%
96 \let\bgroup\relax\let\egroup\relax%
97 \toks@{#1}%
98 \futurelet\@let@token\@after@aftertoken@i%
99}
100\def\@after@aftertoken@i{%
101 \ifcat\noexpand\@let@token{%
102 \@@aftergroup{%
103 \else\ifcat\noexpand\@let@token}%
104 \@@aftergroup}%
105 \else%
106 \def\@tempa##1{\@@aftergroup##1\the\toks@}%
107 \expandafter\expandafter\expandafter\@tempa%
108 \fi\fi%
109}
110\catcode`\@=12
111\endinput
112%%
113%% End of file `doafter.tex'.