Ian Jauslin
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jauslin <ian@jauslin.org>2022-06-14 16:32:34 +0200
committerIan Jauslin <ian@jauslin.org>2022-06-14 16:32:34 +0200
commitd254a3e3f495e9cd3110ae48020786466d850d57 (patch)
treec88e465b5bc2aff974daaa3617adf615a0b68880 /libs/iantheo.sty
Initial commitv1.0
Diffstat (limited to 'libs/iantheo.sty')
-rw-r--r--libs/iantheo.sty162
1 files changed, 162 insertions, 0 deletions
diff --git a/libs/iantheo.sty b/libs/iantheo.sty
new file mode 100644
index 0000000..d33a93d
--- /dev/null
+++ b/libs/iantheo.sty
@@ -0,0 +1,162 @@
+%%
+%% 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