diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/fithesis/fithesis4.cls')
-rw-r--r-- | Master/texmf-dist/tex/latex/fithesis/fithesis4.cls | 595 |
1 files changed, 595 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/fithesis/fithesis4.cls b/Master/texmf-dist/tex/latex/fithesis/fithesis4.cls new file mode 100644 index 00000000000..03cf0d52198 --- /dev/null +++ b/Master/texmf-dist/tex/latex/fithesis/fithesis4.cls @@ -0,0 +1,595 @@ +%% +%% This is file `fithesis4.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fithesis.dtx (with options: `class') +%% +%% Copyright 1998--2021 Daniel Marek (DM), Jan Pavlovič (JP), +%% Vít Novotný (VN), Tereza Vrabcová (TV), +%% 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. +%% +\NeedsTeXFormat{LaTeX2e} +{\def\thesis@versiondef#1#2{ + \gdef\thesis@version@number{#1} + \gdef\thesis@version@date{#2} + \gdef\thesis@version{#2 #1 fithesis4 MU thesis class}} +\thesis@versiondef{v1.0.0}{2021/05/24}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ProvidesClass{fithesis4}[\thesis@version] +\ifx\thesis@backend\undefined + \def\thesis@backend{[a4paper]{rapport3}} +\fi\expandafter\LoadClass\thesis@backend +\RequirePackage{keyval} +\RequirePackage{etoolbox} +\RequirePackage{ltxcmds} +\RequirePackage{ifxetex} +\RequirePackage{ifluatex} +\ifxetex\else\ifluatex\else + \RequirePackage[utf8]{inputenc} +\fi\fi +\RequirePackage{xpatch} +\long\def\thesissetup#1{% + \setkeys{thesis}{#1}} +\def\thesis@basepath{fithesis/} +\define@key{thesis}{basePath}{% + \ifx\thesis@empty#1\thesis@empty + \def\thesis@basepath{}% + \else + \def\thesis@basepath{#1/}% + \fi} +\def\thesis@logopath{\thesis@basepath logo/\thesis@university/} +\define@key{thesis}{logoPath}{% + \def\thesis@logopath{\thesis@subdir#1% + \empty\empty\empty\empty}} +\def\thesis@stylepath{\thesis@basepath style/} +\define@key{thesis}{stylePath}{% + \def\thesis@stylepath{\thesis@subdir#1% + \empty\empty\empty\empty}} +\def\thesis@localepath{\thesis@basepath locale/} +\define@key{thesis}{localePath}{% + \def\thesis@localepath{\thesis@subdir#1% + \empty\empty\empty\empty}} +\def\thesis@subdir#1#2#3#4\empty{% + \ifx#1\empty% <empty> -> <basepath> + \thesis@basepath + \else + \if#1/% + \ifx#2\empty% / -> / + /% + \else% /<path> -> /<path>/ + #1#2#3#4/% + \fi + \else + \if#1.% + \ifx#2\empty% . -> ./ + ./% + \else + \if#2.% + \ifx#3\empty% .. -> ../ + ../% + \else + \if#3/% ../<path> -> ../<path>/ + ../#4/% + \else + \thesis@basepath#1#2#3#4/% + \fi + \fi + \else + \if#2/% ./<path> -> ./<path>/ + ./#3#4/% + \else + \thesis@basepath#1#2#3#4/% + \fi + \fi + \fi + \else + \thesis@basepath#1#2#3#4/% + \fi + \fi + \fi} +\newcommand{\thesis@def}[2][]{% + \expandafter\def\csname thesis@#2\endcsname{% + <<\ifx\thesis@empty#1\thesis@empty#2\else#1\fi>>}} +\def\thesis@declaration{\thesis@@{declaration}} +\long\def\KV@thesis@declaration#1{% + \long\def\thesis@declaration{#1}} +\newif\ifthesis@woman\thesis@womanfalse +\define@key{thesis}{gender}{% + \def\thesis@male{m}% + \def\thesis@arg{#1}% + \ifx\thesis@male\thesis@arg + \thesis@womanfalse + \else + \thesis@womantrue + \fi} +\def\thesis@parseAuthor#1{% + \def\thesis@author{#1}% + \def\thesis@author@head{\expandafter\expandafter\expandafter + \@gobble\thesis@head#1 \relax}% + \def\thesis@author@tail{\thesis@tail#1 \relax}} +\thesis@def{author}% +\thesis@def[author]{author@head}% +\thesis@def[author]{author@tail}% +\define@key{thesis}{author}{% + \thesis@parseAuthor{#1}} +\let\author\thesis@parseAuthor +\thesis@def{id} +\define@key{thesis}{id}{% + \def\thesis@id{#1}} +\def\thesis@sempaper{sem} +\def\thesis@bachelors{bc} +\def\thesis@masters{mgr} +\def\thesis@proposal{prop} +\def\thesis@doctoral{d} +\def\thesis@rigorous{r} +\let\thesis@type\thesis@bachelors +\define@key{thesis}{type}{% + \def\thesis@type{#1}} +\def\thesis@university{mu} +\define@key{thesis}{university}{% + \def\thesis@university{#1}} +\def\thesis@faculty{fi} +\define@key{thesis}{faculty}{% + \def\thesis@faculty{#1}} +\thesis@def{department} +\define@key{thesis}{department}{% + \def\thesis@department{#1}} +\thesis@def{departmentEn} +\define@key{thesis}{departmentEn}{% + \def\thesis@departmentEn{#1}} +\thesis@def{programme} +\define@key{thesis}{programme}{% + \def\thesis@programme{#1}} +\thesis@def{programmeEn} +\define@key{thesis}{programmeEn}{% + \def\thesis@programmeEn{#1}} +\thesis@def{field} +\define@key{thesis}{field}{% + \def\thesis@field{#1}} +\thesis@def{fieldEn} +\define@key{thesis}{fieldEn}{% + \def\thesis@fieldEn{#1}} +\def\thesis@universityLogo{fithesis-base-\thesis@locale} +\define@key{thesis}{universityLogo}{% + \def\thesis@universityLogo{#1}} +\def\thesis@facultyLogo{fithesis-\thesis@faculty-\thesis@locale} +\define@key{thesis}{facultyLogo}{% + \def\thesis@facultyLogo{#1}} +\def\thesis@style{\thesis@university/fithesis-\thesis@university-\thesis@faculty} +\define@key{thesis}{style}{% + \def\thesis@style{#1}} +\newif\ifthesis@style@inheritance\thesis@style@inheritancetrue +\define@key{thesis}{styleInheritance}[true]{% + \begingroup + \def\@true{true}% + \def\@arg{#1}% + \ifx\@true\@arg + \endgroup\thesis@style@inheritancetrue + \else + \endgroup\thesis@style@inheritancefalse + \fi} +\def\thesis@locale{% + % Babel / polyglossia detection + \ifx\languagename\undefined + english\else\languagename\fi} +\define@key{thesis}{locale}{% + \def\thesis@locale{#1}} +\def\ifthesis@english{ + \expandafter\def\expandafter\@english\expandafter{\string + \english}% + \expandafter\expandafter\expandafter\def\expandafter + \expandafter\expandafter\@locale\expandafter\expandafter + \expandafter{\expandafter\string\csname\thesis@locale\endcsname}% + \expandafter\csname\expandafter i\expandafter f\ifx\@locale + \@english + true% + \else + false% + \fi\endcsname} +\newif\ifthesis@locale@inheritance\thesis@locale@inheritancetrue +\define@key{thesis}{localeInheritance}[true]{% + \begingroup + \def\@true{true}% + \def\@arg{#1}% + \ifx\@true\@arg + \endgroup\thesis@locale@inheritancetrue + \else + \endgroup\thesis@locale@inheritancefalse + \fi} +\def\thesis@parseDate#1/#2/#3|{{ + % Set the basic macros + \gdef\thesis@date{#1/#2/#3}% + \gdef\thesis@year{#1}% + \gdef\thesis@month{#2}% + \gdef\thesis@day{#3}% + + % Set the season + \newcount\@month\expandafter\@month\thesis@month\relax + \ifnum\@month>8\gdef\thesis@season{fall} + \else\ifnum\@month<3\gdef\thesis@season{fall} + \else \gdef\thesis@season{spring} + \fi\fi + + % Set the academic year + \newcount\@year\expandafter\@year\thesis@year\relax + \ifnum\@month>8% + \edef\@yearA{\the\@year}% + \advance\@year 1\edef\@yearB{\the\@year}% + \advance\@year-1 + \else + \advance\@year-1\edef\@yearA{\the\@year}% + \advance\@year 1\edef\@yearB{\the\@year}% + \fi + \global\edef\thesis@academicYear{\@yearA/\@yearB} + + % Set the season year + \ifnum\@month>2\else + \advance\@year-1 + \fi + \global\edef\thesis@seasonYear{\the\@year}}} + +\edef\thesis@date{\the\year/\the\month/\the\day}% +\expandafter\thesis@parseDate\thesis@date|% + +\define@key{thesis}{date}{{% + \edef\@date{#1}% + \expandafter\thesis@parseDate\@date|}} +\def\thesis@place{Brno} +\define@key{thesis}{place}{% + \def\thesis@place{#1}} +\thesis@def{title} +\define@key{thesis}{title}{% + \def\thesis@title{#1}} +\def\title#1{\def\thesis@title{#1}} +\let\maketitle\relax +\def\thesis@TeXtitle{\thesis@title} +\define@key{thesis}{TeXtitle}{% + \def\thesis@TeXtitle{#1}} +\thesis@def{titleEn} +\define@key{thesis}{titleEn}{% + \def\thesis@titleEn{#1}} +\def\thesis@TeXtitleEn{\thesis@titleEn} +\define@key{thesis}{TeXtitleEn}{% + \def\thesis@TeXtitleEn{#1}} +\thesis@def{keywords} +\define@key{thesis}{keywords}{% + \def\thesis@keywords{#1}} +\def\thesis@TeXkeywords{\thesis@keywords} +\define@key{thesis}{TeXkeywords}{% + \def\thesis@TeXkeywords{#1}} +\thesis@def{keywordsEn} +\define@key{thesis}{keywordsEn}{% + \def\thesis@keywordsEn{#1}} +\def\thesis@TeXkeywordsEn{\thesis@keywordsEn} +\define@key{thesis}{TeXkeywordsEn}{% + \def\thesis@TeXkeywordsEn{#1}} +\thesis@def{abstract} +\long\def\KV@thesis@abstract#1{% + \long\def\thesis@abstract{#1}} +\thesis@def{abstractEn} +\long\def\KV@thesis@abstractEn#1{% + \long\def\thesis@abstractEn{#1}} +\thesis@def{advisor} +\define@key{thesis}{advisor}{\def\thesis@advisor{#1}} +\long\def\KV@thesis@thanks#1{% + \long\def\thesis@thanks{#1}} +\define@key{thesis}{assignment}{% + \def\thesis@assignmentFiles{#1}} + +\define@key{thesis}{bib}{% + \def\thesis@bibFiles{#1}} +\newif\ifthesis@auto\thesis@autotrue +\define@key{thesis}{autoLayout}[true]{% + \def\@true{true}% + \def\@arg{#1}% + \ifx\@true\@arg + \thesis@autotrue + \else + \thesis@autofalse + \fi} +\ifx\thesis@pages@preamble\undefined + \def\thesis@pages@preamble{??}\fi +\ifx\thesis@pages@postamble\undefined + \def\thesis@pages@postamble{??}\fi +\def\thesis@preamble{% + {\thesis@selectLocale{\thesis@locale}% + \thesis@blocks@preamble + \gdef\thesis@pages@preamble{\thepage} + \write\@auxout{\noexpand\gdef\noexpand + \thesis@pages@preamble{\thepage}} + \clearpage} + \thesis@blocks@mainMatter} + +\let\thesis@blocks@preamble\relax +\let\thesis@blocks@mainMatter\relax +\def\thesis@postamble{% + \gdef\thesis@pages@postamble{\thepage} + \immediate\write\@auxout{\noexpand\gdef\noexpand + \thesis@pages@postamble{\thepage}} + {\thesis@selectLocale{\thesis@locale}% + \thesis@blocks@postamble}} + +\let\thesis@blocks@postamble\relax +\def\thesis@extra@KV@prefix{KV@thesis@extra@} +\def\thesis@extra@XKV@fams{thesis@extra} +\long\def\KV@thesis@extra#1{% + \long\def\XKV@s@tk@ys##1=##2=##3\@nil{% + \XKV@g@tkeyname##1=\@nil\XKV@tkey + \expandafter\KV@@sp@def\expandafter\XKV@tkey\expandafter{\XKV@tkey}% + \ifx\XKV@tkey\@empty + \XKV@toks{##2}% + \ifcat$\the\XKV@toks$\else + \XKV@err{no key specified for value `\the\XKV@toks'}% + \fi + \else + \@expandtwoargs\in@{,\XKV@tkey,}{,\XKV@na,}% + \ifin@\else + \XKV@knftrue + \KV@@sp@def\XKV@tempa{##2}% + \ifXKV@preset\XKV@s@tk@ys@{##3}\else + \ifXKV@pl + \XKV@for@eo\XKV@fams\XKV@tfam{% + \XKV@makehd\XKV@tfam + \XKV@s@tk@ys@{##3}% + }% + \else + \XKV@whilist\XKV@fams\XKV@tfam\ifXKV@knf\fi{% + \XKV@makehd\XKV@tfam + \XKV@s@tk@ys@{##3}% + }% + \fi + \fi + \ifXKV@knf + \ifXKV@inpox + \ifx\XKV@doxs\relax + \ifx\@currext\@clsextension\else + \let\CurrentOption\XKV@tkey\@unknownoptionerror + \fi + \else\XKV@doxs\fi + \else + \ifXKV@st + \XKV@addtolist@o\XKV@rm\CurrentOption + \else + \ifx\XKV@fams\thesis@extra@XKV@fams + \expandafter\long\expandafter\def\csname% + thesis@extra@\XKV@tkey\endcsname{##2}% + \else + \XKV@err{`\XKV@tkey' undefined in families + `\XKV@fams'}% + \fi + \fi + \fi + \else + \ifXKV@inpox\ifx\XKV@testclass\XKV@documentclass + \expandafter\XKV@useoption\expandafter{\CurrentOption}% + \fi\fi + \fi + \fi + \fi + }% + \setkeys{thesis@extra}{#1}% + \def\KV@prefix{KV@thesis@}} +\long\def\KV@split#1=#2=#3\relax{% + \KV@@sp@def\@tempa{#1}% + \ifx\@tempa\@empty\else + \expandafter\let\expandafter\@tempc + \csname\KV@prefix\@tempa\endcsname + \ifx\@tempc\relax + \ifx\KV@prefix\thesis@extra@KV@prefix + \KV@@sp@def\@tempb{#2}% + \expandafter\let\csname thesis@extra@\@tempa\endcsname + \@tempb% + \else + \KV@errx + {\@tempa\space undefined}% + \fi + \else + \ifx\@empty#3\@empty + \KV@default + \else + \KV@@sp@def\@tempb{#2}% + \expandafter\@tempc\expandafter{\@tempb}\relax + \fi + \fi + \fi} +\newcommand{\thesis@def@extra}[2][]{% + \expandafter\ifx\csname thesis@extra@#2\endcsname\relax + \def\thesis@placeholder@extra{<<extra@#2>>}% + \expandafter\let\csname thesis@placeholder@extra@#2\endcsname + \thesis@placeholder@extra + \def\thesis@arg{#1}% + \ifx\empty\thesis@arg + \expandafter\let\csname thesis@extra@#2\endcsname + \thesis@placeholder@extra + \else + \expandafter\def\csname thesis@extra@#2\endcsname{#1}% + \fi + \fi} +\long\def\thesislong#1#2{% + \csname KV@thesis@#1\endcsname{#2}} +\newif\ifthesis@loaded\thesis@loadedfalse +\BeforeBeginEnvironment{document}{\thesisload} +\def\thesis@load{\thesisload} +\def\thesisload{% + \ifthesis@loaded\else + \thesis@loadedtrue + \makeatletter + \ifx\thesis@locale\empty\else + \edef\thesis@locale{\thesis@locale} + \thesis@requireLocale{\thesis@locale} + \fi + \ifluatex + \ltx@ifpackageloaded{babel}{}{ + \ltx@ifpackageloaded{polyglossia}{}{ + \thesis@require{babel}}} + \fi +\ifthesis@english + \expandafter\expandafter\expandafter\let\expandafter\expandafter + \csname ifthesis@english\endcsname\csname iftrue\endcsname +\else + \expandafter\expandafter\expandafter\let\expandafter\expandafter + \csname ifthesis@english\endcsname\csname iffalse\endcsname +\fi + \ifx\thesis@style\empty\else + \thesis@requireStyle{\thesis@style} + \fi + \ifx\languagename\empty\else + \begingroup + \edef\@doclocale{\languagename}% + \ifx\@doclocale\thesis@locale + \endgroup + \AtBeginDocument{% + \thesis@selectLocale{\thesis@locale}}% + \else + \endgroup + \fi + \fi + \thesis@require{hyperref} + \hypersetup{ + unicode=true, + pdfencoding=auto, + pdftitle=\thesis@title, + pdfauthor=\thesis@author, + pdfkeywords=\thesis@keywords, + pdfcreator=\thesis@version} + \ifthesis@auto + \AtBeginDocument{\thesis@preamble} + \AtEndDocument{% + \thesis@postamble + \immediate\write\@auxout{% + \noexpand\gdef\noexpand\thesis@pages{\thepage}}} + \else + \AtEndDocument{% + \immediate\write\@auxout{% + \noexpand\gdef\noexpand\thesis@pages{\thepage}}} + \fi + \makeatother + \fi} +\def\thesis@exists#1#2{% + \IfFileExists{#1}{#2}{% + \ClassWarning{fithesis4}{File #1 doesn't exist}}} +\def\thesis@input#1{% + \thesis@exists{#1}{\input{#1}}} +\newcommand\thesis@require[2][]{% + \@ifpackageloaded{#2}{}{\RequirePackage[#1]{#2}}} +\newcommand\thesis@requireIfExists[2][]{% + \thesis@exists{#2.sty}{\thesis@require[#1]{#2}}} +\def\thesis@requireStyle#1{% + \ifthesis@style@inheritance + \thesis@requireIfExists{\thesis@stylepath fithesis-base}% + \thesis@requireIfExists{\thesis@stylepath\thesis@university + /fithesis-\thesis@university-base} + \fi + \thesis@requireIfExists{\thesis@stylepath#1}} +\def\thesis@requireLocale#1{% + % Ignore redundant requests + \expandafter\ifx\csname thesis@#1@required\endcsname\relax + \expandafter\def\csname thesis@#1@required\endcsname{}% + \@ifpackageloaded{polyglossia}{\setotherlanguage{#1}}{} + \thesis@input{\thesis@localepath fithesis-#1.def}% + \ifthesis@locale@inheritance + \thesis@input{\thesis@localepath\thesis@university/% + fithesis-#1.def}% + \thesis@input{\thesis@localepath\thesis@university/% + \thesis@faculty/fithesis-#1.def}% + \fi + \fi} +\def\thesis@#1{\csname thesis@#1\endcsname} +\def\thesis@@#1{\thesis@{\thesis@locale @#1}} +\def\thesis@lower#1{{% + \let\ea\expandafter + \ea\MakeLowercase\ea{\csname thesis@#1\endcsname}}} +\def\thesis@upper#1{{% + \let\ea\expandafter + \ea\MakeUppercase\ea{\csname thesis@#1\endcsname}}} +\def\thesis@@lower#1{\thesis@lower{\thesis@locale @#1}} +\def\thesis@@upper#1{\thesis@upper{\thesis@locale @#1}} +\def\thesis@head#1 #2{% + \ifx\relax#2% + \expandafter\@gobbletwo + \else + \ #1% + \fi + \thesis@head#2}% +\def\thesis@tail#1 #2{% + \ifx\relax#2% + #1% + \expandafter\@gobbletwo + \fi + \thesis@tail#2}% +\ifx\thesis@pages\undefined\def\thesis@pages{??}\fi +\def\thesis@selectLocale#1{% + \edef\thesis@locale{#1}% + \ltx@ifpackageloaded{csquotes}{% + \csq@setstyle{\thesis@@{csquotesStyle}}% + }{}% + \ltx@ifpackageloaded{polyglossia}{% + \selectlanguage{\thesis@locale} + }{% + \language\csname l@\thesis@locale\endcsname + }} +\def\thesis@patch#1#2{% + \def\thesis@patch@versions{#1}% + \def\thesis@patch@action{#2}% + \def\thesis@patch@next##1,{% + \def\thesis@patch@arg{##1}% + \def\thesis@patch@relax{\relax}% + \ifx\thesis@patch@arg\thesis@version@number + \def\thesis@patch@next####1\relax,{}% + \expandafter\thesis@patch@action + \expandafter\thesis@patch@next + \else\ifx\thesis@patch@arg\thesis@patch@relax\else + \expandafter\expandafter\expandafter\thesis@patch@next + \fi\fi}% + \expandafter\expandafter\expandafter\thesis@patch@next + \expandafter\thesis@patch@versions\expandafter,\relax,} +\long\def\thesis@xpatch#1#2#3{% + \xpatchcmd{#1}{#2}{#3}{}% + {\ClassError{fithesis4}{% + Command \string#1 does not contain the searched text}{}}} +\endinput +%% +%% End of file `fithesis4.cls'. |