177 lines
3.8 KiB
Plaintext
177 lines
3.8 KiB
Plaintext
|
%% 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
|