Révision 200

CSL17/virginialake.sty (revision 200)
1
% VirginiaLake LaTeX macros by Alessio Guglielmi
2
%
3
% Many thanks to Ross Moore (Macquarie University) for suggestions leading 
4
% to \vlupdate
5

  
6
\NeedsTeXFormat{LaTeX2e}%
7
\ProvidesPackage{virginialake}[2015/08/30 v3.0]
8
\newif\ifvirginialakeusesxy
9
        \virginialakeusesxytrue
10
\DeclareOption{noxy}{\virginialakeusesxyfalse}%
11
\newif\ifvirginialakegoodsyntax
12
        \virginialakegoodsyntaxfalse
13
\DeclareOption{goodsyntax}{\virginialakegoodsyntaxtrue}%
14
\newif\ifvirginialakelutzsyntax
15
        \virginialakelutzsyntaxfalse
16
\DeclareOption{lutzsyntax}{\virginialakelutzsyntaxtrue}%
17
\ProcessOptions
18
\@ifclassloaded{beamer}%
19
               {\RequirePackage{etex}}%
20
               {}%
21
\let\circledS\undefined\RequirePackage{amssymb}%
22
\RequirePackage{stmaryrd}%
23
\RequirePackage{ifthen}%
24
\RequirePackage{ifpdf}%
25
\RequirePackage{etoolbox}%
26
\newif\ifvirginialakepdflatex\ifpdf\virginialakepdflatextrue\else
27
                                   \virginialakepdflatexfalse\fi
28
\@ifpackageloaded{fp-basic}%
29
                 {\relax}%
30
                 {\RequirePackage{fp-basic}\FPmessagesfalse}%
31
\@ifpackageloaded{xcolor}%
32
                 {\relax}%
33
                 {\RequirePackage[usenames]{xcolor}}%
34
\ifvirginialakeusesxy
35
    \ifvirginialakepdflatex
36
       \RequirePackage[line,arrow,curve,frame,color,crayon,pdf]{xy}%
37
       \newxycolor{afbackground}{0 0 0 0.12 cmyk}%
38
       \makeatletter\renewcommand\xywarning@[1]{\relax}\catcode`@=11
39
       \W@{}%
40
       \W@{VirginiaLake Warning: Xy-pic warnings are suppressed in PDF mode.}%
41
       \W@{}%
42
    \else
43
       \RequirePackage[line,arrow,curve,frame,color,crayon,ps,dvips]{xy}%
44
       \newxycolor@{afbackground}{0 0 0 0.12}{cmyk}{}{}%
45
   \fi
46
\fi
47
\newif\ifetex
48
\AtBeginDocument{\@ifpackageloaded{etex}{\etextrue}{\etexfalse}}%
49

  
50
%----------------------------------------------------------------------- IFMTARG
51
% Code from ifmtarg.sty, reproduced below with permission - A.G.
52
%
53
% ifmtarg.sty
54
%
55
% Provides an if-then-else command for an empty macro argument
56
% (empty = zero or more spaces only)
57
% Use as \@ifmtarg{arg1}{Code for arg1 empty}{Code for arg1 not empty}%
58
%
59
% author: Peter Wilson (CUA)
60
%         (now at peter.r.wilson@boeing.com)
61
% Copyright Peter Wilson, 1996
62
% Copyright Peter Wilson and Donald Arseneau, 2000
63
% Released under the LaTeX Project Public License
64
%
65
%% Commands by Donald Arseneau
66
\begingroup
67
\catcode`\Q=3
68
\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil}%
69
\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4}%
70
\long\gdef\@ifnotmtarg#1{\@xifmtarg#1QQ\@firstofone\@gobble\@nil}%
71
\endgroup
72
%---------------------------------------------------------------- END OF IFMTARG
73

  
74
%------------------------------------------------------------ MACROS FOR SYMBOLS
75

  
76
  \newcommand\one{{\mathsf 1}}%
77
  \newcommand\zer{{\mathsf 0}}%
78
  \newcommand\fff{{\mathsf f}}%
79
  \newcommand\ttt{{\mathsf t}}%
80
  \newcommand\sw {{\mathsf s}}%
81
  \newcommand\me {{\mathsf m}}%
82
  \newcommand\iD {{\mathsf i}{\downarrow}}%
83
  \newcommand\iU {{\mathsf i}{  \uparrow}}%
84
  \newcommand\cD {{\mathsf c}{\downarrow}}%
85
  \newcommand\cU {{\mathsf c}{  \uparrow}}%
86
  \newcommand\wD {{\mathsf w}{\downarrow}}%
87
  \newcommand\wU {{\mathsf w}{  \uparrow}}%
88
  \newcommand\qD {{\mathsf q}{\downarrow}}%
89
  \newcommand\qU {{\mathsf q}{  \uparrow}}%
90
  \newcommand\BV {{\mathsf {BV}}}%
91
  \newcommand\SBV{{\mathsf{SBV}}}%
92
  \newcommand\KS {{\mathsf {KS}}}%
93
  \newcommand\SKS{{\mathsf{SKS}}}%
94

  
95
%---------------------------------------------------------------- END OF SYMBOLS
96

  
97
%------------------------------------------------ MACROS FOR FORMULAE/STRUCTURES
98

  
99
\newif\ifvlsmallops\vlsmallopsfalse
100

  
101
\newcommand\vlbin[1]{\ifvlsmallops\mathchoice
102
      {\mathbin{\raise.2ex \hbox{$\scriptstyle      #1$}}}%
103
      {\mathbin{\raise.2ex \hbox{$\scriptstyle      #1$}}}%
104
      {\mathbin{\raise.12ex\hbox{$\scriptscriptstyle#1$}}}%
105
      {\mathbin{           \hbox{$\scriptscriptstyle#1$}}}\else\mathbin{#1}\fi}%
106

  
107
\newif\ifvllinear\vllinearfalse
108

  
109
\newcommand{\vlor}{\ifvllinear\vlbin\varoplus\else\vlbin\vee\fi}%
110

  
111
\newcommand{\vlan}{\ifvllinear\vlbin\binampersand\else\vlbin\wedge\fi}%
112

  
113
\newcommand{\vlpa}{\vlbin\bindnasrepma}%
114

  
115
\newcommand{\vlte}{\vlbin\varotimes}%
116

  
117
\newcommand{\vlse}{\vlbin\triangleleft}%
118

  
119
\newcommand{\vlim}{\vlbin\to}%
120

  
121
\newcommand{\vlli}{\vlbin\multimap}%
122

  
123
\newcommand{\vlmi}{\vlbin\leftarrow}%
124

  
125
\newcommand{\vldi}{\vlbin\leftrightarrow}%
126

  
127
\newcommand{\vlne}{\vlbin\neg}%
128

  
129
\newcommand{\vljm}{\vlbin\supset}%
130

  
131
\newcommand{\vlmj}{\vlbin\subset}%
132

  
133
\newcommand{\vlgoodsyntax}{%
134
   \def\vlleftparbracket   {\ifvirginialakesmallbrackets[\else
135
                                       \mathopen{}\left [\fi}%
136
   \def\vlrightparbracket  {\ifvirginialakesmallbrackets]\else
137
                                                  \right]\mathclose{}\fi}%
138
   \let\vlleftparbracketex \vlleftparbracket
139
   \let\vlrightparbracketex\vlrightparbracket
140
   \let\vlleftparbracketcn \vlleftparbracket
141
   \let\vlrightparbracketcn\vlrightparbracket
142
   \def\vlleftcopbracket   {\ifvirginialakesmallbrackets(\else
143
                                       \mathopen{}\left (\fi}%
144
   \def\vlrightcopbracket  {\ifvirginialakesmallbrackets)\else
145
                                                  \right)\mathclose{}\fi}%
146
   \let\vlleftcopbracketex \vlleftcopbracket
147
   \let\vlrightcopbracketex\vlrightcopbracket
148
   \let\vlleftcopbracketcn \vlleftcopbracket
149
   \let\vlrightcopbracketcn\vlrightcopbracket
150
   \def\vlleftseqbracket   {\ifvirginialakesmallbrackets\langle\else
151
                                        \mathopen{}\left\langle\fi}%
152
   \def\vlrightseqbracket  {\ifvirginialakesmallbrackets\rangle\else
153
                                                  \right\rangle\mathclose{}\fi}%
154
   \let\vlleftseqbracketex \vlleftseqbracket
155
   \let\vlrightseqbracketex\vlrightseqbracket
156
   \let\vlleftseqbracketcn \vlleftseqbracket
157
   \let\vlrightseqbracketcn\vlrightseqbracket
158
   \def\vldsaaux{\ifx\vlxspacetmp\vldsa\vlx\vlx\vlx\togglexspacefalse\else
159
                  \iftogglexspace\vlx\else\togglexspacetrue\fi\fi}%
160
   \def\vldsa{\futurelet\vlxspacetmp\vldsaaux}%
161
   \def\vlcsaaux{\ifx\vlxspacetmp\vlcsa\vlx\vlx\vlx\togglexspacefalse\else
162
                  \iftogglexspace\vlx\else\togglexspacetrue\fi\fi}%
163
   \def\vlcsa{\futurelet\vlxspacetmp\vlcsaaux}%
164
   \def\vldsmaux{\ifx\vlxspacetmp\vldsm\vlx\vlx\vlx\togglexspacefalse\else
165
                  \iftogglexspace\vlx\else\togglexspacetrue\fi\fi}%
166
   \def\vldsm{\futurelet\vlxspacetmp\vldsmaux}%
167
   \def\vlcsmaux{\ifx\vlxspacetmp\vlcsm\vlx\vlx\vlx\togglexspacefalse\else
168
                  \iftogglexspace\vlx\else\togglexspacetrue\fi\fi}%
169
   \def\vlcsm{\futurelet\vlxspacetmp\vlcsmaux}%
170
   \def\vlnsmaux{\ifx\vlxspacetmp\vlnsm\vlx\vlx\vlx\togglexspacefalse\else
171
                  \iftogglexspace\vlx\else\togglexspacetrue\fi\fi}%
172
   \def\vlnsm{\futurelet\vlxspacetmp\vlnsmaux}%
173
   \let\vldots=\dots}%
174

  
175
\newcommand{\vlx}{\;}%
176

  
177
\newif\iftogglexspace\togglexspacetrue
178

  
179
\newcommand{\vlsetoperators}{%
180
   \def\vldsaaux{\ifx\vlxspacetmp\vldsa\vlx\vlor\vlx\togglexspacefalse\else
181
                  \iftogglexspace\vlor\else\togglexspacetrue\fi\fi}%
182
   \def\vldsa{\futurelet\vlxspacetmp\vldsaaux}%
183
   \def\vlcsaaux{\ifx\vlxspacetmp\vlcsa\vlx\vlan\vlx\togglexspacefalse\else
184
                  \iftogglexspace\vlan\else\togglexspacetrue\fi\fi}%
185
   \def\vlcsa{\futurelet\vlxspacetmp\vlcsaaux}%
186
   \def\vldsmaux{\ifx\vlxspacetmp\vldsm\vlx\vlpa\vlx\togglexspacefalse\else
187
                  \iftogglexspace\vlpa\else\togglexspacetrue\fi\fi}%
188
   \def\vldsm{\futurelet\vlxspacetmp\vldsmaux}%
189
   \def\vlcsmaux{\ifx\vlxspacetmp\vlcsm\vlx\vlte\vlx\togglexspacefalse\else
190
                  \iftogglexspace\vlte\else\togglexspacetrue\fi\fi}%
191
   \def\vlcsm{\futurelet\vlxspacetmp\vlcsmaux}%
192
   \def\vlnsmaux{\ifx\vlxspacetmp\vlnsm\vlx\vlse\vlx\togglexspacefalse\else
193
                  \iftogglexspace\vlse\else\togglexspacetrue\fi\fi}%
194
   \def\vlnsm{\futurelet\vlxspacetmp\vlnsmaux}%
195
   \let\vldots=\cdots}%
196

  
197
\newcommand{\vllutzsyntax}{%
198
   \def\vlleftparbracket   {\ifvirginialakesmallbrackets[\else
199
                                       \mathopen{}\left [\fi}%
200
   \def\vlrightparbracket  {\ifvirginialakesmallbrackets]\else
201
                                                  \right]\mathclose{}\fi}%
202
   \let\vlleftparbracketex \relax
203
   \let\vlrightparbracketex\relax
204
   \let\vlleftparbracketcn \{
205
   \let\vlrightparbracketcn\}%
206
   \def\vlleftcopbracket   {\ifvirginialakesmallbrackets(\else
207
                                       \mathopen{}\left (\fi}%
208
   \def\vlrightcopbracket  {\ifvirginialakesmallbrackets)\else
209
                                                  \right)\mathclose{}\fi}%
210
   \let\vlleftcopbracketex \relax
211
   \let\vlrightcopbracketex\relax
212
   \let\vlleftcopbracketcn \{
213
   \let\vlrightcopbracketcn\}%
214
   \def\vlleftseqbracket   {\ifvirginialakesmallbrackets\langle\else
215
                                        \mathopen{}\left\langle\fi}%
216
   \def\vlrightseqbracket  {\ifvirginialakesmallbrackets\rangle\else
217
                                                  \right\rangle\mathclose{}\fi}%
218
   \let\vlleftseqbracketex \relax
219
   \let\vlrightseqbracketex\relax
220
   \let\vlleftseqbracketcn \{
221
   \let\vlrightseqbracketcn\}%
222
   \vlsetoperators
223
   \vlsmallopstrue}%
224

  
225
\newcommand{\vlnogoodsyntax}{%
226
   \def\vlleftparbracket   {\ifvirginialakesmallbrackets(\else
227
                                       \mathopen{}\left (\fi}%
228
   \def\vlrightparbracket  {\ifvirginialakesmallbrackets)\else
229
                                                  \right)\mathclose{}\fi}%
230
   \let\vlleftparbracketex \relax
231
   \let\vlrightparbracketex\relax
232
   \let\vlleftparbracketcn \{
233
   \let\vlrightparbracketcn\}%
234
   \let\vlleftcopbracket   \vlleftparbracket
235
   \let\vlrightcopbracket  \vlrightparbracket
236
   \let\vlleftcopbracketex \relax
237
   \let\vlrightcopbracketex\relax
238
   \let\vlleftcopbracketcn \{
239
   \let\vlrightcopbracketcn\}%
240
   \let\vlleftseqbracket   \vlleftparbracket
241
   \let\vlrightseqbracket  \vlrightparbracket
242
   \let\vlleftseqbracketex \relax
243
   \let\vlrightseqbracketex\relax
244
   \let\vlleftseqbracketcn \{
245
   \let\vlrightseqbracketcn\}%
246
   \vlsetoperators}%
247

  
248
\ifvirginialakegoodsyntax
249
   \vlgoodsyntax
250
\else
251
   \ifvirginialakelutzsyntax
252
      \vllutzsyntax
253
   \else
254
      \vlnogoodsyntax
255
   \fi
256
\fi
257

  
258
\newif\ifvirginialakesmallbrackets\virginialakesmallbracketsfalse
259

  
260
\newcommand{\vlsmallbrackets}{\virginialakesmallbracketstrue}%
261

  
262
\newcommand{\vlnosmallbrackets}{\virginialakesmallbracketsfalse}%
263

  
264
\newcommand{\vlprepstructuresaux}{\catcode`.=\active
265
                                  \catcode`;=\active
266
                                  \catcode`[=\active
267
                                  \catcode`]=\active
268
                                  \catcode`(=\active
269
                                  \catcode`)=\active
270
                                  \catcode`<=\active
271
                                  \catcode`>=\active
272
                                  \catcode`-=\active}%
273

  
274
\newcommand{\lt}{<}%
275
\newcommand{\gt}{>}%
276

  
277
\let\vldot  .
278
\let\vlscol ;
279
\let\vlsqbrl[
280
\let\vlsqbrr]
281
\let\vlrobrl(
282
\let\vlrobrr)
283
\let\vlanbrl<
284
\let\vlanbrr>
285
\let\vlminus-
286

  
287
\newif\ifvirginialakestructuressyntax\virginialakestructuressyntaxtrue
288

  
289
\newcommand{\vlnostructuressyntax}{\virginialakestructuressyntaxfalse}%
290

  
291
\newcommand{\vlgobble}[1]{}%
292

  
293
{%--------------------------------------
294
\vlprepstructuresaux
295

  
296
\gdef\vlnos{\let.\vldot
297
            \let;\vlscol
298
            \let[\vlsqbrl
299
            \let]\vlsqbrr
300
            \let(\vlrobrl
301
            \let)\vlrobrr
302
            \let<\vlanbrl
303
            \let>\vlanbrr
304
            \let-\vlminus}%
305

  
306
\gdef\vlprepstructures{\ifvirginialakestructuressyntax
307
                          \vlprepstructuresaux\vlnos\fi}%
308

  
309
\gdef\vlparopen  {\vlleftparbracket  \bgroup\catcode`.=\active\let.\vldsa
310
                                            \catcode`;=\active\let;\vldsm
311
                                            \catcode`]=\active\let]\vlparclose}%
312

  
313
\gdef\vlparopenex{\vlleftparbracketex\bgroup\catcode`.=\active\let.\vldsa
314
                                            \catcode`;=\active\let;\vldsm\vlsbr
315
                                          \catcode`]=\active\let]\vlparcloseex}%
316

  
317
\gdef\vlparopencn{\vlleftparbracketcn\bgroup\catcode`.=\active\let.\vldsa
318
                                            \catcode`;=\active\let;\vldsm\vlsbr
319
                                          \catcode`]=\active\let]\vlparclosecn}%
320

  
321
\gdef\vlcopopen  {\vlleftcopbracket  \bgroup\catcode`.=\active\let.\vlcsa
322
                                            \catcode`;=\active\let;\vlcsm
323
                                            \catcode`)=\active\let)\vlcopclose}%
324

  
325
\gdef\vlcopopenex{\vlleftcopbracketex\bgroup\catcode`.=\active\let.\vlcsa
326
                                            \catcode`;=\active\let;\vlcsm\vlsbr
327
                                          \catcode`)=\active\let)\vlcopcloseex}%
328

  
329
\gdef\vlcopopencn{\vlleftcopbracketcn\bgroup\catcode`.=\active\let.\vlcsa
330
                                            \catcode`;=\active\let;\vlcsm\vlsbr
331
                                          \catcode`)=\active\let)\vlcopclosecn}%
332

  
333
\gdef\vlseqopen  {\vlleftseqbracket  \bgroup\catcode`;=\active\let;\vlnsm
334
                                            \catcode`>=\active\let>\vlseqclose}%
335

  
336
\gdef\vlseqopenex{\vlleftseqbracketex\bgroup\catcode`;=\active\let;\vlnsm\vlsbr
337
                                          \catcode`>=\active\let>\vlseqcloseex}%
338

  
339
\gdef\vlseqopencn{\vlleftseqbracketcn\bgroup\catcode`;=\active\let;\vlnsm\vlsbr
340
                                          \catcode`>=\active\let>\vlseqclosecn}%
341

  
342
\gdef\vls  {\catcode`[=\active\let[\vlparopenex
343
            \catcode`(=\active\let(\vlcopopenex
344
            \catcode`<=\active\let<\vlseqopenex
345
            \catcode`-=\active\let-\bar
346
            \odframefirstfalse
347
            \odbackgroundfirstfalse}%
348

  
349
\gdef\vlsbr{\catcode`[=\active\let[\vlparopen
350
            \catcode`(=\active\let(\vlcopopen
351
            \catcode`<=\active\let<\vlseqopen
352
            \catcode`-=\active\let-\bar
353
            \odframefirstfalse
354
            \odbackgroundfirstfalse}%
355

  
356
\gdef\vlscn{\catcode`[=\active\let[\vlparopencn
357
            \catcode`(=\active\let(\vlcopopencn
358
            \catcode`<=\active\let<\vlseqopencn
359
            \catcode`-=\active\let-\bar
360
            \odframefirstfalse
361
            \odbackgroundfirstfalse}%
362

  
363
\gdef\vlupdate #1{
364
   \expandafter\let\csname\expandafter\vlgobble\string #1vltemp\endcsname #1
365
   \def #1{\bgroup\vlprepstructures
366
     \csname\expandafter\vlgobble\string #1vlaux\endcsname}%
367
   \expandafter\def\csname\expandafter\vlgobble\string #1vlaux\endcsname ##1{%
368
      \csname\expandafter\vlgobble\string #1vltemp\endcsname{##1}\egroup}}%
369
}%--------------------------------------
370

  
371
\newcommand{\vlparclose  }{\egroup\vlrightparbracket  }%
372

  
373
\newcommand{\vlparcloseex}{\egroup\vlrightparbracketex}%
374

  
375
\newcommand{\vlparclosecn}{\egroup\vlrightparbracketcn}%
376

  
377
\newcommand{\vlcopclose  }{\egroup\vlrightcopbracket  }%
378

  
379
\newcommand{\vlcopcloseex}{\egroup\vlrightcopbracketex}%
380

  
381
\newcommand{\vlcopclosecn}{\egroup\vlrightcopbracketcn}%
382

  
383
\newcommand{\vlseqclose  }{\egroup\vlrightseqbracket  }%
384

  
385
\newcommand{\vlseqcloseex}{\egroup\vlrightseqbracketex}%
386

  
387
\newcommand{\vlseqclosecn}{\egroup\vlrightseqbracketcn}%
388

  
389
\newcommand{\vlhole}{\{\kern.3em\}}%
390

  
391
\newcommand{\vlstore}{\bgroup\vlprepstructures\afterassignment\egroup
392
                      \global\def\vlread}%
393

  
394
%----------------------------------------- END OF MACROS FOR FORMULAE/STRUCTURES
395

  
396
%-------------------------------------------------------- MACROS FOR DERIVATIONS
397
%
398
%                                                   +-------+--------+-------+
399
%                                                   |  dcl  |  dcc   |  dcr  |
400
%                                                   +-------+--------+-------+
401
%                                                       +---+        +---+
402
%                                                       | l |--------| m |
403
%                                                       +---+        +---+
404
%                                                             +----+
405
%                                                             | dc |
406
%                                                             +----+
407
%                                                   <---dl--->      <---dr--->
408
%
409

  
410
\newdimen\dercldim                                % dcl
411
\newdimen\derccdim                                % dcc
412
\newdimen\dercrdim                                % dcr
413
\newdimen\derdim                                  % d
414
\newdimen\derdldim                                % ddl
415
\newdimen\derdrdim                                % ddr
416
\newbox\derboxtwo                                 % b2
417
\newbox\derboxthree                               % b3
418
\newbox\derboxfour                                % b4
419
\newdimen\derquad
420
\newdimen\deropen
421
\newbox\stembox
422

  
423
\newcount\vlsavederboxonec
424
%\newcount\vlsavederdimc
425
\newcount\vldummycount
426

  
427
% THE FOLLOWING IS VERY DANGEROUS: WE ARE CREATING A 'VIRTUAL MEMORY MANAGER'
428
% FOR \derboxone, \derldim, \dercdim AND \derrdim, IN PARTICULAR BY USING
429
% \count11 AND \count14. ETEX MIGHT INTERFERE WITH THIS STUFF. START FROM 
430
% HERE IF YOU SEE SOMETHING ODD SUCH AS DUPLICATION OR MISPLACEMENT OF BOXES IN 
431
% DERIVATIONS
432

  
433
\newcommand{\vlderivationinitaux}{%
434
   \newbox\derboxone                              % b1
435
   \setbox\derboxone=\hbox{}%
436
   \vlsavederboxonec=\derboxone
437
%   \vlsavederdimc=\count11\advance\vlsavederdimc by1%
438
   \newdimen\derldim                              % dl
439
   \newdimen\dercdim                              % dc
440
   \newdimen\derrdim}%                            % dr
441

  
442
\newcommand{\vlderivationinit}{\bgroup
443
   \vlprepstructures\vlderivationinitaux}%
444

  
445
\newcommand{\vlderivationterm}{\egroup
446
   \global\chardef\derboxone=\vlsavederboxonec
447
   \ifetex
448
      \ifnum\count264>256
449
         \global\advance\count264 by-1
450
      \else
451
         \global\advance\count14 by-1
452
      \fi
453
   \else\global\advance\count14 by-1
454
   \fi
455
   \ifetex
456
      \ifnum\count261>258
457
         \global\advance\count261 by-3
458
      \else
459
         \ifnum\count261>257
460
            \global\advance\count261 by-2
461
            \global\advance\count11  by-1
462
         \else
463
            \ifnum\count261>256
464
               \global\advance\count261 by-1
465
               \global\advance\count11  by-2
466
            \else
467
               \global\advance\count11 by-3
468
            \fi
469
         \fi
470
      \fi
471
   \else\global\advance\count11 by-3
472
   \fi
473
%   \global\dimendef\derldim=\vlsavederdimc
474
%   \global\advance\vlsavederdimc by1%
475
%   \global\dimendef\dercdim=\vlsavederdimc
476
%   \global\advance\vlsavederdimc by1%
477
%   \global\dimendef\derrdim=\vlsavederdimc
478
%   \global\advance\vlsavederdimc by-2
479
   }%
480

  
481
\newcommand{\vlderivationaux}[1]{#1\vcenter{\box\derboxone}\vlderivationterm}%
482

  
483
\newcommand{\vlderivation}{\vlderivationinit\vlderivationaux}%
484

  
485
\newcommand{\vlhyaux}[1]{\global\setbox\derboxone=\hbox{#1}%
486
   \global\derldim=0pt%                           % dl=0
487
   \global\dercdim=\wd\derboxone                  % dc=wd(b1)
488
   \global\derrdim=0pt%                           % dr=0
489
   }%
490

  
491
\newbox\vlhybox
492
\newcommand{\vlhy}[1]{\global\setbox\vlhybox=\hbox{\strut$#1$}%
493
   \vlhyaux{\box\vlhybox}}%
494

  
495
\newcommand{\vlstemaux}{\dercldim=\derldim
496
                        \derccdim=\dercdim
497
                        \dercrdim=\derrdim}%
498

  
499
\newcommand{\vldaux}[6]{\setbox\derboxtwo=\hbox{\unhbox\derboxone}%
500
                                                  % b2=b1
501
   \setbox\derboxthree=\hbox{$#1$}%               % b3; l=wd(b3)
502
   \setbox\derboxfour =\hbox{$#2$}%               % b4; m=wd(b4)
503
   #3                                             % dl=0, dc=wd(b1), dr=0
504
   \derdim=\dercdim\advance\derdim by-\derccdim\divide\derdim by2%
505
                                                  % d=(dc-dcc)/2
506
   \global\derldim=\dercldim\global\advance\derldim by-\derdim
507
                                                  % dl=dcl-d
508
   \global\derrdim=\dercrdim\global\advance\derrdim by-\derdim
509
                                                  % dr=dcr-d
510
   \deropen=\fontdimen5\textfont2\divide\deropen by3%
511
   \setbox\derboxone=\hbox{\vbox{\offinterlineskip
512
         \hbox{\ifdim\derldim<0pt\kern-\derldim\fi
513
               \box\derboxtwo
514
               \ifdim\derrdim<0pt\kern-\derrdim\fi}%
515
         #4%
516
         \hbox{\ifdim\dercldim>\derldim
517
                  \ifdim\derldim>0pt\kern\derldim\fi
518
                  \else\kern\dercldim\fi
519
               \hbox to0pt{\hss\copy\derboxthree}%
520
               \vbox{\ifdim\derccdim>\dercdim\hsize=\derccdim
521
                                        \else\hsize=\dercdim \fi
522
                    #5}%
523
               \hbox to0pt{\copy\derboxfour\hss}%
524
               \ifdim\dercrdim>\derrdim
525
                  \ifdim\derrdim>0pt\kern\derrdim\fi
526
                  \else\kern\dercrdim\fi}%
527
         #6%
528
         \hbox{\ifdim\derldim>0pt\kern\derldim\fi
529
               \box\derboxone
530
               \ifdim\derrdim>0pt\kern\derrdim\fi}}}%
531
   \ifdim\derldim<0pt\global\derldim=0pt\fi       % dl=max(dl,0)
532
   \ifdim\derrdim<0pt\global\derrdim=0pt\fi       % dr=max(dr,0)
533
   \derdldim=\wd\derboxthree\advance\derdldim by-\dercldim
534
                                                  % ddl=l-dcl
535
   \derdrdim=\wd\derboxfour \advance\derdrdim by-\dercrdim
536
                                                  % ddr=m-dcr
537
   \ifdim\derdim<0pt%
538
      \ifdim\derdldim<0pt%
539
         \derdldim=0pt%                           % d<0, ddl<0 -> ddl=0
540
      \fi
541
      \ifdim\derdrdim<0pt%
542
         \derdrdim=0pt%                           % d<0, ddr<0 -> ddr=0
543
      \fi
544
   \else
545
      \ifdim\derldim>0pt%
546
         \ifdim\derdldim>-\derdim
547
            \advance\derdldim by\derdim           % d>=0, dl>0, ddl+d>0 -> 
548
         \else                                    %                    ddl=ddl+d
549
            \derdldim=0pt%                        % d>=0, dl>0, ddl+d<=0 ->
550
         \fi                                      %                        ddl=0
551
      \else
552
         \advance\derdldim by\dercldim            % d>=0, dl=0 -> ddl=ddl+dcl
553
      \fi
554
      \ifdim\derrdim>0pt%
555
         \ifdim\derdrdim>-\derdim
556
            \advance\derdrdim by\derdim           % d>=0, dr>0, ddr+d>0 -> 
557
         \else                                    %                    ddr=ddr+d
558
            \derdrdim=0pt%                        % d>=0, dr>0, ddr+d<=0 ->
559
         \fi                                      %                        ddr=0
560
      \else
561
         \advance\derdrdim by\dercrdim            % d>=0, dr=0 -> ddr=ddr+dcr
562
      \fi
563
   \fi
564
   \global\setbox\derboxone=\hbox
565
      {\kern\derdldim\unhbox\derboxone\kern\derdrdim}%
566
   \global\advance\derldim by\derdldim            % dl=dl+ddl
567
   \global\advance\derrdim by\derdrdim            % dr=dr+ddr
568
   }%
569

  
570
\newcommand{\vlstemraux }[4]{{#4}\vlstemaux\vldaux
571
   {\scriptstyle #1}%
572
   {\scriptstyle #2}%
573
   {\vlhyaux{#3}}%
574
   {\kern-\deropen\kern-\ht\strutbox\kern-\dp\strutbox}%
575
   {\hbox{$\vcenter{\vbox{\offinterlineskip
576
                    \hbox{$\copy\stembox$}}}$}}%
577
   {\kern-\deropen}}%
578

  
579
\newcommand{\vlstemrraux}[4]{{#4}\vlstemaux\vldaux
580
   {\scriptstyle #1}%
581
   {\scriptstyle #2}%
582
   {\vlhy{#3}}%
583
   {\kern\deropen}%
584
   {\hbox{\hfil}}%
585
   {\kern\deropen}}%
586

  
587
\newif\ifvlsmallleftlabels\vlsmallleftlabelstrue
588

  
589
\newcommand{\vlnosmallleftlabels}{\vlsmallleftlabelsfalse}%
590

  
591
\newcommand{\vlsmallleftlabels}{\vlsmallleftlabelstrue}%
592

  
593
\newcommand{\vlleftlabel }[1]{\@ifnotmtarg{#1}{\ifvlsmallleftlabels
594
                               \scriptstyle\fi #1\;}\relax}%
595

  
596
\newcommand{\vlrightlabel}[1]{\@ifnotmtarg{#1}{\;#1}\relax}%
597

  
598
\newdimen\vlstemheight\vlstemheight=8pt%
599

  
600
\newcommand{\vlvruler}{\hbox{\vrule width .6pt height \vlstemheightc sp
601
                             \kern1.2pt
602
                             \vrule width .6pt height \vlstemheightc sp}}%
603

  
604
\newcount\vlstemheightc
605

  
606
\newcommand{\vldf}[5]{\vldummycount=\vlstemheight
607
                      \FPmul\vlstemheightc{\the\vldummycount}{#5}%
608
   \setbox\stembox=\vbox to \vlstemheightc sp{\vlvruler}%
609
   \vlstemrraux{                }{                 }{#3              }  {%
610
   \vlstemraux {\vlleftlabel{#1}}{\vlrightlabel{#2}}{\kern\wd\stembox} {%
611
   \vlstemrraux{                }{                 }{\kern\wd\stembox}{%
612
   #4                                                                 }}}}%
613

  
614
\newcommand{\vlde}[4]{\vldf{#1}{#2}{#3}{#4}1}%
615

  
616
\newcommand{\vldd}[4]{\vldf{#1}{#2}{#3}{#4}2}%
617

  
618
\newcommand{\vlpf}[4]{\vldf{#1}{#2}{#3}%
619
   {\vlhyaux{\vbox to0pt{\vss\kern3pt\hrule width4.2pt\vss}}}{#4}}%
620

  
621
\newcommand{\vlpr}[3]{\vlpf{#1}{#2}{#3}1}%
622

  
623
\newcommand{\vlpd}[3]{\vlpf{#1}{#2}{#3}2}%
624

  
625
\newcommand{\vlproofaux}[4]{\vlderivationaux{\vlpf{#2}{#3}{#4}{#1}}}%
626

  
627
\newcommand{\vlproof }{\vlderivationinit\vlproofaux1}%
628

  
629
\newcommand{\vlproofd}{\vlderivationinit\vlproofaux2}%
630

  
631
\newcommand{\vlderaux}[5]{\vlderivationaux{\vldf{#2}{#3}{#4}{\vlhy{#5}}{#1}}}%
632

  
633
\newcommand{\vlder }{\vlderivationinit\vlderaux1}%
634

  
635
\newcommand{\vlderd}{\vlderivationinit\vlderaux2}%
636

  
637
\newcommand{\vlhruler}{\vfill\hbox to\hsize{\hrulefill}\vfill}%
638

  
639
\newcommand{\vlhhruler}{\vfill
640
                        \hbox to\hsize{\hrulefill}%
641
                        \kern1pt
642
                        \hbox to\hsize{\hrulefill}%
643
                        \vfill}%
644

  
645
\newcommand{\vlhdotter}{\vfill
646
   \hbox to\hsize{\cleaders\vbox to0pt{\vss
647
       \hbox{\kern-.35pt$.$\kern-.35pt}\vss}\hskip\hsize}\vfill}%
648

  
649
\newcommand{\vldsinaux}[3]{\vldaux
650
   {\smash{\ifvlsmallleftlabels\lower\fontdimen22\scriptfont2%
651
                          \else\lower\fontdimen22\textfont2\fi
652
                                       \hbox{$\vlleftlabel {#1}$}}}%
653
   {\smash{\lower\fontdimen22\textfont2\hbox{$\vlrightlabel{#2}$}}}%
654
   {\vlhy{#3}}%
655
   {\kern\deropen}%
656
   {\vbox to.4pt{\vlhruler}}%
657
   {\kern\deropen}}%
658

  
659
\newcommand{\vldsidaux}[3]{\vldaux
660
   {\smash{\ifvlsmallleftlabels\lower\fontdimen22\scriptfont2%
661
                          \else\lower\fontdimen22\textfont2\fi
662
                                       \hbox{$\vlleftlabel {#1}$}}}%
663
   {\smash{\lower\fontdimen22\textfont2\hbox{$\vlrightlabel{#2}$}}}%
664
   {\vlhy{#3}}%
665
   {\kern\deropen}%
666
   {\vbox to.4pt{\vlhdotter}}%
667
   {\kern\deropen}}%
668

  
669
\newdimen\vldsiqdimenleft
670
\newdimen\vldsiqdimenright
671

  
672
\newcommand{\vldsiqaux}[3]{\ifvlsmallleftlabels
673
                                \vldsiqdimenleft=\fontdimen22\scriptfont2%
674
                           \else\vldsiqdimenleft=\fontdimen22\textfont2\fi
675
                           \advance\vldsiqdimenleft  by-.7pt%
676
                           \vldsiqdimenright=\fontdimen22\textfont2%
677
                           \advance\vldsiqdimenright by-.7pt%
678
   \vldaux
679
   {\smash{\lower\vldsiqdimenleft \hbox{$\vlleftlabel {#1}$}}}%
680
   {\smash{\lower\vldsiqdimenright\hbox{$\vlrightlabel{#2}$}}}%
681
   {\vlhy{#3}}%
682
   {\kern\deropen\kern-.7pt}%
683
   {\vbox to1.8pt{\vlhhruler}}%
684
   {\kern\deropen\kern-.7pt}}%
685

  
686
\newbox\derboxin
687
\newdimen\derboxinwidth
688

  
689
\newcommand{\vliaux}[2]{#2%
690
   \dercldim=\derldim
691
   \derccdim=\dercdim
692
   \dercrdim=\derrdim
693
   \setbox\derboxin=\hbox{$#1$}%
694
   \derboxinwidth=1em\advance\derboxinwidth by-\wd\derboxin
695
   \ifdim\derboxinwidth>0pt\divide\derboxinwidth by2\else\derboxinwidth=0pt\fi}%
696

  
697
\newcommand{\vlin}[4]{\vliaux{#3}{#4}%
698
   \vldsinaux{#1}{#2}{\kern\derboxinwidth\box\derboxin\kern\derboxinwidth}}%
699

  
700
\newcommand{\vlid}[4]{\vliaux{#3}{#4}%
701
   \vldsidaux{#1}{#2}{\kern\derboxinwidth\box\derboxin\kern\derboxinwidth}}%
702

  
703
\newcommand{\vliq}[4]{\vliaux{#3}{#4}%
704
   \vldsiqaux{#1}{#2}{\kern\derboxinwidth\box\derboxin\kern\derboxinwidth}}%
705

  
706
\newcommand{\vliiaux}[2]{\derquad=\fontdimen6\textfont2%
707
   {#1}%
708
           \dercldim  =\derldim
709
           \derccdim  =\dercdim
710
   \setbox\derboxtwo=\hbox{\unhbox\derboxone\kern\derquad}%
711
   \advance\derccdim by\derrdim
712
   \advance\derccdim by\derquad
713
   {#2}%
714
   \setbox\derboxone=\hbox{\unhbox\derboxtwo\unhbox\derboxone}%
715
   \advance\derccdim by\derldim
716
   \advance\derccdim by\dercdim
717
           \dercrdim  =\derrdim}%
718

  
719
\newcommand{\vliin}[5]{\vliiaux{#4}{#5}\vldsinaux{#1}{#2}{#3}}%
720

  
721
\newcommand{\vliid}[5]{\vliiaux{#4}{#5}\vldsidaux{#1}{#2}{#3}}%
722

  
723
\newcommand{\vliiq}[5]{\vliiaux{#4}{#5}\vldsiqaux{#1}{#2}{#3}}%
724

  
725
\newcommand{\vldsauxx}{\setbox\derboxtwo=\hbox
726
   {\unhbox\derboxtwo\unhbox\derboxone\kern\derquad}%
727
   \advance\derccdim by\derldim
728
   \advance\derccdim by\dercdim
729
   \advance\derccdim by\derrdim
730
   \advance\derccdim by\derquad}%
731

  
732
\newcommand{\vldsiiiaux}[3]{\derquad=\fontdimen6\textfont2%
733
   {#1}%
734
           \dercldim  =\derldim
735
           \derccdim  =\dercdim
736
   \setbox\derboxtwo=\hbox{\unhbox\derboxone\kern\derquad}%
737
   \advance\derccdim by\derrdim
738
   \advance\derccdim by\derquad
739
   {#2}\vldsauxx
740
   {#3}%
741
   \setbox\derboxone=\hbox{\unhbox\derboxtwo\unhbox\derboxone}%
742
   \advance\derccdim by\derldim
743
   \advance\derccdim by\dercdim
744
           \dercrdim  =\derrdim}%
745

  
746
\newcommand{\vliiin}[6]{\vldsiiiaux{#4}{#5}{#6}\vldsinaux{#1}{#2}{#3}}%
747

  
748
\newcommand{\vliiid}[6]{\vldsiiiaux{#4}{#5}{#6}\vldsidaux{#1}{#2}{#3}}%
749

  
750
\newcommand{\vliiiq}[6]{\vldsiiiaux{#4}{#5}{#6}\vldsiqaux{#1}{#2}{#3}}%
751

  
752
\newcommand{\vldsiiiiaux}[4]{\derquad=\fontdimen6\textfont2%
753
   {#1}%
754
           \dercldim  =\derldim
755
           \derccdim  =\dercdim
756
   \setbox\derboxtwo=\hbox{\unhbox\derboxone\kern\derquad}%
757
   \advance\derccdim by\derrdim
758
   \advance\derccdim by\derquad
759
   {#2}\vldsauxx
760
   {#3}\vldsauxx
761
   {#4}%
762
   \setbox\derboxone=\hbox{\unhbox\derboxtwo\unhbox\derboxone}%
763
   \advance\derccdim by\derldim
764
   \advance\derccdim by\dercdim
765
           \dercrdim  =\derrdim}%
766

  
767
\newcommand{\vliiiin}[7]{\vldsiiiiaux{#4}{#5}{#6}{#7}\vldsinaux{#1}{#2}{#3}}%
768

  
769
\newcommand{\vliiiid}[7]{\vldsiiiiaux{#4}{#5}{#6}{#7}\vldsidaux{#1}{#2}{#3}}%
770

  
771
\newcommand{\vliiiiq}[7]{\vldsiiiiaux{#4}{#5}{#6}{#7}\vldsiqaux{#1}{#2}{#3}}%
772

  
773
\newcommand{\vldsiiiiiaux}[5]{\derquad=\fontdimen6\textfont2%
774
   {#1}%
775
           \dercldim  =\derldim
776
           \derccdim  =\dercdim
777
   \setbox\derboxtwo=\hbox{\unhbox\derboxone\kern\derquad}%
778
   \advance\derccdim by\derrdim
779
   \advance\derccdim by\derquad
780
   {#2}\vldsauxx
781
   {#3}\vldsauxx
782
   {#4}\vldsauxx
783
   {#5}%
784
   \setbox\derboxone=\hbox{\unhbox\derboxtwo\unhbox\derboxone}%
785
   \advance\derccdim by\derldim
786
   \advance\derccdim by\dercdim
787
           \dercrdim  =\derrdim}%
788

  
789
\newcommand{\vliiiiin}[8]{\vldsiiiiiaux{#4}{#5}{#6}{#7}{#8}%
790
                          \vldsinaux{#1}{#2}{#3}}%
791

  
792
\newcommand{\vliiiiid}[8]{\vldsiiiiiaux{#4}{#5}{#6}{#7}{#8}%
793
                          \vldsidaux{#1}{#2}{#3}}%
794

  
795
\newcommand{\vliiiiiq}[8]{\vldsiiiiiaux{#4}{#5}{#6}{#7}{#8}%
796
                          \vldsiqaux{#1}{#2}{#3}}%
797

  
798
\newcommand{\vldsiiiiiiaux}[6]{\derquad=\fontdimen6\textfont2%
799
   {#1}%
800
           \dercldim  =\derldim
801
           \derccdim  =\dercdim
802
   \setbox\derboxtwo=\hbox{\unhbox\derboxone\kern\derquad}%
803
   \advance\derccdim by\derrdim
804
   \advance\derccdim by\derquad
805
   {#2}\vldsauxx
806
   {#3}\vldsauxx
807
   {#4}\vldsauxx
808
   {#5}\vldsauxx
809
   {#6}%
810
   \setbox\derboxone=\hbox{\unhbox\derboxtwo\unhbox\derboxone}%
811
   \advance\derccdim by\derldim
812
   \advance\derccdim by\dercdim
813
           \dercrdim  =\derrdim}%
814

  
815
\newcommand{\vliiiiiin}[9]{\vldsiiiiiiaux{#4}{#5}{#6}{#7}{#8}{#9}%
816
                           \vldsinaux{#1}{#2}{#3}}%
817

  
818
\newcommand{\vliiiiiid}[9]{\vldsiiiiiiaux{#4}{#5}{#6}{#7}{#8}{#9}%
819
                           \vldsidaux{#1}{#2}{#3}}%
820

  
821
\newcommand{\vliiiiiiq}[9]{\vldsiiiiiiaux{#4}{#5}{#6}{#7}{#8}{#9}%
822
                           \vldsiqaux{#1}{#2}{#3}}%
823

  
824
\newcommand{\vlinfaux     }[4]{\vlderivationaux{\vlin  {#1}{#2}{#3}%
825
                                                                {\vlhy{#4}}}}%
826

  
827
\newcommand{\vliqfaux     }[4]{\vlderivationaux{\vliq  {#1}{#2}{#3}%
828
                                                                {\vlhy{#4}}}}%
829

  
830
\newcommand{\vlindaux     }[4]{\vlderivationaux{\vlid  {#1}{#2}{#3}%
831
                                                                {\vlhy{#4}}}}%
832

  
833
\newcommand{\vliinfaux    }[5]{\vlderivationaux{\vliin {#1}{#2}{#3}%
834
                                                                {\vlhy{#4}}%
835
                                                                {\vlhy{#5}}}}%
836

  
837
\newcommand{\vliidfaux    }[5]{\vlderivationaux{\vliid {#1}{#2}{#3}%
838
                                                                {\vlhy{#4}}%
839
                                                                {\vlhy{#5}}}}%
840

  
841
\newcommand{\vliiqfaux    }[5]{\vlderivationaux{\vliiq {#1}{#2}{#3}%
842
                                                                {\vlhy{#4}}%
843
                                                                {\vlhy{#5}}}}%
844

  
845
\newcommand{\vliiinfaux   }[6]{\vlderivationaux{\vliiin{#1}{#2}{#3}%
846
                                                                {\vlhy{#4}}%
847
                                                                {\vlhy{#5}}%
848
                                                                {\vlhy{#6}}}}%
849

  
850
\newcommand{\vliiidfaux   }[6]{\vlderivationaux{\vliiid{#1}{#2}{#3}%
851
                                                                {\vlhy{#4}}%
852
                                                                {\vlhy{#5}}%
853
                                                                {\vlhy{#6}}}}%
854

  
855
\newcommand{\vliiiqfaux   }[6]{\vlderivationaux{\vliiiq{#1}{#2}{#3}%
856
                                                                {\vlhy{#4}}%
857
                                                                {\vlhy{#5}}%
858
                                                                {\vlhy{#6}}}}%
859

  
860
\newcommand{\vliiiinfaux  }[7]{\vlderivationaux{\vliiiin{#1}{#2}{#3}%
861
                                                                {\vlhy{#4}}%
862
                                                                {\vlhy{#5}}%
863
                                                                {\vlhy{#6}}%
864
                                                                {\vlhy{#7}}}}%
865

  
866
\newcommand{\vliiiidfaux  }[7]{\vlderivationaux{\vliiiid{#1}{#2}{#3}%
867
                                                                {\vlhy{#4}}%
868
                                                                {\vlhy{#5}}%
869
                                                                {\vlhy{#6}}%
870
                                                                {\vlhy{#7}}}}%
871

  
872
\newcommand{\vliiiiqfaux  }[7]{\vlderivationaux{\vliiiiq{#1}{#2}{#3}%
873
                                                                {\vlhy{#4}}%
874
                                                                {\vlhy{#5}}%
875
                                                                {\vlhy{#6}}%
876
                                                                {\vlhy{#7}}}}%
877

  
878
\newcommand{\vliiiiinfaux }[8]{\vlderivationaux{\vliiiiin{#1}{#2}{#3}%
879
                                                                {\vlhy{#4}}%
880
                                                                {\vlhy{#5}}%
881
                                                                {\vlhy{#6}}%
882
                                                                {\vlhy{#7}}%
883
                                                                {\vlhy{#8}}}}%
884

  
885
\newcommand{\vliiiiidfaux }[8]{\vlderivationaux{\vliiiiid{#1}{#2}{#3}%
886
                                                                {\vlhy{#4}}%
887
                                                                {\vlhy{#5}}%
888
                                                                {\vlhy{#6}}%
889
                                                                {\vlhy{#7}}%
890
                                                                {\vlhy{#8}}}}%
891

  
892
\newcommand{\vliiiiiqfaux }[8]{\vlderivationaux{\vliiiiiq{#1}{#2}{#3}%
893
                                                                {\vlhy{#4}}%
894
                                                                {\vlhy{#5}}%
895
                                                                {\vlhy{#6}}%
896
                                                                {\vlhy{#7}}%
897
                                                                {\vlhy{#8}}}}%
898

  
899
\newcommand{\vliiiiiinfaux}[9]{\vlderivationaux{\vliiiiiin{#1}{#2}{#3}%
900
                                                                {\vlhy{#4}}%
901
                                                                {\vlhy{#5}}%
902
                                                                {\vlhy{#6}}%
903
                                                                {\vlhy{#7}}%
904
                                                                {\vlhy{#8}}%
905
                                                                {\vlhy{#9}}}}%
906

  
907
\newcommand{\vliiiiiidfaux}[9]{\vlderivationaux{\vliiiiiid{#1}{#2}{#3}%
908
                                                                {\vlhy{#4}}%
909
                                                                {\vlhy{#5}}%
910
                                                                {\vlhy{#6}}%
911
                                                                {\vlhy{#7}}%
912
                                                                {\vlhy{#8}}%
913
                                                                {\vlhy{#9}}}}%
914

  
915
\newcommand{\vliiiiiiqfaux}[9]{\vlderivationaux{\vliiiiiiq{#1}{#2}{#3}%
916
                                                                {\vlhy{#4}}%
917
                                                                {\vlhy{#5}}%
918
                                                                {\vlhy{#6}}%
919
                                                                {\vlhy{#7}}%
920
                                                                {\vlhy{#8}}%
921
                                                                {\vlhy{#9}}}}%
922

  
923
\newcommand{\vlinf     }{\vlderivationinit\vlinfaux     }%
924

  
925
\newcommand{\vlidf     }{\vlderivationinit\vlindaux     }%
926

  
927
\newcommand{\vliqf     }{\vlderivationinit\vliqfaux     }%
928

  
929
\newcommand{\vliinf    }{\vlderivationinit\vliinfaux    }%
930

  
931
\newcommand{\vliidf    }{\vlderivationinit\vliidfaux    }%
932

  
933
\newcommand{\vliiqf    }{\vlderivationinit\vliiqfaux    }%
934

  
935
\newcommand{\vliiinf   }{\vlderivationinit\vliiinfaux   }%
936

  
937
\newcommand{\vliiidf   }{\vlderivationinit\vliiidfaux   }%
938

  
939
\newcommand{\vliiiqf   }{\vlderivationinit\vliiiqfaux   }%
940

  
941
\newcommand{\vliiiinf  }{\vlderivationinit\vliiiinfaux  }%
942

  
943
\newcommand{\vliiiidf  }{\vlderivationinit\vliiiidfaux  }%
944

  
945
\newcommand{\vliiiiqf  }{\vlderivationinit\vliiiiqfaux  }%
946

  
947
\newcommand{\vliiiiinf }{\vlderivationinit\vliiiiinfaux }%
948

  
949
\newcommand{\vliiiiidf }{\vlderivationinit\vliiiiidfaux }%
950

  
951
\newcommand{\vliiiiiqf }{\vlderivationinit\vliiiiiqfaux }%
952

  
953
\newcommand{\vliiiiiinf}{\vlderivationinit\vliiiiiinfaux}%
954

  
955
\newcommand{\vliiiiiidf}{\vlderivationinit\vliiiiiidfaux}%
956

  
957
\newcommand{\vliiiiiiqf}{\vlderivationinit\vliiiiiiqfaux}%
958

  
959
\catcode`@=12
960
\newcommand{\vltrauxx}[5]{\vldaux
961
   {#1}%
962
   {#2}%
963
   {\vlhy{#3}}%
964
   {}%
965
   {\hbox{$\vcenter{\xy
966
          0;<\hsize,0pt>:<0pt,#4\hsize>::
967
          (-0.5,0.5);(0.5,0.5)**\crv{(0.1,0.6)&(-0.1,0.4)};
968
          (0,0)**@{-};(-0.5,0.5)**@{-};
969
          (0,0.273)*{\scriptstyle #5\strut}%
970
          \endxy}$}}%
971
   {\kern\deropen}}%
972
\catcode`\@=11
973

  
974
\newcommand{\vltraux}[3]{\vltrauxx{}{}{#2}{#3}{#1}}%
975

  
976
\newcount\vltrindc
977
\newdimen\vltrindd
978

  
979
\newcommand{\vltrlaux}[5]{\ifdim\derccdim>\dercdim\vldummycount=\derccdim
980
                             \else\vldummycount=\dercdim
981
                             \fi
982
                          \FPmul\vltrindc{\the\vldummycount}{0.25}%
983
                          \vltrindd=\vltrindc sp
984
                          \advance\vltrindd by-10pt%
985
   \vltrauxx{\scriptstyle #2\strut\kern-\vltrindd}%
986
            {\kern-\vltrindd\scriptstyle #3\strut}{#4}{#5}{#1}}%
987

  
988
\newcommand{\vltrauxxx}[2]{{#2}\vlstemaux\vldaux
989
   {}%
990
   {}%
991
   {\vlhy{#1}}%
992
   {\kern-\ht\strutbox\kern-\dp\strutbox}%
993
   {}%
994
   {}}%
995

  
996
\newcommand{\vltrf }[6]{\vltrauxxx{#2}%
997
                        {\vldsiiiaux{#3}{#4}{#5}\vltraux{#1}{}{#6}}}%
998

  
999
\newcommand{\vltrlf}[8]{\vltrauxxx{#4}%
1000
                        {\vldsiiiaux{#5}{#6}{#7}\vltrlaux{#1}{#2}{#3}{}{#8}}}%
1001

  
1002
\newcommand{\vltr }[5]{\vltrf{#1}{#2}{#3}{#4}{#5}1}%
1003

  
1004
\newcommand{\vltrl}[7]{\vltrlf{#1}{#2}{#3}{#4}{#5}{#6}{#7}1}%
1005

  
1006
\newcommand{\vltreeder }[5]{\vlderivation{\vltr{#1}{#2}{\vlhy{#3}}%
1007
                                                       {\vlhy{#4}}%
1008
                                                       {\vlhy{#5}}}}%
1009

  
1010
\newcommand{\vltreederl}[7]{\vlderivation{\vltrl{#1}{#2}{#3}{#4}{\vlhy{#5}}%
1011
                                                                {\vlhy{#6}}%
1012
                                                                {\vlhy{#7}}}}%
1013

  
1014
\newcommand{\vlvdots}{\vbox to12pt{\vfil\hbox{$\smash\vdots$}}}%
1015

  
1016
%------------------------------------------------- END OF MACROS FOR DERIVATIONS
1017

  
1018
%----------------------------------------------------- MACROS FOR OPEN DEDUCTION
1019

  
1020
\newif\ifodframe          \odframetrue
1021
\newif\ifodframefirst     \odframefirsttrue
1022
\newif\ifodbackground     \odbackgroundfalse
1023
\newif\ifodbackgroundfirst\odbackgroundfirsttrue
1024

  
1025
\newcount\odback
1026
\newcount\odframe
1027

  
1028
\newcommand{\odboxed}[1]{%
1029
   \ifnum\odback=0
1030
      \ifnum\odframe=0
1031
         \hbox{$\vcenter{%
1032
         \vbox{\kern\fboxrule
1033
         \hbox{\kern\fboxrule$#1$%
1034
               \kern\fboxrule}%
1035
               \kern\fboxrule}%
1036
         }$}%
1037
      \else
1038
         \colorlet{currentcolor}{.}%
1039
         {\color{currentcolor!\the\odframe}\fbox{\color{currentcolor}$#1$}}%
1040
      \fi
1041
   \else
1042
      \colorlet{currentcolor}{.}%
1043
      \fcolorbox{currentcolor!\the\odframe}{currentcolor!\the\odback}{$#1$}%
1044
   \fi}%
1045

  
1046
\newcommand\odbox[1]{\odframe=100\setlength{\fboxsep}{2pt}%
1047
                                 \setlength{\fboxrule}{.25pt}\odboxed{#1}}%
1048

  
1049
\newcommand{\odsetframes}{\ifodbackground\ifodbackgroundfirst
1050
                                                   \odbackgroundfirstfalse
1051
                                                   \odback =0%
1052
                                                   \setlength{\fboxsep}{0pt}%
1053
                                                   \odframe=0%
1054
                                         \else\advance\odback by5%
1055
                                              \odframe=\odback
1056
                                              \ifodframe\odframe=100%
1057
                                              \setlength{\fboxsep}{2pt}%
1058
                                              \setlength{\fboxrule}{.25pt}%
1059
                                              \fi
1060
                                         \fi
1061
                          \else\setlength{\fboxsep}{0pt}%
1062
                          \fi
1063
                          \ifodframe\ifodframefirst\odframefirstfalse
1064
                                                   \odframe=0%
1065
                                    \else          \odframe=100%
1066
                                                   \setlength{\fboxsep}{2pt}%
1067
                                                   \setlength{\fboxrule}{.25pt}%
1068
                                    \fi
1069
                          \else     \odframe=0%
1070
                          \fi}%
1071

  
1072
\newcommand{\odderivationinit}{\bgroup
1073
   \odsetframes
1074
   \vlprepstructures\vlderivationinitaux}%                            % dr
1075

  
1076
\newcommand{\odderivationaux}[1]{#1\odboxed
1077
                                 {\vcenter{\copy\derboxone}}\vlderivationterm}%
1078

  
1079
\newcommand{\od        }   {\odderivationinit\odderivationaux}%
1080

  
1081
\newcommand{\odp       }[3]{\vlpr{#1}{#3}{\vls #2}}%
1082

  
1083
\newcommand{\odP       }[3]{\vlpd{#1}{#3}{\vls #2}}%
1084

  
1085
\newcommand{\odpx      }[4]{\vlpf{#1}{#3}{\vls #2}{#4}}%
1086

  
1087
\newcommand{\odproofaux}[4]{\odderivationaux{\vlpf{#2}{#4}{\vls #3}{#1}}}%
1088

  
1089
\newcommand{\odr       }   {\odderivationinit\odproofaux1}%
1090

  
1091
\newcommand{\odR       }   {\odderivationinit\odproofaux2}%
1092

  
1093
\newcommand{\odd       }[4]{\vldf{#2}{#4}{\vls #3}{\vls #1}1}%
1094

  
1095
\newcommand{\odD       }[4]{\vldf{#2}{#4}{\vls #3}{\vls #1}2}%
1096

  
1097
\newcommand{\oddx      }[5]{\vldf{#2}{#4}{\vls #3}{\vls #1}{#5}}%
1098

  
1099
\newcommand{\odh       }[1]{\vlhy{\vls #1}}%
1100

  
1101
\newcommand{\odderaux  }[5]{\odderivationaux{\vldf{#3}{#5}{\vls #4}%
1102
                                                    {\vlhy{\vls #2}}{#1}}}%
1103

  
1104
\newcommand{\odv       }   {\odderivationinit\odderaux1}%
1105

  
1106
\newcommand{\odV       }   {\odderivationinit\odderaux2}%
1107

  
1108
\newcommand{\odi       }[4]{\vlin{#2}{#4}{\vls #3}{\vls #1}}%
1109

  
1110
\newcommand{\odI       }[4]{\vliq{#2}{#4}{\vls #3}{\vls #1}}%
1111

  
1112
\newcommand{\odo       }[4]{\vlid{#2}{#4}{\vls #3}{\vls #1}}%
1113

  
1114
\newcommand{\odnaux    }[4]{\odderivationaux{\vlin{#2}{#4}{\vls #3}%
1115
                                                    {\vlhy{\vls #1}}}}%
1116

  
1117
\newcommand{\odNaux    }[4]{\odderivationaux{\vliq{#2}{#4}{\vls #3}%
1118
                                                    {\vlhy{\vls #1}}}}%
1119

  
1120
\newcommand{\odtaux    }[4]{\odderivationaux{\vlid{#2}{#4}{\vls #3}%
1121
                                                    {\vlhy{\vls #1}}}}%
1122

  
1123
\newcommand{\odn       }   {\odderivationinit\odnaux}%
1124

  
1125
\newcommand{\odN       }   {\odderivationinit\odNaux}%
1126

  
1127
\newcommand{\odt       }   {\odderivationinit\odtaux}%
1128

  
1129
%---------------------------------------------- END OF MACROS FOR OPEN DEDUCTION
1130

  
1131
%------------------------------------------------------- MACROS FOR ATOMIC FLOWS
1132

  
1133
\catcode`@=12
1134

  
1135
\newdimen\afunitmst\afunitmst=0.01pt%
1136

  
1137
\newdimen\afelwidthmst
1138
\newdimen\afelheightmst
1139
\newdimen\afthickonemst
1140
\newdimen\afthicktwomst
1141
\newdimen\afthickthreemst
1142
\newdimen\afthickfourmst
1143
\newdimen\afthickfivemst
1144
\newdimen\aflabeldistancemst
1145

  
1146
\newcommand{\afsetparamsmst}{%
1147
\afelwidthmst      =425\afunitmst
1148
\afelheightmst     =325\afunitmst
1149
\afthickonemst     = 60\afunitmst
1150
\afthicktwomst     = 40\afunitmst
1151
\afthickthreemst   =160\afunitmst
1152
\afthickfourmst    =120\afunitmst
1153
\afthickfivemst    = 40\afunitmst
1154
\aflabeldistancemst=220\afunitmst}%
1155

  
1156
\afsetparamsmst
1157

  
1158
\newdimen\afunit\afunit=0.01pt%
1159

  
1160
\newdimen\afelwidth
1161
\newdimen\afelheight
1162
\newdimen\afthickone
1163
\newdimen\afthicktwo
1164
\newdimen\afthickthree
1165
\newdimen\afthickfour
1166
\newdimen\afthickfive
1167
\newdimen\aflabeldistance
1168

  
1169
\newdimen\afelwidthcur
1170

  
1171
\newdimen\afthickdouble
1172
\newdimen\afthicksep
1173

  
1174
\newcommand{\afsetparams}{%
1175
\afelwidth      =425\afunit
1176
\afelheight     =325\afunit
1177
\afthickone     = 60\afunit
1178
\afthicktwo     = 40\afunit
1179
\afthickthree   =160\afunit
1180
\afthickfour    =120\afunit
1181
\afthickfive    = 40\afunit
1182
\aflabeldistance=220\afunit
1183
\afthicksep     =  3\afelwidth\divide\afthicksep by10%
1184
                             \advance\afthicksep by-\afthickfive
1185
\afthickdouble  =\afthicksep
1186
                 \advance\afthickdouble by2\afthickfive
1187
\afelwidthcur   =\afelwidth}%
1188

  
1189
\afsetparams
1190

  
1191
\newbox\aftrdnbox
1192
\newbox\aftrupbox
1193
\newbox\afdiskbox
1194
\newbox\afbbdbox
1195
\newbox\afbbubox
1196
\newbox\afbdbox
1197
\newbox\afbubox
1198
\newbox\afcdcbox
1199
\newbox\afcdcmbox
1200
\newbox\afcucbox
1201
\newbox\afcucmbox
1202
\newbox\afcdabox\newbox\afwdabox\newbox\afadabox
1203
\newbox\afCdbox\newbox\afWdbox\newbox\afAdbox
1204
\newbox\afcdnbox\newbox\afwdnbox\newbox\afadnbox
1205
\newbox\afCdnbox
1206
\newbox\afcuabox\newbox\afwuabox\newbox\afauabox
1207
\newbox\afCubox\newbox\afWubox\newbox\afAubox
1208
\newbox\afcunbox\newbox\afwunbox\newbox\afaunbox
1209
\newbox\afCunbox
1210
\newbox\afIubox
1211
\newbox\afiubox
1212
\newbox\afIdbox
1213
\newbox\afidbox
1214
\newbox\afinubox\newbox\afindbox 
1215
\newbox\afDubox
1216
\newbox\afduabox
1217
\newbox\afDdbox
1218
\newbox\afddabox
1219
\newbox\afddnbox
1220
\newbox\afdunbox
1221
\newbox\afCudbox
1222
\newbox\afcudabox
1223
\newbox\afCddbox
1224
\newbox\afcddabox
1225
\newbox\afCudnbox
1226
\newbox\afcudnbox
1227
\newbox\afCddnbox
1228
\newbox\afcddnbox
1229

  
1230
\newif\ifvlcompileflows\vlcompileflowsfalse
1231

  
1232
\newcommand{\ifemptyargparamsunchangedcompileflows}[3]{%
1233
\ifblank{#1}{%
1234
\ifdim\afunit           =\afunitmst
1235
\ifdim\afelwidth        =\afelwidthmst
1236
\ifdim\afelheight       =\afelheightmst
1237
\ifdim\afthickone       =\afthickonemst
1238
\ifdim\afthicktwo       =\afthicktwomst
1239
\ifdim\afthickthree     =\afthickthreemst
1240
\ifdim\afthickfour      =\afthickfourmst
1241
\ifdim\afthickfive      =\afthickfivemst
1242
\ifdim\aflabeldistance  =\aflabeldistancemst
1243
\ifvlcompileflows
1244
#2%
1245
\else #3\fi
1246
\else #3\fi
1247
\else #3\fi
1248
\else #3\fi
1249
\else #3\fi
1250
\else #3\fi
1251
\else #3\fi
1252
\else #3\fi
1253
\else #3\fi
1254
\else #3\fi}%
1255
{#3}}%
1256

  
1257
\newif\ifaftrin
1258
\newif\ifafdual
1259
\newif\ifafstem
1260
\newif\ifafmult
1261
\newif\ifafdisk
1262

  
1263
\newcommand{\afcompileenable}{%
1264
\afdiskfalse
1265
\aftrintrue
1266
\afstemtrue \afdualfalse\afmultfalse\setbox\afadabox =\afwauxx{}{}{}%
1267
\afstemtrue \afdualfalse\afmulttrue \setbox\afAdbox  =\afwauxx{}{}{}%
1268
\afstemtrue \afdualtrue \afmultfalse\setbox\afauabox =\afwauxx{}{}{}%
1269
\afstemtrue \afdualtrue \afmulttrue \setbox\afAubox  =\afwauxx{}{}{}%
1270
\afstemfalse\afdualfalse\afmultfalse\setbox\afadnbox =\afwauxx{}{}{}%
1271
\afstemfalse\afdualtrue \afmultfalse\setbox\afaunbox =\afwauxx{}{}{}%
1272
\aftrinfalse
1273
            \afdualfalse\setbox\aftrdnbox=\aftraux
1274
                        \setbox\afbbdbox =\afbmaux
1275
            \afdualtrue \setbox\aftrupbox=\aftraux
1276
                        \setbox\afbbubox =\afbmaux
1277
                        \setbox\afdiskbox=\afdiaux
1278
\afstemtrue \afdualfalse\afmultfalse\setbox\afwdabox =\afwauxx{}{}{}%
1279
\afstemtrue \afdualfalse\afmulttrue \setbox\afWdbox  =\afwauxx{}{}{}%
1280
\afstemtrue \afdualtrue \afmultfalse\setbox\afwuabox =\afwauxx{}{}{}%
1281
\afstemtrue \afdualtrue \afmulttrue \setbox\afWubox  =\afwauxx{}{}{}%
1282
\afstemfalse\afdualfalse\afmultfalse\setbox\afwdnbox =\afwauxx{}{}{}%
1283
                                    \setbox\afbdbox  =\afbauxx
1284
\afstemfalse\afdualtrue \afmultfalse\setbox\afwunbox =\afwauxx{}{}{}%
1285
                                    \setbox\afbubox  =\afbauxx
1286
            \afdualfalse\afmultfalse\setbox\afcdcbox =\afccaux{}{}%
1287
            \afdualfalse\afmulttrue \setbox\afcdcmbox=\afcmaux{}{}%
1288
            \afdualtrue \afmultfalse\setbox\afcucbox =\afccaux{}{}%
1289
            \afdualtrue \afmulttrue \setbox\afcucmbox=\afcmaux{}{}%
1290
\afstemtrue \afdualfalse\afmultfalse\setbox\afcdabox=\afcauxx{}{}{}{}{}{}{}{}{}%
1291
\afstemtrue \afdualfalse\afmulttrue \setbox\afCdbox =\afcauxx{}{}{}{}{}{}{}{}{}%
1292
\afstemtrue \afdualtrue \afmultfalse\setbox\afcuabox=\afcauxx{}{}{}{}{}{}{}{}{}%
1293
\afstemtrue \afdualtrue \afmulttrue \setbox\afCubox =\afcauxx{}{}{}{}{}{}{}{}{}%
1294
\afstemfalse\afdualfalse\afmultfalse\setbox\afcdnbox=\afcauxx{}{}{}{}{}{}{}{}{}%
1295
\afstemfalse\afdualfalse\afmulttrue \setbox\afCdnbox=\afcauxx{}{}{}{}{}{}{}{}{}%
1296
\afstemfalse\afdualtrue \afmultfalse\setbox\afcunbox=\afcauxx{}{}{}{}{}{}{}{}{}%
1297
\afstemfalse\afdualtrue \afmulttrue \setbox\afCunbox=\afcauxx{}{}{}{}{}{}{}{}{}%
1298
\afstemtrue \afdualtrue \afmulttrue \setbox\afIubox =
1299
                                              \hbox{\afiauxx{}{}{}{}11{}{}}%
1300
\afstemtrue \afdualtrue \afmultfalse\setbox\afiubox =
1301
                                              \hbox{\afiauxx{}{}{}{}11{}{}}%
1302
\afstemtrue \afdualfalse\afmulttrue \setbox\afIdbox =
1303
                                              \hbox{\afiauxx{}{}{}{}11{}{}}%
1304
\afstemtrue \afdualfalse\afmultfalse\setbox\afidbox =
1305
                                              \hbox{\afiauxx{}{}{}{}11{}{}}%
1306
\afstemfalse\afdualtrue             \setbox\afinubox=
1307
                                              \hbox{\afiauxx{}{}{}{}11{}{}}%
1308
\afstemfalse\afdualfalse            \setbox\afindbox=
1309
                                              \hbox{\afiauxx{}{}{}{}11{}{}}%
1310
\afdisktrue
1311
\afstemtrue \afdualtrue \afmulttrue \setbox\afDubox  =\afwauxx{}{}{}%
1312
\afstemtrue \afdualtrue \afmultfalse\setbox\afduabox =\afwauxx{}{}{}%
1313
\afstemtrue \afdualfalse\afmulttrue \setbox\afDdbox  =\afwauxx{}{}{}%
1314
\afstemtrue \afdualfalse\afmultfalse\setbox\afddabox =\afwauxx{}{}{}%
1315
\afstemfalse\afdualfalse            \setbox\afddnbox =\afwauxx{}{}{}%
1316
\afstemfalse\afdualtrue             \setbox\afdunbox =\afwauxx{}{}{}%
1317
\afstemtrue \afdualfalse\afmultfalse\setbox\afcddabox=
1318
                                                     \afcauxx{}{}{}{}{}{}{}{}{}%
1319
\afstemtrue \afdualfalse\afmulttrue \setbox\afCddbox =
1320
                                                     \afcauxx{}{}{}{}{}{}{}{}{}%
1321
\afstemtrue \afdualtrue \afmultfalse\setbox\afcudabox=
1322
                                                     \afcauxx{}{}{}{}{}{}{}{}{}%
1323
\afstemtrue \afdualtrue \afmulttrue \setbox\afCudbox =
1324
                                                     \afcauxx{}{}{}{}{}{}{}{}{}%
1325
\afstemfalse\afdualfalse\afmultfalse\setbox\afcddnbox=
1326
                                                     \afcauxx{}{}{}{}{}{}{}{}{}%
1327
\afstemfalse\afdualfalse\afmulttrue \setbox\afCddnbox=
1328
                                                     \afcauxx{}{}{}{}{}{}{}{}{}%
1329
\afstemfalse\afdualtrue \afmultfalse\setbox\afcudnbox=
1330
                                                     \afcauxx{}{}{}{}{}{}{}{}{}%
1331
\afstemfalse\afdualtrue \afmulttrue \setbox\afCudnbox=
1332
                                                     \afcauxx{}{}{}{}{}{}{}{}{}%
1333
\vlcompileflowstrue}%
1334

  
1335
\newcommand{\afcompiledisable}{\vlcompileflowsfalse}%
1336

  
1337
\AtBeginDocument{\ifvirginialakeusesxy\afcompileenable\fi}%
1338

  
1339
\newcommand{\af}[1]{\vcenter{\xy
1340
<\afelwidth,0pt>:<0pt,\afelheight>::#1\endxy}}%
1341

  
1342
\newcommand{\afinv}[1]{\vcenter{\xy
1343
<\afelwidth,0pt>:<0pt,-\afelheight>::#1\endxy}}%
1344

  
1345
\newcommand{\afinvm}{\vbox to0pt{\color{white}\vss
1346
\hbox to0pt{\hss\vrule height.1sp depth0sp width.1sp}}}%
1347

  
1348
\newcommand{\aftrimabove}[1]{\vcenter
1349
                             {\vbox{\kern-3.2\afelheight\hbox{$#1$}}}}%
1350

  
1351
\newcommand{\aftrimbelow}[1]{\vcenter
1352
                             {\vbox{\hbox{$#1$}\kern-3.2\afelheight}}}%
1353

  
1354
\newcommand{\aftrim}[1]{\vcenter{\vbox{\kern-3.2\afelheight\hbox{$#1$}%
1355
                                       \kern-3.2\afelheight}}}%
1356

  
1357
\newcommand{\afraise}[1]{\raise2\afelheight\hbox{$#1$}}%
1358

  
1359
\newcommand{\aflower}[1]{\lower2\afelheight\hbox{$#1$}}%
1360

  
1361
%-------------------------------- LABELS
1362

  
1363
\newcommand{\aflr}[1]{\vbox to0pt{\vss
1364
   \hbox to0pt{$\scriptstyle\kern\aflabeldistance #1\strut$\hss}\vss}}%
1365

  
1366
\newcommand{\afll}[1]{\vbox to 0pt{\vss
1367
   \hbox to0pt{\hss$\scriptstyle #1\kern\aflabeldistance\strut$}\vss}}%
1368

  
1369
%------------------- TRIANGLES AND DISK
1370

  
1371
\newcommand{\aftrauxps}{%
1372
\xybox{<\afelwidth,0pt>:<0pt,\ifaftrin
1373
                                \ifafdual
1374
                                \else
1375
                                   -
1376
                                \fi
1377
                             \else
1378
                                \ifafdual
1379
                                   -
1380
                                \fi
1381
                             \fi\afelheight>::
1382
( 0   ,-0.55);( 0   , 0.54)**[|<\afthickone>][white]@{-};
1383
( 0.08,-0.43);( 0.08, 0.54)**[|<\afthickone>][white]@{-};
1384
(-0.08,-0.43);(-0.08, 0.54)**[|<\afthickone>][white]@{-};
1385
( 0.16,-0.31);( 0.16, 0.54)**[|<\afthickone>][white]@{-};
1386
(-0.16,-0.31);(-0.16, 0.54)**[|<\afthickone>][white]@{-};
1387
( 0.24,-0.19);( 0.24, 0.54)**[|<\afthickone>][white]@{-};
1388
(-0.24,-0.19);(-0.24, 0.54)**[|<\afthickone>][white]@{-};
1389
( 0.32,-0.07);( 0.32, 0.54)**[|<\afthickone>][white]@{-};
1390
(-0.32,-0.07);(-0.32, 0.54)**[|<\afthickone>][white]@{-};
1391
( 0.40, 0.05);( 0.40, 0.54)**[|<\afthickone>][white]@{-};
1392
(-0.40, 0.05);(-0.40, 0.54)**[|<\afthickone>][white]@{-};
1393
( 0.48, 0.17);( 0.48, 0.54)**[|<\afthickone>][white]@{-};
1394
(-0.48, 0.17);(-0.48, 0.54)**[|<\afthickone>][white]@{-};
1395
( 0.56, 0.29);( 0.56, 0.54)**[|<\afthickone>][white]@{-};
1396
(-0.56, 0.29);(-0.56, 0.54)**[|<\afthickone>][white]@{-};
1397
( 0.64, 0.41);( 0.64, 0.54)**[|<\afthickone>][white]@{-};
1398
(-0.64, 0.41);(-0.64, 0.54)**[|<\afthickone>][white]@{-};
1399
( 0.72, 0.53);( 0.72, 0.54)**[|<\afthickone>][white]@{-};
1400
(-0.72, 0.53);(-0.72, 0.54)**[|<\afthickone>][white]@{-};
1401
(-0.8 , 0.6 );( 0   ,-0.6 )**[|<\afthickfour>]@{-};
1402
( 0   ,-0.6 );( 0.8 , 0.6 )**[|<\afthickfour>]@{-};
1403
(-0.8 , 0.6 );( 0.8 , 0.6 )**[|<\afthickfour>]@{-}}}%
1404

  
1405
\newcommand{\aftrauxpdf}{\hbox{\kern-.15\afelwidth
1406
\xybox{<\afelwidth,0pt>:<0pt,\ifaftrin
1407
                                \ifafdual
1408
                                \else
1409
                                   -
1410
                                \fi
1411
                             \else
1412
                                \ifafdual
1413
                                   -
1414
                                \fi
1415
                             \fi\afelheight>::
1416
( 0   ,-0.55);( 0   , 0.54)**[|<\afthickone>][white]@{-};
1417
( 0.04,-0.43);( 0.04, 0.54)**[|<\afthickone>][white]@{-};
1418
(-0.04,-0.43);(-0.04, 0.54)**[|<\afthickone>][white]@{-};
1419
( 0.08,-0.43);( 0.08, 0.54)**[|<\afthickone>][white]@{-};
1420
(-0.08,-0.43);(-0.08, 0.54)**[|<\afthickone>][white]@{-};
1421
( 0.12,-0.31);( 0.12, 0.54)**[|<\afthickone>][white]@{-};
1422
(-0.12,-0.31);(-0.12, 0.54)**[|<\afthickone>][white]@{-};
1423
( 0.16,-0.31);( 0.16, 0.54)**[|<\afthickone>][white]@{-};
1424
(-0.16,-0.31);(-0.16, 0.54)**[|<\afthickone>][white]@{-};
1425
( 0.20,-0.19);( 0.20, 0.54)**[|<\afthickone>][white]@{-};
1426
(-0.20,-0.19);(-0.20, 0.54)**[|<\afthickone>][white]@{-};
1427
( 0.24,-0.19);( 0.24, 0.54)**[|<\afthickone>][white]@{-};
1428
(-0.24,-0.19);(-0.24, 0.54)**[|<\afthickone>][white]@{-};
1429
( 0.28,-0.19);( 0.28, 0.54)**[|<\afthickone>][white]@{-};
1430
(-0.28,-0.19);(-0.28, 0.54)**[|<\afthickone>][white]@{-};
1431
( 0.32,-0.07);( 0.32, 0.54)**[|<\afthickone>][white]@{-};
1432
(-0.32,-0.07);(-0.32, 0.54)**[|<\afthickone>][white]@{-};
1433
( 0.36,-0.07);( 0.36, 0.54)**[|<\afthickone>][white]@{-};
1434
(-0.36,-0.07);(-0.36, 0.54)**[|<\afthickone>][white]@{-};
1435
( 0.40, 0.05);( 0.40, 0.54)**[|<\afthickone>][white]@{-};
1436
(-0.40, 0.05);(-0.40, 0.54)**[|<\afthickone>][white]@{-};
1437
( 0.44, 0.17);( 0.44, 0.54)**[|<\afthickone>][white]@{-};
1438
(-0.44, 0.17);(-0.44, 0.54)**[|<\afthickone>][white]@{-};
1439
( 0.48, 0.17);( 0.48, 0.54)**[|<\afthickone>][white]@{-};
1440
(-0.48, 0.17);(-0.48, 0.54)**[|<\afthickone>][white]@{-};
1441
( 0.52, 0.29);( 0.52, 0.54)**[|<\afthickone>][white]@{-};
1442
(-0.52, 0.29);(-0.52, 0.54)**[|<\afthickone>][white]@{-};
1443
( 0.56, 0.29);( 0.56, 0.54)**[|<\afthickone>][white]@{-};
1444
(-0.56, 0.29);(-0.56, 0.54)**[|<\afthickone>][white]@{-};
1445
( 0.60, 0.41);( 0.60, 0.54)**[|<\afthickone>][white]@{-};
1446
(-0.60, 0.41);(-0.60, 0.54)**[|<\afthickone>][white]@{-};
1447
( 0.64, 0.41);( 0.64, 0.54)**[|<\afthickone>][white]@{-};
1448
(-0.64, 0.41);(-0.64, 0.54)**[|<\afthickone>][white]@{-};
1449
( 0.68, 0.41);( 0.68, 0.54)**[|<\afthickone>][white]@{-};
1450
(-0.68, 0.41);(-0.68, 0.54)**[|<\afthickone>][white]@{-};
1451
( 0.72, 0.53);( 0.72, 0.54)**[|<\afthickone>][white]@{-};
1452
(-0.72, 0.53);(-0.72, 0.54)**[|<\afthickone>][white]@{-};
1453
(-0.95, 0.68);( 0   ,-0.74)**[|<\afthickone>]@{-};
1454
( 0   ,-0.74);( 0.95, 0.68)**[|<\afthickone>]@{-};
1455
(-0.95, 0.68);( 0.95, 0.68)**[|<\afthickone>]@{-};
1456
(-0.8 , 0.6 );( 0   ,-0.6 )**[|<\afthickone>]@{-};
1457
( 0   ,-0.6 );( 0.8 , 0.6 )**[|<\afthickone>]@{-};
1458
(-0.8 , 0.6 );( 0.8 , 0.6 )**[|<\afthickone>]@{-};
1459
(-0.65, 0.52);( 0   ,-0.46)**[|<\afthickone>]@{-};
1460
( 0   ,-0.46);( 0.65, 0.52)**[|<\afthickone>]@{-};
1461
(-0.65, 0.52);( 0.65, 0.52)**[|<\afthickone>]@{-}}%
1462
\kern-.15\afelwidth}}%
1463

  
1464
\newcommand{\aftraux}{\ifvirginialakepdflatex\aftrauxpdf\else\aftrauxps\fi}%
1465

  
1466
\newcommand{\aftr}{%
1467
\ifemptyargparamsunchangedcompileflows{}%
1468
{\ifaftrin
1469
    \ifafdual
1470
       \copy\aftrdnbox
1471
    \else
1472
       \copy\aftrupbox
1473
    \fi
1474
 \else
1475
    \ifafdual
1476
       \copy\aftrupbox
1477
    \else
1478
       \copy\aftrdnbox
1479
    \fi
1480
 \fi}%
1481
{\hbox{\aftraux}}}%
1482

  
1483
\newcommand{\afdiaux}{%
1484
\xybox{<\afelheight,0pt>:<0pt,\afelheight>::
1485
( 0  , 0.0)*\frm<.6\afelwidth>{*};
1486
( 0.6, 0.6)*{\afinvm}            ;
1487
(-0.6,-0.6)*{\afinvm}            }}%
1488

  
1489
\newcommand{\afdi}{%
1490
\ifemptyargparamsunchangedcompileflows{}%
1491
{\copy\afdiskbox}%
1492
{\hbox{\afdiaux}}}%
1493

  
1494
%---------------------------- IDENTITIES
1495

  
1496
\newcommand{\afistemsaux}[2]{%
... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.

Formats disponibles : Unified diff