blob: f4dee8ca1d0ccb704c28f26c99efa87c251b6de0 (
plain)
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
|
%%
%% This is file `doafter.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% doafter.dtx (with options: `package,plain')
%%
%% IMPORTANT NOTICE
%%
%% doafter package -- insert a token really after a group
%% Copyright (c) 1996 Peter Schmitt and Mark Wooding
%%
%% This program is free software; you can redistribute it and/or modify
%% it under the terms of the GNU General Public License as published by
%% the Free Software Foundation; either version 2 of the License, or
%% (at your option) any later version.
%%
%% This program is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
%% GNU General Public License for more details.
%%
%% You should have received a copy of the GNU General Public License
%% along with this program; if not, write to the Free Software
%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
%%
%% \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 \~}
%%
\catcode`\@=11
\let\@@aftergroup\aftergroup
\def\doafter#1{%
\def\@tempa{\@@aftergroup#1}%
\afterassignment\doafter@i\let\@let@token%
}
\def\doafter@i{%
\@let@token%
\let\aftergroup\@my@aftergroup%
\@@aftergroup\@prepare@after\@tempa%
}
\def\ag@cnt@local{0 }
\let\ag@cnt@global\ag@cnt@local
\def\@my@aftergroup{%
\begingroup%
\count@\ag@cnt@local%
\advance\count@\@ne%
\xdef\ag@cnt@global{\the\count@\space}%
\endgroup%
\let\ag@cnt@local\ag@cnt@global%
\@@aftergroup\@after@token\@@aftergroup%
}
\def\@after@token{%
\@start@after@group%
\@after@token%
}
\def\@start@after@group{%
\begingroup%
\count@\ag@cnt@global%
\clubpenalty\ag@cnt@local%
\let\@after@token\@after@token@i%
}
\def\@after@token@i{%
\advance\count@\m@ne%
\ifnum\count@=\clubpenalty%
\global\let\ag@cnt@global\ag@cnt@local%
\expandafter\@after@aftertoken\expandafter\@after@all%
\else%
\expandafter\@@aftergroup%
\fi%
}
\let\@after@all\endgroup
\def\@prepare@after{%
\ifx\ag@cnt@local\ag@cnt@global\else%
\expandafter\@prepare@after@i%
\fi%
}
\def\@prepare@after@i#1{%
\@start@after@group%
\def\@after@all{\@@aftergroup#1\endgroup}%
}
\def\@after@aftertoken#1{%
\let\bgroup\relax\let\egroup\relax%
\toks@{#1}%
\futurelet\@let@token\@after@aftertoken@i%
}
\def\@after@aftertoken@i{%
\ifcat\noexpand\@let@token{%
\@@aftergroup{%
\else\ifcat\noexpand\@let@token}%
\@@aftergroup}%
\else%
\def\@tempa##1{\@@aftergroup##1\the\toks@}%
\expandafter\expandafter\expandafter\@tempa%
\fi\fi%
}
\catcode`\@=12
\endinput
%%
%% End of file `doafter.tex'.
|