%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aaeksamen.cls -- For eksamesoppgaver og løsninger (i et dokument).
%% 
%% Author          : Anders Andersen
%% Created On      : Mon Nov  7 14:45:08 1994
%% Last Modified By: Anders Andersen
%% Last Modified On: Thu Jun  8 10:40:07 1995
%% Status          : Unknown, Use with caution!
%% 
%% (C) Copyright 1994, 1995, Anders Andersen, all rights reserved.
%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\fileversion{v0.10}
\def\filedate{1995/06/08}
\typeout{Class: `aaeksamen' \fileversion\space <\filedate> (AA)}


% --------------------------------------%--------------------------------------
% ---------------------------- Identification part ----------------------------
% --------------------------------------%--------------------------------------

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{aaeksamen}[\filedate]


% --------------------------------------%--------------------------------------
% -------------------------- Declaration of options ---------------------------
% --------------------------------------%--------------------------------------

\DeclareOption{losning}{\def\@losning{1}%  
  \AtEndOfClass{%
    \renewcommand{\newlosningpage}{\newpage}  
    \newxcomment[]{utenlosning}    
    \renewenvironment{losning}{\vspace{1em}\begin{itshape}{\bf L{\o}sning: }}{%
      \end{itshape}\hspace*{\fill}\raisebox{-1pt}{\(\Box\)}}}}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}


% --------------------------------------%--------------------------------------
% --------------------------- Execution of options ----------------------------
% --------------------------------------%--------------------------------------

\ProcessOptions


% --------------------------------------%--------------------------------------
% ------------------------------ Package loading ------------------------------
% --------------------------------------%--------------------------------------

\LoadClass{article}
\RequirePackage{epsf}
\RequirePackage{xcomment}
\RequirePackage{latexsym}


% --------------------------------------%--------------------------------------
% --------------------------------- Main code ---------------------------------
% --------------------------------------%--------------------------------------

% Kommandoene nedenfor benyttes for informasjon om eksamen.  Kommandoen
% `instutisjon' og minst en av kommandoene `kurskode' og `kurstittel'
% må være brukt.  De andre kommandoene benyttes ved behov.  Kommandoen
% `forside' brukes for å lage forsiden.

% Lager en ny kommentar for å skjule løsningene i oppgaven
\newxcomment[]{losning}

% Kommandoen \newlosningpage virker som \newpage i løsningsforslag, men har
% ellers ingen virkning
\newcommand{\newlosningpage}{}
\newenvironment{utenlosning}{}{}

% Informasjon om eksamen (for forsiden)
\newcommand{\institusjon}[1]{\def\@institusjon{#1}}
\newcommand{\instutisjon}[1]{\def\@institusjon{#1}}     % Komp m/gml. bug
\newcommand{\kurskode}[1]{\def\@kurskode{#1}\def\@title{Eksamen #1}}
\newcommand{\kurstittel}[1]{\def\@kurstittel{#1}}
\newcommand{\maalform}[1]{\def\@maalform{#1}}
\newcommand{\tidspunkt}[1]{\def\@date{#1}}
\newcommand{\hjelpemidler}[1]{\def\@hjelpemidler{#1}}
\newcommand{\faglaerer}[1]{\def\@faglaerer{#1}}
\newcommand{\kontaktperson}[1]{\def\@kontaktperson{#1}}
\newcommand{\sensor}[1]{\def\@sensor{#1}}
\newcommand{\antallsider}[1]{\def\@antallsider{#1}}     % Uten forside
\newcommand{\kommentar}[1]{\def\@kommentar{#1}}
\newcommand{\logo}[1]{\def\@logo{#1}}                   % PostScript fil
\newcommand{\losningsforslag}{\ExecuteOptions{losning}}

% For generering av forside
\def\forside{
  \@ifundefined{@losning}{%
    \@ifundefined{@antallsider}{}{%
      \renewcommand{\thepage}{%
        Side \arabic{page}\ av \@antallsider\ sider}}}{}
  \begin{titlepage}\begin{center}
    {\LARGE\@institusjon}\par
    \vfill
    \@ifundefined{@logo}{}{%
      \@ifundefined{epsfbox}{\input{epsf}}{}
      {\leavevmode\epsfbox{\@logo}}\par\vfill}
    {\LARGE Eksamen}\par
    \@ifundefined{@kurskode}{\Huge\@kurstittel\par}{%
      \Huge\@kurskode\par
      \@ifundefined{@kurstittel}{}{\LARGE\@kurstittel\par}}
    \vfill
    \@ifundefined{@maalform}{}{\LARGE\@maalform\par\vfill}
    {\large\@date}\par
    \vfill
    \@ifundefined{@hjelpemidler}{}{%
      \LARGE Tillatte hjelpemidler:~\@hjelpemidler\par}
    \@ifundefined{@faglaerer}{}{%
      \large Fagl{\ae}rer:\\
      \@faglaerer\par}
    \@ifundefined{@kontaktperson}{}{%
      \large Faglig kontakt under eksamen:\\
      \@kontaktperson\par}
    \@ifundefined{@sensor}{}{%
      \large Sensor:\\
      \@sensor\par}
    \vfill
    \@ifundefined{@losning}{%
      \@ifundefined{@antallsider}{}{%
        \large Oppgavesettet er p{\aa} \@antallsider\ 
        sider pluss forside.}}{%
      \large L{\o}sningsforslag}
    \@ifundefined{@kommentar}{}{\large\@kommentar}\par
  \end{center}\end{titlepage}}

% Oppgaver

% Tellere
\newcounter{avd}
\newcounter{oppgno}
\newcounter{deloppgno}[oppgno]
\newcounter{deldeloppgno}[deloppgno]
\newcounter{deldeldeloppgno}[deldeloppgno]
\renewcommand{\thedeloppgno}{\arabic{deloppgno}}
\renewcommand{\thedeldeloppgno}{\alph{deldeloppgno}}
\renewcommand{\thedeldeldeloppgno}{\roman{deldeldeloppgno}}
\newcounter{deldellosning}[deloppgno]
\newcounter{deldeldellosning}[deldellosning]
\renewcommand{\thedeldellosning}{\alph{deldellosning}}
\renewcommand{\thedeldeldellosning}{\roman{deldeldellosning}}


% Part: Et oppgavesett kan bestå av flere deler (med navn)
\def\avd{\@ifnextchar[{\@argavd}{\@avd}}
\def\@argavd[#1]#2{\refstepcounter{avd}%
  \clearpage
  \section*{Del~{\theavd}:~#2~#1}}
\def\@avd#1{\refstepcounter{avd}%
  \clearpage
  \section*{Del~{\theavd}:~#1}}

% Oppgave (med eller uten argument)
\def\oppgave{\@ifnextchar[{\@argoppgave}{\@oppgave}}
\def\@argoppgave[#1]{\refstepcounter{oppgno}%
  \subsection*{Oppgave~{\theoppgno}~#1}}
\def\@oppgave{\refstepcounter{oppgno}%
  \subsection*{Oppgave~{\theoppgno}}}

% Deloppgave (2 varianter)
\def\@argdel[#1]{\subsubsection*{Deloppgave~{\theoppgno.\thedeloppgno}~#1}}
\def\@del{\subsubsection*{Deloppgave~{\theoppgno.\thedeloppgno}}}
\newenvironment{deloppgave}{\begin{list}{{\bf\thedeloppgno.}\hfill}{%
    \setlength{\itemsep}{2\baselineskip}%
    \setlength{\topsep}{2\baselineskip}}%
  \def\del{\refstepcounter{deloppgno}\item}}%
{\end{list}}
\newenvironment{deloppgave*}{\def\del{\refstepcounter{deloppgno}%
    \@ifnextchar[{\@argdel}{\@del}}}{}

% Deldeloppgave
\newcommand{\deldel}{\refstepcounter{deldeloppgno}\item}
\newenvironment{deldeloppgave}{\begin{list}{\thedeldeloppgno)\hfill}{%
    \setlength{\itemsep}{\baselineskip}%
    \setlength{\topsep}{\baselineskip}}%
  \def\del{\deldel}}
{\end{list}}
\newcommand{\deldeldel}{\refstepcounter{deldeldeloppgno}\item}
\newenvironment{deldeldeloppgave}{\begin{list}{\thedeldeldeloppgno)\hfill}{%
    \setlength{\itemsep}{\baselineskip}%
    \setlength{\topsep}{\baselineskip}}%
  \def\del{\deldeldel}}
{\end{list}}

% Deldellosning
\newcommand{\ldeldel}{\refstepcounter{deldellosning}\item}
\newenvironment{deldellosning}{\begin{list}{\thedeldellosning)\hfill}{%
    \setlength{\itemsep}{\baselineskip}%
    \setlength{\topsep}{\baselineskip}}%
  \def\del{\ldeldel}}
{\end{list}}
\newcommand{\ldeldeldel}{\refstepcounter{deldeldellosning}\item}
\newenvironment{deldeldellosning}{\begin{list}{\thedeldeldellosning)\hfill}{%
    \setlength{\itemsep}{\baselineskip}%
    \setlength{\topsep}{\baselineskip}}%
  \def\del{\ldeldeldel}}
{\end{list}}

