From e72af82c3ed16b81cdb5043c58abbdbb3cf02102 Mon Sep 17 00:00:00 2001
From: Ian Jauslin <ian@jauslin.org>
Date: Mon, 4 Oct 2021 11:12:34 -0400
Subject: Initial commit

---
 doc/libs/iantheo.sty | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 176 insertions(+)
 create mode 100644 doc/libs/iantheo.sty

(limited to 'doc/libs/iantheo.sty')

diff --git a/doc/libs/iantheo.sty b/doc/libs/iantheo.sty
new file mode 100644
index 0000000..1945a5f
--- /dev/null
+++ b/doc/libs/iantheo.sty
@@ -0,0 +1,176 @@
+%% Copyright 2021 Ian Jauslin
+%% 
+%% Licensed under the Apache License, Version 2.0 (the "License");
+%% you may not use this file except in compliance with the License.
+%% You may obtain a copy of the License at
+%% 
+%%     http://www.apache.org/licenses/LICENSE-2.0
+%% 
+%% Unless required by applicable law or agreed to in writing, software
+%% distributed under the License is distributed on an "AS IS" BASIS,
+%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+%% See the License for the specific language governing permissions and
+%% limitations under the License.
+
+%%
+%% iantheorem package:
+%%   Ian's customized theorem command
+%%
+
+%% boolean to signal that this package was loaded
+\newif\ifiantheo
+
+%% TeX format
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+
+%% package name
+\ProvidesPackage{iantheo}[2016/11/10]
+
+%% options
+\newif\ifsectionintheo
+\DeclareOption{section_in_theo}{\sectionintheotrue}
+\DeclareOption{no_section_in_theo}{\sectionintheofalse}
+\newif\ifsubsectionintheo
+\DeclareOption{subsection_in_theo}{\subsectionintheotrue}
+\DeclareOption{no_subsection_in_theo}{\subsectionintheofalse}
+
+\def\iantheo@defaultoptions{
+  \ExecuteOptions{section_in_theo, no_subsection_in_theo}
+  \ProcessOptions
+
+  %%% reset at every new section
+  \ifsectionintheo
+    \let\iantheo@oldsection\section
+    \gdef\section{\setcounter{theocount}{0}\iantheo@oldsection}
+  \fi
+
+  %% reset at every new subsection
+  \ifsubsectionintheo
+    \let\iantheo@oldsubsection\subsection
+    \gdef\subsection{\setcounter{theocount}{0}\iantheo@oldsubsection}
+  \fi
+}
+
+
+%% delimiters
+\def\delimtitle#1{
+  \par%
+  \leavevmode%
+  \raise.3em\hbox to\hsize{%
+    \lower0.3em\hbox{\vrule height0.3em}%
+    \hrulefill%
+    \ \lower.3em\hbox{#1}\ %
+    \hrulefill%
+    \lower0.3em\hbox{\vrule height0.3em}%
+  }%
+  \par\penalty10000%
+}
+
+%% callable by ref
+\def\delimtitleref#1{
+  \par%
+%
+  \ifdefined\ianclass%
+    % hyperref anchor%
+    \hrefanchor%
+    % define tag (for \label)%
+    \xdef\tag{#1}%
+  \fi%
+%
+  \leavevmode%
+  \raise.3em\hbox to\hsize{%
+    \lower0.3em\hbox{\vrule height0.3em}%
+    \hrulefill%
+    \ \lower.3em\hbox{\bf #1}\ %
+    \hrulefill%
+    \lower0.3em\hbox{\vrule height0.3em}%
+  }%
+  \par\penalty10000%
+}
+
+%% no title
+\def\delim{
+  \par%
+  \leavevmode\raise.3em\hbox to\hsize{%
+    \lower0.3em\hbox{\vrule height0.3em}%
+    \hrulefill%
+    \lower0.3em\hbox{\vrule height0.3em}%
+  }%
+  \par\penalty10000%
+}
+
+%% end delim
+\def\enddelim{
+  \par\penalty10000%
+  \leavevmode%
+  \raise.3em\hbox to\hsize{%
+    \vrule height0.3em\hrulefill\vrule height0.3em%
+  }%
+  \par%
+}
+
+
+%% theorem
+% counter
+\newcounter{theocount}
+% booleans (write section or subsection in equation number)
+\def\theo#1{
+  \stepcounter{theocount}
+  \ifdefined\ianclass
+    % hyperref anchor
+    \hrefanchor
+  \fi
+  % the number
+  \def\formattheo{\thetheocount}
+  % add subsection number
+  \ifsubsectionintheo
+    \let\tmp\formattheo
+    \edef\formattheo{\thesubsectioncount.\tmp}
+  \fi
+  % add section number
+  \ifsectionintheo
+    \let\tmp\formattheo
+    \edef\formattheo{\sectionprefix\thesectioncount.\tmp}
+  \fi
+  % define tag (for \label)
+  \xdef\tag{\formattheo}
+  % write
+  \delimtitle{\bf #1 \formattheo}
+}
+\let\endtheo\enddelim
+%% theorem headers with name
+\def\theoname#1#2{
+  \theo{#1}\hfil({\it #2})\par\penalty10000\medskip%
+}
+
+
+%% qed symbol
+\def\qedsymbol{$\square$}
+\def\qed{\penalty10000\hfill\penalty10000\qedsymbol}
+
+
+%% compatibility with article class
+\ifdefined\ianclasstrue
+  \relax
+\else
+  \def\thesectioncount{\thesection}
+  \def\thesubsectioncount{\thesubsection}
+  \def\sectionprefix{}
+\fi
+
+
+%% prevent page breaks after displayed equations
+\newcount\prevpostdisplaypenalty
+\def\nopagebreakaftereq{
+  \prevpostdisplaypenalty=\postdisplaypenalty
+  \postdisplaypenalty=10000
+}
+%% back to previous value
+\def\restorepagebreakaftereq{
+  \postdisplaypenalty=\prevpostdisplaypenalty
+}
+
+
+%% end
+\iantheo@defaultoptions
+\endinput
-- 
cgit v1.2.3-54-g00ecf

