% \iffalse meta-comment
%
% Copyright (C) 2005 by Kostantinos Koukopoulos
% 
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
% 
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
% 
% You should have received a copy of the GNU General Public License
% along with Foobar; if not, write to the Free Software
% Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
%
% \fi
%
% \CheckSum{316}
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
% \iffalse
% The following code contains the documentation driver file, i.e. the file
% that will produce the documentation your are reading. It can be extracted
% from this file by the {\sc docstrip} program.
%    \begin{macrocode}
%<*driver>
\ProvidesFile{dithesis.drv}
\documentclass{ltxdoc}
\GetFileInfo{dithesis.drv}
\usepackage{hyperref}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
    \DocInput{dithesis.dtx}
   \PrintChanges
   \PrintIndex
\end{document}
%</driver>
%    \end{macrocode}
%
% \fi
% \newcommand{\UoA}{University of Athens}
%
% \title{The \textsf{dithesis} class \thanks{This document
%	corresponds to \textsf{dithesis}~\fileversion,
%	dated \filedate.}}
% \author{%
%     Manolis Paissios \\ \texttt{e.paissios@di.uoa.gr} \and
% 	  Paschalis Antoniou \\ \texttt{p.antoniou@di.uoa.gr} \and
%	  Kostantinos Koukopoulos \\ \texttt{kouk@noc.uoa.gr}}
%
% \maketitle
%
% \begin{abstract}
%    This is the unofficial \LaTeX~class file for undergraduate theses that
%    conform to the specifications of the Library of the Department of
%    Informatics at the University of Athens.. 
%  \end{abstract}
%
% \section{Introduction}
%
% This document class will mainly be helpfull to the students of the
% Department of Informatics
% \footnote{\href{http://www.di.uoa.gr}{http://www.di.uoa.gr}} of the
% University of Athens, who which to write their undergraduate thesis
% in \LaTeXe~while conforming to the mandatory guidelines of the
% department's library.
%
% \subsection{Acknowledgements}
%
% As a starting point for the creation of this document class, the
% {\tt suthesis-2e.sty}
% \footnote{\href{http://help-csli.stanford.edu/tex/suthesis/}
% {http://help-csli.stanford.edu/tex/suthesis/}} package from Stanford
% University was used. It was originally written by Joseph Pallas in
% 1989 and heavily modified by Emma Pease thereafter. Please refer to the {\tt
% suthesis-2e.sty} file for the full credits.
% 
% \changes{v1.0}{2005/10/01}{Initial 'dithesis' doc class, based on
% suthesis-2e.sty originally written by Joseph Pallas and Emma Pease}
%
% \subsection{Description}
% This class builds upon the standard report style to follow the
% guidelines of the Department of Informatics Library. Among other
% things it sets the correct margins and interline spacing.
% 
% \subsubsection{Basic Usage}
% \DescribeMacro\documentclass
% In order to use this document class you must first write the
% following in your document: 
% \begin{quote}
% |\documentclass|\oarg{args}|{dithesis}|
% \end{quote}
% The \meta{args} are optional and are passed on to the |report|
% document class, on which this class is based.
%
% Due to the fact that this class is based on |report| one should use
% the commands |\title| and |\author| just as one would when using the
% |report| document class.
%
% \DescribeMacro\studno
% The |\studcode| is the code that identifies the author to the
% administration of the university. Usually a number, like at the
% \UoA.
% \begin{quote}
% |\studcode|\marg{code}
% \end{quote}
% 
% \DescribeMacro\advisor
% The |\advisor| is the name of the faculty member who advised the
% author during the authoring of the thesis.
% \begin{quote}
% |\advisor|\marg{name}
% \end{quote}
%
% \DescribeMacro\grkabstract
% The |\grkabstract| is the the greek language abstract.
%
% \begin{quote}
% |\grkabstract|\marg{text}
% \end{quote}
%
% \DescribeMacro\engabstract
% The |\engabstract| is the the english language abstract.
%
% \begin{quote}
% |\engabstract|\marg{text}
% \end{quote}
%
% \subsubsection{Example usage}
% \begin{verbatim}
% \documentclass[twoside,12pt]{dithesis}
% \usepackage[english,greek]{babel}
% 
% \begin{document}
% \title{Titlos}
% \author{Gi'orgos Papad'opoulos}
% \studcode{123456}
% \advisor{Dhm'htrhc Qristodo'ulou}
% \grkabstract{Ant'i Prol'ogou}
% \engabstract{\textlatin{some kind of abstract}}
% \maketitle
% 
% \chapter{Eisagwg'h}
% 
% mpl'a mpl'a mpla m'pla
%
% \end{document}
% \end{verbatim}
% 
% \subsubsection{Optional Front Page Parameters}
% The following commands let you configure the various academic titles
% and names that will appear on the title page. By default these
% parameters are well suited for theses written for the Department of
% Informatics at the \UoA:
% \DescribeMacro\universityname
%  The name of the university:
% \begin{quote}
% |\universityname|\marg{name}
% \end{quote}
% 
% \DescribeMacro\universityschool
% The |\universityschool| is the name of specific school of the
% University that the thesis is being presented to.
% \begin{quote}
% |\universityschool|\marg{name}
% \end{quote}
%
% \DescribeMacro\universitydept
% The |\universitydept| is the name of the specific department of the
% university that the thesis is being presented to.
%
% \begin{quote}
% |\universityschool|\marg{name}
% \end{quote}
%
% \DescribeMacro\thesistype
% The |\thesistype| is a description of the kind of thesis your are
% writing. For example it could be ``Final year project'' or
% ``Doctoral dissertation''.
%
% \begin{quote}
% |\thesistype|\marg{type}
% \end{quote}
%
% \DescribeMacro\submitdate
% The |\submitdate| is the date that the thesis was submitted to the
% library. The default for the date is the month and the year.
%
% \begin{quote}
% |\submitdate|\marg{date}
% \end{quote}
%
% \DescribeMacro\place
% The |\place| is the place that will appear along with |\submitdate|.
%
% \begin{quote}
% |\place|\marg{place}
% \end{quote}
%
% \DescribeMacro\greeksubjarea
% The |\greeksubjarea| is the greeksubjarea that will appear along with |\submitdate|.
%
% \begin{quote}
% |\greeksubjarea|\marg{greeksubjarea}
% \end{quote}
%
% \DescribeMacro\englishsubjarea
% The |\englishsubjarea| is the englishsubjarea that will appear along with |\submitdate|.
%
% \begin{quote}
% |\englishsubjarea|\marg{englishsubjarea}
% \end{quote}
%
% \DescribeMacro\greekkeywords
% The |\greekkeywords| is the greekkeywords that will appear along with |\submitdate|.
%
% \begin{quote}
% |\greekkeywords|\marg{greekkeywords}
% \end{quote}
%
% \DescribeMacro\englishkeywords
% The |\englishkeywords| is the englishkeywords that will appear along with |\submitdate|.
%
% \begin{quote}
% |\englishkeywords|\marg{englishkeywords}
% \end{quote}
%
% \section{Implementation}
% 
% \StopEventually{}
% 
% This document class can only be used with \LaTeXe, so the following
% line makes sure that the user is aware of this:
%    \begin{macrocode}
%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%    \end{macrocode}
%
% Here we announce the document class 'dithesis' and it's version
%    \begin{macrocode}
%<class>\ProvidesClass{dithesis}
%<class>	[2005/10/01 v0.1 di.uoa.gr thesis class]
%    \end{macrocode}
%
% Also we will need the |ifthen| package:
%    \begin{macrocode}
\RequirePackage{ifthen}
%    \end{macrocode}
%
% \subsection{Class Options}
%    The library requires A4 paper:
%    \begin{macrocode}
\PassOptionsToClass{a4paper}{report}
%    \end{macrocode}
%
%    Any other options are passed on to the report class on which
%    this document class is based.
%    \begin{macrocode}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
%    \end{macrocode}
%
%    Next we process the options
%    \begin{macrocode}
\ProcessOptions
%    \end{macrocode}
%
%    and load the report document class
%    \begin{macrocode}
\LoadClass{report}
%    \end{macrocode}
%
% \section{Document Layout}
% \subsection{Page Layout}
% 
% \subsubsection{Vertical Spacing}
% 
% \begin{macro}{\footskip}
%    The distance from the baseline of the box which contains the
%    running footer to the baseline of last line of text is controlled
%    by |\footskip|.
%    \begin{macrocode}
\setlength\footskip{12.5mm}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\parskip}
%  |\parskip| is the vertical space between paragraphs.
%    \begin{macrocode}
\addtolength{\parskip}{\baselineskip}
%    \end{macrocode}
% \end{macro}

% We require the {\tt setspace} package to set the intra-line spacing:
%    \begin{macrocode}
\RequirePackage{setspace}
\onehalfspacing
%    \end{macrocode}
%
%
% \subsubsection{Text Dimensions}
%
% \begin{macro}{\textwidth}
%    Text width is set to 156mm.
%    \begin{macrocode}
\setlength\textwidth{165mm}
%    \end{macrocode}
% \end{macro}

% \begin{macro}{\textheight}
%    The |\textheight| is the height of text (including footnotes and
%    figures, excluding running head and foot).
%    \begin{macrocode}
\setlength\textheight{222mm}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{Margins}
%
% \begin{macro}{\oddsidemargin}
% \begin{macro}{\evensidemargin}
% Theses may be either single or double sided. Margins are specified
% by the library. 
%    \begin{macrocode}
   \if@twoside
      \setlength\oddsidemargin   {25mm}
      \setlength\evensidemargin  {20mm}
   \else
      \setlength\oddsidemargin   {2.5cm}
      \setlength\evensidemargin  {2.5cm}
   \fi
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\marginparwidth}
% \begin{macro}{\marginparsep}
%    Why is this zero? ASK PASXALI
%    \begin{macrocode}
\setlength\marginparwidth {0cm}
\setlength\marginparsep{0cm}
%    \end{macrocode}
% \end{macro}
% \end{macro}

% \begin{macro}{\topmargin}
%    The |\topmargin| is the distance between the top of `the
%    printable area' --which is 1 inch below the top of the paper--
%    and the top of the box which contains the running head.
%    \begin{macrocode}
\setlength\topmargin 	 {20mm}
%    \end{macrocode}
% \end{macro}
%
%
%     I don't know what these do
%    \begin{macrocode}
\setlength\hoffset   	 {-1in}
\setlength\voffset   	 {-1in}
\setlength\headheight 	 {12.5mm}
\setlength\headsep 	 {10mm}
%    \end{macrocode}

% \subsection{Captions}
% We use the {\tt caption} package to make the captions pretty
%    \begin{macrocode}
\PassOptionsToPackage{margin=10pt,
            font={footnotesize},
            labelfont=bf,
            aboveskip=10pt,
            belowskip=0pt}{caption}
\RequirePackage{caption}
\captionsetup[table]{aboveskip=10pt,belowskip=10pt}
%    \end{macrocode}

% \subsection{Fancy Headers}
% We use the {\tt fancyheaders} package to get pretty headers.
%    \begin{macrocode}
\RequirePackage{fancyhdr}
\pagestyle{fancy}
%    \end{macrocode}
% with this we ensure that the chapter and section
% headings are in lowercase.
%    \begin{macrocode}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
%    \end{macrocode}
% delete current setting for header and footer:
%    \begin{macrocode}
\fancyhf{} 
\fancyhead[CE]{\footnotesize{\@title}}
\fancyhead[CO]{\footnotesize{\@title}}
\fancyfoot[LO,RE]{\@author}
\fancyfoot[LE,RO]{\thepage}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
%    \end{macrocode}
% get rid of headers on plain pages
%    \begin{macrocode}
\fancypagestyle{plain}{%
   \fancyhead{}
      \renewcommand{\headrulewidth}{0pt} % and the line
}
%    \end{macrocode}
%
% \subsection{Required commands}
% Before we define any commands we must include the babel package to
% have greek support:
%    \begin{macrocode}
\usepackage[american,greek]{babel}
%    \end{macrocode}
%
% \begin{macro}{\studcode}
% \begin{macro}{\advisor}
% \begin{macro}{\grkabstract}
% \begin{macro}{\engabstract}
%    \begin{macrocode} 
\newcommand{\studcode}[1]{\gdef\@studcode{#1}}
\newcommand{\advisor}[1]{\gdef\@advisor{#1}}
\newcommand{\grkabstract}[1]{\gdef\@grkabstract{#1}}
\newcommand{\engabstract}[1]{\gdef\@engabstract{#1}}
%    \end{macrocode} 
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Configuration Commands}
% \begin{macro}{\universityname}
% \begin{macro}{\universityschool}
% \begin{macro}{\universitydept}
% \begin{macro}{\thesistype}
% \begin{macro}{\submitdate}
% \begin{macro}{\place}
% \begin{macro}{\greeksubjarea}
% \begin{macro}{\englishsubjarea}
% \begin{macro}{\greekkeywords}
% \begin{macro}{\englishkeywords}
%  Here we declare commands to permit the user to specify these common academic
%  attributes:
%    \begin{macrocode} 
\newcommand{\universityname}[1]{\gdef\@uni{#1}}
\newcommand{\universityschool}[1]{\gdef\@school{#1}}
\newcommand{\universitydept}[1]{\gdef\@dept{#1}}
\newcommand{\thesistype}[1]{\gdef\@type{#1}}
\newcommand{\submitdate}[1]{\gdef\@submitdate{#1}}
\newcommand{\place}[1]{\gdef\@place{#1}}
\newcommand{\greeksubjarea}[1]{\gdef\@greeksubjarea{#1}}
\newcommand{\englishsubjarea}[1]{\gdef\@englishsubjarea{#1}}
\newcommand{\greekkeywords}[1]{\gdef\@greekkeywords{#1}}
\newcommand{\englishkeywords}[1]{\gdef\@englishkeywords{#1}}
%    \end{macrocode} 
%  and their default values:
%    \begin{macrocode}
\newcommand{\@uni}{Panepist'hmio Ajhnwn}
\newcommand{\@school}{Sqol'h Jetik'wn Episthm'wn}
\newcommand{\@dept}{Tm'hma Plhroforik'hc kai Thlepikoinwnei'wn}
\newcommand{\@type}{Ptuqiak'h Ergas'ia}
\newcommand{\@submitdate}{\ifcase\the\month\or
  Ianou'arioc\or Febrou'arioc\or M'artioc\or Apr'ilioc\or Ma'ioc\or
  Io'unioc\or Io'ulioc\or A'ugoustoc\or Sept'embrioc\or Okt'wbrioc\or
  No'embrioc\or Dek'embrioc\fi
  \space \number\the\year}
\newcommand{\@place}{Aj'hna}
\newcommand{\@greeksubjarea}{}
\newcommand{\@englishsubjarea}{}
\newcommand{\@greekkeywords}{}
\newcommand{\@englishkeywords}{}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Special Pages}
% \begin{macro}{\titlep}
%  Here is where we implement the title page.
%  To include a university logo on the titlepage we need the
%  |graphicx| package:
%    \begin{macrocode} 
\RequirePackage{graphicx}
%    \end{macrocode}
% The command |\titlep| is used in |\maketitle| to create
% the required title page.
%    \begin{macrocode}
\newcommand{\titlep}{%
\thispagestyle{empty}
%    \end{macrocode}
% Next we include the university logo in the upper left corner and the
% administrative names next to it (in small caps):
%    \begin{macrocode}
   \begin{minipage}[c]{0.2\textwidth}
      \begin{flushleft}
         \includegraphics[scale=0.13]{universitylogo}
      \end{flushleft}
   \end{minipage}
   \begin{minipage}[c]{0.85 \textwidth}
      \begin{flushleft}\textsc{%
          \@uni\\
          \@school\\
          \@dept }%
      \end{flushleft}
   \end{minipage}
%    \end{macrocode}
% In the center of the page goes the title of the thesis:
%    \begin{macrocode}
   \vfill
   \begin{center}
      \large{\textsc{\@type}\\
      \vfill
      \expandafter{\@title}}
   \end{center}
   \vfill
%    \end{macrocode}
% And last we have the author, the advisor, the place and the date
% centered:
%    \begin{macrocode}
   \begin{center}
      \@author\\
      A.M. \@studcode \\
      \bigskip
      Epibl'epwn Kajhght'hc: \@advisor\\
      \bigskip
      \textsc{\@place} \\
      \@submitdate\\
   \end{center}
   \hbox{}%
   \newpage
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\signaturepage}
%  Here we implement the page where the supervisor puts his signature.
%    \begin{macrocode}
\newcommand{\signaturepage}{%
\thispagestyle{empty}%
\begin{center}
   \textbf{\scshape Ptuqiak'h Ergas'ia}\\ \bigskip
   \@title\\ \bigskip
   \textbf{\@author}\\
   A.M. \@studcode \\
   \bigskip
   \flushleft{\scshape Epibl'epwn}
   \center{\@advisor}
\end{center}
\hbox{}%
\newpage
}%
%    \end{macrocode}
%  \end{macro}
%
% \begin{macro}{\grkabstractpage}
%  Here we implement the greek abstract page.
%    \begin{macrocode}
\newcommand{\grkabstractpage}{%
\thispagestyle{empty}%
\begin{center}
   \textbf{\scshape Pr'ologoc}
\end{center}
\@grkabstract\vfill{}
\begin{tabular}{ll}
   \textsc{Jematik'h Perioq'h:} & {\@greeksubjarea}\\
   \textsc{L'exeic Kleidi'a:} & {\@greekkeywords}
\end{tabular}
\hbox{}%
\newpage
}%
%    \end{macrocode}
%    \end{macro}
%
% \begin{macro}{\engabstractpage}
%  Here we implement the english abstract page.
%    \begin{macrocode}
\newcommand{\engabstractpage}{%
\thispagestyle{empty}%
\begin{center}
   \textsc{\textlatin{Abstract}}
\end{center}
\@engabstract\vfill{}
\begin{tabular}{ll}
   \textsc{\textlatin{Subject Area:}} & {\@englishsubjarea}\\
   \textsc{\textlatin{Keywords:}} & {\@englishkeywords}
\end{tabular}
\hbox{}%
\newpage
}%
%    \end{macrocode}
%  \end{macro}
% \begin{macro}{\maketitle}
%  Finally we redefine |\maketitle| to put together the titlepages
%  pages while supressing page numbering and fancy headers. We have
%  first a title page, then a completely blank page, then another
%  title page, then greek and english abstract pages and last the
%  contents.
%    \begin{macrocode}
\renewcommand{\maketitle}{%
\titlep
\setcounter{page}{1}
\thispagestyle{empty}%
\hbox{}%
\newpage
\titlep
\signaturepage
\grkabstractpage
\engabstractpage
\tableofcontents
\thispagestyle{empty}%
\hbox{}%
\newpage
\thispagestyle{fancy}
\pagenumbering{arabic}
}%
%    \end{macrocode} 
% \end{macro}
      
% \Finale
\endinput
