msc-iksinski/wmimgr.cls

428 lines
14 KiB
TeX

% Klasa dokument\'ow do sk{\l}adu prac magisterskich/licencjackich
% na wydziale Matematyki i Informatyki UAM
% Klasę oparto na analogicznej klasie stworzonej Wydziale
% Zarz\k{a}dzania Uniwersytetu Gda\'nskiego (wersja 1.10):
% http://gnu.univ.gda.pl/~tomasz/prog/tex/wzmgr/wzmgr.html
% Ta klasa była z kolei oparta na klasie opracowanej
% przez Marcina Woli\'nskiego.
\def\ThisClassVersionId{v1.0}
%
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{wmimgr}[2009/06/19 \ThisClassVersionId, Praca magisterska]
\def\@baseclass{report}
\def\@rodzajpracy{magisterska}
\def\@BInterlinia{\relax}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\@baseclass}}
\PassOptionsToClass{a4paper,openany,11pt}{\@baseclass}
%
\newif\if@wmimgrauthoryear
\DeclareOption{autorrok}{\@wmimgrauthoryeartrue}
\newif\if@wmimgrbackref \DeclareOption{backref}{\@wmimgrbackreftrue}
\newif\if@oswiadczenie \DeclareOption{oswiadczenie}{\@oswiadczenietrue}
\DeclareOption{licencjacka}{\def\@rodzajpracy{licencjacka}}
\DeclareOption{skorowidz}{\input{makeidx.sty}\makeindex}
\DeclareOption{palatino}{\input{tgpagella.sty}}
\DeclareOption{tgpagella}{\input{tgpagella.sty}}
\DeclareOption{twoside}{\PassOptionsToClass{twoside}{\@baseclass}}
% opcja `brudnopis' jest poprawiona -- teraz wykorzystuje pakiet `prelim2e'
\DeclareOption{brudnopis}{\AtEndOfClass{\input{prelim2e.sty}%
\renewcommand{\PrelimWords}{\ThisDocVersionId}\linespread{1.0}}}
\DeclareOption{xodstep}{\AtEndOfClass{\linespread{1.3}}}
\ProcessOptions
%
\LoadClass{\@baseclass}
%
\usepackage{graphicx}
\usepackage{polski}
\usepackage[utf8]{inputenc}
%%
\if@wmimgrbackref
\usepackage[breaklinks,pagebackref]{hyperref}\else
\usepackage[breaklinks]{hyperref} \fi
\if@wmimgrauthoryear
\typeout{*** Cytowanie autor-rok ***}\RequirePackage[numbers]{natbib}\fi
%
%
\textwidth\paperwidth
\advance\textwidth -55mm
\oddsidemargin-1in
\advance\oddsidemargin 30mm
\evensidemargin-1in
\advance\evensidemargin 25mm
\topmargin -1in
\advance\topmargin 25mm
\setlength\textheight{48\baselineskip}
\addtolength\textheight{\topskip}
\marginparwidth15mm
%
\widowpenalty999999
\tolerance450
\pretolerance250
\hfuzz=1.5pt
\hbadness1450
%
\def\AndNextAuthor{\ifnum\language=0\& \else i \fi}
\newcount\authornumber
\authornumber=0
%
\def\author#1{%
\global\advance\authornumber\@ne
\expandafter\def\csname theauthor\number\authornumber\endcsname
{\ignorespaces#1\unskip}%
\expandafter\def\csname theauthorid\number\authornumber
\endcsname{???\ClassError{wmimgr}{Brak numeru albumu}\@ehc}%
\expandafter\let\csname thenetaddress\number\authornumber\endcsname\relax }
%
\def\nralbumu#1{%
\expandafter\def\csname theauthorid\number\authornumber\endcsname
{\ignorespaces#1\unskip}}
\def\email#1{% -- opcjonalny --
\expandafter\def\csname thenetaddress\number\authornumber\endcsname
{\ignorespaces#1\unskip}}
%%\def\authorlist#1{\def\@author{#1}}
\def\@author{\@defaultauthorlist}
\def\@subtitle{}
\def\@logo{}
\newcount\count@@
\def\@defaultauthorlist{%
\count@=\authornumber
\count@@=0
\loop
\ifnum\count@>0
\advance\count@@ by 1
\begingroup \Large\bf
\ignorespaces\csname theauthor\number\count@@\endcsname\par
\normalsize \rm nr~albumu:
\ignorespaces\csname theauthorid\number\count@@\endcsname\par
% adres email nie jest drukowany -- ale si{\e} przyda
%%\ignorespaces\csname thenetaddress\number\count@@\endcsname
\par
\medskip \endgroup
\advance\count@ by -1
\repeat
}
% <<
\def\UniversityName#1{\def\Univ@Name{#1}}
\def\Univ@Name{UNIWERSYTET IM. ADAMA MICKIEWICZA \\ WYDZIA\L{}
MATEMATYKI I INFORMATYKI}%
% <<
\renewcommand\maketitle{%
\begin{titlepage}%
\let\footnotesize\small
\let\footnoterule\relax
\let \footnote \thanks
\begin{center}%
{\large \textbf{\Univ@Name}\par}
\par
\@logo
\end{center}%
\vspace{1cm plus 1fill}
\begin{flushleft}%
{\@author\par}
\end{flushleft}%
\vspace{8mm plus 1mm minus 2mm}
\begin{center}%
{\huge\textbf{\@title}\par}
\vspace{0.5cm}
{\LARGE\textit{\@subtitle}\par}
\vspace{2cm plus 1.5fill}
\begin{flushright}\large
\begin{tabular}{l}
Praca \@rodzajpracy{} na kierunku:\\[3pt]
\MakeUppercase{\@kierunek}\\[3pt]
Promotor: \\[3pt]
\bfseries \@opiekun
\end{tabular}
\end{flushright}
\vspace{15mm plus .1fill}
{\large \@miejsce\space \@date\par}
\end{center}
\@thanks
\end{titlepage}%
%
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
\global\let\title\relax
\global\let\@subtitle\@empty
\global\let\subtitle\relax
\global\let\logo\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
%
% Jezeli podano slowa kluczowe wydrukuj
\clearpage
\if@oswiadczenie\oswiadczenie\fi
\thispagestyle{empty}
\ifvoid\abspagebox \@latex@warning{*** Nie podano streszczenia ***}%
\else \InsertAbstractHere \fi
\ifx\@keywords\EmptyKwsList \@latex@warning{*** Nie podano slow kluczowych ***}%
\else \section*{S{\l}owa kluczowe}
\@keywords
\fi
\cleardoublepage %%
\tableofcontents
%\listoftables
%\listoffigures
} %% --renewcommand: maketitle --
%%\def\nralbumu#1{\gdef\@nralbumu{#1}}
%%\def\@nralbumu{???\ClassError{wmimgr}{Brak numeru albumu}\@ehc}
\def\title#1{\gdef\@title{#1}\gdef\thetitle{#1}}
\def\subtitle#1{\gdef\@subtitle{#1}}
\def\logo#1{\gdef\@logo{#1}}
\def\kierunek#1{\gdef\@kierunek{#1}}
\def\@kierunek{???\ClassError{wmimgr}{Nie podano kierunku studiow}\@ehc}
\def\opiekun#1{\gdef\@opiekun{#1}}
\def\@opiekun{???\ClassError{wmimgr}{Brak danych opiekuna pracy}\@ehc}
\def\miejsce#1{\gdef\@miejsce{#1}}
\def\@miejsce{Sopot}
%
\def\keywords#1{\gdef\@keywords{#1}}
% slowa kluczowe sa opcjonalne:
%%\def\@keywords{???\ClassError{wmimgr}{Brak slow kluczowych}\@ehc}
\def\@keywords{????}
\def\EmptyKwsList{????}
%%
\def\klasyfikacja#1{\gdef\@klasyfikacja{#1}}
\def\@klasyfikacja{???\ClassError{wmimgr}{Brak klasyfikacji
tematycznej}\@ehc}
%
\newbox \abspagebox %% *tp **
\def\InsertAbstractHere{\unvbox \abspagebox}
%
\renewenvironment{abstract}{\global
\setbox \abspagebox \vbox \bgroup
\section*{Streszczenie} }
{\egroup}
%
\renewcommand*\@seccntformat[1]{\csname the#1\endcsname.\enspace}
\def\numberline#1{\hb@xt@\@tempdima{#1.\hfil}}
\renewcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\mdseries
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill
\nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}
%
\def\@makechapterhead#1{%
%\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\normalsize \bfseries \MakeUppercase{\@chapapp}\space \thechapter
\par\nobreak
\vskip\baselineskip
\fi
\interlinepenalty\@M
\LARGE \bfseries #1\par\nobreak
\vskip 40\p@
}}
%
\def\@makeschapterhead#1{%
%\vspace*{50\p@}%
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\LARGE \bfseries #1\par\nobreak
\vskip 40\p@
}}
%
\renewcommand{\section}{\@startsection{section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\reset@font\Large\bfseries\raggedright}}
\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\reset@font\large\bfseries\raggedright}}
\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\reset@font\normalsize\bfseries\raggedright}}
\renewcommand{\paragraph}{???\ClassError{wmimgr}{Zbyt duzo srodtytulow}\@ehc}%
%
% Skorowidz: dodanie kresek w pozycjach skorowidza stopnia drugiego
\renewenvironment{theindex}{%
\clearpage \refstepcounter{chapter}% potrzebne do prawid{\l}owego
% dzia{\l}ania zak{\l}adek w dokumencie PDF
\columnseprule \z@ \columnsep 35\p@
\twocolumn[\@makeschapterhead{\indexname}]%
\@mkboth{\indexname}{\indexname}%
\addcontentsline{toc}{chapter}{\indexname}%
\thispagestyle{plain}\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem }
{\clearpage }
\def\indexemdashes{%
\def\@idxitem{\par\hangindent 0pt}
\def\subitem{\par\hangindent 0pt --- }
\def\subsubitem{\par\hangindent 0pt --- --- }
\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}}
\indexemdashes
%
% Wprowadzenie/zako\'nczenie
\newcommand{\introduction}{%\doublepage
\chapter*{\IntroName\@mkboth{\IntroName}{\IntroName}}%
\addcontentsline{toc}{chapter}{\IntroName}}
%
\newcommand{\summary}{%\doublepage
\chapter*{\SummaryName\@mkboth{\SummaryName}{\SummaryName}}%
\addcontentsline{toc}{chapter}{\SummaryName}}
% O\'swiadczenie (dodane 7.4.2005)
\def\oswiadczenieText{%
\par
Ja, ni\.zej podpisany {\csname theauthor1\endcsname}, student
Wydzia{\l}u Matematyki i~Informatyki Uniwersytetu im.~Adama Mickiewicza
w~Poznaniu, o\'swiadczam, \.ze przedk{\l}adan\k{a} prac\k{e} dyplomow\k{a}~
pt.~{\emph{\let\\=\relax\thetitle}\/} napisa{\l}em samodzielnie. Oznacza to,
\.ze przy pisaniu pracy, poza niezb\k{e}dnymi konsultacjami, nie korzysta{\l}em
z~pomocy innych os\'ob, a~w~szczeg\'olno\'sci nie zleca{\l}em opracowania
rozprawy lub jej cz\k{e}\'sci innym osobom ani nie odpisywa{\l}em tej rozprawy
lub jej cz\k{e}\'sci od innych os\'ob.\par
O\'swiadczam r\'ownie\.z, \.ze egzemplarz pracy dyplomowej w~formie wydruku
komputerowego jest zgodny z~egzemplarzem pracy dyplomowej w~formie
elektronicznej.\par
Jednocze\'snie przyjmuj\k{e} do wiadomo\'sci, \.ze gdyby powy\.zsze
o\'swiadczenie okaza{\l}o si\k{e} nieprawdziwe, decyzja o~wydaniu mi dyplomu
zostanie cofni\k{e}ta.\endgraf }
%
\long\def\oswiadczenie{%%\newpage
\if@twocolumn \onecolumn \fi
%%\centerline{\large\textbf{O\'swiadczenie}}
%%\vspace*{50mm}
\chapter*{O\'swiadczenie}%
\addcontentsline{toc}{chapter}{O\'swiadczenie}%
%\hbox to.8\textwidth{\hbox to45mm{\dotfill}\hss
\thispagestyle{empty}
\vskip6mm
\begin{flushright}\large
Pozna\'n, dnia \hbox to40mm{\dotfill}
\end{flushright}
\par
\vskip12mm
\noindent
\oswiadczenieText
\par\vskip20mm
\centerline{\vbox{%
\hbox to.8\textwidth{\hbox to50mm{}\hss
\hbox to50mm{\dotfill}}
\hbox to.83\textwidth{\hbox to60mm{}\hss
\hbox to60mm{\hss podpis\hss}}%
}}\par
\newpage }
%
% Polecenia listoffigures/listoftables uproszczono oraz
% dodano \addcontentsline, tak aby tytu{\l} spisu pojawi{\l}
% si\k{e} w spisie tre\'sci i zak\ladkach w pliku PDF:
\renewcommand\listoffigures{%
\chapter*{\listfigurename
\@mkboth{\MakeUppercase\listfigurename}%
{\MakeUppercase\listfigurename}}%
\addcontentsline{toc}{chapter}{\listfigurename}
\@starttoc{lof}}
%
\renewcommand\listoftables{%
\chapter*{\listtablename
\@mkboth{%
\MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
\@starttoc{lot}%
\addcontentsline{toc}{chapter}{\listtablename}}
%
\renewenvironment{thebibliography}[1]
{\chapter*{\bibname}%
\@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
\addcontentsline{toc}{chapter}{\bibname}%<--
\list{%%
\@biblabel{\@arabic\c@enumiv}}%\fi}%
{%%
\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}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
% Uproszczono polecenie \@makecaption, tak \.ze podpisy s\k{a}
% teraz sk{\l}adane od lewego marginesu.
% Dodano polecenie \source do sk{\l}adania \'xr\'od{\l}a
\long\def\@makecaption#1#2{\par
\vskip\abovecaptionskip
\begin{flushleft}\small\textbf{#1}. #2\end{flushleft}
%\vskip\belowcaptionskip % niepotrzebne bo po caption
%winno by\'c \'xr\'od{\l}o
\par
}
\def\source#1{\par \begin{flushleft}\small
\SourceName:~#1\end{flushleft}}
%
% Oznakowanie wersji dokumentu na ka\.zdej stronie w postaci
% adresu e-mail pierwszego autora (je\.zeli jest zdefiniowany) lub imienia
% i nazwiska pierwszego autora + tego co autor wpisa{\l} jako
% argument polecenia \nrwersji + bie{\.z}\k{a}ca data.
\def\nrwersji#1{\def\ThisDocVersion{#1}}\nrwersji{????}%
\def\ThisDocVersionId{%
\expandafter \ifx \csname theauthor1 \endcsname \undefined
\else \csname theauthor1\endcsname \fi
%% adres moze zawierac nie-litery (np `_' powoduje blad), pomijam
%\expandafter \ifx \csname thenetaddress1\endcsname \undefined
%\else \csname thenetaddress1\endcsname \fi
\space --\space wersja \ThisDocVersion\space z\space
\number\day/\number\month/\number\year~r. }
%
\def\IntroName{Wprowadzenie}
\def\SummaryName{Zako\'nczenie}
\def\SourceName{\'Zr\'od{\l}o}
\newcommand{\eng}[1]{(ang.~\emph{#1})}
\newcommand{\english}[1]{\textit{#1}}
\newcommand{\turkish}[1]{\textit{#1}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\noqa}[1]{}
\usepackage{hyperref}
\usepackage{xstring}
% Format a reference to a Gonito submission
\newcommand{\gonitoref}[1]{\{\href{https://gonito.net/q/#1}{\StrMid{#1}{1}{6}}\}}
% A bare score from Gonito
\newcommand{\gonitobarescore}[1]{\minput{scores/#1.txt}}
% A score from Gonito along with a reference
\newcommand{\gonitoscore}[1]{\gonitobarescore{#1} \gonitoref{#1}}
% A reference and a score as two cells in a table
\newcommand{\gonitoentry}[1]{\gonitoref{#1} & \minput{scores/#1.txt}}
%
\endinput