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