summaryrefslogtreecommitdiff
path: root/info/examples/tex-in-practice/x-parsh.tip
blob: 63f30a6a02ffb13ee05621ed7e88acd3c7c72479 (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
% This macro source file is from the four volume series
% "TeX in Practice" by Stephan von Bechtolsheim, published
% 1993 by Springer-Verlag, New York.
% Copyright 1993 Stephan von Bechtolsheim.
% No warranty or liability is assumed.
% This macro may be copied freely if no fees other than
% media cost or shipping charges are charged and as long
% as this copyright and the following source code itself
% is not changed. Please see the series for further information.
%
% Version: 1.0
% Date: May 1, 1993
%
%
% This source code is documented in 12.1.3, p. II-108.
% Original source in file "par3.TEX", starting line 176.
\wlog{L: "x-parsh.tip" ["par3.TEX," l. 176, p. II-108]}%
% This file DOES belong to format "texip."
\InputD{doloop.tip}
\catcode`\@ = 11
\newcount\X@ParShapeCountA
\newcount\X@ParShapeCountB
\newcount\X@ParShapeCountC
\newdimen\X@ParShapeDimenA
\newdimen\X@ParShapeDimenB
\def\XParShape{%
    \def\X@ParShapeCollect{ }%
    \X@ParShapeCountC = 0
    \afterassignment\X@ParShapeB
    \X@ParShapeCountA
}
\def\X@ParShapeB{%
    \ifnum\X@ParShapeCountA = 0
        \let\@XParShapeNext = \X@ParShapeD
    \else
        \advance\X@ParShapeCountA by -1
        \let\@XParShapeNext = \X@ParShapeC
    \fi
    \@XParShapeNext
}
\def\X@ParShapeD{%
    \parshape = \X@ParShapeCountC\X@ParShapeCollect
}
\def\X@ParShapeC #1 #2 #3 #4 #5 {%
    \message{\string\X@ParShapeC: #1, #2, #3, #4, #5}%
    \X@ParShapeDimenA = #2% 
    \X@ParShapeDimenB = #4% 
    \DoLoop{\X@ParShapeCountB}{1}{1}{#1}%
        {% 
            \edef\X@ParShapeCollect{%
                \space
                \X@ParShapeCollect
                \the\X@ParShapeDimenA
                \space
                \the\X@ParShapeDimenB
                \space
            }%
            \advance\X@ParShapeCountC by 1
            \advance\X@ParShapeDimenA by #3\relax
            \advance\X@ParShapeDimenB by #5\relax
        }%
    \X@ParShapeB
}
\catcode`\@ = 12