\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{simurgh-doc}
         [2013/12/01 v0.01a simurgh documentation class]
\DeclareOption*{%
    \PassOptionsToClass  {\CurrentOption}{ltxdoc}}
\ProcessOptions
\LoadClass{ltxdoc}
\RequirePackage{xcolor}
\RequirePackage{minted}
\RequirePackage{graphicx}
\RequirePackage{fontspec}
\RequirePackage[pdfborder={0 0 0},bookmarksnumbered]{hyperref}
\RequirePackage[left=4cm,right=2.25cm,top=2.5cm,bottom=2.5cm,nohead]{geometry}
\RequirePackage{makeidx}
\RequirePackage{microtype}

\def\simurgh{\textsc{simurgh}}

\newbox\simurghlogobox
\sbox\simurghlogobox{\includegraphics[height=0.5in,keepaspectratio=true]{simurgh-logo}}

\def\ps@docheadings{%
      \let\@oddhead\@empty
      \def\@oddfoot{\parbox{\textwidth}{\hfill\raisebox{0.2in}{\leftmark}\quad\raisebox{0.2in}{\thepage}\qquad\usebox\simurghlogobox}}%
      \let\@mkboth\markboth
    \def\sectionmark##1{%
      \markboth {%
        ##1}{}}}
        
\renewcommand\section{\@startsection {section}{1}{\z@}%
                                   {-3.5ex \@plus -1ex \@minus -.2ex}%
                                   {2.3ex \@plus.2ex}%
                                   {\normalfont\Large\bfseries\color{red!65!black}}}
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
                                     {1.5ex \@plus .2ex}%
                                     {\normalfont\large\bfseries\color{red!65!black}}}
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
                                     {1.5ex \@plus .2ex}%
                                     {\normalfont\normalsize\bfseries\color{red!65!black}}}
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
                                    {3.25ex \@plus1ex \@minus.2ex}%
                                    {-1em}%
                                    {\normalfont\normalsize\bfseries\color{red!65!black}}}
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
                                       {3.25ex \@plus1ex \@minus .2ex}%
                                       {-1em}%
                                      {\normalfont\normalsize\bfseries\color{red!65!black}}}        
                                      
                                      
\def\@undottedtocline#1#2#3#4#5{%
  \ifnum #1>\c@tocdepth \else
    \vskip \z@ \@plus.2\p@
    {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
     \parindent #2\relax\@afterindenttrue
     \interlinepenalty\@M
     \leavevmode
     \@tempdima #3\relax
     \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
     {#4}\nobreak
        \hfill
     \nobreak
     \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
     \par}%
  \fi}
\renewcommand*\l@subsection{\@undottedtocline{2}{\z@}{2.3em}}
\renewcommand*\l@subsubsection{\@undottedtocline{3}{\z@}{3.2em}}
\renewcommand*\l@paragraph{\@undottedtocline{4}{\z@}{4.1em}}
\renewcommand*\l@subparagraph{\@undottedtocline{5}{\z@}{5em}}
\renewcommand*\l@figure{\@undottedtocline{1}{\z@}{2.3em}}
\let\l@table\l@figure

\renewcommand\tableofcontents{%
    \section*{\contentsname
        \@mkboth{%
           \contentsname}{\contentsname}}%
    \@starttoc{toc}%
    }

\providecommand\href[2]{\texttt{#1}}

\colorlet{examplefill}{yellow!80!black}
\definecolor{graphicbackground}{rgb}{0.96,0.96,0.8}
\definecolor{codebackground}{rgb}{0.8,0.8,1}

\newcommand{\smplfile}[1]{\par\smallskip\noindent\llap{\color{blue!65!black}\vtop to0pt{\llap{\textbf{\textsc{sample}}}\vskip-3pt\llap{\texttt{#1}}\vss}\ \ }}
\newcommand{\defaultkeyval}{\llap{\color{orange!85!black}\textbf{\textsc{default}}\hskip\leftmargin}}

\newenvironment{simurghmanualentry}{\list{}{\leftmargin=2em\itemindent-\leftmargin\def\makelabel##1{\hss##1}}}{\endlist}
\newcommand\simurghmanualentryheadline[1]{\itemsep=0pt\parskip=0pt\item\strut#1\par\topsep=0pt}
\newcommand\simurghmanualbody{\parskip3pt}

\newenvironment{command}[1]{
  \begin{simurghmanualentry}
    \extractcommand#1\@@
    \simurghmanualbody
}
{
  \end{simurghmanualentry}
}

\def\extractcommand#1#2\@@{%
  \simurghmanualentryheadline{\declare{\texttt{\string#1}}#2}%
  \removeats{#1}%
  \index{\strippedat @\protect\myprintocmmand{\strippedat}}}


\renewenvironment{environment}[1]{
  \begin{simurghmanualentry}
    \extractenvironement#1\@@
    \simurghmanualbody
}
{
  \end{simurghmanualentry}
}

\def\extractenvironement#1#2\@@{%
  \simurghmanualentryheadline{{\ttfamily\char`\\begin\char`\{\declare{#1}\char`\}}#2}%
  \simurghmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}%
  \simurghmanualentryheadline{{\ttfamily\char`\\end\char`\{\declare{#1}\char`\}}}%
  \index{#1@\protect\texttt{#1} environment}%
  \index{Environments!#1@\protect\texttt{#1}}}
  
\newenvironment{package}[1]{
  \begin{simurghmanualentry}
    \simurghmanualentryheadline{{\ttfamily\char`\\usepackage\opt{[\meta{options}]}\char`\{\declare{#1}\char`\}}}
    \index{#1@\protect\texttt{#1} package}%
    \index{Packages and files!#1@\protect\texttt{#1}}%
    \simurghmanualbody
}
{
  \end{simurghmanualentry}
}



\newenvironment{filedescription}[1]{
  \begin{simurghmanualentry}
    \simurghmanualentryheadline{File {\ttfamily\declare{#1}}}%
    \index{#1@\protect\texttt{#1} file}%
    \index{Packages and files!#1@\protect\texttt{#1}}%
    \simurghmanualbody
}
{
  \end{simurghmanualentry}
}


\newenvironment{packageoption}[1]{
  \begin{simurghmanualentry}
    \simurghmanualentryheadline{{\ttfamily\char`\\usepackage[\declare{#1}]\char`\{simurgh\char`\}}}
    \index{#1@\protect\texttt{#1} package option}%
    \index{Package options for \textsc{simurgh}!#1@\protect\texttt{#1}}%
    \simurghmanualbody
}
{
  \end{simurghmanualentry}
}



\newcommand\opt[1]{{\color{black!50!green}#1}}
\newcommand\ooarg[1]{{\ttfamily[}\meta{#1}{\ttfamily]}}

\let\oarg\simurgh@undefined
\providecommand\oarg[1]{%
  {\color{black!50!green}{\ttfamily[}\meta{#1}{\ttfamily]}}}
  



\def\opt{\afterassignment\simurghmanualopt\let\next=}
\def\simurghmanualopt{\ifx\next\bgroup\bgroup\color{black!50!green}\else{\color{black!50!green}\next}\fi}




\def\pdf{\textsc{pdf}}


{
  \makeatletter
  \global\let\myempty=\@empty
  \global\let\mygobble=\@gobble
  \makeatother
  \gdef\getridofats#1@#2\relax{%
    \def\getridtest{#2}%
    \ifx\getridtest\myempty%
      \expandafter\def\expandafter\strippedat\expandafter{\strippedat#1}
    \else%
      \expandafter\def\expandafter\strippedat\expandafter{\strippedat#1\protect\printanat}
      \getridofats#2\relax%
    \fi%
  }

  \gdef\removeats#1{%
    \let\strippedat\myempty%
    \edef\strippedtext{\stripcommand#1}%
    \expandafter\getridofats\strippedtext @\relax%
  }
  
  \gdef\stripcommand#1{\expandafter\mygobble\string#1}
}

\def\printanat{\char`\@}

\def\declare{\afterassignment\simurghmanualdeclare\let\next=}
\def\simurghmanualdeclare{\ifx\next\bgroup\bgroup\color{red!75!black}\else{\color{red!75!black}\next}\fi}

\def\example{\par\smallskip\noindent\textit{Example: }}

\def\itemoption#1{\item \declare{\texttt{#1}}%
  \indexoption{#1}%
}

\def\indexoption#1{%
  \index{#1@\protect\texttt{#1} option}%
  \index{Options!#1@\protect\texttt{#1}}%
}

\let\textoken=\command
\let\endtextoken=\endcommand

\def\myprintocmmand#1{\texttt{\char`\\#1}}


\def\index@prologue{\section*{Index}\addcontentsline{toc}{section}{Index}}
\c@IndexColumns=2
  \def\theindex{\@restonecoltrue
    \columnseprule \z@  \columnsep 35\p@
    \twocolumn[\index@prologue]%
     \@mkboth{\indexname}%
                     {\indexname}%
       \parindent -30pt
       \columnsep 15pt
       \parskip 0pt plus 1pt
       \leftskip 30pt
       \rightskip 0pt plus 2cm
       \small
       \def\@idxitem{\par}%
    \let\item\@idxitem \ignorespaces}
  \def\endtheindex{\onecolumn}
\def\noindexing{\let\index=\@gobble}
  

\endinput
