%latex2e declaration
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{iitcsw}[2002/01/29 homework class]
\newif\ifiitcsweightbit
\iitcsweightbitfalse
\newif\ifiitcswfancy
\iitcswfancyfalse
\newif\ifiitcswdraft
\iitcswdraftfalse
\newif\ifiitcswremarks
\iitcswremarksfalse
\newif\ifiitcswanswers
\iitcswanswersfalse
% wide margins
\newif\ifiitcswwide
\iitcswwidetrue
\newif\ifiitcswrecpt
\iitcswrecpttrue
\newif\ifiitcswpairs
\iitcswpairstrue
\newif\ifiitcsw@fontload % Whether or not we need to load hebfont
\iitcsw@fontloadfalse
\newcommand{\iitcsw@quesPageBreak}{}
\newcommand{\iitcsw@articledraft}{}
\DeclareOption{enccp862}{\providecommand{\iitcsw@inputenc}{cp862}}%
\DeclareOption{enc8859-8}{\providecommand{\iitcsw@inputenc}{8859-8}}%
\DeclareOption{enccp1255}{\providecommand{\iitcsw@inputenc}{cp1255}}%
\DeclareOption{encsi960}{\providecommand{\iitcsw@inputenc}{si960}}%
\DeclareOption{eightbit}{\iitcsweightbittrue}
\DeclareOption{fancy}{\iitcswfancytrue}
\DeclareOption{nofancy}{\iitcswfancyfalse}
\DeclareOption{wide}{\iitcswwidetrue}
\DeclareOption{nowide}{\iitcswwidefalse}
\DeclareOption{draft}{%
\iitcswdrafttrue%
\renewcommand{\iitcsw@articledraft}{draft}%
}
\DeclareOption{final}{\iitcswdraftfalse}
\DeclareOption{remarks}{\iitcswremarkstrue}
\DeclareOption{noremarks}{\iitcswremarksfalse}
% Should I leave both "answers" and "remarks"?
\DeclareOption{answers}{\iitcswanswerstrue}
\DeclareOption{noanswers}{\iitcswanswersfalse}
\DeclareOption{recpt}{\iitcswrecptstrue}
\DeclareOption{norecpt}{\iitcswrecptfalse}
\DeclareOption{pairs}{\iitcswpairsstrue}
\DeclareOption{nopairs}{\iitcswpairsfalse}
\DeclareOption{pagebreak}{\renewcommand{\iitcsw@quesPageBreak}{\pagebreak}}
\DeclareOption{nopagebreak}{\renewcommand{\iitcsw@quesPageBreak}{}}
\ProcessOptions
% set the option "answers" if LatexMake set it
\ifx\LatexMakeAnswerSwitch\@undefined\else\iitcswanswerstrue\fi
\LoadClass[11pt,\iitcsw@articledraft]{article}
% I don't feel like leaaving wide margins. I would use wider margins for what
% I submit, though. 'wide' is currently on by default. (Tzafrir)
\ifiitcswwide%
\RequirePackage{a4wide}% has to come before 'onehalfspacing, if that one is
% used
%\RequirePackage[top=3cm,bottom=4cm,left=3cm,right=3cm]{geometry}%
\fi
\ifiitcswanswers%
% If this form is typeset with answers
\iitcsw@fontloadtrue%
\fi
\ifiitcsweightbit%
\newcommand{\HeblatexEightBitFont}{}%
\else% the current 7bit fonts need more spacing
\RequirePackage{setspace}
\onehalfspacing
\fi
\ifx\iitcsw@inputenc\@undefined\else%
% Do the following if an input encoding option was given
\RequirePackage[\iitcsw@inputenc]{inputenc}%
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setcounter{page}{0} % we start at page 1
\pagebreak
}
%%
%% \Answer{} Print text in "answer" font if answers are to be printed
%%
\newcommand{\Answer}[1]{\ifiitcswanswers\textshscr{#1}\fi}
%%
%% \AnswerLines: produce 5 horisental lines, for filling in the answer
%% \NaswerPlace: Porduces some underlined space
%%
%% The non-optional (though possibly empty) argument of them is the
%% answer, that wil be typeset if the option 'answers' is used
%%
\newcounter{iitcsw@ansline}
%\setcounter{\iitcsw@ansline}{5}
\newcommand\AnswerLines[2][5]{%
\ifiitcswanswers%
\Answer{#2}% This is non-optimal: doing this if twice...
\else%
% \begin{tabular*}{0.95\textwidth}{c}% without factor of 0.95 I get a latex
% % warning about the width
% \\ \hline \\ \hline \\\hline \\ \hline \\ \hline %
% \end{tabular*}%
\setcounter{iitcsw@ansline}{#1}
\whiledo{\value{iitcsw@ansline} > 0}{
\noindent \rule{0em}{1ex} \hrulefill \\ %
\addtocounter{iitcsw@ansline}{-1}%
}
\fi
}
\newlength{\AnswerPlacelen}
\setlength{\AnswerPlacelen}{3em}
% \AnswerPlace[width]: create an underlined space of the specified width.
% \AnswerPlace (with no parameter): The width is \AnswerPlacelen (3em, by
% default)
\newcommand\AnswerPlace[2][\AnswerPlacelen]{
\underline{\makebox[#1]{\Answer{#2}}}
}
% explanations are answers that are given as footnotes, for further
% clarification
\newcommand{\AnswerExplain}[1]{%
\ifiitcswanswers%
\footnote{\Answer{\AnswerExplainname #1}}
\fi%
}
\newlength{\saveparskip}
% don't use two \zeroparskip without a \restoreparskip in the middle!
\newcommand\zeroparskip{\setlength{\saveparskip}{\parskip}\setlength{\parskip}{0em}}
\newcommand\restoreparskip{\setlength{\parskip}{\saveparskip}}