\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{lf}[2003/08/25 - Klassefil for loesningsforslag]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions
\LoadClass{article}
\RequirePackage{babel,graphicx,amsmath,amssymb}
\advance\textwidth8pc
\advance\oddsidemargin-3pc
\advance\evensidemargin-3pc
\advance\textheight6\baselineskip
\advance\topmargin-3\baselineskip

\newcommand{\ovnr}[1]{\author{L{\o}sningsforslag - {\O}ving #1}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% En oppgave kan plasseres mellom \begin{oppgave}{nummer} og \end{oppgave}
% Oppgavene kan ogsaa inkluderes ved hjelp av \oppg{nummer}{filnavn}
% Eks.:     
% \oppg{42}{EP/kap6/EP6-7-42}  % oppgaven ligger i EP6-7-42.tex
%                       % Denne fila skal *ikke* inneholde \begin{oppgave}...

\newenvironment{oppgave}[1]{%
   \addvspace\medskipamount
   \begin{list}%
     {\fbox{\large\usefont{\encodingdefault}{phv}{m}{n} {#1}}}%
     {\topsep\z@}
   \item}%
  {\end{list}}
\newcommand{\oppg}[2]{%
  \begin{oppgave}{#1}
  {\InputIfFileExists{#2}{}
    {\textbf{NB! Kunne ikke {\aa}pne filen:} \texttt{#2}
     \message{*** ADVARSEL - Oppgave #1: Inputfil #2 mangler ***}}}
  \end{oppgave}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Makroer for å ramse opp oppgaver

% \spacehack er fordi TeX hopper over blanke når den parser for
% `undelimited' parametre, men ikke når den parser for `delimited'
% parametre.

% \oppgaver følges av et prefix i klammeparenteser,
% etterfulgt av en kommaseparert liste av oppgavenumre.
% Mellomrom etter komma ignoreres, men mellomrom foran komma er
% signifikante og skal normalt unngås.
% Et «oppgavenummer» kan være tomt: I så fall settes inn et sideskift.
% Et oppgavenummer kan erstattes med filnavn:nummer der «nummer» er
% teksten som gir oppgavenummeret i løsningsforslaget.
% Normalt er filnavnet lik oppgavenummeret, med en eventuell ledende
% null fjernet.  Prefixet (argument 1 til \oppgaver) settes alltid
% foran filnavnet.

\def\spacehack#1#2{#1#2}
\def\oppgaver #1#2.{\def\prefix{#1}\spacehack\oppgavera#2,.}
\def\oppgavera #1.{\ifx.#1.\else\oppgaverb#1.\fi}
\def\oppgaverb #1,#2.{\ifx,#1,\newpage\else\oppgaverc#1:.\fi
                      \spacehack\oppgavera#2.}
\def\oppgaverc #1:#2.{\ifx.#2.\oppg{\eatzero#1}{\prefix#1}%
                      \else\oppgaverd{#1}#2.\fi}
\def\oppgaverd #1#2:.{\oppg{#2}{\prefix#1}}
\def\eatzero#1{\if0#1\else#1\fi} % Spiser en ledende null
\def\EPutg#1{\def\EPutg@{#1}} \EPutg{5}
\def\EPkap#1#2{\section*{Fra Edwards \& Penney, avsnitt #1.#2}
    \oppgaver{EP\EPutg@/kap#1/EP#1-#2-}}
\def\LHLkap#1#2{\section*{Fra Kalkulus, avsnitt #1.#2}
    \oppgaver{LHL/kap#1/#2-}}
\def\LHLeks#1{\section*{Fra Kalkulus, eksamensoppgaver kapittel #1}
    \oppgaver{LHL/kap#1/eks-}0} % er denne nullen lur?
\def\Adamskap#1#2{\section*{Fra Adams, avsnitt #1.#2}
    \oppgaver{Adams/kap#1/#2-}}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% De foelgende kommandoene er definert for aa kunne inkludere eksamensoppgaver
% basert paa eksamen.sty. 
%
% \bOppgave og \eOppgave (begynn og slutt oppgave):
% Disse gir naa ingen utskrift (oppgavenummeret maa skrives i hovedfila),
% men \bOppgave nullstiller punkt-telleren (slik at foerste punkt blir a)).
% \bPunkt og \ePunkt (begynn og slutt punkt):
% Gir a), b), etc.

\newcounter{Punkt}
\newcommand{\bOppgave}{\setcounter{Punkt}{0}}
\newcommand{\eOppgave}{}
\newenvironment{Oppgave}{\bOppgave}{\eOppgave}
\newcommand{\bPunkt}{\stepcounter{Punkt}%
	\begin{list}{\textbf{\alph{Punkt})}}{} \item}
\newcommand{\ePunkt}{\end{list}}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Ny definisjon for \maketitle:  Overstyrer article sin
\def\maketitle{\par
 \begingroup
   \def\thefootnote{\fnsymbol{footnote}}
   \def\@makefnmark{\hbox   
       to 0pt{$^{\@thefnmark}$\hss}}   
   \if@twocolumn               
     \twocolumn[\@maketitle]   
   \else \newpage
     \global\@topnum\z@        % Prevents figures from going at top of page.
     \@maketitle \fi
   \@thanks
 \endgroup
 \setcounter{footnote}{0}
 \let\maketitle\relax
 \let\@maketitle\relax
 \thispagestyle{titlepage}
 \gdef\@thanks{}\gdef\@author{}\let\thanks\relax}

\def\@maketitle{\newpage
 \vbox{
  \null
  \vskip -40pt % \headheight + \headsep
  \hrule height 0.4pt \nointerlineskip
  \vskip 1.2pt
  \hrule height 2.0pt \nointerlineskip
  \hbox{\vrule width 0.4pt
   \begingroup\advance\hsize by -0.8pt\vbox{\@m@ketitle}\endgroup
   \vrule width 0.4pt} \nointerlineskip
  \hrule height 2.0pt \nointerlineskip
  \vskip 1.2pt
  \hrule height 0.4pt \nointerlineskip}
 \vskip 25pt
}


\def\showme#1{\string#1=\the#1}

\def\@m@ketitle{
  \null\bigskip
 %% Til venstre: NTNU-logoen, med instituttnavn:
 \setbox0\vtop{\halign{##\hfil\cr
    \setbox0\hbox{\LARGE\usefont{\encodingdefault}{ptm}{m}{n}\ NTNU}%
    \includegraphics[width=\ht0]{ntnulogo}\box0\cr
    \normalsize\usefont{\encodingdefault}{ptm}{m}{n}%
    Institutt for matematiske fag\cr}\vss}
 %% Til høyre: Tittel, mm
 \setbox2\vtop{\advance\hsize-\wd0 \advance\hsize-32pt
    \parindent\z@ \parfillskip\z@
    \leftskip=0pt plus 1fil \rightskip=0pt
    \let\\\break
    \leavevmode\LARGE\usefont{\encodingdefault}{ptm}{m}{n}\quad
    \@title\unskip\par
    \@ifundefined{@author}{}{%
    \bigskip
    \leavevmode\large\usefont{\encodingdefault}{ptm}{bx}{n}
    \@author\unskip\par}}
 \hbox to\textwidth{\kern8pt\box0\hfil\box2\kern8pt}
 \bigskip}

\renewcommand{\section}{\@startsection
  {section}{1}{\z@}% navn, nivå, indent
  {-3ex \@plus -0.75ex \@minus -.2ex}% beforeskip
  {1.2ex \@plus.2ex}% afterskip
  {\large\usefont{\encodingdefault}{phv}{b}{n}}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&
%%% Sidelayout, -hoder og -føtter

\def\ps@titlepage{%
  \let\@mkboth\@gobbletwo
  \def\@oddhead{}\let\@evenhead\@oddhead
  \def\@oddfoot{\@techfoot}\let\@evenfoot\@oddfoot
  \def\sectionmark##1{}\def\subsectionmark##1{}}

\def\ps@tech{%
  \let\@mkboth\@gobbletwo
  \def\@oddhead{\@techhead}\let\@evenhead\@oddhead
  \def\@oddfoot{\@techfoot}\let\@evenfoot\@oddfoot
  \def\sectionmark##1{}\def\subsectionmark##1{}}

\def\@techfoot{%
\vbox{
  \hrule height 0.4pt\nointerlineskip
  \vskip 1.2pt
  \hrule height 2.0pt
  \vskip 2.0pt
  \hbox to \textwidth{\normalsize\usefont{\encodingdefault}{phv}{m}{n}%
    \hbox to 0pt{\innerfoot\hss}\hfil
    \centerfoot\hfil
    \hbox to 0pt{\hss\outerfoot}}}}

\def\@techhead{%
\vbox{
  \hbox to \textwidth{\normalsize\usefont{\encodingdefault}{phv}{m}{n}%
  \hbox to 0pt{\innerhead\hss}\hfil
  \centerhead\hfil
  \hbox to 0pt{\hss\outerhead}}\nointerlineskip
  \vskip 2.0pt
  \hrule height 2.0pt\nointerlineskip
  \vskip 1.2pt
  \hrule height 0.4pt
}}

\ps@tech
\headheight18pt
\headsep22pt

\let\@version\relax
\def\version#1{\def\@version{#1}}
\def\innerfoot{\jobname\ifx\@version\relax\else\ versjon \@version\fi}
\def\centerfoot{\today}
\def\outerfoot{Side \thepage}
\def\innerhead{}
\def\centerhead{}
\def\outerhead{\def\\{\ \ignorespaces}\@title}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
