diff options
author | Karl Berry <karl@freefriends.org> | 2015-06-24 21:33:27 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-06-24 21:33:27 +0000 |
commit | 391ed31e962286a63e234d0fd04a845972273739 (patch) | |
tree | 9e736b49082612049694d8c621ab9a50460f0184 /Master/texmf-dist/source/latex/fithesis/fithesis.dtx | |
parent | 6e8193718b99bbc13571c386278c30b325beea83 (diff) |
fithesis (24jun15)
git-svn-id: svn://tug.org/texlive/trunk@37661 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/fithesis/fithesis.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/fithesis/fithesis.dtx | 1405 |
1 files changed, 1405 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/fithesis/fithesis.dtx b/Master/texmf-dist/source/latex/fithesis/fithesis.dtx new file mode 100644 index 00000000000..6e49d4b5c22 --- /dev/null +++ b/Master/texmf-dist/source/latex/fithesis/fithesis.dtx @@ -0,0 +1,1405 @@ +% \iffalse\begin{macrocode} +%<*driver> + +\documentclass{ltxdoc} +\usepackage[utf8]{inputenc} % this file uses UTF-8 +\usepackage[english]{babel} +\usepackage{tgpagella} +\usepackage{tabularx} +\usepackage{hologo} +\usepackage{booktabs} +\usepackage[scaled=0.86]{berasans} +\usepackage[scaled=1.03]{inconsolata} +\usepackage[resetfonts]{cmap} +\usepackage[T1]{fontenc} % use 8bit fonts +\emergencystretch 2dd +\usepackage{hypdoc} + +% Making paragraphs numbered +\makeatletter +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {-2.5ex\@plus -1ex \@minus -.25ex}% + {1.25ex \@plus .25ex}% + {\normalfont\normalsize\bfseries}} +\makeatother +\setcounter{secnumdepth}{4} % how many sectioning levels to assign +\setcounter{tocdepth}{4} % how many sectioning levels to show + +% ltxdoc class options +\CodelineIndex +\MakeShortVerb{|} +\EnableCrossrefs +\DoNotIndex{} +\makeatletter +\c@IndexColumns=2 +\makeatother + +\begin{document} + \RecordChanges + \DocInput{fithesis.dtx} + \PrintIndex + \PrintChanges +\end{document} + +%</driver> +% \end{macrocode} +%<*class> +\NeedsTeXFormat{LaTeX2e} +% Define `\thesis@version` and store it in the `VERSION.tex` file \fi +\def\thesis@version{2015/06/24 v0.3.18 fithesis3 MU thesis class} +% {\newwrite\f\openout\f=VERSION\write\f{\thesis@version}\closeout\f} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \changes{v0.3.18} {2015/06/24}{A bulk of changes required to submit +% the document class to CTAN: Changed the structure of the output +% \texttt{fithesis3.ctan.zip} archive. Updated the license +% notice. Added a \texttt{README} file. Canonicalized a url +% within the user guides. Renamed the root directory from +% \texttt{fithesis3/} to \texttt{fithesis/}. Refactored the +% makefiles. Added developer example files. Renamed +% \texttt{docstrip.cfg} to \texttt{LICENSE.tex} to better +% describe its role. The \texttt{fithesis.dtx} file now +% generates a \texttt{VERSION.tex} file containing the version of +% the package, when it's being typeset. Flattened the +% \texttt{logo/} directory structure. [VN]} +% \changes{v0.3.17} {2015/06/24}{Changed a forgotten +% \cs{thesis@@lower}\texttt{\{...\}} invocation in the definition +% of \cs{thesis@czech@declaration} for the Faculty of Arts into +% \cs{thesis@@lower}\texttt{\{czech@...\}}, so that the macro +% always expands to the correct output regardless of the current +% locale. This is merely a matter of consistency, since the style +% file of the Faculty of Arts only uses Czech strings within the +% Czech locale. Removed an extraneous comment. Fixed a unit test. +% Fixed a changelog entry. [VN]} +% \changes{v0.3.16} {2015/06/21}{Clubs and widows are now set to +% be infinitely bad. The \texttt{assignment} key has weaker, but +% more robust semantics now. [VN]} +% \changes{v0.3.15} {2015/06/14}{Renamed \cs{thesis@requireStyle} +% to \cs{thesis@requireWithOptions} and moved the style loader +% from the \cs{thesis@load} routine to a new +% \cs{thesis@requireStyle} macro to make the semantics of +% \cs{thesis@requireLocale} and \cs{thesis@requireStyle} more +% similar. Changed the \texttt{basepath}, \texttt{logopath}, +% \texttt{localepath} and \texttt{stylepath} keys to match the +% lower camelcasing of the rest of the keys. Added further +% description regarding the use of the \texttt{assignment} key. +% [VN]} +% \changes{v0.3.14} {2015/06/07}{Updated the documentation. [VN]} +% \changes{v0.3.13} {2015/05/30}{Fixed an inconsistency in the +% example code. Removed an extraneous \cs{thesis@blocks@clear} +% block withing the definition of \cs{thesis@blocks@frontMatter} +% in the fss style file. Added comments, fixed clubs and widows +% and removed text overflows within the user guides. Adjusted the +% colors of various style files. Removed the trailing dot in the +% bibliographic identification within the med and ped style +% files. Fixed a typo within the technical documentation. Fixed +% the twoside alignment of the \cs{thesis@blocks@bibEntry} and +% the \cs{thesis@blocks@bibEntryEn} blocks within the sci style +% file. The \cs{thesis@blocks@assignment} block no longer clears +% a page when nothing is inserted. It is also no longer +% hard-coded to be hidden for rigorous theses. Instead, the +% \cs{ifthesis@blocks@assignment} conditional can be set either +% by the subsequently loaded style files or by the user. So far, +% only the fi and sci style files set the conditional. [VN]} +% \changes{v0.3.12} {2015/05/24}{The subsections and +% subsubsections now use the correct \texttt{tocdepth}. [VN]} +% \changes{v0.3.11} {2015/05/15}{Added hyphenation into the +% technical documentation. Fixed an unterminated group. Polished +% the text of the guide. Added the \texttt{palatino} and +% \texttt{nopalatino} options. Stylistic changes to the text of +% the technical documentation. \cs{thesis@subdir} is now robust +% against relative paths. Accounted for French spacing in the +% guide. Fixed the \texttt{thesis@english@facultyName} string. +% Documentation refinements. [VN]} +% \changes{v0.3.10} {2015/05/09}{Fixed a typo in the technical +% documentation. Updated the \emph{Advanced usage} chapter of the +% user guide. The required packaged listed in Section 2.2 of the +% user guide are now always correct. Adjusted the footer spacing +% in the styles of econ and fi. Added \emph{Advanced usage} +% chapter to the user guide. Added the description of basic +% options into the user guide. Added the \texttt{table} and +% \texttt{oldtable} options. Added the \texttt{type} field to the +% guide for completeness. [VN]} +% \changes{v0.3.09} {2015/04/26}{A complete refactoring of the class. The class +% was decomposed into a base class, locale files and style files. [VN]} +% \changes{v0.3.08} {2015/03/04}{Fixed a non-terminated \cs{if} condition. +% [VN] (backport of v0.2.18)\\Fixed mostly documentation errors reported +% at the new fithesis discussion forum (-ti, eco$\rightarrow$econ, implicit +% twocolumn, example extended (font setup), etc.). [PS] (backport of v0.2.17)} +% \changes{v0.3.07} {2015/02/03}{Replaced the \cs{thesiswoman} command with +% \cs{thesisgender}. [VN]} +% \changes{v0.3.06} {2015/01/26}{Added the colorx package and the base colors +% for each faculty. If the color option is specified, the tabular environment +% gets redefined and uses the faculty colors to color alternating table rows +% to improve readability. The hyperref links in the e-version are now likewise +% colored according to the chosen faculty, in this case regardless of the +% presence of the color option. Dropped the support for typesetting theses +% outside MU. [VN]} +% \changes{v0.3.05} {2015/01/21}{Added support for change typesetting. +% Restructured the code to make it more amenable to literal programming. +% Added support for \cs{CodelineIndex} typesetting. Added information about +% the usage of \textsf{fithesis1} and \textsf{fithesis2} on the FI unix +% machines. (backport of v0.2.16) [VN]\\Minor changes throughout the text, +% added a link to the the fithesis forums [PS] (backport of v0.2.15@r14:15)} +% \changes{v0.3.04} {2015/01/14}{Import the url package to allow for the use of +% \cs{url} within the documentation. (backport of v0.2.15@r13) [VN]} +% \changes{v0.3.03} {2015/01/14}{Small fixes (added \cs{relax} at +% \cs{MainMatter}), generating both fithesis.cls (obsolete, loading +% \texttt{fithesis2.cls}) and \texttt{fithesis2.cls}, minor doc edits, +% version numbering of \texttt{.clo} fixed, switch to utf8 and ensuring that +% \texttt{.dtx} compiles. Documentation adjusted to the status quo, added +% link to discussion forum (backport of v0.2.14) [PS]} +% \changes{v0.3.02} {2015/01/13}{pdf metadata stamping added for +% \cs{thesistitle} and \cs{thesisstudent} [VN]} +% \changes{v0.3.01} {2015/01/09}{documentation now uses babel and cmap +% packages. the entire file was transcoded into utf8, \cs{thesiscolor} was +% replaced by color class option, added pdf metadata stamping support [VN]} +% \changes{v0.3.00} {2015/01/01}{fi logo is no longer special-cased (added eps +% and pdf), \cs{thesislogopath} added to set the logo directory path, +% \cs{thesiscolor} added to enable colorful typo elements [VN]} +% \changes{v0.2.12a}{2008--2011}{fork fithesis2 by Mr. Filipčík and Janoušek; +% cf. \protect\url{http://github.com/liskin/fithesis}} +% \changes{v0.2.12} {2008/07/27}{Licence change to the LPPL [JP]} +% \changes{v0.2.11} {2008/01/07}{fix missing \texttt{fi-logo.mf} [JP,PS]} +% \changes{v0.2.10} {2006/05/12}{fix EN name of Acknowledgement [JP]} +% \changes{v0.2.09} {2006/05/08}{add EN version of University name [JP]} +% \changes{v0.2.08} {2006/01/20}{add change of University name [JP]} +% \changes{v0.2.07} {2005/05/10}{escape all Czech letters [JP] +% babel is used instead of stupid package czech [JP] +% \cs{MainMatter} should be placed after \cs{tablesofcontents} [PS]} +% \changes{v0.2.06} {2004/12/22}{fix : behind Advisor [JP]} +% \changes{v0.2.05} {2004/05/13}{add English abstract [JP]} +% \changes{v0.2.04} {2004/05/13}{fix SK declaration [Peter Cerensky, JP]} +% \changes{v0.2.03} {2004/05/13}{fix title spacing [PS, JP]} +% \changes{v0.2.02} {2004/05/12}{fix encoding bug [JP]} +% \changes{v0.2.01} {2004/05/11}{add subsubsection to toc [JP]} +% \changes{v0.2.00} {2004/05/03}{add sk lang [JP, Peter Cerensky] +% set default cls class to \textsf{rapport3} [JP]} +% \changes{v0.1g} {2004/04/01}{change of default size (12pt$\rightarrow$11pt) [JP]} +% \changes{v0.1f} {2004/01/24}{add documentation for hyperref [JP]} +% \changes{v0.1e} {2004/01/07}{add Brno to MU title [JP]} +% \changes{v0.1d} {2003/03/24}{removed def schapter from fit1*.clo [JP]} +% \changes{v0.1c} {2003/02/21}{default values of \cs{facultyname} and +% \\\cs{@thesissubtitle} set for backward compatibility) [PS]} +% \changes{v0.1b} {2003/02/14}{change of default size (11pt$\rightarrow$12pt) [JP]} +% \changes{v0.1a} {2003/02/12}{minor documentation changes (CZ only, +% sorry) [PS]} +% \changes{v0.1} {2003/02/11}{new release, documentation editing (CZ only, +% sorry) [PS]} +% \changes{v0.0a} {2002}{changes by Jan Pavlovič to allow fithesis being +% backend of docbook based system for thesis writing} +% \changes{v0.0} {1998}{bachelor project of Daniel Marek under +% supervision of Petr Sojka} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \title{The \textsf{fithesis3} class for the typesetting of theses written +% at the Masaryk University in Brno} +% \author{Daniel Marek, Jan Pavlovič, Vít Novotný, Petr Sojka} +% \date{\today} +% \maketitle +% +% \begin{abstract} +% \noindent This document details the design and the implementation +% of the \textsf{fithesis3} document class. It contains technical +% information for anyone who wishes to extend the class with their +% locale or style files. Users who only wish to use the class are +% advised to consult the guides distributed along with the class, +% which only document the parts of the public API relevant to the +% given style files. +% \end{abstract} +% +% \tableofcontents +% +% \section{Required classes and packages} +% The class loads the \texttt{rapport3} base class and the +% following packages: \begin{itemize} +% \item\textsf{keyval} -- Adds support for parsing +% comma-delimited lists of key-value pairs. +% \item\textsf{etoolbox} -- Adds support for expanding +% code after the preamble using the |\AtPreamble| hook. +% \item\textsf{ifxetex} -- Used to detect the \Hologo{XeTeX} +% engine. +% \item\textsf{ifluatex} -- Used to detect the \Hologo{LuaTeX} +% engine. +% \item\textsf{inputenc} -- Used to enable the input UTF-8 +% encoding. This package does not get loaded under +% the \Hologo{XeTeX} and \Hologo{LuaTeX} engines. +% \end{itemize} +% The \texttt{hyperref} package is also conditionally loaded during +% the expansion of the |\thesis@load| macro (see Section +% \ref{sec:thesis@load}). Other packages may be required by the +% style files (see Section \ref{sec:style-files}) you are using. +% \begin{macrocode} +\ProvidesClass{fithesis3}[\thesis@version] +\LoadClass[a4paper]{rapport3} +\RequirePackage{keyval} +\RequirePackage{etoolbox} +\RequirePackage{ifxetex} +\RequirePackage{ifluatex} +\ifxetex\else\ifluatex\else + \RequirePackage[utf8]{inputenc} +\fi\fi +% \end{macrocode} +% \section{Public API} +% \label{sec:public-api} +% \subsection{Options} +% Any \oarg{options} passed to the class will be handed down to the +% loaded style files. The supported options are therefore documented +% in the subsections of Section \ref{sec:style-files} dedicated to +% the respective style files. +% +% \subsection{The \cs{thesissetup} macro} +% \begin{macro}{\thesissetup} +% The main public macro is the |\thesissetup|\marg{keyvals} +% command, where \textit{keyvals} is a comma-delimited list of +% key-value pairs as defined by the \textsf{keyval} package. This +% macro needs to be included prior to the beginning of a \LaTeX\ +% document. When used, the \textit{keyvals} are processed. +% +% Note that the values passed to the |\thesissetup| public macro +% may only contain one paragraph of text. If you wish to set +% multiple paragraphs of text as the value, you need to use +% the |\thesislong| public macro (see Section +% \ref{sec:thesislong}). +% \begin{macrocode} +\def\thesissetup#1{% + \setkeys{thesis}{#1}} +% \end{macrocode} +% \subsubsection{The \texttt{basePath} key} +% \begin{macro}{\thesis@basepath} +% The \marg{\texttt{basePath}=path} pair sets the \textit{path} +% containing the class files. The \textit{path} is prepended to +% every other path (|\thesis@logopath|, |\thesis@stylepath| and +% |\thesis@localepath|) used by the class. If non-empty, the +% \textit{path} gets normalized to \textit{path/}. The normalized +% \textit{path} is stored within the private |\thesis@basepath| macro, +% whose implicit value is |fithesis/|. +% \begin{macrocode} +\def\thesis@basepath{fithesis/} +\define@key{thesis}{basePath}{% + \ifx\thesis@empty#1\thesis@empty% + \def\thesis@basepath{}% + \else% + \def\thesis@basepath{#1/}% + \fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@logopath} +% \subsubsection{The \texttt{logoPath} key} +% The \marg{\texttt{logoPath}=path} pair sets the \textit{path} +% containing the logo files, which is used by the style files +% loading the logo. The \textit{path} is normalized using the +% private |\thesis@subdir| macro and stored within the private +% |\thesis@logopath| macro, whose implicit value is +% |\thesis@basepath| followed by |logo/\thesis@university/|. By +% default, this expands to \texttt{fithesis3/logo/mu/}. +% \begin{macrocode} +\def\thesis@logopath{\thesis@basepath logo/\thesis@university/} +\define@key{thesis}{logoPath}{% + \def\thesis@logopath{\thesis@subdir#1% + \empty\empty\empty\empty}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@stylepath} +% \subsubsection{The \texttt{stylePath} key} +% The \marg{\texttt{stylePath}=path} pair sets the \textit{path} +% containing the style files. The \textit{path} is normalized using +% the private |\thesis@subdir| macro and stored within the private +% |\thesis@stylepath| macro, whose implicit value is +% |\thesis@basepath style/|. By default, this expands to +% \texttt{fithesis3/style/}. +% \begin{macrocode} +\def\thesis@stylepath{\thesis@basepath style/} +\define@key{thesis}{stylePath}{% + \def\thesis@stylepath{\thesis@subdir#1% + \empty\empty\empty\empty}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@localepath} +% \subsubsection{The \texttt{localePath} key} +% The \marg{\texttt{localePath}=path} pair sets the \textit{path} +% containing the locale files. The \textit{path} is normalized +% using the private |\thesis@subdir| macro and stored within the +% private |\thesis@localepath| macro, whose implicit value is +% |\thesis@basepath| followed by |locale/|. By default, this +% expands to \texttt{fithesis3/locale/}. +% \begin{macrocode} +\def\thesis@localepath{\thesis@basepath locale/} +\define@key{thesis}{localePath}{% + \def\thesis@localepath{\thesis@subdir#1% + \empty\empty\empty\empty}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@subdir} +% The |\thesis@subdir| private macro returns |/| unchanged, coerces +% |.|, |..|, |/|\textit{path}, |./|\textit{path} and +% |../|\textit{path} to |./|, |../|, |/|\textit{path}|/|, +% |./|\textit{path}|/| and |../|\textit{path}|/|, respectively, and +% coerces any other \textit{path} into |\thesis@basepath| +% \textit{path}|/|. +% \begin{macrocode} +\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} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@def} +% The |\thesis@def|\oarg{key}\marg{name} private macro defines +% the private |\thesis@|\textit{name} macro to expand +% to either <<\textit{key}>>, if specified, or to +% <<\textit{name}>>. The macro serves to provide the placeholder +% string for user-defined macros with no default value. +% \begin{macrocode} +\newcommand{\thesis@def}[2][]{% + \expandafter\def\csname thesis@#2\endcsname{% + <<\ifx\thesis@empty#1\thesis@empty#2\else#1\fi>>}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@declaration} +% \subsubsection{The \texttt{declaration} key} +% The \marg{\texttt{declaration}=text} pair sets the +% declaration \textit{text} to be included into the document. +% \cmd{/thesis@basepath} followed by \textit{path}. The +% \textit{text} is stored within the private |\thesis@declaration| +% macro, whose implicit value is |\thesis@@{declaration}|. +% \begin{macrocode} +\def\thesis@declaration{\thesis@@{declaration}} +\long\def\KV@thesis@declaration#1{% + \long\def\thesis@declaration{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifthesis@woman} +% \subsubsection{The \texttt{gender} key} +% The \marg{\texttt{gender}=char} pair sets the author's gender to +% either a male, if \textit{char} is the character \texttt{m}, or +% to a female. The gender can be tested using the +% |\ifthesis@woman| \ldots |\else| \ldots |\fi| conditional. The +% implicit gender is male. +% \begin{macrocode} +\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} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@author} +% \subsubsection{The \texttt{author} key} +% The \marg{\texttt{author}=name} pair sets the author's full +% name to \textit{name}. The \textit{name} is parsed using the +% \DescribeMacro{\thesis@parseAuthor} private macro and stored +% within the following private macros: +% \begin{itemize} +% \item\DescribeMacro{\thesis@author}|\thesis@author| +% -- The full name of the author. +% \item\DescribeMacro{\thesis@author@head}|\thesis@author@head| +% -- The first space-delimited part of the name. This +% corresponds to the author's first name. +% \item\DescribeMacro{\thesis@author@tail}|\thesis@author@tail| +% -- The full name without the first space-delimited part of +% the name. This corresponds to the author's surname. +% \end{itemize} +% \begin{macrocode} +\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}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@id} +% \subsubsection{The \texttt{id} key} +% The \marg{\texttt{id}=identifier} pair sets the identifier +% of the thesis author to \textit{identifier}. This usually +% corresponds to a unique identifier of the author within the +% information system of the given university. +% \begin{macrocode} +\thesis@def{id} +\define@key{thesis}{id}{% + \def\thesis@id{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@type} +% \subsubsection{The \texttt{type} key} +% The \marg{\texttt{type}=type} pair sets the type of the thesis +% to \textit{type}. The following types of theses are recognized: +% \begin{center}\begin{tabular}{lc}\toprule +% The thesis type & The value of \textit{type} \\\midrule +% Bachelor's thesis & \texttt{bc} \\ +% Master's thesis & \texttt{mgr} \\ +% Doctoral thesis & \texttt{d} \\ +% Rigorous thesis & \texttt{r} \\\bottomrule +% \end{tabular}\end{center} +% The \textit{type} is stored within the private |\thesis@type| +% macro, whose implicit value is |bc|. For the ease of testing of +% the thesis type via |\ifx| conditions within style and locale +% files, the \DescribeMacro{\thesis@bachelors}|\thesis@bachelors|, +% \DescribeMacro{\thesis@masters}|\thesis@masters|, +% \DescribeMacro{\thesis@doctoral}|\thesis@doctoral| and +% \DescribeMacro{\thesis@rigorous}|\thesis@rigorous| macros +% containing the corresponding \textit{type} values are available +% as a part of the private API. +% \begin{macrocode} +\def\thesis@bachelors{bc} +\def\thesis@masters{mgr} +\def\thesis@doctoral{d} +\def\thesis@rigorous{r} +\let\thesis@type\thesis@bachelors +\define@key{thesis}{type}{% + \def\thesis@type{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@university} +% \subsubsection{The \texttt{university} key} +% The \marg{\texttt{university}=id} pair sets the identifier of +% the university, at which the thesis is being written, +% to \textit{id}. The \textit{id} is stored within the private +% |\thesis@university| macro, whose implicit value is \texttt{mu}. +% The |\thesis@university| +% macro is used by the |\thesis@logopath| macro and when loading +% the style and locale files using the |\thesis@load| macro. It +% allows for the usage of the class at universities other than +% the Masaryk University in Brno without the need to alter the +% code. +% \begin{macrocode} +\def\thesis@university{mu} +\define@key{thesis}{university}{% + \def\thesis@university{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@faculty} +% \subsubsection{The \texttt{faculty} key} +% The \marg{\texttt{faculty}=domain} pair sets the faculty, at +% which the thesis is being written, to \textit{domain}. The +% following \textit{domain} names are recognized: +% \begin{center}\begin{tabularx}{\textwidth}{Xc}\toprule +% The Faculty & The \textit{domain} name \\\midrule +% The Faculty of Informatics & \texttt{fi} \\ +% The Faculty of Science & \texttt{sci} \\ +% The Faculty of Law & \texttt{law} \\ +% The Faculty of Economics and Administration & \texttt{econ} \\ +% The Faculty of Social Studies & \texttt{fss} \\ +% The Faculty of Medicine & \texttt{med} \\ +% The Faculty of Education & \texttt{ped} \\ +% The Faculty of Arts & \texttt{phil} \\ +% The Faculty of Sports Studies & \texttt{fsps} \\\bottomrule +% \end{tabularx}\end{center} +% The \textit{domain} name is stored within the private +% |\thesis@faculty| macro, whose implicit value is \texttt{fi}. +% \begin{macrocode} +\def\thesis@faculty{fi} +\define@key{thesis}{faculty}{% + \def\thesis@faculty{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@department} +% \subsubsection{The \texttt{department} key} +% The \marg{\texttt{department}=name} pair sets the name of the +% department, at which the thesis is being written, to +% \textit{name}. The \textit{name} is stored within the private +% |\thesis@department| macro. +% \begin{macrocode} +\thesis@def{department} +\define@key{thesis}{department}{% + \def\thesis@department{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@departmentEn} +% \subsubsection{The \texttt{departmentEn} key} +% The \marg{\texttt{departmentEn}=name} pair sets the English +% name of the department, at which the thesis is being written, to +% \textit{name}. The \textit{name} is stored within the private +% |\thesis@departmentEn| macro. +% \begin{macrocode} +\thesis@def{departmentEn} +\define@key{thesis}{departmentEn}{% + \def\thesis@departmentEn{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@programme} +% \subsubsection{The \texttt{programme} key} +% The \marg{\texttt{programme}=name} pair sets the name of the +% author's study programme to \textit{name}. The \textit{name} +% is stored within the private |\thesis@programme| macro. +% \begin{macrocode} +\thesis@def{programme} +\define@key{thesis}{programme}{% + \def\thesis@programme{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@programmeEn} +% \subsubsection{The \texttt{programmeEn} key} +% The \marg{\texttt{programmeEn}=name} pair sets the English name +% of the author's study programme to \textit{name}. The +% \textit{name} is stored within the private |\thesis@programmeEn| +% macro. +% \begin{macrocode} +\thesis@def{programmeEn} +\define@key{thesis}{programmeEn}{% + \def\thesis@programmeEn{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@field} +% \subsubsection{The \texttt{field} key} +% The \marg{\texttt{field}=name} pair sets the name of the +% author's field of stufy to \textit{name}. The \textit{name} +% is stored within the private |\thesis@field| macro. +% \begin{macrocode} +\thesis@def{field} +\define@key{thesis}{field}{% + \def\thesis@field{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@fieldEn} +% \subsubsection{The \texttt{fieldEn} key} +% The \marg{\texttt{fieldEn}=name} pair sets the English name of +% the author's field of stufy to \textit{name}. The \textit{name} +% is stored within the private |\thesis@fieldEn| macro. +% \begin{macrocode} +\thesis@def{fieldEn} +\define@key{thesis}{fieldEn}{% + \def\thesis@fieldEn{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@universityLogo} +% \subsubsection{The \texttt{universityLogo} key} +% The \marg{\texttt{universityLogo}=filename} pair sets the +% filename of the logo file to be used to \textit{filename}. The +% \textit{filename} is stored within the private +% |\thesis@universityLogo| macro, whose implicit value is +% \texttt{fithesis-base}. The \texttt{fithesis-} prefix serves to +% prevent package clashes with other similarly named package files +% within the \TeX\ directory structure. The logo file is loaded +% from the |\thesis@logopath|\discretionary{}{}{}|\thesis@logo| +% path. +% \begin{macrocode} +\def\thesis@universityLogo{fithesis-base} +\define@key{thesis}{universityLogo}{% + \def\thesis@universityLogo{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@facultyLogo} +% \subsubsection{The \texttt{facultyLogo} key} +% The \marg{\texttt{facultyLogo}=filename} pair sets the filename +% of the logo file to be used to \textit{filename}. The +% \textit{filename} is stored within the private +% |\thesis@facultyLogo| macro, whose implicit value is +% |fithesis-\thesis@faculty|. The \texttt{fithesis-} prefix serves +% to prevent package clashes with other similarly named logo +% files within the \TeX\ directory structure. The logo file is +% loaded from the |\thesis@logopath\thesis@logo| path. +% \begin{macrocode} +\def\thesis@facultyLogo{fithesis-\thesis@faculty} +\define@key{thesis}{facultyLogo}{% + \def\thesis@facultyLogo{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@style} +% \subsubsection{The \texttt{style} key} +% The \marg{\texttt{style}=filename} pair sets the filename of the +% style file to be used to \textit{filename}. The \textit{filename} +% is stored within the private |\thesis@style| macro, whose +% implicit value is |\thesis@university/fithesis-\thesis@faculty|. +% The style file is loaded from the +% |\thesis@stylepath\thesis@style| path. +% \begin{macrocode} +\def\thesis@style{\thesis@university/fithesis-\thesis@faculty} +\define@key{thesis}{style}{% + \def\thesis@style{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@style@inheritance} +% \subsubsection{The \texttt{styleInheritance} key} +% The \marg{\texttt{styleInheritance}=bool} pair either enables, +% if \textit{bool} is \texttt{true} or unspecified, or disables the +% inheritance for style files. The effects of the inheritance +% are documented within the subsection documenting the +% |\thesis@load| macro. The setting can be tested using the +% |\ifthesis@style@inheritance| \ldots +% |\else| \ldots |\fi| conditional. Inheritance is enabled for +% style files by default. +% \begin{macrocode} +\newif\ifthesis@style@inheritance\thesis@style@inheritancetrue +\define@key{thesis}{styleInheritance}[true]{% + \def\@true{true}% + \def\@arg{#1}% + \ifx\@true\@arg% + \thesis@style@inheritancetrue% + \else% + \thesis@style@inheritancefalse% + \fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@locale} +% \subsubsection{The \texttt{locale} key} +% The \marg{\texttt{locale}=filename} pair sets the filename of the +% locale file(s) to be used to \textit{filename}. The +% \textit{filename} is stored within the private |\thesis@locale| +% macro, whose implicit value is the main language of either the +% \textsf{babel} or the \textsf{polyglossia} package, or +% \texttt{english}, when undefined. If the inheritance is disabled +% for locale files, the locale file is loaded from the +% |\thesis@localepath\thesis@locale| path. +% \begin{macrocode} +\def\thesis@locale{% + % Babel detection + \ifx\languagename\undefined% + english\else\languagename\fi} +\define@key{thesis}{locale}{% + \def\thesis@locale{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifthesis@english} +% The English locale is special. Several parts of the document will +% typically be typeset in both the current locale and English. +% However, if the current locale is English, this would result in +% duplicity. To avoid this, the |\ifthesis@english| \ldots |\else| +% \ldots |\fi| conditional is made available for testing, whether +% or not the current locale is English. +% \begin{macrocode} +\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} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@locale@inheritance} +% \subsubsection{The \texttt{localeInheritance} key} +% The \marg{\texttt{localeInheritance}=bool} pair either enables, +% if \textit{bool} is \texttt{true} or unspecified, or disables the +% inheritance. The effects of the inheritance are +% documented within the subsection documenting the |\thesis@load| +% macro. The setting can be tested using the +% |\ifthesis@locale@inheritance| \ldots +% |\else| \ldots |\fi| conditional. Inheritance is enabled for locale +% files by default. +% \begin{macrocode} +\newif\ifthesis@locale@inheritance\thesis@locale@inheritancetrue +\define@key{thesis}{localeInheritance}[true]{% + \def\@true{true}% + \def\@arg{#1}% + \ifx\@true\@arg% + \thesis@locale@inheritancetrue% + \else% + \thesis@locale@inheritancefalse% + \fi} +% \end{macrocode} +% \end{macro} +% \subsubsection{The \texttt{date} key} +% The \marg{\texttt{date}=date} pair sets the date of the thesis +% defence to \textit{date}, where \textit{date} is a string +% in the \texttt{YYYY/MM/DD} format, where \texttt{YYYY} stands +% for full year, \texttt{MM} stands for month and \texttt{DD} +% stands for day. The \textit{date} is parsed and stored using +% the \DescribeMacro{\thesis@parseDate}|\thesis@parseDate| private +% macro within the following private macros: +% \begin{itemize} +% \item\DescribeMacro{\thesis@date}|\thesis@date| -- The whole +% date +% \item\DescribeMacro{\thesis@year}|\thesis@year| -- The year +% \item\DescribeMacro{\thesis@month}|\thesis@month| -- The month +% \item\DescribeMacro{\thesis@day}|\thesis@day| -- The day of +% month +% \item\DescribeMacro{\thesis@season}|\thesis@season| -- Expands +% to either: +% \begin{itemize} +% \item\texttt{winter} if \texttt{MM} $<7$. +% \item\texttt{summer} if \texttt{MM} $\geq7$. +% \end{itemize} +% \item\DescribeMacro{\thesis@academicYear}|\thesis@academicYear| +% -- The academic year of the given semester: +% \begin{itemize} +% \item\texttt{YYYY/YYYY}$+1$ in case of a summer semester +% \item\texttt{YYYY}$-1$\texttt{/YYYY} in case of a winter +% semester +% \end{itemize} +% \end{itemize} +% To set up the default values, the |\thesis@parseDate| macro is +% called with the fully expanded |\the\year/\the\month/\the\day| +% string. +% \begin{macrocode} +\def\thesis@parseDate#1/#2/#3|{{ + % Basic info + \gdef\thesis@date{#1/#2/#3}% + \gdef\thesis@year{#1}% + \gdef\thesis@month{#2}% + \gdef\thesis@day{#3}% + + % Season and academic year + \newcount\@year \expandafter\@year \thesis@year \relax% + \newcount\@month\expandafter\@month\thesis@month\relax% + \ifnum\@month<7% + \gdef\thesis@season{winter}% + \advance\@year-1\edef\@yearA{\the\@year}% + \advance\@year 1\edef\@yearB{\the\@year}% + \else% + \gdef\thesis@season{summer}% + \edef\@yearA{\the\@year}% + \advance\@year 1\edef\@yearB{\the\@year}% + \fi% + \global\edef\thesis@academicYear{\@yearA/\@yearB}}} + +\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|}} +% \end{macrocode} +% \begin{macro}{\thesis@place} +% \subsubsection{The \texttt{place} key} +% The \marg{\texttt{place}=place} pair sets the location of the +% faculty, at which the thesis is being prepared, to \textit{place}. +% The \textit{place} is stored within the private |\thesis@place| +% macro, whose implicit value is \texttt{Brno}. +% \begin{macrocode} +\def\thesis@place{Brno} +\define@key{thesis}{place}{% + \def\thesis@place{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@title} +% \subsubsection{The \texttt{title} key} +% The \marg{\texttt{title}=title} pair sets the title of the +% thesis to \textit{title}. The \textit{title} is stored within the +% private |\thesis@title| macro. +% \begin{macrocode} +\thesis@def{title} +\define@key{thesis}{title}{% + \def\thesis@title{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@TeXtitle} +% \subsubsection{The \texttt{TeXtitle} key} +% The \marg{\texttt{TeXtitle}=title} pair sets the \TeX\ title of +% the thesis to \textit{title}. The \textit{title} is used, when +% typesetting the title, whereas |\thesis@title| is a plain text, +% which gets included in the PDF header of the +% resulting document as well as in the \BibTeX\ file containing +% the bibliographical entry for the thesis. The \textit{title} +% is stored within the private |\thesis@TeXtitle| macro, whose +% implicit value is |\thesis@title|. +% \begin{macrocode} +\def\thesis@TeXtitle{\thesis@title} +\define@key{thesis}{TeXtitle}{% + \def\thesis@TeXtitle{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@titleEn} +% \subsubsection{The \texttt{titleEn} key} +% The \marg{\texttt{titleEn}=title} pair sets the English title of +% the thesis to \textit{title}. The \textit{title} is stored within +% the private |\thesis@titleEn| macro. +% \begin{macrocode} +\thesis@def{titleEn} +\define@key{thesis}{titleEn}{% + \def\thesis@titleEn{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@TeXtitleEn} +% \subsubsection{The \texttt{TeXtitleEn} key} +% The \marg{\texttt{TeXtitleEn}=title} pair sets the English \TeX\ +% title of the thesis to \textit{title}. The \textit{title} is +% used, when typesetting the title, whereas |\thesis@titleEn| is a +% plain text. The \textit{title} is stored within the private +% |\thesis@TeXtitleEn| macro, whose implicit value is +% |\thesis@titleEn|. +% \begin{macrocode} +\def\thesis@TeXtitleEn{\thesis@titleEn} +\define@key{thesis}{TeXtitleEn}{% + \def\thesis@TeXtitleEn{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@keywords} +% \subsubsection{The \texttt{keywords} key} +% The \marg{\texttt{keywords}=list} pair sets the keywords of the +% thesis to the comma-delimited \textit{list}. The \textit{list} +% is stored within the private |\thesis@keywords| macro. +% \begin{macrocode} +\thesis@def{keywords} +\define@key{thesis}{keywords}{% + \def\thesis@keywords{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@TeXkeywords} +% \subsubsection{The \texttt{TeXkeywords} key} +% The \marg{\texttt{TeXkeywords}=list} pair sets the \TeX\ keywords +% of the thesis to the comma-delimited \textit{list}. The +% \textit{list} is used, when typesetting the keywords, whereas +% |\thesis@keywords| is a plain text. The \textit{list} is stored +% within the private |\thesis@TeXkeywords| macro. +% \begin{macrocode} +\def\thesis@TeXkeywords{\thesis@keywords} +\define@key{thesis}{TeXkeywords}{% + \def\thesis@TeXkeywords{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@keywordsEn} +% \subsubsection{The \texttt{keywordsEn} key} +% The \marg{\texttt{keywordsEn}=list} pair sets the English +% keywords of the thesis to the comma-delimited \textit{list}. The +% \textit{list} is stored within the private |\thesis@keywordsEn| +% macro. +% \begin{macrocode} +\thesis@def{keywordsEn} +\define@key{thesis}{keywordsEn}{% + \def\thesis@keywordsEn{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@TeXkeywordsEn} +% \subsubsection{The \texttt{TeXkeywordsEn} key} +% The \marg{\texttt{TeXkeywordsEn}=list} pair sets the English +% \TeX\ keywords of the thesis to the comma-delimited \textit{list}. +% The \textit{list} is used, when typesetting the keywords, whereas +% |\thesis@keywordsEn| is a plain text. The \textit{list} is stored +% within the private |\thesis@TeXkeywordsEn| macro. +% \begin{macrocode} +\def\thesis@TeXkeywordsEn{\thesis@keywordsEn} +\define@key{thesis}{TeXkeywordsEn}{% + \def\thesis@TeXkeywordsEn{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@abstract} +% \subsubsection{The \texttt{abstract} key} +% The \marg{\texttt{abstract}=text} pair sets the abstract of the +% thesis to \textit{text}. The \textit{text} is stored within the +% private |\thesis@abstract| macro. +% \begin{macrocode} +\thesis@def{abstract} +\long\def\KV@thesis@abstract#1{% + \long\def\thesis@abstract{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@abstractEn} +% \subsubsection{The \texttt{abstractEn} key} +% The \marg{\texttt{abstractEn}=text} pair sets the English +% abstract of the thesis to \textit{text}. The \textit{text} +% is stored within the private |\thesis@abstractEn| macro. +% \begin{macrocode} +\thesis@def{abstractEn} +\long\def\KV@thesis@abstractEn#1{% + \long\def\thesis@abstractEn{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@advisor} +% \subsubsection{The \texttt{advisor} key} +% The \marg{\texttt{advisor}=name} pair sets the thesis advisor's +% full name to \textit{name}. The \textit{name} is stored within +% the private |\thesis@advisor| macro. +% \begin{macrocode} +\thesis@def{advisor} +\define@key{thesis}{advisor}{\def\thesis@advisor{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@thanks} +% \subsubsection{The \texttt{thanks} key} +% The \marg{\texttt{thanks}=text} pair sets the acknowledgement +% text to \textit{text}. The \textit{text} is stored within +% the private |\thesis@thanks| macro. +% \begin{macrocode} +\long\def\KV@thesis@thanks#1{% + \long\def\thesis@thanks{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thesis@assignmentFiles} +% \subsubsection{The \texttt{assignment} key} +% The \marg{\texttt{assignment}=list} pair sets the comma-separated +% list of paths to the pdf files containing the thesis assignment +% to \textit{list}. The \textit{list} is stored within the +% |\thesis@assignmentFiles| private macro. +% \begin{macrocode} +\define@key{thesis}{assignment}{% + \def\thesis@assignmentFiles{#1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifthesis@auto} +% \subsubsection{The \texttt{autoLayout} key} +% The \marg{\texttt{autoLayout}=bool} pair either enables, +% if \textit{bool} is \texttt{true} or unspecified, or disables +% autolayout. Autolayout injects the +% |\thesis@preamble| and |\thesis@postamble| private macros +% at the beginning and the end of the document, respectively. The +% setting can be tested using the |\ifthesis@auto| \ldots |\else| +% \ldots |\fi| conditional. The autolayout is enabled by default. +% \begin{macrocode} +\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} +% \end{macrocode} +% \end{macro} ^^A The nested \ifthesis@auto macro definition +% \end{macro} ^^A The \thesissetup macro definition +% The \DescribeMacro{\thesis@preamble}|\thesis@postamble| +% and \DescribeMacro{\thesis@postamble}|\thesis@preamble| +% private macros are defined as empty strings by default and are +% subject to redefinition by the style files. +% \begin{macrocode} +\def\thesis@preamble{} +\def\thesis@postamble{} +% \end{macrocode} +% \subsection{The \cs{thesislong} macro}\label{sec:thesislong} +% \begin{macro}{\thesislong} +% The public macro |\thesislong|\marg{key}\marg{value}, +% where \textit{value} may contain multiple paragraphs of text, can +% be used for the following \textit{key}s as an alternative to the +% |\thesissetup| public macro, which only permits a single +% paragraph as the \textit{value}: +% \begin{itemize} +% \item\texttt{abstract} +% \item\texttt{abstractEn} +% \item\texttt{thanks} +% \item\texttt{declaration} +% \end{itemize} +% \begin{macrocode} +\long\def\thesislong#1#2{% + \csname KV@thesis@#1\endcsname{#2}} +% \end{macrocode} +% \end{macro} +% \section{Private API} +% \subsection{Main routine}\label{sec:thesis@load} +% \begin{macro}{\thesis@load} +% The |\thesis@load| macro is responsible for preparing the +% environment for, and consequently loading, the necessary locale +% and style files. By default, the |\thesis@load| macro gets +% expanded at the end of the preamble, +% but it can be inserted manually prior to that, if necessary to +% prevent package clashes. The \DescribeMacro{\ifthesis@loaded} +% |\ifthesis@loaded| semaphore ensures that the expansion is only +% performed once. +% \begin{macrocode} +\newif\ifthesis@loaded\thesis@loadedfalse +\AtEndPreamble{\thesis@load} +\def\thesis@load{% + \ifthesis@loaded\else% + \thesis@loadedtrue + \makeatletter% +% \end{macrocode} +% First, the main locale file is loaded using the +% |\thesis@requireLocale| macro. +% \begin{macrocode} + \ifx\thesis@locale\empty\else + \thesis@requireLocale{\thesis@locale} + \fi +% \end{macrocode} +% Consequently, the style files are loaded with the class options +% passed onto them. +% \begin{macrocode} + \ifx\thesis@style\empty\else + \thesis@requireStyle{\thesis@style} + \fi +% \end{macrocode} +% With the placeholder strings loaded from the locale files, we +% can now inject metadata into the resulting PDF file. To this +% end, the \textsf{hyperref} package is conditionally included with +% the \texttt{unicode} option. Consequently, the following values +% are assigned to the PDF headers:\begin{itemize} +% \item\texttt{Title} is set to |\thesis@title|. +% \item\texttt{Author} is set to |\thesis@author|. +% \item\texttt{Keywords} is set to |\thesis@keywords|. +% \item\texttt{Creator} is set to \texttt{\thesis@version}. +% \end{itemize} +% \begin{macrocode} + \thesis@require{hyperref}% + {\hypersetup{unicode, + pdftitle={\thesis@title},% + pdfauthor={\thesis@author},% + pdfkeywords={\thesis@keywords},% + pdfcreator={\thesis@version},% + }}% +% \end{macrocode} +% If autolayout is enabled, the |\thesis@preamble| and +% |\thesis@postamble| macros are scheduled for expansion at the +% beginning and at the end of the document, respectively. +% \begin{macrocode} + \ifthesis@auto% + \AtBeginDocument{\thesis@preamble}% + \AtEndDocument{\thesis@postamble}% + \fi% +% \end{macrocode} +% Lastly, a \BibTeX\ file named |\jobname.bib| containing the +% bibliographical entry for the thesis is scheduled to be +% generated at the end of the document in the working directory +% using the |\thesis@bibgen| macro and the +% \DescribeMacro{\thesis@pages}|\thesis@pages| private macro +% definition containing the length of the document is scheduled to +% be included in the auxiliary file. +% \begin{macrocode} + \AtEndDocument{% + % Define \thesis@pages for the next run + \write\@auxout{\noexpand\gdef\noexpand% + \thesis@pages{\thepage}}} + \makeatother% + \fi} +% \end{macrocode} +% \end{macro} +% \subsection{File manipulation macros} +% \begin{macro}{\thesis@exists} +% The |\thesis@exists|\marg{file}\marg{tokens} private macro is +% used to test for the existence of a given \textit{file}. If the +% \textit{file} exists, the macro expands to \textit{tokens}. +% Otherwise, a class warning is written to the output. +% \begin{macrocode} +\def\thesis@input#1{% + \thesis@exists{#1}{\input{#1}}} +% \end{macrocode} +% \end{macro}\begin{macro}{\thesis@input} +% The |\thesis@input|\marg{file} private macro inputs the given +% \textit{file}, if it exists. +% \begin{macrocode} +\def\thesis@exists#1#2{% + \IfFileExists{#1}{#2}{% + \ClassWarning{fithesis3}{File #1 doesn't exist}}} +% \end{macrocode} +% \end{macro}\begin{macro}{\thesis@require} +% The |\thesis@require| \marg{package} expands to +% |\RequirePackage|\marg{package}, if the specified +% \textit{package} has not yet been loaded. +% \begin{macrocode} +\def\thesis@require#1{% + \@ifpackageloaded{#1}{}{\RequirePackage{#1}}} +% \end{macrocode} +% \end{macro}\begin{macro}{\thesis@requireWithOptions} +% The |\thesis@requireWithOptions|\marg{package} expands to +% |\RequirePackageWithOptions|\marg{package}, if the specified +% \textit{package} exists and has not yet been loaded. +% \begin{macrocode} +\def\thesis@requireWithOptions#1{\thesis@exists{#1.sty}{% + \@ifpackageloaded{#1}{}{\RequirePackageWithOptions{#1}}}} +% \end{macrocode} +% \end{macro}\begin{macro}{\thesis@requireStyle} +% If inheritance is enabled for style files, then the +% |\thesis@requireStyle|\marg{style} private macro sequentially +% loads each of the following files, provided they exist: +% \begin{enumerate} +% \item|\thesis@stylepath fithesis-base.sty| +% \item|\thesis@stylepath\thesis@university/fithesis-base.sty| +% \item|\thesis@stylepath| \textit{style}|.sty| +% \end{enumerate}If inheritance is disabled for style files, +% then only the |\thesis@stylepath| \textit{style}|.sty| file is +% loaded. The \texttt{fithesis-} prefix serves to prevent package +% clashes with other similarly named package files within the \TeX\ +% directory structure. +% \begin{macrocode} +\def\thesis@requireStyle#1{% + \ifthesis@style@inheritance% + \thesis@requireWithOptions{\thesis@stylepath fithesis-base}% + \thesis@requireWithOptions{\thesis@stylepath\thesis@university% + /fithesis-base} + \fi% + \thesis@requireWithOptions{\thesis@stylepath#1}} +% \end{macrocode} +% \end{macro}\begin{macro}{\thesis@requireLocale} +% If inheritance is enabled for style files, then the +% |\thesis@requireStyle|\marg{locale} private macro sequentially +% loads each of the following locale files, provided they exist: +% \begin{enumerate} +% \item|\thesis@localepath| \textit{locale}|.def| +% \item|\thesis@localepath\thesis@university/|^^A +% \textit{locale}|.def| +% \item|\thesis@localepath\thesis@university/\thesis@faculty/|^^A +% \textit{locale}|.def| +% \end{enumerate} If inheritance is disabled for locale files, then +% only the first listed file is used. The macro can be used within +% both locale and style files, although the usage within locale +% files is strongly discouraged to prevent circular dependencies. +% \begin{macrocode} +\def\thesis@requireLocale#1{% + % Prevent redundant entries + \expandafter\ifx\csname thesis@#1@required\endcsname\relax% + \expandafter\def\csname thesis@#1@required\endcsname{}% + \thesis@input{\thesis@localepath#1.def} + \ifthesis@locale@inheritance% + \thesis@input{\thesis@localepath\thesis@university/#1.def}% + \thesis@input{\thesis@localepath\thesis@university/% + \thesis@faculty/#1.def}% + \fi% + \fi} +% \end{macrocode}\end{macro} +% \subsection{String manipulation macros} +% \begin{macro}{\thesis@} +% The |\thesis@|\marg{name} macro expands to |\thesis@| +% \textit{name}, where \textit{name} gets fully expanded and can +% therefore contain active characters and command sequences. +% \begin{macrocode} +\def\thesis@#1{\csname thesis@#1\endcsname} +% \end{macrocode} +% \end{macro}\begin{macro}{\thesis@@} +% The |\thesis@@|\marg{name} macro expands to |\thesis@| +% \textit{locale}|@|\textit{name}, where \textit{locale} +% corresponds to the name of the current locale. +% \textit{name} gets fully expanded and can +% therefore contain active characters and command sequences. +% \begin{macrocode} +\def\thesis@@#1{\thesis@{\thesis@locale @#1}} +% \end{macrocode} +% \end{macro} +% The \DescribeMacro{\thesis@lower}|\thesis@lower| +% and \DescribeMacro{\thesis@upper}|\thesis@upper| +% private macros are used for upper- and lowercasing within +% locale files. To cast the |\thesis@|\textit{name} macro +% to the lower- or uppercase, |\thesis@lower{|\textit{name}|}| or +% |\thesis@upper{|\textit{name}|}| would be used, respectively. +% \textit{name} gets fully expanded and can +% therefore contain active characters and command sequences. +% \begin{macrocode} +\def\thesis@lower#1{{% + \let\ea\expandafter% + \ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\lowercase\ea\ea\ea + \ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea{\ea\ea\ea\ea\ea\ea\ea\ea\ea + \ea\ea\ea\ea\ea\ea\@gobble\ea\ea\ea\string\ea\csname\csname the% + sis@#1\endcsname\endcsname}}} +\def\thesis@upper#1{{% + \let\ea\expandafter% + \ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\uppercase\ea\ea\ea + \ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea\ea{\ea\ea\ea\ea\ea\ea\ea\ea\ea + \ea\ea\ea\ea\ea\ea\@gobble\ea\ea\ea\string\ea\csname\csname the% + sis@#1\endcsname\endcsname}}} +% \end{macrocode} +% The \DescribeMacro{\thesis@@lower}|\thesis@@lower| +% and \DescribeMacro{\thesis@@upper}|\thesis@@upper| +% private macros are used for upper- and lowercasing current +% \textit{locale} strings within style files. To cast the +% |\thesis@|\textit{locale}|@|\textit{name} macro to the +% lower- or uppercase, |\thesis@@lower{|\textit{name}|}| or +% |\thesis@@upper{|\textit{name}|}| would be used, +% respectively. \textit{name} gets fully expanded and can +% therefore contain active characters and command sequences. +% \begin{macrocode} +\def\thesis@@lower#1{\thesis@lower{\thesis@locale @#1}} +\def\thesis@@upper#1{\thesis@upper{\thesis@locale @#1}} +% \end{macrocode} +% The \DescribeMacro{\thesis@head}|\thesis@head| +% and \DescribeMacro{\thesis@tail}|\thesis@tail| +% private macros are used for retrieving a head or a tail of +% space-separated token sequences, which end with |\relax|. +% \begin{macrocode} +\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}% +% \end{macrocode} +% \subsection{General purpose macros} +% The \DescribeMacro{\thesis@pages}|\thesis@pages| macro is defined +% at the beginning of the second \LaTeX\ run as a part of the main +% routine (see Section \ref{sec:thesis@load}). During the first +% run, the macro expands to \texttt{??}. +% \begin{macrocode} +\ifx\thesis@pages\undefined\def\thesis@pages{??}\fi +% \end{macrocode} +% \iffalse +%</class> +% ^^A Old fithesis classes +%<*oldclass1> + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{oldfithesis1}[2015/03/04 old fithesis will load fithesis3 MU thesis class] + +\ClassWarning{oldfithesis1}{% + You are using the fithesis class, which has been deprecated. + The fithesis3 class will be used instead. + For more information, see <http://www.fi.muni.cz/tech/unix/tex/fithesis.xhtml>% +}\LoadClass{fithesis3} + +%</oldclass1> +% +%<*oldclass2> + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{oldfithesis2}[2015/03/04 old fithesis2 will load fithesis3 MU thesis class] + +\ClassWarning{oldfithesis2}{% + You are using the fithesis2 class, which has been deprecated. + The fithesis3 class will be used instead. + For more information, see <http://www.fi.muni.cz/tech/unix/tex/fithesis.xhtml>% +}\LoadClass{fithesis3} + +%</oldclass2> +% \fi +% +% \subsection{Locale files} +% \label{sec:locale-files} +% Locale files contain macro definitions for various locales. They +% live in the \texttt{locale/} subtree and they are loaded during +% the main routine (see Section \ref{sec:thesis@load}). +% +% When creating a new locale file, it is advisable to create one +% self-contained \texttt{dtx} file, which is then partitioned into +% locale files via the \textsf{docstrip} tool based on the +% respective \texttt{ins} file. A \DescribeMacro{\file} macro +% |\file|\marg{filename} is available for the sectioning the +% documentation of various files within the \texttt{dtx} file. +% \textit{filename}. For more information about \texttt{dtx} files +% and the \textsf{docstrip} tool, consult the \textsf{dtxtut, +% docstrip, doc} and \textsf{ltxdoc} manuals. +% +% \subsubsection{Interface} +% The union of locale files named \textit{locale}\texttt{.def}, +% where \textit{locale} is the result of the expansion of +% |\thesis@locale|, loaded via main routine's inheritance scheme +% (see Section \ref{sec:thesis@load}) needs to define the following +% private macros: +% \begin{itemize} +% \item|\thesis@|\textit{locale}|@universityName| -- The name of +% the university +% \item|\thesis@|\textit{locale}|@facultyName| -- The name of the +% faculty +% \item|\thesis@|\textit{locale}|@assignment| -- Instructions to +% replace the current page with the official thesis assignment +% \item|\thesis@|\textit{locale}|@declaration| -- The declaration +% text +% \item|\thesis@|\textit{locale}|@fieldTitle| -- The title of +% the field of study entry +% \item|\thesis@|\textit{locale}|@advisorTitle| -- The title of +% the advisor +% \item|\thesis@|\textit{locale}|@authorTitle| -- The title of +% the author +% \item|\thesis@|\textit{locale}|@abstractTitle| -- The title of +% the abstract section +% \item|\thesis@|\textit{locale}|@keywordsTitle| -- The title of +% the keywords section +% \item|\thesis@|\textit{locale}|@thanksTitle| -- The title of +% the acknowledgement section +% \item|\thesis@|\textit{locale}|@declarationTitle| -- The title +% of the declaration section +% \item|\thesis@|\textit{locale}|@idTitle| -- The title of the +% thesis author's identifier field +% \item|\thesis@|\textit{locale}|@winter| -- The name of the +% winter semester +% \item|\thesis@|\textit{locale}|@summer| -- The name of the +% summer semester +% \item|\thesis@|\textit{locale}|@semester| -- The full name of +% the current semester +% \item|\thesis@|\textit{locale}|@typeName| -- The name of the +% thesis type +% \end{itemize} +% +% \def\file#1{\paragraph{The \texttt{#1} file}} +% \subsubsection{English locale files} +% \input{locale/english.dtx} +% \subsubsection{Czech locale files} +% \input{locale/czech.dtx} +% \subsubsection{Slovak locale files} +% \input{locale/slovak.dtx} +% +% \subsection{Style files} +% \label{sec:style-files} +% Style files define the structure and the look of the resulting +% document. They live in the \texttt{style/} subtree and they are +% loaded during the main routine (see Section +% \ref{sec:thesis@load}). +% +% When creating a new style file, it is advisable to create one +% self-contained \texttt{dtx} file, which can contain several +% files to be extracted via the \textsf{docstrip} tool based on the +% respective \texttt{ins} file. A \DescribeMacro{\file} macro +% |\file|\marg{filename} is available for sectioning the +% documentation of various files within the \texttt{dtx} file. +% For more information about \texttt{dtx} files and the +% \textsf{docstrip} tool, consult the \textsf{dtxtut, docstrip, +% doc} and \textsf{ltxdoc} manuals. +% +% \subsubsection{Interface} +% The union of style files loaded via main routine's inheritance +% scheme (see Section \ref{sec:thesis@load}) should define at least +% one of the following private macros: +% \begin{itemize} +% \item\DescribeMacro{\thesis@preamble} +% |\thesis@preamble| -- If autolayout is +% enabled, then this macro is expanded at the +% very beginning of the document. +% \item\DescribeMacro{\thesis@postamble} +% |\thesis@postamble| -- If autolayout is +% enabled, then this macro is expanded at the +% very end of the document. +% \end{itemize} +% +% \subsubsection{Base style files} +% \input{style/base.dtx} +% \input{style/mu/base.dtx} +% \subsubsection{The style files of the Faculty of Informatics} +% \input{style/mu/fi.dtx} +% \subsubsection{The style files of the Faculty of Science} +% \input{style/mu/sci.dtx} +% \subsubsection{The style files of the Faculty of Arts} +% \input{style/mu/phil.dtx} +% \subsubsection{The style files of the Faculty of Education} +% \input{style/mu/ped.dtx} +% \subsubsection{The style files of the Faculty of Social Studies} +% \input{style/mu/fss.dtx} +% \subsubsection{The style files of the Faculty of Law} +% \input{style/mu/law.dtx} +% \subsubsection{The style files of the Faculty of Economics and +% Administration} +% \input{style/mu/econ.dtx} +% \subsubsection{The style files of the Faculty of Medicine} +% \input{style/mu/med.dtx} +% \subsubsection{The style files of the Faculty of Sports Studies} +% \input{style/mu/fsps.dtx} |