\ProvidesClass{tmr}
\LoadClass[12pt,twoside,DIV10]{scrreprt}
\RequirePackage{scrpage2}
\RequirePackage{relsize}
\RequirePackage[colorlinks=true,
linkcolor=black,
urlcolor=black,
citecolor=black]{hyperref}
\RequirePackage{ae}
\RequirePackage{paralist}
\RequirePackage{amsthm}
\RequirePackage{amssymb}
\RequirePackage{graphicx}
% title
\global\let\@authors\@empty
\global\let\email\@gobble
\newif\ifcomplete
\newif\iftikz
\DeclareOption{complete}{\completetrue}
\DeclareOption{secheadings}{\AtBeginDocument{\setcounter{tocdepth}{1}}}
\DeclareOption{tikz}{\tikztrue}
\AtBeginDocument{\setcounter{tocdepth}{0}}
\ProcessOptions
\ifcomplete
\RequirePackage{multibbl}
\title{The Monad.Reader\@issue}
\fi
\iftikz
\RequirePackage{tikz}
\fi
\let\@issue\empty
\def\issue#1{\gdef\@issue{ #1}}%
\renewcommand\titlepagestyle{empty}
\renewcommand*\maketitle{\par
\ifcomplete
\@ifundefined{@firsttitle}{%
\dedication{\vspace*{0.2cm}\begin{center}\tmrlogo\end{center}\vspace*{0.5cm}}}{}%
\fi
\begingroup
\renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
\let\@oldmakefnmark\@makefnmark
\def\@makefnmark{\rlap\@oldmakefnmark}
\newpage
\global\@topnum\z@ % Prevents figures from going at top of page.
\@maketitle
\thispagestyle{\titlepagestyle}\@thanks
\endgroup
\setcounter{footnote}{0}%
\ifcomplete
\@ifundefined{@firsttitle}{%
\@namedef{@firsttitle}{}}{%
\refstepcounter{chapter}%
% wild hack to get a reasonable entry for the TOC, including author and title
\addcontentsline{toc}{chapter}{{\normalfont \@author}\texorpdfstring{\\ \leavevmode\hspace*{-\leftskip}}{: }\@title}}%
\fi
\let\thanks\relax
%\let\maketitle\relax
%\let\@maketitle\relax
\global\let\@thanks\@empty
%\global\let\@author\@empty
\global\let\@date\@empty
%\global\let\@title\@empty
\global\let\@extratitle\@empty
\global\let\@titlehead\@empty
\global\let\@subject\@empty
\global\let\@publishers\@empty
\global\let\@uppertitleback\@empty
\global\let\@lowertitleback\@empty
\global\let\@dedication\@empty
\ifcomplete\else
\global\let\author\relax
\global\let\title\relax
\global\let\extratitle\relax
\global\let\titlehead\relax
\global\let\subject\relax
\global\let\publishers\relax
\global\let\uppertitleback\relax
\global\let\lowertitleback\relax
\global\let\dedication\relax
\global\let\date\relax
\global\let\and\relax
\fi}
\def\author#1{%
%\message{author called: #1.}%
\def\@cauthor{#1}%
\if\@cauthor\@empty
\global\let\@author\@empty
\global\let\@authors\@empty
\else
\ifx\@authors\@empty
\gdef\@author{#1}%
\gdef\@authors{by #1}%
\else
\g@addto@macro\@author{, #1}%
\g@addto@macro\@authors{\\ and #1}%
\fi
\fi}
\def\@maketitle{%
\clearpage
\let\footnote\thanks
\ifx\@extratitle\@empty \else
\noindent\@extratitle \next@tpage \if@twoside \null\next@tpage \fi
\fi
\ifx\@titlehead\@empty \else
\noindent\begin{minipage}[t]{\textwidth}
\@titlehead
\end{minipage}\par
\fi
\null
\vskip 4em%
\begin{flushleft}%
\ifx\@subject\@empty \else
{\Large \@subject \par}
\vskip 1.5em
\fi
{\sectfont\Huge \@title \par}%
\vskip 1.5em%
{\large
\lineskip .5em%
\sffamily
\def\email##1{{\ \smaller$\langle$##1$\rangle$}}%
\begin{tabular}[t]{@{}l@{}}%
\@authors
\end{tabular}\par}%
\vskip 1em%
{\large\sffamily \@date \par}%
\vskip \z@ \@plus 1em
\ifx\@dedication\@empty \else
\vskip 2em
{\Large \@dedication \par}
\fi
{\Large\sffamily \@publishers \par}
\end{flushleft}%
\par
\vskip 2em}
\setcounter{secnumdepth}{-1}
\AtBeginDocument{\@@maketitle}
\ifcomplete
\AtBeginDocument{\musthavepagestyle{empty}}
\fi
\def\tmrlogo{\includegraphics[scale=0.6]{tmr_logo.pdf}}
% page style
\pagestyle{scrheadings}
\lehead{\small\normalfont\TMR\@issue}
\rohead{\small\normalfont\@author: \@title}
\ofoot[\small\pagemark]{\small\pagemark}
% counters
\renewcommand{\thefigure}{\arabic{figure}}
% fonts
\renewcommand{\bfdefault}{b}
\DeclareRobustCommand\em{\@nomath\em\bfseries}
% introduction environment
\newenvironment{introduction}
{\normalfont\itshape\noindent\ignorespaces}
{\ignorespacesafterend}
% math
\RequirePackage{amsmath}
\numberwithin{equation}{chapter}
\renewcommand{\theequation}{\arabic{equation}}
% floats
\RequirePackage{float}
\newcommand{\fs@tmr}{%
\def\@fs@cfont{\sectfont}%
\def\@fs@capt{\floatc@plain}%
\def\@fs@pre{\hrule\kern12pt}%
%\color{lightgray}%
%\setbox\@currbox\vbox{\hbadness10000
%\moveleft3.4pt\vbox{\advance\hsize by6.8pt%
%\hrule\hbox to\hsize{\vrule\kern3pt
%\vbox{\kern3pt\box\@currbox\kern3pt}\kern3pt
%\color{lightgray}\vrule}\color{lightgray}\hrule}}}%
\def\@fs@mid{\hrule\kern7pt}%
\def\@fs@post{}\let\@fs@iftopcapt\iffalse}
\floatstyle{tmr}
\floatplacement{figure}{htbp}
\restylefloat{figure}
\floatplacement{table}{htbp}
\restylefloat{table}
\newfloat{listing}{htbp}{ltg}
\floatname{listing}{Listing}
% verbatim
\RequirePackage{fancyvrb}
%\DefineShortVerb{\|}
\AtBeginDocument{\VerbatimFootnotes}
% verbatim requires a workaround for tabulars
\let\tmr@tabular\tabular
\let\tmr@endtabular\endtabular
\def\tabular{\UndefineShortVerb{\|}\tmr@tabular}
\def\endtabular{\tmr@endtabular\DefineShortVerb{\|}}
% blocks
\thm@headfont{\sectfont}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}
\let\amsnewtheorem\newtheorem
\def\newtheorem#1{\amsnewtheorem{#1}[theorem]}
\newtheorem{lemma}{Lemma}
\newtheorem{corollary}{Corollary}
\theoremstyle{definition}
\newtheorem{definition}{Definition}
\newtheorem{remark}{Remark}
\newtheorem{example}{Example}
\newtheorem{exercise}{Exercise}
% TMR logo
\def\TMR{{\normalfont\sffamily The Monad.Reader}}
% Itemize / Enumerate
\renewcommand{\labelitemi}{\raisebox{1.3pt}{\footnotesize$\blacktriangleright$}}
\renewcommand{\labelitemii}{$\bullet$}
\renewcommand{\labelitemiii}{$\circ$}
\let\longitem\itemize
\let\endlongitem\enditemize
\let\longenum\enumerate
\let\endlongenum\endenumerate
\let\itemize\compactitem
\let\enditemize\endcompactitem
\let\enumerate\compactenum
\let\endenumerate\endcompactenum
% Bibliography
\ifcomplete\else
\bibliographystyle{tmr}
\fi
\def\urlprefix{}
\newcommand*\refname{References}
\renewcommand*\bib@heading{\section*{\refname}\small}
% Discouraging all sorts of commands
\let\musthavefootnote\footnote
\def\footnote{%
\ClassError{tmr}%
{footnote should not be used}%
{The TMR style guidelines say that footnotes should be avoided
if at all possible. If you absolutely need one, use
\string\musthavefootnote\space instead.}}
\def\abstract{%
\ClassError{tmr}%
{abstract is not available}%
{There should be no abstract for TMR articles. Instead, a short
introduction can be given using the introduction environment.}
\introduction}
\let\endabstract\endintroduction
\let\@@maketitle\maketitle
\def\maketitle{%
\ClassError{tmr}%
{maketitle is not needed}%
{The TMR class automatically inserts the title if you set
use \string\title\space and \string\author\space in the document preamble.}}
\let\musthavesubsubsection\subsubsection
\def\subsubsection{%
\ClassError{tmr}%
{subsubsection should not be used}%
{The TMR style guidelines ask you to use only two sectioning
levels. If you absolutely need this, use
\string\musthavesubsubsection\space or
\string\paragraph\space instead.}%
\musthavesubsubsection}
\let\subparagraph\undefined
\let\musthavepagestyle\pagestyle
\def\pagestyle{%
\ClassError{tmr}%
{please do not change the pagestyle}%
{The TMR style guidelines ask you to touch the default pagestyle.
If you absolutely must do it, use
\string\musthavepagestyle\space instead.}}
% For the complete magazine
\setcounter{tocdepth}{2}
\let\@@pkgextension\@pkgextension
\let\@@ifl@aded\@ifl@aded
\def\article#1{%
\begingroup
\cleardoublepage
\musthavepagestyle{scrheadings}%
\global\let\@author\@empty
\global\let\@title\@empty
\global\let\@cauthor\@empty
\global\let\@authors\@empty
\newbibliography{#1}%
\bibliographystyle{#1}{tmr}%
\let\tmr@cite\cite
\let\tmr@bibliography\bibliography
\renewcommand\cite[2][]{%
\def\tmr@temp{##1}%
\ifx\tmr@temp\empty
\def\tmr@temp{\tmr@cite{#1}{##2}}%
\else
\def\tmr@temp{\tmr@cite[##1]{#1}{##2}}%
\fi\tmr@temp}
\renewcommand\bibliography[1]{\tmr@bibliography{#1}{##1}{References}}%
\renewcommand\documentclass[2][]{}%
% \def\usepackage{\@ifnextchar[\@checkpackages{\@checkpackages[]}}
\renewcommand\usepackage[2][]{\@checkpackages{##2}}%
\def\document{\@@maketitle}\let\enddocument\empty
\input{#1}%
\endgroup
}
% fix bug in multibbl
\ifcomplete
\def\@citex[#1]#2#3{%
\let\@citea\@empty
\@cite{\@for\@citeb:=#3\do
{\@citea\def\@citea{,\penalty\@m\ }%
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
\@ifundefined{#2@auxfile}{}{\expandafter\immediate%
\write\csname #2@auxfile\endcsname{\string\citation{\@citeb}}}%
\@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}%
\G@refundefinedtrue
\@latex@warning
{Citation `\@citeb' on page \thepage \space undefined}}%
{\hbox{\csname b@\@citeb\endcsname}}}}{#1}}
\fi
\def\@checkpackages#1{%
\def\reserved@b##1,{%
\ifx\@nil##1\relax\else
\ifx\relax##1\relax\else
\noexpand\@checkpackage##1[]%\noexpand\@@pkgextension
\fi
\expandafter\reserved@b
\fi}%
\edef\reserved@a{\zap@space#1 \@empty}%
\edef\reserved@a{\expandafter\reserved@b\reserved@a,\@nil,}%
\reserved@a}
\def\@checkpackage#1[]{%
\@@ifl@aded\@@pkgextension{#1}{}{
\ClassError{tmr}%
{package #1 not loaded}%
{Package #1 is required by an article, but has not been loaded in the
preamble.}}}