163 lines
3.3 KiB
Plaintext
163 lines
3.3 KiB
Plaintext
|
%%
|
||
|
%% 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
|