This repository has been archived on 2022-05-18. You can view files and clone it, but cannot push or open issues or pull requests.
thesis/fithesis/style/mu/fithesis-base.sty

625 lines
19 KiB
Text
Raw Normal View History

%%
%% This is file `fithesis-base.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% base.dtx (with options: `base')
%%
%% Copyright 1998--2020 Daniel Marek (DM), Jan Pavlovič (JP),
%% Vít Novotný (VN), Petr Sojka (PS)
%% http://www.fi.muni.cz/tech/unix/tex/fithesis.xhtml
%% Faculty of Informatics, Masaryk University (Brno, Czech Republic)
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version
%% 1.3 of this license or (at your option) any later version.
%% The latest version of this license is available at
%%
%% http://www.latex-project.org/lppl.txt
%%
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is Vít Novotný (VN).
%% Send bug reports, requests for additions and questions
%% either to the fithesis discussion forum at
%%
%% http://is.muni.cz/auth/df/fithesis-sazba/
%%
%% or to the e-mail address <witiko@mail.muni.cz>.
%%
%%
%% MODIFICATION ADVICE:
%%
%% If you want to customize this file, it is best to make a copy of
%% the source file(s) from which it was produced. Use a different
%% name for your copy(ies) and modify the copy(ies); this will ensure
%% that your modifications do not get overwritten when you install a
%% new release of the standard system. You should also ensure that
%% your modified source file does not generate any modified file with
%% the same name as a standard file.
%%
%% You will also need to produce your own, suitably named, .ins file to
%% control the generation of files from your source file; this file
%% should contain your own preambles for the files it generates, not
%% those in the standard .ins files.
%%
%% The names of the source files used are shown above.
%%
\ProvidesPackage{fithesis/style/mu/fithesis-base}[2018/12/25]
\NeedsTeXFormat{LaTeX2e}
\DeclareOption{10pt}{\def\thesis@ptsize{0}}
\DeclareOption{11pt}{\def\thesis@ptsize{1}}
\DeclareOption{12pt}{\def\thesis@ptsize{2}}
\newif\ifthesis@twoside@
\DeclareOption{oneside}{%
\thesis@twoside@false\@twosidefalse\@mparswitchfalse}
\DeclareOption{twoside}{%
\thesis@twoside@true \@twosidetrue \@mparswitchtrue}
\DeclareOption{onecolumn}{\@twocolumnfalse}
\DeclareOption{twocolumn}{\@twocolumntrue}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{final}{\setlength\overfullrule{0pt}}
\newif\ifthesis@palatino@
\DeclareOption{palatino}{\thesis@palatino@true}
\DeclareOption{nopalatino}{\thesis@palatino@false}
\newif\ifthesis@color@
\DeclareOption{monochrome}{\thesis@color@false}
\DeclareOption{color}{\thesis@color@true}
\newif\ifthesis@microtype@
\DeclareOption{microtype}{\thesis@microtype@true}
\DeclareOption{nomicrotype}{\thesis@microtype@false}
\newif\ifthesis@newtable@
\DeclareOption{table}{\thesis@newtable@true}
\DeclareOption{oldtable}{\thesis@newtable@false}
\DeclareOption{nolot}{\let\thesis@blocks@lot\relax}
\DeclareOption{lot}{\let\thesis@blocks@lot\listoftables}
\DeclareOption{nolof}{\let\thesis@blocks@lof\relax}
\DeclareOption{lof}{\let\thesis@blocks@lof\listoffigures}
\newif\ifthesis@cover@
\DeclareOption{nocover}{\thesis@cover@false}
\DeclareOption{cover}{\thesis@cover@true}
\newif\ifthesis@digital@
\DeclareOption{digital}{%
\ExecuteOptions{color,cover}%
\thesis@digital@true}
\DeclareOption{printed}{%
\ExecuteOptions{monochrome,nocover}%
\thesis@digital@false}
\ExecuteOptions{%
printed,12pt,twoside,final,microtype,palatino,oldtable,lot,lof}
\ProcessOptions*
\thesis@requireLocale{english}
\thesis@require{xcolor}
\thesis@require{graphicx}
\thesis@require{pdfpages}
\thesis@require{keyval}
\thesis@require{ifxetex}
\thesis@require{ifluatex}
\ifthesis@microtype@
\thesis@require[final,babel]{microtype}
\fi
{\let\x\expandafter
\x\global\x\let\x\ifthesis@xeluatex\csname if%
\ifxetex true\else
\ifluatex\x\x\x t\x\x\x r\x\x\x u\x\x\x e%
\else f\x\x\x a\x\x\x l\x\x\x s\x\x\x e%
\fi
\fi\endcsname}
\ifthesis@xeluatex
\ifthesis@palatino@
\thesis@require{fontspec}
\thesis@require{unicode-math}
\setmainfont[Ligatures=TeX]{TeX Gyre Pagella}
\setmathfont[math-style=ISO,bold-style=ISO]{texgyrepagella-math.otf}
\fi
\else
\ifthesis@palatino@
\RequirePackage[resetfonts]{cmap}
\thesis@require{lmodern}
\thesis@require{mathpazo}
\thesis@require{tgpagella}
\RequirePackage[T1]{fontenc}
\fi
\fi
\let\thesis@newtable@old\tabular
\let\endthesis@newtable@old\endtabular
\ifthesis@newtable@
% Load the packages.
\thesis@require{tabularx}
\thesis@require{tabu}
\thesis@require{booktabs}
% Adjust the measurements.
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\setlength{\extrarowheight}{.75ex}
\ifthesis@color@
% The redefinition of `tabular`
\renewenvironment{tabular}%
{\rowcolors{1}{thesis@color@tableOdd}%
{thesis@color@tableEven}%
\thesis@newtable@old}%
{\endthesis@newtable@old}
% The redefinition of `tabularx`
\let\thesis@newtable@oldx\tabularx
\let\endthesis@newtable@oldx\endtabularx
\renewenvironment{tabularx}%
{\rowcolors{1}{thesis@color@tableEven}%
{thesis@color@tableOdd}%
\thesis@newtable@oldx}%
{\endthesis@newtable@oldx}
% The redefinition of `tabu`
\let\thesis@newtable@oldtabu\tabu
\let\endthesis@newtable@oldtabu\endtabu
\renewenvironment{tabu}%
{\rowcolors{1}{thesis@color@tableEven}%
{thesis@color@tableOdd}%
\thesis@newtable@oldtabu}%
{\endthesis@newtable@oldtabu}
\fi
\fi
\newif\ifthesis@bibliography@
\thesis@bibliography@false
\ifx\thesis@bibFiles\undefined\else
{\edef\@bibList{\thesis@bibFiles}%
\ifx\@bibList\empty\else
\global\thesis@bibliography@true
\fi}
\fi
\def\thesis@bibliography@setup#1{%
\setkeys{thesis@bibliography}{#1}}
\define@key{thesis@bibliography}{style}{%
\ifx\thesis@bibliography@style\undefined
\def\thesis@bibliography@style{#1}%
\fi}
\define@key{thesis@bibliography}{sorting}{%
\ifx\thesis@bibliography@sorting\undefined
\def\thesis@bibliography@sorting{#1}%
\fi}
\thesis@def@extra[]{bibliography}
\ifx\thesis@extra@bibliography
\thesis@placeholder@extra@bibliography\else
\expandafter\thesis@bibliography@setup\expandafter{%
\thesis@extra@bibliography}%
\fi
\newif\ifthesis@bibliography@loaded@
\thesis@bibliography@loaded@false
\newif\ifthesis@bibliography@included@
\thesis@bibliography@included@false
\def\thesis@bibliography@load{%
\ifthesis@bibliography@
\ifthesis@bibliography@loaded@\else
\thesis@bibliography@loaded@true
% Load csquotes and BibLaTeX.
\thesis@require{csquotes}
\thesis@bibliography@setup{
style = iso-numeric,
sorting = none}
\thesis@require[
backend=biber,
style=\thesis@bibliography@style,
sorting=\thesis@bibliography@sorting,
autolang=other,
sortlocale=auto]{biblatex}
% Load the bibliography databases.
{\edef\@bibList{\thesis@bibFiles}%
\def\@inject##1,{%
\def\@args{##1}\def\@relax{\relax}%
\ifx\@args\@relax\else
% Trim leading spaces.
\edef\@trimmed{\romannumeral-`\.##1}%
\addbibresource\@trimmed
\expandafter\@inject\fi}%
\expandafter\@inject\@bibList,\relax,}%
\let\thesis@printbibliography@old\printbibliography
\def\printbibliography{%
\global\thesis@bibliography@included@true
\thesis@printbibliography@old}
\fi
\fi}
\thesis@require{hyperref}
\ifthesis@digital@
\hypersetup{pdfborderstyle={/S/U/W 1}}
\else
\hypersetup{hidelinks}
\fi
\widowpenalty 10000
\clubpenalty 10000
\def\thesis@color@setup#1{%
\setkeys{thesis@color}{#1}}
\define@key{thesis@color}{links}{%
\definecolor{thesis@color@links}#1
\hypersetup{linkbordercolor=thesis@color@links}}
\define@key{thesis@color}{tableOdd}{%
\definecolor{thesis@color@tableOdd}#1}
\define@key{thesis@color}{tableEven}{%
\definecolor{thesis@color@tableEven}#1}
\define@key{thesis@color}{tableEmph}{%
\definecolor{thesis@color@tableEmph}#1}
\def\thesis@blocks@coverMatter{%
\pagenumbering{gobble}}
\def\thesis@blocks@frontMatter{%
\thesis@blocks@clear
\pagestyle{plain}
\parindent 1.5em
\setcounter{page}{1}
\pagenumbering{roman}}
\def\thesis@blocks@clear{%
\ifthesis@twoside@
\clearpage
\ifodd\value{page}\else%
\thispagestyle{empty}%
\hbox{}%
\newpage
\fi
\else
\newpage
\fi}
\def\thesis@blocks@clearRight{%
\ifthesis@twoside@
\clearpage
\ifodd\value{page}%
\thispagestyle{empty}%
\hbox{}%
\newpage
\fi
\else
\newpage
\fi}
\newcommand{\thesis@blocks@facultyLogo@monochrome}[1]%
[width=40mm]{{%
\edef\@path{\thesis@logopath\thesis@facultyLogo}%
\includegraphics[#1]{\@path}}}
\newcommand{\thesis@blocks@facultyLogo@color}[1]%
[width=40mm]{{%
\edef\@path{\thesis@logopath\thesis@facultyLogo
\ifthesis@color@-color\fi}%
\includegraphics[#1]{\@path}}}
\newcommand{\thesis@blocks@universityLogo@monochrome}[1]%
[width=40mm]{{%
\edef\@path{\thesis@logopath\thesis@universityLogo}%
\includegraphics[#1]{\@path}}}
\newcommand{\thesis@blocks@universityLogo@color}[1]%
[width=40mm]{{%
\edef\@path{\thesis@logopath\thesis@universityLogo
\ifthesis@color@-color\fi}%
\includegraphics[#1]{\@path}}}
\let\thesis@department@name\thesis@department
\let\thesis@departmentEn@name\thesis@departmentEn
\let\thesis@field@name\thesis@field
\let\thesis@fieldEn@name\thesis@fieldEn
\def\thesis@blocks@cover{%
\ifthesis@cover@
\thesis@blocks@clear
\begin{alwayssingle}%
\thispagestyle{empty}%
\begin{center}%
\thesis@blocks@cover@header
\thesis@blocks@facultyLogo@monochrome\\[0.4in]%
\let\footnotesize\small
\let\footnoterule\relax{}%
\thesis@blocks@cover@content
\par\vfill
\thesis@blocks@cover@footer
\end{center}%
\end{alwayssingle}%
\fi}
\newif\ifthesis@blocks@cover@university@
\thesis@blocks@cover@university@true
\newif\ifthesis@blocks@cover@faculty@
\thesis@blocks@cover@faculty@true
\newif\ifthesis@blocks@cover@department@
\thesis@blocks@cover@department@false
\newif\ifthesis@blocks@cover@field@
\thesis@blocks@cover@field@false
\def\thesis@blocks@cover@header{%
{\sc\ifthesis@blocks@cover@university@
\thesis@titlePage@LARGE\thesis@@{universityName}\\%
\fi\ifthesis@blocks@cover@faculty@
\thesis@titlePage@Large\thesis@@{facultyName}\\%
\fi\ifthesis@blocks@cover@department@
\thesis@titlePage@large\thesis@department@name\\%
\fi}
\ifthesis@blocks@cover@field@
{\thesis@titlePage@large\vskip 1em%
{\bf\thesis@@{fieldTitle}:} \thesis@field@name}%
\fi\vskip 2em}
\def\thesis@blocks@cover@content{%
{\thesis@titlePage@Huge\bf\thesis@TeXtitle\par\vfil}%
\vskip 0.8in%
{\thesis@titlePage@large\sc\thesis@@{typeName}}\\[0.3in]%
{\thesis@titlePage@Large\bf\thesis@author}}
\def\thesis@blocks@cover@footer{%
{\thesis@titlePage@large\thesis@place, \thesis@@{semester}}}
\def\thesis@blocks@titlePage{%
\thesis@blocks@clear
\begin{alwayssingle}%
\thispagestyle{empty}%
\begin{center}%
\thesis@blocks@titlePage@header
\thesis@blocks@facultyLogo@color\\[0.4in]%
\let\footnotesize\small
\let\footnoterule\relax{}%
\thesis@blocks@titlePage@content
\par\vfill
\thesis@blocks@titlePage@footer
\end{center}%
\end{alwayssingle}}
\newif\ifthesis@blocks@titlePage@university@
\thesis@blocks@titlePage@university@true
\newif\ifthesis@blocks@titlePage@faculty@
\thesis@blocks@titlePage@faculty@true
\newif\ifthesis@blocks@titlePage@department@
\thesis@blocks@titlePage@department@false
\newif\ifthesis@blocks@titlePage@field@
\thesis@blocks@titlePage@field@false
\def\thesis@blocks@titlePage@header{%
{\sc\ifthesis@blocks@titlePage@university@
\thesis@titlePage@LARGE\thesis@@{universityName}\\%
\fi\ifthesis@blocks@titlePage@faculty@
\thesis@titlePage@Large\thesis@@{facultyName}\\%
\fi\ifthesis@blocks@titlePage@department@
\thesis@titlePage@large\thesis@department@name\\%
\fi}
\ifthesis@blocks@titlePage@field@
{\thesis@titlePage@large\vskip 1em%
{\bf\thesis@@{fieldTitle}:} \thesis@field@name}%
\fi\vskip 2em}
\let\thesis@blocks@titlePage@content=\thesis@blocks@cover@content
\let\thesis@blocks@titlePage@footer=\thesis@blocks@cover@footer
\def\thesis@blocks@toc{%
\thesis@blocks@clear
\tableofcontents}
\def\thesis@blocks@tables{%
\thesis@blocks@toc
\thesis@blocks@lot
\thesis@blocks@lof}
\def\thesis@blocks@declaration{%
\thesis@blocks@clear
\begin{alwayssingle}%
\chapter*{\thesis@@{declarationTitle}}%
\thesis@declaration
\vskip 2cm%
\hfill\thesis@author
\end{alwayssingle}}
\def\thesis@blocks@thanks{%
\ifx\thesis@thanks\undefined\else
\thesis@blocks@clear
\begin{alwayssingle}%
\chapter*{\vspace*{\fill}\thesis@@{thanksTitle}}%
\leavevmode\thesis@thanks
\end{alwayssingle}%
\fi}
\def\thesis@blocks@abstract{%
\begin{alwayssingle}%
% Start the new chapter without clearing the left page.
\clearpage
{\let\thesis@blocks@clear\relax
\chapter*{\thesis@@{abstractTitle}}}%
\noindent\thesis@abstract
\par\vfil\null
\end{alwayssingle}}
\def\thesis@blocks@abstractEn{%
\ifthesis@english\else
{\thesis@selectLocale{english}%
\begin{alwayssingle}%
% Start the new chapter without clearing the left page.
\clearpage
{\let\thesis@blocks@clear\relax
\chapter*{\thesis@english@abstractTitle}}%
\noindent\thesis@abstractEn
\par\vfil\null
\end{alwayssingle}}%
\fi}
\def\thesis@blocks@keywords{%
\begin{alwayssingle}%
% Start the new chapter without clearing the left page.
\clearpage
{\let\thesis@blocks@clear\relax
\chapter*{\thesis@@{keywordsTitle}}%
\noindent\thesis@TeXkeywords}%
\par\vfil\null
\end{alwayssingle}}
\def\thesis@blocks@keywordsEn{%
\ifthesis@english\else
{\thesis@selectLocale{english}%
\begin{alwayssingle}%
% Start the new chapter without clearing the left page.
\clearpage
{\let\thesis@blocks@clear\relax%
\chapter*{\thesis@english@keywordsTitle}}%
\noindent\thesis@TeXkeywordsEn
\par\vfil\null
\end{alwayssingle}}%
\fi}
\def\thesis@rewind{%
\addtocounter{page}{-\ifthesis@twoside@2\else1\fi}}
\newif\ifthesis@blocks@assignment@
\thesis@blocks@assignment@true
\newif\ifthesis@blocks@assignment@hideIfDigital@
\thesis@blocks@assignment@hideIfDigital@true
\def\thesis@blocks@assignment{%
\ifthesis@blocks@assignment@
\ifx\thesis@assignmentFiles\undefined
% Rewind the pages and typeset a placeholder page.
\thesis@blocks@clear
\begin{alwayssingle}%
\thispagestyle{empty}\thesis@rewind
\noindent\textit{\thesis@@{assignment}}%
\end{alwayssingle}%
\else
{\edef\@pdfList{\thesis@assignmentFiles}%
\let\ea\expandafter
% Injects the specified PDF documents.
\def\@inject##1,{\thesis@blocks@clear
\def\@args{##1}\def\@relax{\relax}%
\ifx\@args\@relax\else
% Trim leading spaces.
\edef\@trimmed{\romannumeral-`\.##1}%
% Rewind the pages and include the PDF.
\thesis@rewind\includepdf[pages=-]\@trimmed
\ea\@inject\fi}%
\ifx\@pdfList\empty\else
\ifthesis@digital@
\ifthesis@blocks@assignment@hideIfDigital@
\thesis@blocks@clear
\begin{alwayssingle}%
\thispagestyle{empty}\thesis@rewind
\noindent\textit{\thesis@@{assignment}}%
\end{alwayssingle}%
\else
\ea\@inject\@pdfList,\relax,%
\fi
\else
\ea\@inject\@pdfList,\relax,%
\fi
\fi}%
\fi
\fi}
\def\thesis@blocks@mainMatter{%
\thesis@blocks@clear
\setcounter{page}{1}
\pagenumbering{arabic}
\pagestyle{thesisheadings}
\parindent 1.5em\relax}
\def\thesis@blocks@bibEntry{%
\chapter*{\thesis@@{bib@title}}
\noindent\thesis@upper{author@tail}, \thesis@author@head.
\emph{\thesis@title}. \thesis@place: \thesis@@{universityName},
\thesis@@{facultyName}, \thesis@department@name, \thesis@year.
\thesis@pages\ \thesis@@{bib@pages}.
\thesis@@{advisorTitle}: \thesis@advisor
\thesis@blocks@clearRight}
\def\thesis@blocks@bibliography{%
\ifthesis@bibliography@loaded@
\ifthesis@bibliography@included@\else
\thesis@blocks@clear
{\emergencystretch=3em%
\printbibliography[heading=bibintoc]}%
\fi
\fi}
\setcounter{tocdepth}{2}
\setcounter{secnumdepth}{2}
\input\thesis@stylepath mu/fithesis-1\thesis@ptsize.clo\relax
\def\ps@thesisheadings{%
\def\chaptermark##1{%
\markright{%
\ifnum\c@secnumdepth >\m@ne
\thechapter.\ %
\fi ##1}}
\let\@oddfoot\@empty
\let\@oddhead\@empty
\def\@oddhead{%
\vbox{%
\hbox to \textwidth{%
\hfil{\sc\rightmark}}%
\vskip 4pt\hrule}}
\if@twoside
\def\@evenhead{%
\vbox{%
\hbox to \textwidth{%
{\sc\rightmark}%
\hfil}
\vskip 4pt\hrule}}
\else
\let\@evenhead\@oddhead
\fi
\def\@oddfoot{\hfil\PageFont\thepage}
\if@twoside
\def\@evenfoot{\PageFont\thepage\hfil}%
\else
\let\@evenfoot\@oddfoot
\fi
\let\@mkboth\markboth}
\renewcommand*\chapter{%
\thesis@blocks@clear
\thispagestyle{plain}%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
\renewcommand*\part{%
\thesis@blocks@clear
\if@twocolumn
\onecolumn
\@tempswatrue
\else
\@tempswafalse
\fi
\hbox{}\vfil
\secdef\@part\@spart}
\newif\if@restonecol
\def\alwayssingle{%
\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn\fi}
\def\endalwayssingle{\if@restonecol\twocolumn\fi}
\pdfstringdefDisableCommands{%
\let\MakeUppercase\relax}
\renewcommand*\toc@font[1]{%
\ifcase #1\relax
\bfseries % \chapter (0)
\or
\slshape % \section (1)
\else
\rmfamily % \subsection (2), \subsubsection (3)
% \paragraph, \subparagraph (4)
\fi}
\renewcommand*\l@part[2]{%
\ifnum \c@tocdepth >-2\relax
\addpenalty{-\@highpenalty}%
\ifnum \c@tocdepth >0\relax
\addvspace{2.25em \@plus\p@}%
\else
\addvspace{1.0em \@plus\p@}%
\fi
\begingroup
\setlength\@tempdima{3em}%
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
{\leavevmode
\normalfont \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
\nobreak
\global\@nobreaktrue
\everypar{\global\@nobreakfalse\everypar{}}%
\endgroup
\fi}
\renewcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >0\relax
\addpenalty{-\@highpenalty}%
\addvspace{1.0em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\else
\@dottedtocline{0}{0em}{1.5em}{#1}{#2}
\fi}
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\renewcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
\renewcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
\renewcommand*\l@paragraph{\@dottedtocline{4}{10.0em}{5.0em}}
\renewcommand*\l@subparagraph{\@dottedtocline{4}{12.0em}{6.0em}}
\endinput
%%
%% End of file `fithesis-base.sty'.