amuthesis/amuthesis.cls

471 lines
13 KiB
OpenEdge ABL
Raw Normal View History

2017-09-21 09:27:30 +02:00
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{amuthesis}[2017/10/01 AMU Thesis]
% ======================================================== %
% Obsługa opcji pakietu %
% ======================================================== %
2017-09-21 18:33:44 +02:00
% Język dokumentu
2017-09-21 09:27:30 +02:00
\newif\if@optpolski
\DeclareOption{polski}{\@optpolskitrue}
\ExecuteOptions{polski}
\DeclareOption{english}{\@optpolskifalse}
2017-09-21 18:33:44 +02:00
% Wcięcia pierwszych akapitów w paragrafie
2017-09-21 09:27:30 +02:00
\newif\if@optindent
\DeclareOption{indent}{\@optindenttrue}
2017-09-21 18:33:44 +02:00
% Numerowanie wierszy
2017-09-21 09:27:30 +02:00
\newif\if@optlineno
\DeclareOption{lineno}{\@optlinenotrue}
2017-09-22 11:11:49 +02:00
% Wsparcie dla stron pustych
\newif\if@optleftblank
\DeclareOption{leftblank}{\@optleftblanktrue}
2017-09-22 11:03:10 +02:00
% Skład jedno- i dwustronny
\DeclareOption{oneside}{
\PassOptionsToClass{oneside}{mwbk}
\PassOptionsToClass{oneside}{book}
}
\DeclareOption{twoside}{
\PassOptionsToClass{twoside}{mwbk}
\PassOptionsToClass{twoside}{book}
}
2017-09-21 09:27:30 +02:00
% Obsłuż nieznane opcje
\DeclareOption*{
\ClassWarning{amuthesis}{Nieznany parametr klasy: \CurrentOption}
}
2017-09-21 18:33:44 +02:00
% Przetwórz opcje
2017-09-21 09:27:30 +02:00
\ProcessOptions\relax
% Oprzyj dokument na jednym z zestawów, w zależności
2017-09-21 18:33:44 +02:00
% od statusu opcji 'optpolski'
2017-09-21 09:27:30 +02:00
\if@optpolski
2017-09-22 10:56:12 +02:00
\LoadClass[oneside,11pt]{mwbk}
2017-09-21 09:27:30 +02:00
\RequirePackage{polski}
\else
2017-09-22 10:56:12 +02:00
\LoadClass[oneside,11pt]{book}
2017-09-21 09:27:30 +02:00
\fi
2017-09-21 18:33:44 +02:00
% Uruchom numerację wierszy, jeśli do klasy przekazano
% opcję 'lineno'
2017-09-21 09:27:30 +02:00
\if@optlineno
\RequirePackage[mathlines]{lineno}
\newcommand*\patchAmsMathEnvironmentForLineno[1]{%
\expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
\expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
\renewenvironment{#1}%
{\linenomath\csname old#1\endcsname}%
{\csname oldend#1\endcsname\endlinenomath}}%
\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
\patchAmsMathEnvironmentForLineno{#1}%
\patchAmsMathEnvironmentForLineno{#1*}}%
\AtBeginDocument{%
\patchBothAmsMathEnvironmentsForLineno{equation}%
\patchBothAmsMathEnvironmentsForLineno{align}%
\patchBothAmsMathEnvironmentsForLineno{flalign}%
\patchBothAmsMathEnvironmentsForLineno{alignat}%
\patchBothAmsMathEnvironmentsForLineno{gather}%
\patchBothAmsMathEnvironmentsForLineno{multline}%
}
\linenumbers
\fi
% ======================================================== %
2017-09-21 18:33:44 +02:00
% Podstawowe pakiety i ustawienia dokumentu %
2017-09-21 09:27:30 +02:00
% ======================================================== %
2017-09-22 10:56:12 +02:00
\RequirePackage{ifxetex}
\RequirePackage{ifluatex}
\newif\if@xetexorluatex
\ifxetex
\@xetexorluatextrue
\else
\ifluatex
\@xetexorluatextrue
\else
\@xetexorluatexfalse
\fi
\fi
2017-09-21 09:27:30 +02:00
2017-09-22 10:56:12 +02:00
% Obsługa fontów
\if@xetexorluatex
%\RequirePackage{unicode-math}
\RequirePackage{fontspec}
\RequirePackage{mathpazo}
\RequirePackage{avant}
\setmainfont
[ BoldFont = texgyrepagella-bold.otf ,
ItalicFont = texgyrepagella-italic.otf ,
BoldItalicFont = texgyrepagella-bolditalic.otf ]
{texgyrepagella-regular.otf}
\newfontfamily\scshape[Letters=SmallCaps]{texgyrepagella-regular.otf}
\else
% Upewnij się, że dokument jest składany UTF-8
\RequirePackage[utf8]{inputenc}
\RequirePackage[sc]{mathpazo}
\RequirePackage{avant}
\fi
2017-09-21 18:33:44 +02:00
% Dołącz font 'Souce Code Pro'
2017-09-22 10:56:12 +02:00
\RequirePackage[scale=.93,semibold]{sourcecodepro}
2017-09-21 09:27:30 +02:00
2017-09-21 18:33:44 +02:00
% Ustal rozmiar dokumentu
2017-09-21 09:27:30 +02:00
\RequirePackage{geometry}
\geometry{a4paper,%
innermargin=3.75cm,%
outermargin=3.75cm,%
tmargin=4.0cm,%
bmargin=4.0cm,%
headsep=24pt,%
footskip=42pt}
2017-09-21 18:33:44 +02:00
% Zapewnij poprawną interakcję wewnątrz pliku PDF
2017-09-21 09:27:30 +02:00
\RequirePackage[hidelinks,unicode]{hyperref}
2017-09-22 11:11:49 +02:00
% Obsłuż opis pustych stron
\newcommand*{\leftblank}[1]{\gdef\@leftblank{#1}}
\newcommand*{\@leftblank}{}
\leftblank{Ta strona jest pusta.}
\if@optleftblank
\def\cleardoublepage{%
\clearpage\if@twoside%
\ifodd\c@page%
\else
\vspace*{\fill}
\hfill
\begin{center}
\@leftblank
\end{center}
\vspace{\fill}
\thispagestyle{empty}
\newpage
\if@twocolumn\hbox{}\newpage\fi
\fi
\fi
}
\fi
2017-09-21 09:27:30 +02:00
% Dołącz podstawowe pakiety
\RequirePackage{xcolor}
\RequirePackage{amsmath}
\RequirePackage{amssymb}
\RequirePackage{amsthm}
\RequirePackage{graphicx}
\RequirePackage{microtype}
2017-09-22 11:03:10 +02:00
\RequirePackage{booktabs}
2017-09-21 09:27:30 +02:00
% ======================================================== %
% Konfiguracja i polecenia specjalne %
% ======================================================== %
2017-09-21 18:33:44 +02:00
% Ustawienia składu pionowego
\linespread{1.15}
2017-09-21 09:27:30 +02:00
\raggedbottom
2017-09-21 18:33:44 +02:00
% Zdefiniuj otoczenia dla abstraktów
2017-09-21 15:24:38 +02:00
\newenvironment{abstract}{\chapter*{Abstract}}{}
\newenvironment{streszczenie}{\chapter*{Streszczenie}}{}
2017-09-21 18:33:44 +02:00
% Zdefiniuj otoczenie dla dedykacji
2017-09-21 15:24:38 +02:00
\newenvironment{dedykacja}{%
2017-09-22 11:03:10 +02:00
\cleardoublepage\thispagestyle{empty}\mbox{}\vfill
2017-09-21 18:55:02 +02:00
\hfill\begin{minipage}{0.5\textwidth}
\begin{flushleft}
2017-09-21 15:24:38 +02:00
}{
2017-09-21 18:55:02 +02:00
\end{flushleft}
2017-09-21 15:24:38 +02:00
\end{minipage}
2017-09-21 18:55:02 +02:00
\vspace*{4cm}
2017-09-21 15:24:38 +02:00
}
2017-09-21 18:33:44 +02:00
% ======================================================== %
% Strona tytułowa %
% ======================================================== %
% Zdefiniuj parametry strony tytułowej
2017-09-21 15:24:38 +02:00
\newcommand*{\titlePL}[1]{\gdef\@titlePL{#1}}
\newcommand*{\@titlePL}{}
\newcommand*{\titleEN}[1]{\gdef\@titleEN{#1}}
\newcommand*{\@titleEN}{}
\newcommand*{\album}[1]{\gdef\@album{#1}}
\newcommand*{\@album}{}
\newcommand*{\type}[1]{\gdef\@type{#1}}
\newcommand*{\@type}{}
\newcommand*{\field}[1]{\gdef\@field{#1}}
\newcommand*{\@field}{}
\newcommand*{\supervisor}[1]{\gdef\@supervisor{#1}}
\newcommand*{\@supervisor}{}
\if@optpolski
\title{\@titlePL}
\else
\title{\@titleEN}
\fi
2017-09-21 18:33:44 +02:00
% Zdefiniuj polecenie '\maketitle'
2017-09-21 15:24:38 +02:00
\renewcommand*{\maketitle}{%
\clearpage\thispagestyle{empty}%
{\noindent\centering\scshape\large%
Uniwersytet im. Adama Mickiewicza w Poznaniu%
\strut\par}%
{\noindent\centering\normalfont%
Wydział Matematyki i Informatyki%
\strut\par}%
\vspace{2.5cm}
{\noindent\centering\normalfont\@author\strut\par}%
{\noindent\centering\normalfont%
Numer albumu: %
\@album\strut\par}%
\vspace{2.5cm}
2017-09-21 18:33:44 +02:00
% Uzależnij kolejność tytułów od wybranego języka
2017-09-21 15:24:38 +02:00
\if@optpolski
{\noindent\centering\Large\@titlePL\strut\par}%
{\noindent\centering\normalfont\@titleEN\strut\par}%
\else
{\noindent\centering\Large\@titleEN\strut\par}%
{\noindent\centering\normalfont\@titlePL\strut\par}%
\fi
\vfill
{\noindent\normalfont\centering{%
Praca \@type{} na kierunku \@field{}\\
2017-09-21 18:33:44 +02:00
napisana pod opieką\\
2017-09-21 15:24:38 +02:00
\bfseries{\@supervisor}%
}\strut\par}%
\vspace{2.5cm}%
{\noindent\centering\normalfont\@date\strut\par}
}
2017-09-21 18:33:44 +02:00
% ======================================================== %
% Oświadczenie %
% ======================================================== %
2017-09-22 10:07:09 +02:00
\RequirePackage{ifthen}
2017-09-21 18:33:44 +02:00
% Zdefiniuj parametry oświadczenia
2017-09-21 15:24:38 +02:00
\newif\if@stmale
2017-09-22 10:07:09 +02:00
\@stmaletrue
\newcommand*{\stsex}[1]{%
\ifthenelse{\equal{\unexpanded{#1}}{M}}{\@stmaletrue}{\@stmalefalse}%
}
2017-09-21 15:24:38 +02:00
2017-09-21 18:33:44 +02:00
\newcommand*{\stdate}[1]{\gdef\@stdate{#1}}
\newcommand*{\@stdate}{}
2017-09-21 15:24:38 +02:00
\newcommand*{\stread}[1]{\gdef\@stread{#1}}
\newcommand*{\@stread}{}
\newcommand*{\stprotect}[1]{\gdef\@stprotect{#1}}
\newcommand*{\@stprotect}{}
2017-09-21 18:33:44 +02:00
% Zdefiniuj polecenie '\makestatement'
2017-09-21 15:24:38 +02:00
\newcommand*{\makestatement}{%
2017-09-22 11:03:10 +02:00
\cleardoublepage\thispagestyle{empty}%
2017-09-21 15:24:38 +02:00
{\noindent\normalfont\flushright{\@stdate{}}\strut\par}%
\vskip 2.5 \baselineskip
\vbox to 6 \baselineskip{%
\bgroup%
\fontsize{18pt}{24pt}\selectfont\centering%
\vskip 1.5 \baselineskip Oświadczenie\par%
\vfill%
\egroup%
}%
\if@optindent
\makeatletter
\@afterindenttrue
\makeatother
\else
\makeatletter
\@afterindentfalse
\@afterheading
\makeatother
\fi%
{%
Ja, niżej %
\if@stmale podpisany \else podpisana \fi %
{\bfseries\@author}, %
\if@stmale student \else studentka \fi %
Wydziału Matematyki i~Informatyki Uniwersytetu im.~Adama Mickiewicza w Poznaniu oświadczam, że przedkładaną pracę dyplomową pt: %
\emph{\@title} %
\if@stmale napisałem \else napisałam \fi %
samodzielnie. Oznacza to, że przy pisaniu pracy, poza niezbędnymi konsultacjami, nie %
\if@stmale korzystałem \else korzystałam \fi %
2017-09-22 10:56:12 +02:00
z pomocy innych osób, a~w~szczególności nie %
2017-09-21 15:24:38 +02:00
\if@stmale zlecałem \else zlecałam \fi %
opracowania rozprawy lub jej części innym osobom, ani nie %
\if@stmale odpisywałem \else odpisywałam \fi %
2017-09-21 18:33:44 +02:00
tej rozprawy lub jej części od innych osób. Oświadczam również, że egzemplarz pracy dyplomowej w~wersji drukowanej jest całkowicie zgodny z~egzemplarzem pracy dyplomowej w~wersji elektronicznej. Jednocześnie przyjmuję do wiadomości, że przypisanie sobie, w~pracy dyplomowej, autorstwa istotnego fragmentu lub innych elementów cudzego utworu lub ustalenia naukowego stanowi podstawę stwierdzenia nieważności postępowania w~sprawie nadania tytułu zawodowego.\par%
}%
2017-09-21 15:24:38 +02:00
{
\vspace{2cm}%
\small%
2017-09-21 18:33:44 +02:00
\noindent[\uppercase{\@stread}]{\hskip 4pt}--{\hskip 4pt}%
wyrażam zgodę na udostępnianie mojej pracy w czytelni Archiwum UAM\par
\noindent[\uppercase{\@stprotect}]{\hskip 4pt}--{\hskip 4pt}%
wyrażam zgodę na udostępnianie mojej pracy w zakresie koniecznym do ochrony mojego prawa do autorstwa lub praw osób trzecich\par
2017-09-21 15:24:38 +02:00
}
\clearpage
}
2017-09-21 09:27:30 +02:00
% ======================================================== %
% Definicje poleceń hierarchicznych %
% ======================================================== %
\RequirePackage{xparse}
% Rozdziały
\RenewDocumentCommand\chapter{sm}{%
\cleardoublepage\mbox{}
\vskip 3 \baselineskip
\thispagestyle{plain}
\IfBooleanTF{#1}{%
\vbox to 6 \baselineskip{%
\bgroup%
\fontsize{18pt}{24pt}\selectfont\centering%
\vskip 1.5 \baselineskip#2\par%
\vfill%
\egroup%
}%
\markboth{#2}{#2}%
}{%
\stepcounter{chapter}
\vbox to 6 \baselineskip{%
\bgroup%
\fontsize{14pt}{24pt}\selectfont\centering%
\textsc{\chaptername~\thechapter}\par%
\vskip 0.5 \baselineskip%
\fontsize{18pt}{24pt}\selectfont#2\par%
\vfill%
\egroup
}%
\addcontentsline{toc}{chapter}{\chaptername~\thechapter.~#2}%
%\addtocontents{toc}{\vskip 1 \baselineskip}
\markboth{\chaptername~\thechapter.~#2}{\chaptername~\thechapter.~#2}%
}
\if@optindent
\makeatletter
\@afterindenttrue
\makeatother
\else
\makeatletter
\@afterindentfalse
\@afterheading
\makeatother
\fi
}
% Paragrafy
\RenewDocumentCommand\section{sm}{%
\stepcounter{section}
\vskip 2 \baselineskip
\IfBooleanTF{#1}{%
\vbox to 2 \baselineskip{%
\bgroup%
\fontsize{14pt}{24pt}\selectfont\centering%
\textsc{#2}\par%
\vfill%
\egroup%
}%
\markright{#2}%
}{%
\vbox to 2 \baselineskip{%
\bgroup%
\fontsize{14pt}{24pt}\selectfont\centering%
\if@optpolski
\addcontentsline{toc}{section}{\thesection.~\hskip 0.25em #2}%
\textsc{\thesection.~\hskip 0.25em #2}\par%
\else
\addcontentsline{toc}{section}{\thesection~\hskip 1em #2}%
\textsc{\thesection~\hskip 1em #2}\par%
\fi
\vfill%
\egroup%
}%
\markright{\thesection.~#2}%
}
\if@optindent
\makeatletter
\@afterindenttrue
\makeatother
\else
\makeatletter
\@afterindentfalse
\@afterheading
\makeatother
\fi
}
% Podparagrafy
\RenewDocumentCommand\subsection{sm}{%
\stepcounter{subsection}
\vskip 2 \baselineskip
\IfBooleanTF{#1}{%
\vbox to 1 \baselineskip{%
\bgroup%
\noindent\textbf{#2}\par%
\vfill%
\egroup%
}%
\markright{#2}%
}{%
\vbox to 1 \baselineskip{%
\bgroup%
\noindent
\if@optpolski
\addcontentsline{toc}{subsection}{\thesubsection.~\hskip 0.25em #2}%
\textbf{\thesubsection.~\hskip 0.25em #2}\par%
\else
\addcontentsline{toc}{subsection}{\thesubsection~\hskip 1em #2}%
\textbf{\thesubsection~\hskip 1em #2}\par%
\fi
\vfill%
\egroup%
}%
\markright{\thesubsection.~#2}%
}
\if@optindent
\makeatletter
\@afterindenttrue
\makeatother
\else
\makeatletter
\@afterindentfalse
\@afterheading
\makeatother
\fi
}
2017-09-21 15:24:38 +02:00
% ======================================================== %
% Paginy %
% ======================================================== %
\RequirePackage{fancyhdr}
\renewcommand{\headrulewidth}{0pt}
\fancyhf{}
\fancyhead[RE]{\small\leftmark}
\fancyhead[LO]{\small\rightmark}
\fancyhead[LE,RO]{\small\thepage}
\pagestyle{fancy}
\renewcommand{\sectionmark}[1]{%
\markright{#1}{}}
\renewcommand{\chaptermark}[1]{%
\markboth{\ifnum\value{chapter}>0\chaptername~\thechapter{}.~ \fi#1}{}}
\fancypagestyle{closing}{
\fancyhf{}
\fancyhead[RE]{\small\leftmark}
\fancyhead[LO]{\small\rightmark}
\fancyhead[LE,RO]{\small\thepage}
}
\fancypagestyle{plain}{%
\fancyhf{}
\cfoot{\small\thepage}
}
2017-09-21 09:27:30 +02:00
\endinput