texlive[58210] Master/texmf-dist: rec-thy

commits+karl at tug.org commits+karl at tug.org
Mon Mar 8 00:12:07 CET 2021


Revision: 58210
          http://tug.org/svn/texlive?view=revision&revision=58210
Author:   karl
Date:     2021-03-08 00:12:07 +0100 (Mon, 08 Mar 2021)
Log Message:
-----------
rec-thy

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/rec-thy/README
    trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.pdf
    trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.tex
    trunk/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty

Modified: trunk/Master/texmf-dist/doc/latex/rec-thy/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/rec-thy/README	2021-03-07 23:08:18 UTC (rev 58209)
+++ trunk/Master/texmf-dist/doc/latex/rec-thy/README	2021-03-07 23:12:07 UTC (rev 58210)
@@ -37,3 +37,5 @@
 05/08/2020 - v3.3 Fixed/added tweak to overline so it looks correct.  Also added real symbols so that \subfunneq and \supfunneq can be defined appropriately.  Fixed incorrect use of tiny in math mode.
 06/01/2020 - v3.3.1 Fixed typo causing error under pdflatex.
 06/04/2020 - v3.4 Eliminated dependence on undertilde which is missing from texlive
+v3.5 - Added \Hop command and misc code cleanup.  
+v3.6 - Fixed \REA[n] so that dash is shorter.  Added BeamerRequirements to add a block for requirements in beamer and fixed the requirements environment for beamer.  Fixed \req* command.  Improved syntax for \recfnl so it can accept a () delimited argument via the same standard as \REset and \recf.  Improved \setcol to allow it to be used repeatedly without typesetting bugs.  Changed the code and pair commands to use only a single angle bracket.

Modified: trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.tex	2021-03-07 23:08:18 UTC (rev 58209)
+++ trunk/Master/texmf-dist/doc/latex/rec-thy/rec-thy.tex	2021-03-07 23:12:07 UTC (rev 58210)
@@ -49,7 +49,6 @@
 \usepackage{multirow}
 \usepackage{booktabs}
 \usepackage{xtab}
-\usepackage[suppPriorityTrees]{rec-thy}
 \usepackage{suffix}
 \usepackage{metalogo}
 
@@ -60,6 +59,17 @@
 % Running Headers and footers
 %\usepackage{fancyhdr}
 \usepackage[parfill]{parskip}
+\usepackage{etoolbox}
+\makeatletter
+\patchcmd{\@maketitle}
+  {\ifx\@empty\@dedicatory}
+  {\ifx\@empty\@date \else {\vskip3ex \centering\footnotesize\@date\par\vskip1ex}\fi
+   \ifx\@empty\@dedicatory}
+  {}{}
+\patchcmd{\@adminfootnotes}
+  {\ifx\@empty\@date\else \@footnotetext{\@setdate}\fi}
+  {}{}{}
+\makeatother
 %\usepackage{setspace}
 
 % Multipart figures
@@ -78,7 +88,7 @@
 
 %\usepackage[pdftex]{graphicx}
 %\DeclareGraphicsExtensions{.pdf, .jpg, .tif}
-
+\usepackage[suppPriorityTrees]{rec-thy}
 \title{The rec-thy Package}
 \author{Peter M. Gerdes (gerdes at invariant.org)}
 \date{\DateOfPackage{rec-thy}: Version \recthyVersion}
@@ -125,6 +135,7 @@
 	\item[recfsym]  Sets the symbol used for recursive functions.  Default is \( \phi \).
 	\item[usesym]  Sets the symbol used for the use operator.  Default is \( \symbffrak{u} \) where this is printed using \verb=\symbfrak= if unicode-math is loaded and with \verb=\mathfrak= otherwise.
 	\item[ballsymb] Sets the symbol used for the ball command.  Default is \( \mathscr{B} \).
+	\item[nodoubleangles] Prevents redefinition of \verb=\rrangle= and \verb=\llangle= with versions that use the repeated angle brackets e.g., lets you use the weird XITS versions.
 \end{itemize}
 
 As an example of how to use these commands consider the following code changing the ball symbol to \( \mathbf{B} \).
@@ -193,10 +204,14 @@
 	\verb=\recfnl{e}{}{x}\nconv=                           & \( 	\recfnl{e}{}{x}\nconv                 	   \)   &\multirow{2}{*}{Divergence} \\[6pt]
 	\tab \verb=\recfnl{e}{}{x}\nconv[s]=                        & \( 	\recfnl{e}{}{x}\nconv[s]              	   \)   & \\ \midrule
 	\verb=\use{\recfnl{e}{Y}{x}}=                          & \( 	\use{\recfnl{e}{Y}{x}}                	   \)   & Use of a computation. \\ \midrule
-	\verb=\REset{e}=                                       & \( 	\REset{e}                             	   \)   & \multirow{4}{*}{c.e. sets} \\[6pt]
-	 \verb=\REset[s]{e}=                                    & \( 	\REset[s]{e}                          	   \)   & \\[6pt]
-	 \verb=\REset(X){e}=                                    & \( 	\REset(X){e}                          	   \)   & \\[6pt]
-	 \verb=\REset[s](X){e}=                                 & \( 	\REset[s](X){e}                       	   \)   & \\ \midrule
+	\verb=\REset{e}=                                       & \( 	\REset{e} \)   & \multirow{4}{*}{c.e. sets} \\[6pt]
+	 \verb=\REset[s]{e}=                                    & \( 	\REset[s]{e}  \)   & \\[6pt]
+	 \verb=\REset(X){e}=                                    & \( 	\REset(X){e}   \)   & \\[6pt]
+	 \verb=\REset[s](X){e}=                                 & \( 	\REset[s](X){e}  \)   & \\ \midrule
+	\verb=\Hop{e}(X)=                                       & \( 	\Hop{e}(X)  \)   & \multirow{4}{*}{Hop sets} \\[6pt]
+		\verb=\Hop[s](X){e}=                                 & \( 	\Hop[s](X){e} \)   & \\[6pt]
+		\verb=\Hop[s]{e}=                                 & \( 	\Hop[s]{e} \)   & \\[6pt]
+		\verb=\Hop{e}=                                 & \( 	\Hop{e}  \)   & \\ \midrule
 	\verb=\iREAop{e}(\eset)=                               & \multirow{2}{*}{\( 	\iREAop{e}(\eset)                     	   \)}   &\multirow{2}{*}{1-REA operator} \\
 	\tab \verb=\oneREAop{e}(\eset)=                               &    & \\ \midrule
 	% \verb=\alphaREAop{\alpha}(\eset)=                      & \multirow{2}{*}{\( 	\alphaREAop{\alpha}(\eset)            	   \)}   &\multirow{2}{*}{\( \alpha \)-REA operator} \\[6pt]
@@ -260,7 +275,7 @@
 \makeatletter
 \subsection{Requirement Assistance}
 To disable these commands pass the option \verb=noreqhelper=. To disable the hyperlinked requirements pass \verb=nohyperreqs=\\
-Math mode is not required for \verb=\req{R}{e\}=
+Math mode is not required for \verb=\req{R}{e}=
 
 \begin{tabular}{l |  l | l}\toprule
 \verb=\req{R}{e}=			 &  \( \req{R}{e} \) & \multirow{3}{*}{Requirement } \\ \midrule
@@ -572,7 +587,7 @@
 \subsection{Syntax}
 To disable these commands pass the option \verb=nosyntax=.\\  All syntax classes can be relativized with an optional argument in square brackets even when not listed below.  Only the \( \Delta \) formula classes are listed below since the syntax is identical for \( \Sigma \) and \( \Pi \).  Capitalizing the first letter gives the boldface version in all cases (except the computable infinitary formulas as this doesn't make sense).  Not all formulas/abbreviations are demonstrated below given the huge number but the enough are included to make it clear what command is required to generate the desired formula class, e.g., substituting pi for delta does what you think it does.
 
-To change the syntax for the computable infinitary formulas you can pass the options \verb!cdeltasym=macroname!, \verb!csigmasym=macroname! and \verb!cpisym=macroname! where macroname is the name (without the leading \\) of the macro giving the desired symbol to use for the relevant class. 
+To change the syntax for the computable infinitary formulas you can pass the options \verb!cdeltasym=macroname!, \verb!csigmasym=macroname! and \verb!cpisym=macroname! where macroname is the name (without the leading \verb=\=) of the macro giving the desired symbol to use for the relevant class. 
 
 \begin{xtabular}{l |  l | l}\toprule
 	\verb=\Cdeltan[X]{\alpha}=          & \( \Cdeltan[X]{2}    \)      & The computable \( \delta^{X}_\alpha \) formulas  \\ \midrule
@@ -685,6 +700,8 @@
 
 % TESTING: \verb=\fpmapsto=, \verb=\fpmapsfrom=, \verb=\ParFuncs{Y}{X}= and \verb=\FinParFuncs{Y}{X}=
 \begin{itemize}
+	\item[3.6] Fixed \verb=\REA[n]= so that dash is shorter.  Added BeamerRequirements to add a block for requirements in beamer and fixed the requirements environment for beamer.  Fixed \verb=\req*= error.  Improved syntax for \verb=\recfnl= so it can accept a parenthesis delimited argument as the oracle.  Improved \verb=\setcol= to allow it to be used in a nested fashion without typesetting bugs.  Changed the \verb=\code= and \verb=\pair= commands to use only a single angle bracket.
+	\item[3.5] Added \verb=\Hop= and misc code cleanup.
 	\item[3.4] Eliminated dependence on undertilde which is missing from texlive
 	\item[3.3.1] Fixed typo causing error under pdflatex.
 	\item[3.3]  - Fixed/added tweak to overline so it looks correct.  Also added real symbols so that \verb=\subfunneq= and \verb=\supfunneq= can be defined appropriately.  Added \verb=\floor= and \verb=\ceil=.  Note these aren't yet shown off in package doc.  Fixed incorrect use of tiny in math mode.

Modified: trunk/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty	2021-03-07 23:08:18 UTC (rev 58209)
+++ trunk/Master/texmf-dist/tex/latex/rec-thy/rec-thy.sty	2021-03-07 23:12:07 UTC (rev 58210)
@@ -1,7 +1,29 @@
-\NeedsTeXFormat{LaTeX2e}
+% \NeedsTeXFormat{LaTeX2e}
 % Release Notes see README
-\def\recthyVersion{3.4}
-\ProvidesPackage{rec-thy}[2020/06/04 v\recthyVersion Provides commands for writing up recursion theory papers]
+\RequirePackage{expl3}
+\RequirePackage{ltxcmds}
+\RequirePackage{expl3}
+\RequirePackage{ifxetex,ifpdf}
+\RequirePackage{suffix}
+\RequirePackage{ifmtarg}
+\RequirePackage{xifthen}
+\RequirePackage{xkeyval}
+\RequirePackage{etoolbox}
+\RequirePackage{pict2e,picture}
+\RequirePackage{xparse}
+\def\recthyVersion{3.6}
+\ProvidesExplPackage
+  {rec-thy}
+  {2021/02/28}
+  {\recthyVersion}
+  {Provides commands for writing up recursion theory papers}
+
+
+
+\ExplSyntaxOff
+
+% \ProvidesExplPackage{rec-thy}{2020/06/04}{3.5}{Provides commands for writing up recursion theory papers} % Description
+% \ProvidesPackage{rec-thy}[2021/02/05 v\recthyVersion Provides commands for writing up recursion theory papers]
 \makeatletter
 % \newcommand*{\@curpack}{\@currname} %rec-thy.sty
 \newcommand*{\@packinfo}[1]{\PackageInfo{rec-thy}{#1}}
@@ -15,18 +37,12 @@
 % \ProvidesPackage{\@curpack}  %file name is package name
 
 
-\RequirePackage{ltxcmds}
-\RequirePackage{ifxetex,ifpdf}
-\RequirePackage{suffix}
-\RequirePackage{ifmtarg}
-\RequirePackage{xifthen}
-\RequirePackage{xkeyval}
-\RequirePackage{etoolbox}
-\RequirePackage{pict2e,picture}
+
 \robustify\(
 \robustify\)
-\RequirePackage{xparse}
+
 \AtBeginDocument{
+% \@ifundefined{hyperref}{\providecommand{\texorpdfstring}[2]{def}  }
 \ltx at ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}}
 \ltx at ifpackageloaded{amssymb}{}{\RequirePackage{amssymb}}
 \ltx at ifpackageloaded{amsfonts}{}{\RequirePackage{amsfonts}}
@@ -46,9 +62,6 @@
 }
 
 % \ifxetex  %workaround for bug...hopefully can dispense on later
-% \gdef\symbf#1{\symbf{#1}}
-% \fi
-% \global\let\symbf=\symbf
 \ifxetex
 \else
     \def\symbf#1{\mathbf{#1}}
@@ -108,11 +121,13 @@
 \newif\ifrecthy at noreqhelper \recthy at noreqhelperfalse
 \newif\ifrecthy at nosubfun \recthy at nosubfunfalse
 \newif\ifrecthy at nopfcases \@ifclassloaded{beamer}{\recthy at nopfcasestrue}{\recthy at nopfcasesfalse}
+\newif\ifrecthy at beamersupp \@ifclassloaded{beamer}{\recthy at beamersupptrue}{\recthy at beamersuppfalse}
 \newif\ifrecthy at noprioritytrees \recthy at noprioritytreesfalse
 \newif\ifrecthy at nosuppprioritytrees \recthy at nosuppprioritytreestrue
 \newif\ifrecthy at hyperreqs \recthy at hyperreqstrue
 \newif\ifrecthy at nooperators \recthy at nooperatorsfalse
 \newif\ifrecthy at fix@typeset \recthy at fix@typesettrue
+\newif\ifrecthy at nodoubleangles \recthy at nodoubleanglesfalse
 %\newif\ifrecthy at nomodule \recthy at nomodulefalse
 
 \DeclareOptionX{nohyphenation}{\recthy at nohyphenationtrue}
@@ -142,10 +157,16 @@
 \DeclareOptionX{nohyperreqs}{\recthy at hyperreqsfalse}
 \DeclareOptionX{nooperators}{\recthy at nooperatorstrue}
 \DeclareOptionX{compat31}{\recthy at compat@threeOne}
+\DeclareOptionX{compat35}{\recthy at compat@threeFive}
 \DeclareOptionX{nofixtype}{\ifrecthy at fix@typesetfalse}
+\DeclareOptionX{nodoubleangles}{\ifrecthy at nodoubleanglestrue}
 
-\newcommand*{\recthy at compat@threeOne}{\recthy at rollback@threeTwo at threeOne@REA}
-\newcommand*{\recthy at rollback@threeTwo at threeOne@REA}{}
+
+\newcommand*{\recthy at rollback@threeTwo}{}
+\newcommand*{\recthy at rollback@threeSix}{}
+\newcommand*{\recthy at compat@threeFive}{\recthy at rollback@threeSix}
+\newcommand*{\recthy at compat@threeOne}{\recthy at compat@threeFive\recthy at rollback@threeTwo}
+
 %\DeclareOptionX{nomodule}{\recthy at nomoduletrue}
 
 \DeclareOptionX{degjoin}{\def\Tjoin{\Tdegjoin}}
@@ -391,16 +412,6 @@
   \end{picture}%
 }
 
-%     \newcommand{\not at pnrelbar}{%
-%   \linethickness{\dimen2}%
-%   \sbox\z@{$\m at th\nprec$}%
-%   \dimen@=1.1\ht\z@
-%   \begin{picture}(\dimen@,.4ex)
-%   \roundcap
-%   \put(0,.2ex){\line(1,0){\dimen@}}
-%   \put(\dimexpr 0.5\dimen at -.2ex\relax,0){\line(1,1){.4ex}}
-%   \end{picture}%
-% }
 
     \newcommand{\@snrelbar}{%
   \linethickness{\dimen2}%
@@ -413,16 +424,6 @@
   \end{picture}%
 }
 
-%     \newcommand{\not at snrelbar}{%
-%   \linethickness{\dimen2}%
-%   \sbox\z@{$\m at th\nsucc$}%
-%   \dimen@=1.1\ht\z@
-%   \begin{picture}(\dimen@,.4ex)
-%   \roundcap
-%   \put(0,.2ex){\line(1,0){\dimen@}}
-%   \put(\dimexpr 0.5\dimen at -.2ex\relax,0){\line(1,1){.4ex}}
-%   \end{picture}%
-% }
 
 \newcommand{\@precneq}{\mathrel{\vcenter{\hbox{\text{\prec at neq}}}}}
 \newcommand{\prec at neq}{%
@@ -435,16 +436,6 @@
   }%
 }
 
-% \newcommand{\@nprecneq}{\mathrel{\vcenter{\hbox{\text{\nprec at neq}}}}}
-% \newcommand{\nprec at neq}{%
-%   \dimen2=\f at size\dimexpr.04pt\relax
-%   \oalign{%
-%     \noalign{\kern\dimexpr.2ex-.5\dimen2\relax}
-%     $\m at th\nprec$\cr
-%     \noalign{\kern-.5\dimen2}
-%     \hidewidth\not at pnrelbar\hidewidth\cr
-%   }%
-% }
 
 \newcommand{\@succneq}{\mathrel{\vcenter{\hbox{\text{\succ at neq}}}}}
 \newcommand{\succ at neq}{%
@@ -457,16 +448,6 @@
   }%
 }
 
-% \newcommand{\@nsuccneq}{\mathrel{\vcenter{\hbox{\text{\nsucc at neq}}}}}
-% \newcommand{\nsucc at neq}{%
-%   \dimen2=\f at size\dimexpr.04pt\relax
-%   \oalign{%
-%     \noalign{\kern\dimexpr.2ex-.5\dimen2\relax}
-%     $\m at th\nprec$\cr
-%     \noalign{\kern-.5\dimen2}
-%     \hidewidth\not at snrelbar\hidewidth\cr
-%   }%
-% }
 
     \NewDocumentCommand{\subfun}{o}{\prec\IfNoValueTF{#1}{}{_{#1}}}
     \NewDocumentCommand{\supfun}{o}{\succ\IfNoValueTF{#1}{}{_{#1}}}
@@ -485,47 +466,40 @@
 
 \let\@recthy at reqscr\mathscr
 \DeclareOptionX{reqscr}[mathscr]{\letcs{\@recthy at reqscr}{#1}}
+% \DeclareOptionX{beamerreq}[@recthy at EmptyStr@Default]{\letcs{\@recthy at EmptyStr}{#1}}
 
+\newcommand*{\@pmg at saveeqstate}{\let\@origif at fleqn@pmg=\if at fleqn \let\@origiftagsleft at pmg=\iftagsleft@}
+\newcommand*{\@pmg at restoreeqstate}{ \let\if at fleqn=\@origif at fleqn@pmg\let\iftagsleft@=\@origiftagsleft at pmg}
 
+
 \AtEndOfPackage{
 \ifrecthy at noreqhelper
     \@packinfo{Not loading requirement assist.}
 \else
     \@packinfo{Loading requirement assist.}
-    \newcommand*{\req at orig}[3][]{\ensuremath{\ifthenelse{\isempty{#1}}{\@recthy at reqscr{#2}_{#3}}{\@recthy at reqscr{#2}^{#1}_{#3}}}}
+    % \newcommand*{\req at beamer}[3][]{\ensuremath{\@recthy at reqscr{#2}^{#1}_{#3}}}
+    \newcommand*{\req at orig}[3]{\ensuremath{\@ifmtarg{#1}{\@recthy at reqscr{#2}_{#3}}{\@recthy at reqscr{#2}_{#3}^{#1}}}} 
+    \NewDocumentCommand{\req at nohref}{sO{}mO{}m}{\req at orig{#2#4}{#3}{#5}}
+    \NewDocumentCommand{\req at href}{O{}mO{}m}{\hyperref[\detokenize{req:#2@#1#3}]{\req at orig{#1#3}{#2}{#4}}}
 
-    \NewDocumentCommand{\req at href}{O{}mO{}m}{\@ifundefined{hyperref}{\req at orig[#1#3]{#2}{#4}}{\hyperref[\detokenize{req:#2@#1#3}]{\req at orig[#1#3]{#2}{#4}}}}
-    \NewDocumentCommand{\req at nohref}{O{}mO{}m}{\req at orig[#1#3]{#2}{#4}}
+   \NewDocumentCommand\req at href@star{s}{\IfBooleanTF#1{\req at nohref}{\req at href}}
+   \newcommand{\req}{\req at nohref}
     \ifrecthy at hyperreqs
-        \let\req=\req at href
-    \else
-        \let\req=\req at nohref
+      \AtBeginDocument{\@ifundefined{hyperref}{}{\let\req=\req at href@star}}
     \fi
-    \WithSuffix\def\req*{\req at nohref}
-    % \newsavebox{\@recthy at reqbox}
-    % \def\defreq#1#2\par{
-    %   \begin{equation}\let\veqno\@@leqno%
-    %       \tag*{#1}%
-    %       \begin{lrbox}{\@recthy at reqbox}%
- %   \begin{minipage}{\textwidth}#2\end{minipage}%
- %   \end{lrbox}%
- %   \makebox[0pt]{\usebox{\@recthy at reqbox}}%
-    %   \end{equation}}
+    
     \newtagform{colon}{}{:}
+    % \@ifclassloaded{beamer}{\def\setmmonefivecm{\@mathmargin{1.5cm}}}{\def\setmmonefivecm{\setlength\@mathmargin{1.5cm}}}%  
     \newenvironment{requirement}[1]{
-        \let\@origif at fleqn@pmg=\if at fleqn
-        \let\@origiftagsleft at pmg=\iftagsleft@
+        \@pmg at saveeqstate
         \@fleqntrue
         \setlength\@mathmargin{1.5cm}
         \tagsleft at true
         \usetagform{colon}
-        % \let\maketag@@@orig at pmg=\maketag@@@
-        % \def\maketag@@@#1{\hbox{\m at th\normalfont#1:}}
         \begin{equation}\tag{#1}
     }{
         \end{equation}
-        \let\if at fleqn=\@origif at fleqn@pmg
-        \let\iftagsleft@=\@origiftagsleft at pmg
+        \@pmg at restoreeqstate
         \usetagform{default}
         % \let\maketag@@@=\maketag@@@orig at pmg  
     }
@@ -535,26 +509,54 @@
     }{
         \end{requirement}%
     }
-    % \NewDocumentEnvironment{require*}{O{}mO{}m}{
-    %     \begin{requirement}{\req at nohref[#1#3]{#2}{#4}}%
-    % }{
-    %     \end{requirement}%
-    % }
+    \NewDocumentEnvironment{require*}{O{}mO{}m}{
+        \begin{requirement}{\req at nohref[#1#3]{#2}{#4}}
+    }{
+        \end{requirement}%
+    }
+
+
+
     \NewDocumentCommand{\refreq}{O{}mO{}}{\ref{\detokenize{req:#2@#1#3}}}
 
     \NewDocumentCommand{\require at nested}{sO{}mO{}m}{
-        \IfBooleanTF{#1}{\tag{\req at nohref[#2#4]{#3}{#5}}}{\tag{\req at nohref[#2#4]{#3}{#5}}\label{\detokenize{req:#3@#2#4}}}
+        \tag{\req at nohref[#2#4]{#3}{#5}}\IfBooleanTF{#1}{}{\label{\detokenize{req:#3@#2#4}}}
     }
-    % \newcommand*{\require at nested}{\require at nested@href}
-    % \WithSuffix\def\require at nested*{\require at nested@nohref}
-        % \NewDocumentEnvironment{require*}{O{}mO{}m}{
-        %     \tag{\req at nohref[#1#3]{#2}{#4}}%
-        % }{}
 
 
-    \NewDocumentEnvironment{requirements}{}{
-        \let\@origif at fleqn@pmg=\if at fleqn
-        \let\@origiftagsleft at pmg=\iftagsleft@
+
+\ifrecthy at beamersupp
+        \newtheorem{reqblock}{Requirements}
+    \let\OLDreqblock=\reqblock
+    \def\reqblock{%
+      \setbeamercolor{block title}{fg=white,bg=Maroon}%
+      \setbeamercolor{block body}{fg=black,bg=Maroon!10}\OLDreqblock
+    }
+
+      \NewDocumentCommand{\require at beamer}{sO{}mO{}m}{\tag{$\@ifmtarg{#2#4}{\mathscr{#3}_{#5}}{\mathscr{#3}_{#5}^{#2#4}}$} \IfBooleanTF{#1}{}{\label{\detokenize{req:#3@#2#4}}} & }
+
+    \NewDocumentEnvironment{BeamerRequirements}{d<>b}{\IfValueTF{#1}{\begin{reqblock}<#1>}{\begin{reqblock}}%
+    \vspace*{-.5cm}
+    \usetagform{colon} %
+          \let\myhalign\halign%
+            \def\halign{\let\mylb\\ \renewcommand{\\}{& \mylb}\myhalign}%
+          \let\require=\require at beamer %
+          \begin{flalign*}%
+          #2 &
+          \end{flalign*}%
+          \end{reqblock}}{}
+
+    \NewDocumentEnvironment{requirements}{b}{\usetagform{colon} %
+          \let\myhalign\halign%
+            \def\halign{\let\mylb\\ \renewcommand{\\}{& \mylb}\myhalign}%
+          \let\require=\require at beamer %
+          \begin{flalign*}%
+          #1 &
+          \end{flalign*}}{}
+    \else
+
+        \NewDocumentEnvironment{requirements}{}{
+        \@pmg at saveeqstate
         \@fleqntrue
         \setlength\@mathmargin{1.5cm}
         \tagsleft at true
@@ -565,12 +567,14 @@
         \gather
     }{
         \endgather
-        \let\if at fleqn=\@origif at fleqn@pmg
-        \let\iftagsleft@=\@origiftagsleft at pmg
+        \@pmg at restoreeqstate
         \usetagform{default}
         % \let\maketag@@@=\maketag@@@orig at pmg  
     }
 
+ \fi
+
+
 \fi
 }
 
@@ -663,8 +667,8 @@
     \providecommand*{\restr}[1]{\mathpunct{\restriction_{#1}}}
     \providecommand*{\ordpair}[2]{\left( #1, #2 \right) }
     %%%%%%%%Function commands
-    \let\recthy at rollback@threeTwo at threeOne@REA at mathsave=\recthy at rollback@threeTwo at threeOne@REA
-    \renewcommand*{\recthy at rollback@threeTwo at threeOne@REA}{
+
+    \appto{\recthy at rollback@threeTwo}{
         \providecommand*{\map}[2]{:##1\mapsto ##2}
         \providecommand*{\functo}[3]{##1\map{##2}{##3}}
         \ifdefined\funcomp
@@ -671,7 +675,6 @@
         \else
             \let\funcomp=\compfunc
         \fi
-        \recthy at rollback@threeTwo at threeOne@REA at mathsave
     }
 
     \providecommand*{\compfunc}{\mathbin{\circ}}
@@ -719,8 +722,8 @@
 \fi
 }
 
-\newcommand*{\@recthy at llangle}{\mathopen{\langle\!\langle}}
-\newcommand*{\@recthy at rrangle}{\mathclose{\rangle\!\rangle}}
+\newcommand*{\@recthy at llangle}{\langle\!\langle}
+\newcommand*{\@recthy at rrangle}{\rangle\!\rangle}
 
 
 
@@ -758,8 +761,11 @@
     \newcommand*{\godelnum}[1]{\left\ulcorner #1 \right\urcorner}
     \let\cornerquote=\godelnum
     \let\gcode=\godelnum
-    \recthy at strip{llangle}
-    \recthy at strip{rrangle}
+    \ifrecthy at nodoubleangles
+    \else
+      \let\llangle=\@recthy at llangle
+      \let\rrangle=\@recthy at rrangle
+    \fi
 \fi
 }
 
@@ -779,10 +785,10 @@
 \newcommand*{\@recthy at ComputablyEnumerable}{\@recthy at ensuretext{Computably enumerable}}
 \def\@recthy at REA{REA}
 \def\@recthy at CEA{CEA}
+\mathchardef\@recthy at mhyphen="2D % Define a "math hyphen"
+\NewDocumentCommand{\REA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy at mhyphen}{}\text{\@recthy at REA}\IfValueTF{#1}{(#1)}{}}}
+\NewDocumentCommand{\CEA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy at mhyphen}{}\text{\@recthy at CEA}\IfValueTF{#1}{(#1)}{}}}
 
-\NewDocumentCommand{\REA}{d()o}{\ensuremath{\IfValueTF{#2}{#2-}{}\text{\@recthy at REA}\IfValueTF{#1}{[#1]}{}}}
-\NewDocumentCommand{\CEA}{d()o}{\ensuremath{\IfValueTF{#2}{#2-}{}\text{\@recthy at CEA}\IfValueTF{#1}{[#1]}{}}}
-
 % \newcommand*{\@recthy at REA}{\ensuremath{\text{REA}}}
 % \WithSuffix\def\@recthy at REA[#1]{#1-\@recthy at REA\relax}
 % \newcommand*{\@recthy at CEA}{\ensuremath{\text{CEA}}}
@@ -857,8 +863,6 @@
 \newcommand*{\@recthy at nin}{\notin}
 \newcommand*{\@recthy at powset}[1]{\mathcal{P}\left(#1\right)}
 \newcommand*{\@recthy at eset}{\emptyset}
-% \newcommand*{\@recthy at setcmpminusSYM}{\backsim}
-% \newcommand*{\@recthy at setminuscmp}[1]{\mathop{\@recthy at setcmpminusSYM} #1}
 \newcommand*{\@recthy at setovercmp}[1]{\overline{#1}}
 \newcommand*{\@recthy at setsimcmp}[1]{\backsim #1}
 \let\@recthy at setcmp=\@recthy at setovercmp
@@ -918,6 +922,8 @@
         \let\forall at orig@recthy=\forall
         \newcommand*{\exists at recthy}{\exists at orig@recthy}
         \newcommand*{\forall at recthy}{\forall at orig@recthy}
+        % \NewDocumentCommand{\exists at paren@recthy}{O{}m}{\left(\exists at orig@recthy^{#1} #2 \right)\!}
+        % \NewDocumentCommand{\exists at brak@recthy}{O{}m}{\left[\exists at orig@recthy^{#1} #2 \right]\!}
         \let\nexists at orig@recthy=\nexists
         \newcommand*{\nexists at recthy}{\nexists at orig@recthy}
         \let\nforall at orig@recthy=\nforall
@@ -925,7 +931,6 @@
         \newcommand*{\existsuniq}{\exists at orig@recthy !}
         \newcommand*{\nexistsuniq}{\nexists at orig@recthy !}
 
-        \NewDocumentCommand{\axset}{D<>{}d()O{}d()}
         \WithSuffix\def\existsuniq(#1){\left(\existsuniq #1 \right)\!}
         \WithSuffix\def\nexistsuniq(#1){\left(\nexistsuniq #1 \right)\!}
         \WithSuffix\def\existsuniq[#1]{\left[\existsuniq #1 \right]\!}
@@ -947,7 +952,9 @@
         \WithSuffix\def\nexistsinf(#1){\left(\nexistsinf #1\right)\!}
         \WithSuffix\def\nexistsinf[#1]{\left[\nexistsinf #1\right]\!}
 
+
         \WithSuffix\def\exists at recthy(#1){\left(\exists #1 \right)\!}
+        % \NewDocumentCommand{\exists at recthy}{d()od()o}{\IfValueTF{#1}{\exists at paren@recthy{#1}}{\IfValueTF{#1}{\exists at brak@recthy{#2}} } }
         \WithSuffix\def\forall at recthy(#1){\left(\forall #1 \right)\!}
         \WithSuffix\def\nexists at recthy(#1){\left(\nexists #1 \right)\!}
         \WithSuffix\def\exists at recthy[#1]{\left[\exists #1 \right]\!}
@@ -1001,53 +1008,10 @@
 }
 
 
-%Strings
-\def\@recthy at concatSYM@Default{\widehat{\phantom{X}}}
-\def\@recthy at EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}}
-\let\@recthy at concatSYM\@recthy at concatSYM@Default
-\let\@recthy at EmptyStr\@recthy at EmptyStr@Default
 
-\DeclareOptionX{emptystr}[@recthy at EmptyStr@Default]{\letcs{\@recthy at EmptyStr}{#1}}
-\DeclareOptionX{concatsym}[@recthy at concatSYM@Default]{\letcs{\@recthy at concatSYM}{#1}}
-\newcommand*{\@recthy at pair}[2]{\mathopen{\@recthy at llangle} #1, #2 \mathclose{\@recthy at rrangle}}
 
-\NewDocumentCommand{\incompat at recthy}{o}{\mathrel{\mid}\IfValueTF{#1}{_{#1}}{}}
-\NewDocumentCommand{\compat at recthy}{o}{\mathrel{\not\mid}\IfValueTF{#1}{_{#1}}{}}
 
 \AtEndOfPackage{
-\ifrecthy at nostrings
-    \@packinfo{No strings loading.}
-\else
-    \@packinfo{Strings loading.}
-        \newcommand*{\closedn}[1]{{#1}^\blacktriangledown}
-    \newcommand*{\str}[1]{\mathopen{\langle}#1\mathclose{\rangle}}
-    \newcommand*{\code}[1]{\mathopen{\@recthy at llangle}#1\mathclose{\@recthy at rrangle}}
-    \newcommand*{\EmptyStr}{\@recthy at EmptyStr}
-    \newcommand*{\estr}{\EmptyStr}
-    \newcommand*{\decode}[2]{(#1)_{#2}}
-    \let\godelpair=\@recthy at pair
-    \let\gpair=\@recthy at pair
-    \newcommand*{\concat}{\@recthy at concatSYM}
-    \WithSuffix\def\concat[#1]{\concat\str{#1}}
-    \newcommand*{\strpred}[1]{{#1}^{-}}
-    \providecommand*{\lh}[2][]{\@recthy at abs{#2}_{#1}} %% Gives length of a string
-
-    \providecommand*{\incompat}{\incompat at recthy} %incompatible stringes FIX SPACING
-    \providecommand*{\incomp}{\incompat at recthy}
-    \providecommand*{\compat}{\compat at recthy}
-    \providecommand*{\nincompat}{\compat at recthy}
-    \providecommand*{\nincomp}{\compat at recthy}
-    \newcommand*{\setcol}[2]{{#1}^{[#2]}}
-    \ifrecthy at nopair
-        \@packinfo{No redefining pair.}
-    \else
-        \@packinfo{pair=godelpair.}
-        \let\pair=\@recthy at pair
-    \fi
-\fi
-}
-
-\AtEndOfPackage{
 \ifrecthy at notrees
     \@packinfo{No trees loading.}
 \else
@@ -1688,7 +1652,13 @@
     % \newcommand*{\recf}[3][]{\@recthy at recfSYM^{#1}_{#2}\ifthenelse{\isempty{#3}}{}{\left(#3\right)}} %If give an empty arg just print function no parens
     %\newcommand*{\brecf}[3][]{\brecfSYM^{#1}_{#2}\ifthenelse{\isempty{#3}}{}{\left(#3\right)}}
     %\recfnl[d]{i}{Y}{x} gives i-th d-recursive functional operating on set Y and integer x
-    \newcommand*{\recfnl}[4][]{\@recthy at recfnlSYM_{#2\ifthenelse{\isempty{#1}}{}{,{#1}} }%
+
+    \NewDocumentCommand{\recfnl at improved}{omm!g!d()}{{
+      \def\temp at pmg@arg{}
+      \IfValueTF{#4}{\ifthenelse{\isempty{#4}}{}{\def\temp at pmg@arg{; #4}}}{\IfValueTF{#5}{\ifthenelse{\isempty{#5}}{}{\def\temp at pmg@arg{; #5}}}}
+        \@recthy at recfnlSYM_{#2\IfValueT{#1}{, #1}}\ifthenelse{\isempty{#3}}{}{\!\left(#3\temp at pmg@arg \right)}
+    }}
+    \newcommand*{\recfnl at old}[4][]{\@recthy at recfnlSYM_{#2\ifthenelse{\isempty{#1}}{}{,{#1}} }%
         \ifthenelse{\isempty{#4}}%
         {\ifthenelse{\isempty{#3}}%
             {}% No args then print no parents
@@ -1696,6 +1666,10 @@
         }%If no oracle we just refer to the functional without any arguments
         {\ifthenelse{\isempty{#3}}{(#4)}{(#3;#4)}%
     }}
+    \let\recfnl=\recfnl at improved
+    \appto{\recthy at rollback@threeSix}{
+      \let\recfnl=\recfnl at old
+    }
     \NewDocumentCommand{\recf}{od()md()}{
         \@recthy at recfSYM_{#3\IfNoValueTF{#1}{}{\ifthenelse{\isempty{#3}}{}{, }{#1}}}\IfNoValueTF{#2}{}{^{#2}}\IfNoValueTF{#4}{}{(#4)}
     }
@@ -1746,10 +1720,9 @@
 %   \NewDocumentCommand{\nconv}{o}{\mathpunct{\mkern-4mu{\arrownot\mkern 4mu \downarrow}_{#1}}}
     \NewDocumentCommand{\nconv}{O{}}{\mathpunct{\mkern-4mu{\smallsetminus\mkern 4mu \downarrow}_{#1}}}
     \newcommand*{\diverge}{\mathpunct{\uparrow}}
-    % \newcommand*{\use}[2]{\mathscr{u}(#1\ifthenelse{\isempty{#2}}{}{,#2})}
     \newcommand*{\use}[1]{\mathop{\@recthy at useSYM}\left[#1\right]}
 % \newcommand*{\use}[1]{\ltx at ifpackageloaded{unicode-math}{\symbffrak{u}}{\mathfrak{u}}\left(#1\right)}
-    % \NewDocumentCommand{\REset}{omd()}{
+    % \NewDocumentCommand{\REset}{D(){}omd()}{
     % W_{#2\IfNoValueTF{#1}{}{, #1}}\IfNoValueTF{#3}{}{^{#3}}
     % }
 
@@ -1764,8 +1737,17 @@
     \fi}
     \WithSuffix\def\@REsetbody(#1){\def\@PMG at parenarg{#1}\@REsetbody}
     \WithSuffix\def\@REsetbody[#1]{\def\@PMG at braketarg{#1}\@REsetbody}
-    \NewDocumentCommand{\REAop}{st+d()od()mm}{{\IfBooleanTF{#1}{\mathcal{J}}{\widehat{\mathcal{J}}}}^{\IfBooleanTF{#1}{\vphantom{x}^\dagger}{}#7}_{#6\IfValueTF{#4}{, #4}{}} \IfValueTF{#3}{\left(#3\right)}{\IfValueTF{#5}{\left(#5\right)}{}}}
-    \NewDocumentCommand{\oneREAop}{st+d()od()m}{{\IfBooleanTF{#1}{\mathcal{J}}{\widehat{\mathcal{J}}}}^{\IfBooleanTF{#1}{\vphantom{x}^\dagger}{}}_{#6\IfValueTF{#4}{, #4}{}} \IfValueTF{#3}{\left(#3\right)}{\IfValueTF{#5}{\left(#5\right)}{}}}
+    \NewDocumentCommand{\Hop}{oD(){}mD(){}}{\mathcal{H}_{#3\IfValueTF{#1}{, #1}{}}\left(\ifthenelse{\isempty{#2#4}}{\eset}{#2#4} \right)}
+    \NewDocumentCommand{\REAop}{st+d()od()mm}{%
+      {\IfBooleanTF{#1}%
+        {\mathcal{J}}%
+        {\widehat{\mathcal{J}}}%
+      }^{%
+          \IfBooleanTF{#2}{\vphantom{x}^\dagger}{}%
+          #7}_{#6\IfValueTF{#4}{, #4}{}}%
+          \IfValueTF{#3}{\left(#3\right)}{\IfValueTF{#5}{\left(#5\right)}{}}%
+    }
+      \NewDocumentCommand{\oneREAop}{st+d()od()m}{{\IfBooleanTF{#1}{\mathcal{J}}{\widehat{\mathcal{J}}}}^{\IfBooleanTF{#1}{\vphantom{x}^\dagger}{}}_{#6\IfValueTF{#4}{, #4}{}} \IfValueTF{#3}{\left(#3\right)}{\IfValueTF{#5}{\left(#5\right)}{}}}
     \let\iREAop=\oneREAop
 
     \newcommand*{\entersat}[1]{\mathbin{\searrow_{#1}}}
@@ -1772,12 +1754,10 @@
     
 
     % \newcommand*{\alphaREAop}[2][]{\mathcal{J}^{#2}_{#1}}
-    \let\recthy at rollback@threeTwo at threeOne@REA at computationssave=\recthy at rollback@threeTwo at threeOne@REA
-    \renewcommand*{\recthy at rollback@threeTwo at threeOne@REA}{
+    \appto{\recthy at rollback@threeTwo}{
         \let\reaop=\REAop
         \let\alphaREAop=\REAop
         \let\aREAop=\alphaREAop
-        \recthy at rollback@threeTwo at threeOne@REA at computationssave
     }
 
 
@@ -1878,7 +1858,26 @@
 }
 
 
+%Strings
+  \def\@recthy at concatSYM@Default{\widehat{\phantom{X}}}
+  \def\@recthy at EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}}
+  \let\@recthy at concatSYM\@recthy at concatSYM@Default
+  \let\@recthy at EmptyStr\@recthy at EmptyStr@Default
 
+  \DeclareOptionX{emptystr}[@recthy at EmptyStr@Default]{\letcs{\@recthy at EmptyStr}{#1}}
+  \DeclareOptionX{concatsym}[@recthy at concatSYM@Default]{\letcs{\@recthy at concatSYM}{#1}}
+  \newcommand*{\@recthy at pair}[2]{\mathopen{\langle} #1, #2 \mathclose{\rangle}}
+  \newcommand*{\@recthy at str}[1]{\mathopen{\langle}#1\mathclose{\rangle}}
+  \newcommand*{\@recthy at code}[1]{\mathopen{\langle}#1\mathclose{\rangle}}
+
+  \appto{\recthy at rollback@threeSix}{
+    \renewcommand*{\@recthy at pair}[2]{\mathopen{\@recthy at llangle} #1, #2 \mathclose{\@recthy at rrangle}}
+    \def\@recthy at EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}}
+    % \renewcommand*{\@recthy at str}[1]{\mathopen{\langle}#1\mathclose{\rangle}}
+    \renewcommand*{\@recthy at code}[1]{\mathopen{\@recthy at llangle}#1\mathclose{\@recthy at rrangle}}
+    \newcommand*{\closedn}[1]{{#1}^\blacktriangledown}
+    }
+
 % \ProcessOptions*
 % \ProcessOptionsX<\@recthy at family>
 \ProcessOptionsX
@@ -1886,6 +1885,62 @@
 
 
 
+\NewDocumentCommand{\incompat at recthy}{o}{\mathrel{\mid}\IfValueTF{#1}{_{#1}}{}}
+\NewDocumentCommand{\compat at recthy}{o}{\mathrel{\not\mid}\IfValueTF{#1}{_{#1}}{}}
 
+\ifrecthy at nostrings
+    \@packinfo{No strings loading.}
+\else
+    \@packinfo{Strings loading.}
+    \let\code=\@recthy at code
+    \let\str=\@recthy at str
+    \newcommand*{\EmptyStr}{\@recthy at EmptyStr}
+    \newcommand*{\estr}{\EmptyStr}
+    \newcommand*{\decode}[2]{(#1)_{#2}}
+    \let\godelpair=\@recthy at pair
+    \let\gpair=\@recthy at pair
+    \newcommand*{\concat}{\@recthy at concatSYM}
+    \WithSuffix\def\concat[#1]{\concat\str{#1}}
+    \newcommand*{\strpred}[1]{{#1}^{-}}
+    \providecommand*{\lh}[2][]{\@recthy at abs{#2}_{#1}} %% Gives length of a string
 
+    \providecommand*{\incompat}{\incompat at recthy} %incompatible stringes FIX SPACING
+    \providecommand*{\incomp}{\incompat at recthy}
+    \providecommand*{\compat}{\compat at recthy}
+    \providecommand*{\nincompat}{\compat at recthy}
+    \providecommand*{\nincomp}{\compat at recthy}
+    % \newcommand*{\setcol}[2]{{#1}^{[#2]}}
+    \ExplSyntaxOn %thx stackexghance
+      \NewDocumentCommand \setcol {m m}
+      {
+        \bool_lazy_and:nnTF
+          { \int_compare_p:nNn { \tl_count:n {#1} } = 3 }
+          { \tl_if_head_eq_meaning_p:nN {#1} \setcol }
+          {
+            \pgerdes_setcol_special:nnnn #1 {#2}
+          }
+          {
+            \pgerdes_setcol_normal:nn {#1} {#2}
+          }
+      }
+      \cs_new:Npn \pgerdes_setcol_special:nnnn #1 #2 #3 #4
+      {
+        {#2} \sp { [#3] [#4] }
+      }
+      \cs_new:Npn \pgerdes_setcol_normal:nn #1 #2
+      {
+        {#1} \sp { [#2] }
+      }
+    \ExplSyntaxOff
 
+    \ifrecthy at nopair
+        \@packinfo{No redefining pair.}
+    \else
+        \@packinfo{pair=godelpair.}
+        \let\pair=\@recthy at pair
+    \fi
+\fi
+
+
+
+



More information about the tex-live-commits mailing list.