DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T U

⟦c682602cd⟧ TextFile

    Length: 5021 (0x139d)
    Types: TextFile
    Notes: Uncompressed file

Derivation

└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
    └─⟦c319c2751⟧ »unix3.0/TeX3.0.tar.Z« 
        └─⟦036c765ac⟧ 
            └─⟦13172d798⟧ »TeX3.0/LaTeX/LaTeXmacros/ifthen.doc.Z« 
└─⟦060c9c824⟧ Bits:30007080 DKUUG TeX 2/12/89
    └─⟦13172d798⟧ »./tex82/LaTeX/LaTeXmacros/ifthen.doc.Z« 
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
    └─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z« 
        └─⟦c58930e5c⟧ 
            └─⟦13172d798⟧ »TeX3.14/LaTeX/LaTeXmacros/ifthen.doc.Z« 
                └─⟦this⟧ 

TextFile

% IFTHEN DOCUMENT-STYLE OPTION - released 16 December 1986
%    for LaTeX version 2.09
% Copyright (C) 1986 by Leslie Lamport

% \ifthenelse{TEST}{THENCLAUSE}{ELSECLAUSE} 
%    An if-then-else command where 
%        TEST == \equal{STRING}{STRING}
%                number < number | number = number | number > number |
%                \(TEST\) | \not TEST | TEST \or TEST | TEST \and TEST
%    with \or, \and and \not denoting the obvious logical operators,
%    \( and \) as parentheses, and \equal testing equality of strings.
%    
%  \equal{STRING}{STRING}
%     Tests if the two arguments are equal, after all macros are expanded.
%     E.g.: \def\foo{bar}  ... causes \equal{\foo}{bar} to evaluate to `true'
%
% \whiledo{TEST}{DO-CLAUSE}
%     A while-do construction, with TEST the same as above.
%
% \ifthenelse{TEST}{THEN-CLAUSE}{ELSE-CLAUSE} == 
%   BEGIN 
%    \@tempboxa := \vbox{ \protect := \noexpand
%                         \or  := \@or 
%                         \and := \@and 
%                         \not := \@neg
%                         \(   := \@lparen
%                         \)   := \@rparen
%                         \@eval \ifnum 
%                          eval(TEST)       %%%  \if's not expanded
%                          @term := T  \else @term := F \fi
%                          \@endeval
%                          @gtempa :=G @val    }
%    IF @gtempa = T  THEN THEN-CLAUSE 
%                    ELSE ELSE-CLAUSE FI
%  END
%
% \@eval == BEGIN  @val    := F
%                  @orop   := T
%                  @negate := F
%           END
%
% \@endeval == 
%   BEGIN  
%          IF \@negate =T THEN \@negate := F
%                              IF \@term = T THEN \@term := F
%                                            ELSE \@term := T     
%          FI                  FI
%          IF \@orop = T THEN IF \@val = F 
%                               THEN \@val := \@term FI
%                        ELSE IF \@val = T THEN  \@val := \@term FI
%          FI
%
% \@or == 
%   BEGIN  @term := T  \else @term := F \fi
%          \@endeval
%          \@orop := T
%          \ifnum
%   END
%
% \@and  == 
%   BEGIN  \relax \@term := T  \else \@term := F \fi
%          \@endeval
%          \@orop := F
%          \ifnum
%   END
%
% \@neg ==  BEGIN 1=1 \fi 
%                 \@negate := T
%                 \ifnum
%           END
%
% \@lparen == BEGIN 1=1 \fi
%                   \begingroup
%                   \@eval \ifnum
%             END
%
% \@rparen == 
%   BEGIN  \relax \@term := T  \else \@term := F \fi
%          \@endeval
%          IF \@val = T THEN \@gtempb :=G 1=1
%                       ELSE \@gtempb :=G 1=0   FI
%          \endgroup
%          \ifnum
%          \@gtempb
%
% \equal{STR1}{STR2} ==
%   BEGIN  1=1 \fi
%          \@tempa := eval(STR1)
%          \@tempe := eval(STR2)
%          IF \@tempa == \@tempe 
%            THEN \@tempa := 1=1
%            ELSE \@tempa := 1=0 FI
%          \ifnum \@tempa
%  END
%
%  \whiledo{TEST}{DO-CLAUSE} ==
%    \ifthenelse{TEST}{@whiledo := true
%                      WHILE @whiledo
%                        DO  DO-CLAUSE
%                            \ifthenelse{TEST}{@whiledo := true}
%                                             {@whiledo := false}
%                        OD}
%                      {}

\long\def\ifthenelse#1#2#3{\setbox\@tempboxa
  \vbox{\let\protect\noexpand
        \let\or\@or \let\and\@and \let\not\@neg \let\(\@lparen \let\)\@rparen
        {\let\if\relax\let\ifx\relax\let\ifnum\relax\let\fi\relax
        \let\else\relax \xdef\@gtempa{#1}}\expandafter
        \@eval \ifnum \@gtempa\relax \def\@term{T}\else \def\@term{F}\fi
            \@endeval\global\let\@gtempa\@val}\if\@gtempa T#2\else#3\fi}

\def\@eval{\def\@val{F}\def\@orop{T}\def\@negate{F}}

\def\@endeval{\if\@negate T\def\@negate{F}\if\@term T\def\@term{F}\else 
               \def\@term{T}\fi\fi
       \if\@orop T\if\@val F\let\@val\@term\fi
             \else \if\@val T\let\@val\@term\fi\fi}

\def\@or{\relax\def\noexpand\@term{T}\else \def\noexpand\@term{F}\fi
         \noexpand\@endeval \def\noexpand\@orop{T}\ifnum}

\def\@and{\relax\def\noexpand\@term{T}\else \def\noexpand\@term{F}\fi
          \noexpand\@endeval\def\noexpand\@orop{F}\ifnum}

\def\@neg{1=1 \fi \def\noexpand\@negate{T}\ifnum}

\def\@lparen{1=1 \fi \begingroup \noexpand\@eval \ifnum}

\def\@rparen{\relax\def\noexpand\@term{T}\else \def\noexpand\@term{F}\fi 
      \noexpand\@endeval \if\noexpand\@val T\gdef\noexpand\@gtempb{1=1}\else 
            \gdef\noexpand\@gtempb{1=0}\fi
            \endgroup \ifnum\noexpand\@gtempb}

\def\equal#1#2{1=1 \fi \edef\noexpand\@tempa{#1}\edef\noexpand\@tempe{#2}\ifx
                \noexpand\@tempa\noexpand\@tempe 
                \def\noexpand\@tempa{1=1}\else
                \def\noexpand\@tempa{1=0}\fi \ifnum \noexpand\@tempa}

\long\def\whiledo#1#2{\ifthenelse{#1}{\@whiledotrue \@whilesw\if@whiledo
                    \fi{#2\ifthenelse{#1}{\@whiledotrue}{\@whiledofalse}}}{}}

\newif\if@whiledo