% Klasa iithesis sluzy do skladu prac dyplomowych w Instytucie Informatyki UWr.
%%%%% OPCJE KLASY
% polish (domyslnie), english - okresla jezyk pracy
% longabstract (domyslnie), shortabstract - okresla, czy streszczenia w obu
% jezykach maja zostac zlozone na osobnych stronach (longabstract), czy na
% jednej (shortabstract); te druga opcje nalezy wybierac tylko wtedy, gdy
% streszczenia sa dostatecznie krotkie
% declaration - okresla, czy na drugiej stronie pracy ma zostac zlozone
% oswiadczenie o autorskim wykonaniu pracy; domyslnie nie jest skladane,
% nie ma tez wiekszego sensu przy pracy kilku autorow
% lic (domyslnie), inz, mgr - okresla rodzaj pracy podany na stronie tytulowej;
% w przypadku podania opcji 'declaration' rowniez automatycznie okresla
% stopien studiow (I dla 'lic'/'inz', II dla 'mgr') podawany w oswiadczeniu
% fem, masc - w przypadku podania opcji 'declaration' okresla, czy powinny
% zostac uzyte zenskie czy meskie formy czasownikow; jesli nie zostanie
% wybrana zadna z nich, uzywana jest koncowka 'am/em'
% manyadvisors - wymusza uzycie liczby mnogiej slowa 'promotor', jesli praca
% ma kilku promotorow
%
%%%%% POLECENIA DOSTARCZANE PRZEZ KLASE
% \polishtitle, \englishtitle - sluza, podobnie jak tradycyjne \title, do
% zadeklarowania tytulow pracy w obu jezykach; \title nie ma zadnego efektu
% \polishabstract, \englishabstract - analogicznie sluza do zadeklarowania
% streszczen pracy w obu jezykach
% \advisor - sluzy do zadeklarowania nazwiska promotora
% \fmlinebreak - sluzy do lamania linii w obrebie \polishtitle, \englishtitle
% oraz \advisor (w tym przypadku np. do podania kilku promotorow i/lub ich
% afiliacji, jesli sa inne niz II UWr)
%
%%% Dwa kolejne polecenia maja znaczenie tylko z opcja 'declaration' i sluza
%%% do zadeklarowania napisow pojawiajacych sie w tresci oswiadczenia. Jesli
%%% zostana pominiete, w oswiadczeniu pojawia sie wykropkowane miejsca do
%%% pisemnego wypelnienia.
% \transcriptnum - sluzy do zadeklarowania numeru indeksu
% \advisorgen - sluzy do zadeklarowania nazwiska promotora w dopelniaczu; w
% przypadku kilku nazwisk nalezy je oddzielac przecinkami i spojnikami
%%% (Wrazliwe dane osobowe, takie jak adresy i nr ewidencyjny PESEL, nie sa
%%% podawane w wersji elektronicznej pracy dyplomowej i musza w oswiadczeniu
%%% wypelnione pisemnie.)
%
%%%%% PRZYKLADY: WIELU AUTOROW/PROMOTOROW, W TYM Z AFILIACJAMI/ADNOTACJAMI
% \author{Maksymilian Debesciak \and
% Karol Sasiedzki \fmlinebreak
% WPPT PWr}
% \advisor{dr Jan Kowalski \and
% prof. Janina Nowak \fmlinebreak
% Instytut Informatyki \fmlinebreak
% Uniwersytet Jagielloński \fmlinebreak
% (promotor pomocniczy)}
%
%%%%% PAKIETY WYMAGANE I DOLACZANE PRZEZ KLASE
% babel, geometry, fontenc, hyperref, ifthen, titling
% indentfirst, polski (jezeli iithesis zaladowano z opcja 'polish')
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{iithesis}
\LoadClass[a4paper,11pt,onecolumn,twoside,openright,titlepage]{report}
\RequirePackage{ifthen}
\newboolean{Long@Abstract}
\newboolean{Polish@Main}
\newboolean{Decl@ration}
\setboolean{Decl@ration}{false}
\newboolean{Many@Advisors}
\setboolean{Many@Advisors}{false}
\newcommand \@thesislevel {}
\newcommand \@studydegree {I}
\newcommand \@polishtitle {\ClassWarningNoLine{iithesis}{No \noexpand\polishtitle given}}
\newcommand \@englishtitle {\ClassWarningNoLine{iithesis}{No \noexpand\englishtitle given}}
\newcommand \@polishabstract {\ClassWarningNoLine{iithesis}{No \noexpand\polishabstract given}}
\newcommand \@englishabstract {\ClassWarningNoLine{iithesis}{No \noexpand\englishabstract given}}
\newcommand \@advisor {\ClassWarningNoLine{iithesis}{No \noexpand\advisor given}}
\newcommand \@email {\ClassWarningNoLine{iithesis}{No \noexpand\email given}}
\newcommand \@transcriptnum {\ClassWarningNoLine{iithesis}{No \noexpand\transcriptnum given}\dotfill\str@t}
\newcommand \@advisorgen [1] {\ClassWarningNoLine{iithesis}{No \noexpand\advisorgen given}\dotfill\str@t\\\null\dotfill\str@t\\}
\newcommand \@gendersuffix {em/am}
\let\old@title\title
\renewcommand \title [1] {\ClassWarningNoLine{iithesis}{\noexpand\title ignored}}
\newcommand \polishtitle [1] {\gdef\@polishtitle{#1}}
\newcommand \englishtitle [1] {\gdef\@englishtitle{#1}}
\newcommand \polishabstract [1] {\gdef\@polishabstract{#1}}
\newcommand \englishabstract [1] {\gdef\@englishabstract{#1}}
\newcommand \advisor [1] {\gdef\@advisor{#1}}
\newcommand \transcriptnum [1] {\gdef\@transcriptnum{#1}}
\newcommand \advisorgen [1] {\gdef\@advisorgen{#1}}
\DeclareOption{polish} {\setboolean{Polish@Main}{true} \PassOptionsToPackage{polish,english}{babel}}
\DeclareOption{english} {\setboolean{Polish@Main}{false}\PassOptionsToPackage{english,polish}{babel}}
\DeclareOption{lic} {\renewcommand \@thesislevel {licencjacka}}
\DeclareOption{inz} {\renewcommand \@thesislevel {in\.zynierska}}
\DeclareOption{mgr} {\renewcommand \@thesislevel {magisterska} \renewcommand \@studydegree {II}}
\DeclareOption{longabstract} {\setboolean{Long@Abstract} {true} }
\DeclareOption{shortabstract}{\setboolean{Long@Abstract} {false}}
\DeclareOption{declaration} {\setboolean{Decl@ration}{true}}
\DeclareOption{fem} {\renewcommand \@gendersuffix {am}}
\DeclareOption{masc} {\renewcommand \@gendersuffix {em}}
\DeclareOption{manyadvisors} {\setboolean{Many@Advisors} {true}}
\DeclareOption*{\ClassWarningNoLine{iithesis}{Unknown option `\CurrentOption'}}
\ExecuteOptions{polish,lic,longabstract}
\ProcessOptions\relax
\RequirePackage[OT4]{fontenc}
\RequirePackage{babel,titling,geometry}
\geometry{margin=3cm,bindingoffset=1cm,a4paper,onecolumn,twoside}
\pagestyle{headings}
\newcommand \if@pol [2] {\ifthenelse{\boolean{Polish@Main} }{#1}{#2}}
\newcommand \if@long [2] {\ifthenelse{\boolean{Long@Abstract}}{#1}{#2}}
\newcommand \if@many [2] {\ifthenelse{\boolean{Many@Advisors}}{#1}{#2}}
% Dodatkowa polonizacja
\if@pol{
\RequirePackage{indentfirst,polski}
% Kropka po numerach jednostek struktury
\renewcommand \thechapter {\arabic{chapter}.}
\renewcommand \thesection {\thechapter \arabic{section}.}
\renewcommand \thesubsection {\thesection \arabic{subsection}.}
\renewcommand \thesubsubsection {\thesubsection \arabic{subsubsection}.}
\renewcommand \chaptermark [1] {\markboth{\MakeUppercase{\chaptername\ \thechapter{} #1}}{}}
\renewcommand \sectionmark [1] {\markright{\MakeUppercase{\thesection{} #1}}{}}
\renewcommand \theequation {\ifnum \c@chapter>\z@ \thechapter\fi \@arabic\c@equation}
\renewcommand \thefigure {\ifnum \c@chapter>\z@ \thechapter\fi \@arabic\c@figure}
\renewcommand \thetable {\ifnum \c@chapter>\z@ \thechapter\fi \@arabic\c@table}
\renewcommand \appendix {\par
\setcounter{chapter}{0}
\setcounter{section}{0}
\gdef \@chapapp {\appendixname}
\gdef \thechapter {\@Alph\c@chapter}
% Poprawki w 'dodatkach'
\renewcommand \thesection {\thechapter.\arabic{section}.}
\renewcommand \chaptermark [1] {\markboth{\MakeUppercase{\appendixname\ \thechapter. ##1}}{}}
}
% Sterowanie lamaniem stron
\brokenpenalty=1000
\clubpenalty=1000
\widowpenalty=1000
}{}
% Bibliografia pojawia sie jako nienumerowany rozdzial w spisie tresci
\renewenvironment{thebibliography}[1]
{\chapter*{\bibname}%
\@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m%
\addcontentsline{toc}{chapter}{\bibname}}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
% Strona tytulowa oraz abstrakty nie resetuja numeracji stron
\renewenvironment {titlepage} {
\if@twocolumn \@restonecoltrue \onecolumn
\else \@restonecolfalse \newpage \fi
\thispagestyle{empty}
}{\if@restonecol \twocolumn \else \newpage \fi}
% Puste strony przed nowymi rozdzialami calkowicie puste, tj. bez naglowkow
\def \cleardoublepage {
\clearpage
\if@twoside
\ifodd \c@page
\else \hbox{} \thispagestyle{empty} \newpage
\if@twocolumn \hbox{} \newpage
\fi \fi \fi
}
\renewcommand \maketitlehookb {
\vfilneg
\begin{center}\large
\if@pol{\selectlanguage{english}(\@englishtitle)}
{\selectlanguage{polish}(\@polishtitle)}
\end{center}
\selectlanguage{polish}
}
\renewcommand \maketitlehookc {
\vfil
\begin{center}
\renewcommand \fmlinebreak {\\ &}
\renewcommand \and {\\[0.85em] &}
\large Praca \@thesislevel\\[0.85em]
\begin{tabular}[t]{rl}
\textbf{Promotor\if@many{zy}{}:} & \@advisor
\end{tabular}\end{center}
\vfil\vfil\vfil\vfil
\begin{center}Uniwersytet Wroc\l{}awski\\
Wydzia\l{} Matematyki i Informatyki\\
Instytut Informatyki\end{center}
}
\setlength{\parindent}{2em}
\setlength{\parskip}{1.5ex}
\renewcommand \baselinestretch {1.15}
\newcommand \fmlinebreak { }
\newcommand \str@t {\rule{0em}{1.85em}}
\newcommand \tw@col [1] {\multicolumn{2}{@{}p{20em}}{#1}}
\RequirePackage[pdftex,unicode=true]{hyperref}
\RequirePackage{etoolbox}
\AfterEndPreamble{
\if@pol{\selectlanguage{polish}\old@title{\bfseries\@polishtitle\mdseries}}
{\selectlanguage{english}\old@title{\bfseries\@englishtitle\mdseries}}
\let\old@nd\and
\renewcommand \and {, }
\hypersetup{pdfauthor={\@author},pdftitle={\@title} }
\renewcommand \and \old@nd
\renewcommand \fmlinebreak {\\}
\maketitle
\renewcommand \maketitle {\ClassWarningNoLine{iithesis}{\noexpand\maketitle ignored}}
\renewcommand \fmlinebreak {, }
\renewcommand \and {, }
\ifthenelse{\boolean{Decl@ration}}{
\selectlanguage{polish}
\begin{titlepage}\null\vfil
\begin{tabular}{@{}lll}
\multicolumn{3}{@{}l}{\@author}\\
\tw@col{\dotfill\str@t}\\
\tw@col{\dotfill\str@t}\\
\multicolumn{2}{c}{\footnotesize{(adres zameldowania)}}\\
\tw@col{\dotfill\str@t}\\
\tw@col{\dotfill\str@t}\\
\multicolumn{2}{c}{\footnotesize{(adres korespondencyjny)}}\\
PESEL: & \dotfill\str@t\\
e-mail: & \dotfill\str@t\\
\tw@col{Wydzia\l{} Matematyki i~Informatyki\str@t}\\
\tw@col{stacjonarne studia \@studydegree{} stopnia}\\
kierunek: & informatyka\\
nr albumu: & \@transcriptnum\end{tabular}\vskip 4.5em\par
\begin{center}\bfseries O\'swiadczenie\\
o autorskim wykonaniu pracy dyplomowej\end{center}\par
\frenchspacing Niniejszym o\'swiadczam, \.ze z\l{}o\.zon\k{a} do oceny
prac\k{e} zatytu\l{}owan\k{a}
\renewcommand \fmlinebreak { }%
\emph{\if@pol{\@polishtitle}
{\selectlanguage{english}\@englishtitle\selectlanguage{polish}}}
\renewcommand \fmlinebreak {, }%
wykona\l{}\@gendersuffix{} samodzielnie pod kierunkiem promotor%
\if@many{\'ow:}{a,} \@advisorgen. O\'swiadczam, \.ze powy\.zsze dane s\k{a}
zgodne ze stanem faktycznym i~znane mi s\k{a} przepisy ustawy z~dn. 4~lutego
1994~r. o~prawie autorskim i~prawach pokrewnych (tekst jednolity: Dz.~U.
z~2006~r. nr 90, poz. 637, z~p\'o\'zniejszymi zmianami) oraz \.ze tre\'s\'c
pracy dyplomowej przedstawionej do obrony, zawarta na przekazanym no\'sniku
elektronicznym, jest identyczna z~jej wersj\k{a} drukowan\k{a}.
\vskip 1.5em\par Wroc\l{}aw, \@date
\vskip 3em\par\hfill\footnotesize{(czytelny podpis)}\hskip 6em\null
\par\vfil\null\end{titlepage}
}{}
\if@pol {\selectlanguage{polish}}{\selectlanguage{english}}
\cleardoublepage\begin{abstract}
\renewcommand \fmlinebreak {\\}\par
\if@pol {\frenchspacing\@polishabstract}{\noindent\@englishabstract}
\if@long{\end{abstract}}{\begin{center}\rule[3pt]{300pt}{1pt}\end{center}\par}
\if@pol {\selectlanguage{english}}{\selectlanguage{polish}}
\if@long{\clearpage\begin{abstract}\par}{}
\if@pol {\noindent\@englishabstract\selectlanguage{polish}}
{\frenchspacing\@polishabstract\selectlanguage{english}}
\end{abstract}
\if@long{\if@pol{\selectlanguage{polish}}{\selectlanguage{english}}}{}
\tableofcontents
}
\endinput