diff --git a/relalg.sty b/relalg.sty index ec2c2f5..b5bbd85 100644 --- a/relalg.sty +++ b/relalg.sty @@ -1,6 +1,6 @@ -\def\packagedate{15 Jamuary 2025} -\def\packageversion{2.1} -\def\packageshortdate{2025/01/15} +\def\packagedate{13 February 2025} +\def\packageversion{2.2} +\def\packageshortdate{2025/02/13} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Defines various relational algebra symbols. @@ -12,6 +12,8 @@ % v2.0 Complete rewrite to support Unicode OpenType fonts and LaTeX3. % v2.1 Plays nicely with other packages that \setmathfont, and only % interpolates join symbols if they aren’t in the current font. +% v2.2 Added text versions of logical operators (AND, OR, NOT), and +% "parameters" of the form "". Fixed missing \fi. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -52,12 +54,12 @@ % the scale to get roughly proportional looking sizes. % \iffontchar trick from % Outer joins (left, right, full): - \iffontchar\font "27D5\relax\else\setmathfont{STIXTwoMath-Regular.otf}[range="027D5, Scale=0.875] - \iffontchar\font "27D6\relax\else\setmathfont{STIXTwoMath-Regular.otf}[range="27D6, Scale=0.875] - \iffontchar\font "27D7\relax\else\setmathfont{STIXTwoMath-Regular.otf}[range="27D7, Scale=0.875] + \iffontchar\font "27D5\relax\else\setmathfont{STIXTwoMath-Regular.otf}[range="027D5, Scale=0.875]\fi + \iffontchar\font "27D6\relax\else\setmathfont{STIXTwoMath-Regular.otf}[range="27D6, Scale=0.875]\fi + \iffontchar\font "27D7\relax\else\setmathfont{STIXTwoMath-Regular.otf}[range="27D7, Scale=0.875]\fi % \setmathfont{STIXTwoMath-Regular.otf}[range={"027D5-"027D7}, Scale=0.875] % Inner join: (1.143 = 1 / 0.875) - \iffontchar\font "2A1D\relax\else\setmathfont{KpMath-Light.otf}[range="2A1D, Scale=1.143] + \iffontchar\font "2A1D\relax\else\setmathfont{KpMath-Light.otf}[range="2A1D, Scale=1.143]\fi }{ \PackageInfo{relalg}{non-Unicode\space engine\space detected} \RequirePackage{latexsym} % for \Join @@ -95,6 +97,9 @@ \let\RelAttrSet\RelAttributeSet \ExplSyntaxOff +% "Parameters" of the form "". +\NewDocumentCommand{\RelParameter}{m}{\ensuremath{\langle\RelIdentifier{#1}\rangle}} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -236,16 +241,34 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Logical operators. -\NewDocumentCommand{\RelLogicalAnd}{}{\ensuremath{\wedge}} -\let\RelLogAnd\RelLogicalAnd -\let\RelAnd\RelLogicalAnd +\DeclareMathOperator{\AndText}{AND} +\DeclareMathOperator{\OrText}{OR} +\DeclareMathOperator{\NotText}{NOT} -\NewDocumentCommand{\RelLogicalOr}{}{\ensuremath{\vee}} -\let\RelLogOr\RelLogicalOr -\let\RelOr\RelLogicalOr +\ExplSyntaxOn + \NewDocumentCommand{\RelLogicalAnd}{O{symbol}}{ + \tl_if_eq:nnTF {#1} {text} + {\ensuremath{\AndText}} + {\ensuremath{\wedge}} + } + \let\RelLogAnd\RelLogicalAnd + \let\RelAnd\RelLogicalAnd -\NewDocumentCommand{\RelLogicalNot}{}{\ensuremath{\neg}} -\let\RelLogNot\RelLogicalNot -\let\RelNot\RelLogicalNot + \NewDocumentCommand{\RelLogicalOr}{O{symbol}}{ + \tl_if_eq:nnTF {#1} {text} + {\ensuremath{\OrText}} + {\ensuremath{\vee}} + } + \let\RelLogOr\RelLogicalOr + \let\RelOr\RelLogicalOr + + \NewDocumentCommand{\RelLogicalNot}{O{symbol}}{ + \tl_if_eq:nnTF {#1} {text} + {\ensuremath{\NotText}} + {\ensuremath{\neg}} + } + \let\RelLogNot\RelLogicalNot + \let\RelNot\RelLogicalNot +\ExplSyntaxOff \endinput