src/HOL/Isar_examples/document/proof.sty
author boehmes
Wed, 02 Sep 2009 21:31:58 +0200
changeset 32498 1132c7c13f36
parent 7833 f5288e4b95d1
permissions -rw-r--r--
Mirabelle: actions are responsible for handling exceptions, Mirabelle core logs only structural information, measuring running times for sledgehammer and subsequent metis invocation, Mirabelle produces reports for every theory (only for sledgehammer at the moment)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7833
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
     1
%       proof.sty       (Proof Figure Macros)
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
     2
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
     3
%       version 1.0
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
     4
%       October 13, 1990
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
     5
%       Copyright (C) 1990 Makoto Tatsuta (tatsuta@riec.tohoku.ac.jp)
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
     6
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
     7
% This program is free software; you can redistribute it or modify
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
     8
% it under the terms of the GNU General Public License as published by
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
     9
% the Free Software Foundation; either versions 1, or (at your option)
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    10
% any later version.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    11
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    12
% This program is distributed in the hope that it will be useful
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    13
% but WITHOUT ANY WARRANTY; without even the implied warranty of
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    14
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    15
% GNU General Public License for more details.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    16
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    17
%       Usage:
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    18
%               In \documentstyle, specify an optional style `proof', say,
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    19
%                       \documentstyle[proof]{article}.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    20
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    21
%       The following macros are available:
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    22
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    23
%       In all the following macros, all the arguments such as
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    24
%       <Lowers> and <Uppers> are processed in math mode.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    25
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    26
%       \infer<Lower><Uppers>
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    27
%               draws an inference.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    28
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    29
%               Use & in <Uppers> to delimit upper formulae.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    30
%               <Uppers> consists more than 0 formulae.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    31
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    32
%               \infer returns \hbox{ ... } or \vbox{ ... } and
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    33
%               sets \@LeftOffset and \@RightOffset globally.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    34
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    35
%       \infer[<Label>]<Lower><Uppers>
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    36
%               draws an inference labeled with <Label>.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    37
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    38
%       \infer*<Lower><Uppers>
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    39
%               draws a many step deduction.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    40
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    41
%       \infer*[<Label>]<Lower><Uppers>
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    42
%               draws a many step deduction labeled with <Label>.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    43
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    44
%       \deduce<Lower><Uppers>
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    45
%               draws an inference without a rule.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    46
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    47
%       \deduce[<Proof>]<Lower><Uppers>
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    48
%               draws a many step deduction with a proof name.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    49
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    50
%       Example:
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    51
%               If you want to write
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    52
%                           B C
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    53
%                          -----
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    54
%                      A     D
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    55
%                     ----------
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    56
%                         E
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    57
%       use
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    58
%               \infer{E}{
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    59
%                       A
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    60
%                       &
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    61
%                       \infer{D}{B & C}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    62
%               }
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    63
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    64
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    65
%       Style Parameters
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    66
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    67
\newdimen\inferLineSkip         \inferLineSkip=2pt
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    68
\newdimen\inferLabelSkip        \inferLabelSkip=5pt
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    69
\def\inferTabSkip{\quad}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    70
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    71
%       Variables
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    72
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    73
\newdimen\@LeftOffset   % global
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    74
\newdimen\@RightOffset  % global
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    75
\newdimen\@SavedLeftOffset      % safe from users
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    76
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    77
\newdimen\UpperWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    78
\newdimen\LowerWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    79
\newdimen\LowerHeight
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    80
\newdimen\UpperLeftOffset
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    81
\newdimen\UpperRightOffset
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    82
\newdimen\UpperCenter
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    83
\newdimen\LowerCenter
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    84
\newdimen\UpperAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    85
\newdimen\RuleAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    86
\newdimen\LowerAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    87
\newdimen\RuleWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    88
\newdimen\HLabelAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    89
\newdimen\VLabelAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    90
\newdimen\WidthAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    91
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    92
\newbox\@UpperPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    93
\newbox\@LowerPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    94
\newbox\@LabelPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    95
\newbox\ResultBox
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    96
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    97
%       Flags
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    98
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
    99
\newif\if@inferRule     % whether \@infer draws a rule.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   100
\newif\if@ReturnLeftOffset      % whether \@infer returns \@LeftOffset.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   101
\newif\if@MathSaved     % whether inner math mode where \infer or
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   102
                        % \deduce appears.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   103
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   104
%       Special Fonts
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   105
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   106
\def\DeduceSym{\vtop{\baselineskip4\p@ \lineskiplimit\z@
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   107
    \vbox{\hbox{.}\hbox{.}\hbox{.}}\hbox{.}}}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   108
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   109
%       Math Save Macros
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   110
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   111
%       \@SaveMath is called in the very begining of toplevel macros
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   112
%       which are \infer and \deduce.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   113
%       \@RestoreMath is called in the very last before toplevel macros end.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   114
%       Remark \infer and \deduce ends calling \@infer.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   115
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   116
%\def\@SaveMath{\@MathSavedfalse \ifmmode \ifinner
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   117
%        \relax $\relax \@MathSavedtrue \fi\fi }
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   118
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   119
%\def\@RestoreMath{\if@MathSaved \relax $\relax\fi }
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   120
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   121
\def\@SaveMath{\relax}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   122
\def\@RestoreMath{\relax}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   123
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   124
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   125
%       Macros
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   126
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   127
\def\@ifEmpty#1#2#3{\def\@tempa{\@empty}\def\@tempb{#1}\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   128
        \ifx \@tempa \@tempb #2\else #3\fi }
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   129
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   130
\def\infer{\@SaveMath \@ifnextchar *{\@inferSteps}{\@inferOneStep}}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   131
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   132
\def\@inferOneStep{\@inferRuletrue
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   133
        \@ifnextchar [{\@infer}{\@infer[\@empty]}}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   134
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   135
\def\@inferSteps*{\@ifnextchar [{\@@inferSteps}{\@@inferSteps[\@empty]}}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   136
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   137
\def\@@inferSteps[#1]{\@deduce{#1}[\DeduceSym]}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   138
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   139
\def\deduce{\@SaveMath \@ifnextchar [{\@deduce{\@empty}}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   140
        {\@inferRulefalse \@infer[\@empty]}}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   141
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   142
%       \@deduce<Proof Label>[<Proof>]<Lower><Uppers>
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   143
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   144
\def\@deduce#1[#2]#3#4{\@inferRulefalse
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   145
        \@infer[\@empty]{#3}{\@SaveMath \@infer[{#1}]{#2}{#4}}}
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   146
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   147
%       \@infer[<Label>]<Lower><Uppers>
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   148
%               If \@inferRuletrue, draws a rule and <Label> is right to
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   149
%               a rule.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   150
%               Otherwise, draws no rule and <Label> is right to <Lower>.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   151
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   152
\def\@infer[#1]#2#3{\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   153
% Get parameters
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   154
        \if@ReturnLeftOffset \else \@SavedLeftOffset=\@LeftOffset \fi
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   155
        \setbox\@LabelPart=\hbox{$#1$}\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   156
        \setbox\@LowerPart=\hbox{$#2$}\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   157
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   158
        \global\@LeftOffset=0pt
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   159
        \setbox\@UpperPart=\vbox{\tabskip=0pt \halign{\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   160
                \global\@RightOffset=0pt \@ReturnLeftOffsettrue $##$&&
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   161
                \inferTabSkip
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   162
                \global\@RightOffset=0pt \@ReturnLeftOffsetfalse $##$\cr
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   163
                #3\cr}}\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   164
%                       Here is a little trick.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   165
%                       \@ReturnLeftOffsettrue(false) influences on \infer or
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   166
%                       \deduce placed in ## locally
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   167
%                       because of \@SaveMath and \@RestoreMath.
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   168
        \UpperLeftOffset=\@LeftOffset
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   169
        \UpperRightOffset=\@RightOffset
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   170
% Calculate Adjustments
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   171
        \LowerWidth=\wd\@LowerPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   172
        \LowerHeight=\ht\@LowerPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   173
        \LowerCenter=0.5\LowerWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   174
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   175
        \UpperWidth=\wd\@UpperPart \advance\UpperWidth by -\UpperLeftOffset
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   176
        \advance\UpperWidth by -\UpperRightOffset
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   177
        \UpperCenter=\UpperLeftOffset
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   178
        \advance\UpperCenter by 0.5\UpperWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   179
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   180
        \ifdim \UpperWidth > \LowerWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   181
                % \UpperCenter > \LowerCenter
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   182
        \UpperAdjust=0pt
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   183
        \RuleAdjust=\UpperLeftOffset
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   184
        \LowerAdjust=\UpperCenter \advance\LowerAdjust by -\LowerCenter
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   185
        \RuleWidth=\UpperWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   186
        \global\@LeftOffset=\LowerAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   187
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   188
        \else   % \UpperWidth <= \LowerWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   189
        \ifdim \UpperCenter > \LowerCenter
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   190
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   191
        \UpperAdjust=0pt
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   192
        \RuleAdjust=\UpperCenter \advance\RuleAdjust by -\LowerCenter
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   193
        \LowerAdjust=\RuleAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   194
        \RuleWidth=\LowerWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   195
        \global\@LeftOffset=\LowerAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   196
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   197
        \else   % \UpperWidth <= \LowerWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   198
                % \UpperCenter <= \LowerCenter
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   199
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   200
        \UpperAdjust=\LowerCenter \advance\UpperAdjust by -\UpperCenter
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   201
        \RuleAdjust=0pt
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   202
        \LowerAdjust=0pt
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   203
        \RuleWidth=\LowerWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   204
        \global\@LeftOffset=0pt
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   205
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   206
        \fi\fi
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   207
% Make a box
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   208
        \if@inferRule
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   209
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   210
        \setbox\ResultBox=\vbox{
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   211
                \moveright \UpperAdjust \box\@UpperPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   212
                \nointerlineskip \kern\inferLineSkip
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   213
                \moveright \RuleAdjust \vbox{\hrule width\RuleWidth}\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   214
                \nointerlineskip \kern\inferLineSkip
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   215
                \moveright \LowerAdjust \box\@LowerPart }\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   216
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   217
        \@ifEmpty{#1}{}{\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   218
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   219
        \HLabelAdjust=\wd\ResultBox     \advance\HLabelAdjust by -\RuleAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   220
        \advance\HLabelAdjust by -\RuleWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   221
        \WidthAdjust=\HLabelAdjust
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   222
        \advance\WidthAdjust by -\inferLabelSkip
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   223
        \advance\WidthAdjust by -\wd\@LabelPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   224
        \ifdim \WidthAdjust < 0pt \WidthAdjust=0pt \fi
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   225
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   226
        \VLabelAdjust=\dp\@LabelPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   227
        \advance\VLabelAdjust by -\ht\@LabelPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   228
        \VLabelAdjust=0.5\VLabelAdjust  \advance\VLabelAdjust by \LowerHeight
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   229
        \advance\VLabelAdjust by \inferLineSkip
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   230
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   231
        \setbox\ResultBox=\hbox{\box\ResultBox
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   232
                \kern -\HLabelAdjust \kern\inferLabelSkip
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   233
                \raise\VLabelAdjust \box\@LabelPart \kern\WidthAdjust}\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   234
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   235
        }\relax % end @ifEmpty
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   236
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   237
        \else % \@inferRulefalse
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   238
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   239
        \setbox\ResultBox=\vbox{
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   240
                \moveright \UpperAdjust \box\@UpperPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   241
                \nointerlineskip \kern\inferLineSkip
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   242
                \moveright \LowerAdjust \hbox{\unhbox\@LowerPart
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   243
                        \@ifEmpty{#1}{}{\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   244
                        \kern\inferLabelSkip \unhbox\@LabelPart}}}\relax
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   245
        \fi
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   246
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   247
        \global\@RightOffset=\wd\ResultBox
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   248
        \global\advance\@RightOffset by -\@LeftOffset
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   249
        \global\advance\@RightOffset by -\LowerWidth
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   250
        \if@ReturnLeftOffset \else \global\@LeftOffset=\@SavedLeftOffset \fi
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   251
%
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   252
        \box\ResultBox
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   253
        \@RestoreMath
f5288e4b95d1 improved presentation;
wenzelm
parents:
diff changeset
   254
}