summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xiithesis.cls280
1 files changed, 280 insertions, 0 deletions
diff --git a/iithesis.cls b/iithesis.cls
new file mode 100755
index 0000000..ea863f4
--- /dev/null
+++ b/iithesis.cls
@@ -0,0 +1,280 @@
+% 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