diff --git a/.gitignore b/.gitignore index 80103299587d3afa75948a24bed198994afab7bf..7c6afa8c9c03942644d51768cc9ec1a53adb3cd4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ example.* +*.swp diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..399312080def05a19483c22dde51e58b4dc83d0d --- /dev/null +++ b/Makefile @@ -0,0 +1,63 @@ +.PHONY: all clean clean-all install + +CLASSFILES=fithesis.cls fithesis[23].cls +STYLEFILES=style/*.sty style/*/*.sty style/*/*.clo +AUXFILES=example.aux example.log example.out example.toc example.lot example.lof example.bib fithesis.aux fithesis.log fithesis.toc fithesis.ind fithesis.idx fithesis.out fithesis.ilg fithesis.gls fithesis.glo +PDFFILES=fithesis.pdf example.pdf +LOGOFILES=logo/*/*.eps logo/*/color/*.eps logo/*/*.pdf logo/*/color/*.pdf +SOURCEFILE=fithesis.dtx +OTHERFILES=csquot.sty example.tex fithesis.ins Makefile +INSTALLFILES=$(CLASSFILES) $(STYLEFILES) $(LOGOFILES) $(PDFFILES) $(SOURCEFILE) $(OTHERFILES) +TEXLIVEFILES=$(CLASSFILES) $(STYLEFILES) $(LOGOFILES) + +# This pseudo-target creates the class files, typesets both +# the example file and the technical documentation and +# removes any auxiliary files. +all: fithesis3.cls $(PDFFILES) clean + @if ! kpsewhich scrreprt.cls > /dev/null; then echo "The scrreprt document class isn't installed."; exit 1; fi + @if ! kpsewhich tex-gyre/qplr.pfb > /dev/null; then echo "The TeX Gyre Pagella font isn't installed."; exit 1; fi + cd logo/mu; make all + cd logo/mu/color; make all + +# This target creates the class files. +fithesis3.cls: fithesis.ins fithesis.dtx + yes | tex $< # TODO: Remove the `yes` + +# This target typesets the technical documentation. +fithesis.pdf: fithesis.dtx + pdflatex $< + makeindex -s gind.ist fithesis + makeindex -s gglo.ist -o fithesis.gls fithesis.glo + pdflatex $< + +# This target typesets the example. +example.pdf: example.tex fithesis3.cls + pdflatex $< + pdflatex $< + +# This pseudo-target installs any non-auxiliary files +# into the directory provided within the "to" argument. +install: + @if [ -z "$(to)" ]; then echo "Usage: make to=DIRECTORY install"; exit 1; fi + mkdir --parents "$(to)/fithesis3" + cp --parents --verbose $(INSTALLFILES) "$(to)/fithesis3" + +# This pseudo-target installs the class files and +# the technical documentation into the folder structure +# of the TeXLive package, whose root directory is +# specified within the "to" argument. +install-texlive: + @if [ -z "$(to)" ]; then echo "Usage: make to=DIRECTORY install-texlive"; exit 1; fi + mkdir --parents "$(to)/tex/latex/fithesis3" + cp --parents --verbose $(TEXLIVEFILES) "$(to)/texmf-local/tex/latex/fithesis2" + mkdir --parents "$(to)/doc/latex/fithesis3" + cp fithesis.pdf "$(to)/doc/latex/fithesis3/manual.pdf" + texhash + +# This pseudo-target removes any existing auxiliary files. +clean: + rm -f $(AUXFILES) + +# This pseudo-target removes any makeable files. +clean-all: clean + rm -f $(PDFFILES) $(CLASSFILES) diff --git a/example.pdf b/example.pdf index 6a7b585f86578a943114549eda680e24730a4c81..f218859b9b0fef689a8e1b98373792f4e1644a50 100644 Binary files a/example.pdf and b/example.pdf differ diff --git a/example.tex b/example.tex index cd061c072669311069245515da7de8c93da7dd13..88a0b6730c94ac069c654cba9355f5055e613bf7 100644 --- a/example.tex +++ b/example.tex @@ -2,5 +2,5 @@ \usepackage[utf8]{inputenc} \usepackage[slovak]{babel} \begin{document} - Ahoj svÄ›te! + Ahoj všetci! \end{document} diff --git a/fithesis.cls b/fithesis.cls new file mode 100644 index 0000000000000000000000000000000000000000..d47922c5ef78e193380efd1920c77008ace5aac8 --- /dev/null +++ b/fithesis.cls @@ -0,0 +1,66 @@ +%% +%% This is file `fithesis.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fithesis.dtx (with options: `oldclass1') +%% +%% +%% Copyright 1993 1994 1995 The LaTeX3 Project and any individual +%% authors listed elsewhere in this file. +%% +%% For further copyright information, and conditions for modification +%% and distribution, see the file legal.txt, and any other copyright +%% notices in this file. +%% +%% This file is part of the LaTeX2e system. +%% ---------------------------------------- +%% This system is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% IMPORTANT COPYRIGHT NOTICE: +%% +%% You are NOT ALLOWED to distribute this file alone. +%% +%% If you receive only some of these files from someone, complain! +%% +%% However, NO PERMISSION is granted to generate or to distribute a +%% modified version of this file under its original name. +%% +%% You are NOT ALLOWED to change this file. +%% +%% +%% 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} +\ProvidesClass{oldfithesis1}[2015/03/04 old fithesis will load fithesis3 MU thesis class] + +\errmessage{% + You are using the fithesis class, which has been deprecated. + The fithesis3 class will be used instead. + For more information, see <https://www.fi.muni.cz/tech/unix/tex/fithesis.xhtml>% +}\LoadClass{fithesis3} + +\endinput +%% +%% End of file `fithesis.cls'. diff --git a/fithesis.dtx b/fithesis.dtx new file mode 100644 index 0000000000000000000000000000000000000000..f67f791f382dbb47f4579c88c535b4dbb1771ec4 --- /dev/null +++ b/fithesis.dtx @@ -0,0 +1,638 @@ +% \iffalse meta-comment +% fithesis.dtx +% Copyright 1998--2015 Daniel Marek (DM), Jan PavloviÄŤ (JP), +% VĂt NovotnĂ˝ (VN), Petr Sojka (PS) +% https://www.fi.muni.cz/tech/unix/tex/fithesis.xhtml +% Faculty of Informatics, Masaryk University +% +% 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 in +% 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Ă˝. +% Send bug reports, requests for additions and questions +% to the fithesis discussion forum at +% <https://is.muni.cz/auth/df/fithesis-sazba/>. +% +% This work consists of the files fithesis.dtx and fithesis.ins +% and the derived files fithesis3.cls, fithesis2.cls, fithesis.cls, +% fit10.clo, fit11.clo, fit12.clo. +% +% \begin{macrocode} +%<*driver> + +\documentclass{ltxdoc} +\usepackage[utf8]{inputenc} % this file uses UTF-8 +\usepackage[english]{babel} +\usepackage{tgpagella} +\usepackage{tabularx} +\usepackage[scaled=0.86]{berasans} +\usepackage[scaled=1.03]{inconsolata} +\usepackage[resetfonts]{cmap} +\usepackage[T1]{fontenc} % use 8bit fonts +\usepackage{mflogo} +\usepackage{url} +\emergencystretch 2dd + +% ltxdoc class options +\CodelineIndex +\MakeShortVerb{|} +\EnableCrossrefs +\DoNotIndex{} + +\begin{document} + \RecordChanges + \DocInput{fithesis.dtx} + \PrintIndex + \PrintChanges +\end{document} + +%</driver> +% \end{macrocode} +% \fi +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \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{https://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 Univerzity in Brno} +% \author{Daniel Marek, Jan PavloviÄŤ, VĂt NovotnĂ˝, Petr Sojka} +% \date{\today} +% \maketitle +% +% \begin{abstract} +% \noindent This document describes the blah blah blah ... +% \end{abstract} +% +% \tableofcontents +% +% \section{Installation} +% Include Makefile +% +% \section{Basic structure} +% The document class comprises the following types of files: +% \begin{enumerate} +% \item\emph{Locale files} -- These files contain macro definitions for +% various locales. They live in the \texttt{locale/} subtree and +% their API is covered in section \ref{sec:locale-files}. +% \item\emph{Style files} -- These files define the structure and the +% look of the resulting document. They live in the \texttt{style/} +% subtree and their API is covered in section \ref{sec:style-files}. +% \item\emph{Logo files} -- These files contain the logos of the +% respective faculties of the Masaryk University and they live in the +% \texttt{logo/} subtree. New logos should be added in \textsc{Pdf} +% and \textsc{Eps} formats in both color and black-and-white versions, +% as described in section \ref{sec:mu-base-style-file}. +% \item\emph{Class file} -- The class file serves as a glue, which loads +% all of the aforementioned files and provides a public API to the +% end user. The public API of the class is covered in section +% \ref{sec:public-api}. +% \end{enumerate} +% +% \section{Public API} +% \label{sec:public-api} +% \subsection{Options} +% Any \oarg{options} passed to the class will be handed down to the +% loaded style file. Therefore the supported options are documented +% in the subsection of section \ref{sec:style-files} dedicated to +% the respective style file. +% +% \subsection{Macros} +% \iffalse +%<*class> + +\NeedsTeXFormat{LaTeX2e} +\def\thesis@version{2015/03/21 fithesis3 version 0.3.09 MU thesis class} +\ProvidesClass{fithesis3}[\thesis@version] + +% The base class and packages +\LoadClass[a4paper]{rapport3} +\RequirePackage{xstring} +\RequirePackage{keyval} +\RequirePackage{newfile} +\RequirePackage{etoolbox} + +% Interface +% \fi +% +% \subsubsection{The \cs{thesissetup} macro} +% \DescribeMacro{\thesissetup} +% The only 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 and the +% private |\thesis@load| macro is expanded. +% \begin{macrocode} +\def\thesissetup#1{% + \setkeys{thesis}{#1}% + \thesis@load} +% \end{macrocode} +% \subsubsection{The \texttt{basepath} key} +% The \marg{\texttt{basepath}=path} pair sets the \textit{path} +% containing the class files. The \textit{path} is prepended to +% each other path used by the class. If non-empty, the +% \textit{path} gets normalized to \textit{path/}. The normalized +% \textit{path} is stored within the private +% \DescribeMacro{\thesis@basepath}\cmd{\thesis@basepath} macro, +% whose implicit value is an empty string. This matches both the +% current working directory and the indexed directories within +% your \TeX\ distribution. +% \begin{macrocode} +\def\thesis@basepath{} +\define@key{thesis}{basepath}{% + \ifx\@empty#1\@empty% + \def\thesis@basepath{}% + \else% + \def\thesis@basepath{#1/}% + \fi} +% \end{macrocode} +% \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. If the \textit{path} doesn't begin with a +% slash (\texttt{/}), it is normalized to +% \cmd{/thesis@basepath} followed by \textit{path} via the +% private macro \DescribeMacro{\thesis@subdir}|\thesis@subdir|. +% The normalized \textit{path} is stored within the private +% \DescribeMacro{\thesis@logopath}\cmd{\thesis@logopath} +% macro, whose implicit value is |\thesis@basepath| followed by +% |logo/\thesis@university/|. By default, this expands to +% \texttt{logo/mu/}. +% \begin{macrocode} +\def\thesis@logopath{\thesis@basepath logo/\thesis@university/} +\define@key{thesis}{logopath}{% + \def\thesis@logopath{\thesis@subdir{#1}}} + +\def\thesis@subdir#1{% + \ifx\@empty#1\@empty% + \thesis@basepath% + \else% + \def\@slash{/}% + \StrLeft{#1}{1}[\@fst]% + \ifx\@fst\@slash% + #1/% + \else% + \thesis@basepath#1/% + \fi% + \fi} +% \end{macrocode} +% \subsubsection{The \texttt{stylepath} key} +% The \marg{\texttt{stylepath}=path} pair sets the \textit{path} +% containing the style files. If the \textit{path} doesn't begin +% with a slash (\texttt{/}), it is normalized to +% \cmd{/thesis@basepath} followed by \textit{path}. The +% normalized \textit{path} is stored within the private +% \DescribeMacro{\thesis@stylepath}\cmd{\thesis@stylepath} macro, +% whose implicit value is |\thesis@basepath| followed by |style/|. +% By default, this expands to \texttt{style/}. +% \begin{macrocode} +\def\thesis@stylepath{\thesis@basepath style/} +\define@key{thesis}{stylepath}{% + \def\thesis@stylepath{\thesis@subdir{#1}}} +% \end{macrocode} +% \subsubsection{The \texttt{localepath} key} +% The \marg{\texttt{localepath}=path} pair sets the \textit{path} +% containing the locale files. If the \textit{path} doesn't begin +% with a slash (\texttt{/}), it is normalized to +% \cmd{/thesis@basepath} followed by \textit{path}. The +% normalized \textit{path} is stored within the private +% \DescribeMacro{\thesis@localepath}\cmd{\thesis@localepath} macro, +% whose implicit value is |\thesis@basepath| followed by |locale/|. +% By default, this expands to \texttt{locale/}. +% \begin{macrocode} +\def\thesis@localepath{\thesis@basepath locale/} +\define@key{thesis}{localepath}{% + \def\thesis@localepath{\thesis@subdir{#1}}} +% \end{macrocode} +% \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 +% \DescribeMacro{\ifthesis@woman}|\ifthesis@woman| ... |\else| ... +% |\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} +% \subsubsection{The \texttt{author} key} +% The \marg{\texttt{author}=name} pair sets the author's full +% name to \textit{name}. The \textit{name} is stored within the +% private \DescribeMacro{\thesis@author}|\thesis@author| +% macro, whose implicit value is |\thesis@authorPlaceholder|. +% \begin{macrocode} +\def\thesis@author{\thesis@authorPlaceholder} +\define@key{thesis}{author}{% + \def\thesis@author{#1}} +% \end{macrocode} +% \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}\hline +% The thesis type & The value of \textit{type} \\\hline +% Bachelor's thesis & \texttt{bc} \\ +% Master's thesis & \texttt{mgr} \\ +% Doctoral thesis & \texttt{d} \\ +% Rigorous thesis & \texttt{r} \\\hline +% \end{tabular}\end{center} +% The \textit{type} is stored within the +% private \DescribeMacro{\thesis@type}|\thesis@type| macro, whose +% implicit value is |b|. 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} +% \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 +% \DescribeMacro{\thesis@university} |\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} +% \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}\hline +% The Faculty & The \textit{domain} name \\\hline +% 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} \\\hline +% \end{tabularx}\end{center} +% The \textit{domain} name is stored within the +% private \DescribeMacro{\thesis@faculty}|\thesis@faculty| macro, +% whose implicit value is |fi|. +% \begin{macrocode} +\def\thesis@faculty{fi} +\define@key{thesis}{faculty}{% + \def\thesis@faculty{#1}} + +\def\thesis@department{\thesis@departmentPlaceholder} +\define@key{thesis}{department}{% + \def\thesis@department{#1}} + +\def\thesis@programme{\thesis@programmePlaceholder} +\define@key{thesis}{programme}{% + \def\thesis@Programme{#1}} + +\def\thesis@logo{\thesis@faculty} +\define@key{thesis}{logo}{% + \def\thesis@logo{#1}} + +\def\thesis@style{\thesis@university/\thesis@faculty} +\define@key{thesis}{style}{% + \def\thesis@style{#1}} + +\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} + +\def\thesis@locale{% + % Babel detection + \ifx\languagename\undefined% + czech\else\languagename\fi} +\define@key{thesis}{locale}{% + \def\thesis@locale{#1}} + +\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} + +\def\thesis@year{\the\year} +\define@key{thesis}{year}{% + \def\thesis@year{#1}} + +\def\thesis@place{Brno} +\define@key{thesis}{place}{% + \def\thesis@place{#1}} + +\def\thesis@title{\thesis@titlePlaceholder} +\define@key{thesis}{title}{% + \def\thesis@title{#1}} + +\let\thesis@titleEn\undefined +\define@key{thesis}{titleen}{% + \def\thesis@titleEn{#1}} + +\def\thesis@keywords{\thesis@keywordsPlaceholder} +\define@key{thesis}{keywords}{% + \def\thesis@keywords{#1}} + +\let\thesis@keywordsEn\undefined +\define@key{thesis}{keywordsEn}{% + \def\thesis@keywordsEn{#1}} + +\def\thesis@abstract{\thesis@abstractPlaceholder} +\define@key{thesis}{abstract}{% + \def\thesis@abstract{#1}} + +\let\thesis@abstractEn\undefined +\define@key{thesis}{abstractEn}{% + \def\thesis@abstractEn{#1}} + +\def\thesis@advisor{\thesis@advisorPlaceholder} +\define@key{thesis}{advisor}{% + \def\thesis@advisor{#1}} + +\def\thesis@thanks{\thesis@thanksPlaceholder} +\define@key{thesis}{thanks}{% + \long\def\thesis@thanks{#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} + +\def\thesis@documentStart{} +\def\thesis@documentEnd{} + +% Utility functions +\def\thesis@lower#1{% + \edef\thesis@expanded{\csname thesis@#1\endcsname}% + \expandafter\lowercase\expandafter{\thesis@expanded}} + +% The loading routine +\def\thesis@exists#1#2{% + \IfFileExists{#1}{#2}{% + \typeout{File #1 doesn't exist.}}} + +\def\thesis@input#1{% + \thesis@exists{#1}{\input{#1}}} + +% The BibTeX file generator +%% Temporarily swap the meaning of {} and <> +{\catcode`\<=1 +\catcode`\>=2 +\catcode`\{=12 +\catcode`\}=12 +\catcode`\_=13 +\gdef\thesis@bibgen#1<<% + % Helper macros + \def\add<\addtostream<#1>>% + \let\ea\expandafter% + %% Find the last space-separated word + \def\tail##1<\xtail##1 \relax>% + \def\xtail##1 ##2<% + \ifx\relax##2% + ##1% + \ea\@gobbletwo% + \fi% + \xtail##2>% + %% Pre-cooked parts of the output + \edef\thesis@author@toks<\thesis@author> + \def\surname<\ea\tail\ea<\thesis@author@toks>>% + \edef\entryType<@\ifx\thesis@type\thesis@masters% + MastersThesis% + \else\ifx\thesis@type\thesis@doctoral% + PhdThesis% + \else% + misc% + \fi\fi>% + % Generate the file + <%% Temporarily turn _s into spaces + \catcode`\_=13 \let_=\space + % Temporarily disable the UTF-8 encoding + \def\UTFviii@two@octets##1##2<% + \string##1\string##2>% + \def\UTFviii@three@octets##1##2##3<% + \string##1\string##2\string##3>% + \def\UTFviii@four@octets##1##2##3##4<% + \string##1\string##2\string##3\string##4>% + % Fill the output stream + \add<\entryType{\surname\thesis@year thesis,>% + \add<__AUTHOR_____=_"\thesis@author",>% + \add<__TITLE______=_"\thesis@title",>% + \add<__YEAR_______=_"\thesis@year",>% + \add<__TYPE_______=_"\thesis@typeName",>% + \add<__SCHOOL_____=_"\thesis@universityName, + \thesis@facultyName",>% + \add<__SUPERVISOR_=_"\thesis@advisor",>% + \add<__PAGES______=_"\thepage">% + \add<}> + >>>% +> + +\newif\ifthesis@loaded\thesis@loadedfalse +\AtEndPreamble{\thesis@load} +\def\thesis@load{% + \ifthesis@loaded\else% + \thesis@loadedtrue + \makeatletter% + % Load the locale + \ifthesis@locale@inheritance + \input{\thesis@localepath base} + \fi + \thesis@input{\thesis@localepath\thesis@locale}% + \ifthesis@locale@inheritance + \thesis@input{\thesis@localepath\thesis@university/% + \thesis@locale}% + \thesis@input{\thesis@localepath\thesis@university/% + \thesis@faculty/\thesis@locale}% + \fi + % Inject the PDF options + \@ifpackageloaded{hyperref}{}{\RequirePackage{hyperref}}% + \hypersetup{% + pdftitle={\ifx\thesis@titleEn\undefined% + \thesis@title% + \else% + \thesis@titleEn% + \fi}, pdfauthor={\thesis@author},% + pdfkeywords={\ifx\thesis@keywordsEn\undefined% + \thesis@keywords% + \else% + \thesis@keywordsEn% + \fi}, pdfcreator={\thesis@version},% + pdfsubject={\ifx\thesis@abstractEn\undefined% + \thesis@abstract% + \else% + \thesis@abstractEn% + \fi} + }% + % Load the style files + \ifthesis@style@inheritance + \thesis@exists{\thesis@stylepath base.sty}{% + \RequirePackageWithOptions{\thesis@stylepath base}}% + \thesis@exists{\thesis@stylepath\thesis@university/% + base.sty}{\RequirePackageWithOptions{\thesis@stylepath% + \thesis@university/base}}% + \fi + \thesis@exists{\thesis@stylepath\thesis@style.sty}{% + \RequirePackageWithOptions{\thesis@stylepath\thesis@style}}% + % Include the autolayout + \ifthesis@auto% + \AtBeginDocument{\thesis@documentStart}% + \AtEndDocument{\thesis@documentEnd% + % Generate the BibTeX file + \newoutputstream{bib} + \openoutputfile{\jobname.bib}{bib} + \thesis@bibgen{bib} + \closeoutputstream{bib}}% + \fi% + \makeatother% + \fi} + +%</class> +% +%<*oldclass1> + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{oldfithesis1}[2015/03/04 old fithesis will load fithesis3 MU thesis class] + +\errmessage{% + You are using the fithesis class, which has been deprecated. + The fithesis3 class will be used instead. + For more information, see <https://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] + +\errmessage{% + You are using the fithesis2 class, which has been deprecated. + The fithesis3 class will be used instead. + For more information, see <https://www.fi.muni.cz/tech/unix/tex/fithesis.xhtml>% +}\LoadClass{fithesis3} + +%</oldclass2> +% \end{macrocode} +% +% \section{Private API} +% \subsection{Locale files} +% \label{sec:locale-files} +% +% \subsection{Style files} +% \label{sec:style-files} +% +% \subsubsection{The \texttt{style/mu/base.sty} style file} +% \label{sec:mu-base-style-file} diff --git a/fithesis.ins b/fithesis.ins new file mode 100644 index 0000000000000000000000000000000000000000..41889287a5d19e1985cc41f24e6bae24f5052509 --- /dev/null +++ b/fithesis.ins @@ -0,0 +1,96 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% Copyright 1993 1994 1995 The LaTeX3 Project and any individual +%% authors listed elsewhere in this file. +%% +%% This file is part of the LaTeX2e system. +%% ---------------------------------------- +%% This system is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% IMPORTANT COPYRIGHT NOTICE: +%% +%% You are NOT ALLOWED to distribute this file alone. +%% +%% If you receive only some of these files from someone, complain! +%% +%% +%% No other permissions to distribute this file in any form are +%% granted and in particular NO PERMISSION to modify its contents. +%% +%% You are NOT ALLOWED to change this file. +%% +\def\batchfile{fithesis.ins} +\input docstrip.tex +\preamble + + +Copyright 1993 1994 1995 The LaTeX3 Project and any individual +authors listed elsewhere in this file. + +For further copyright information, and conditions for modification +and distribution, see the file legal.txt, and any other copyright +notices in this file. + +This file is part of the LaTeX2e system. +---------------------------------------- + This system is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +IMPORTANT COPYRIGHT NOTICE: + +You are NOT ALLOWED to distribute this file alone. + +If you receive only some of these files from someone, complain! + +However, NO PERMISSION is granted to generate or to distribute a +modified version of this file under its original name. + +You are NOT ALLOWED to change this file. + + +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. + +\endpreamble + +\def\batchfile{fithesis.dst} % ignored in distribution +\input docstrip.tex % ignored in distribution + +\keepsilent + +\Msg{*** Generating the files ***} + +\generateFile{fithesis.cls}{t}{\from{fithesis.dtx}{oldclass1}} +\generateFile{fithesis2.cls}{t}{\from{fithesis.dtx}{oldclass2}} +\generateFile{fithesis3.cls}{t}{\from{fithesis.dtx}{class}} + + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation, use either the} +\Msg{* `install` or `install-texive` make targets.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endinput diff --git a/fithesis.pdf b/fithesis.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0d8d3a8b1b59bbd2c2ce59fbf9cf2b94decfafdb Binary files /dev/null and b/fithesis.pdf differ diff --git a/fithesis2.cls b/fithesis2.cls new file mode 100644 index 0000000000000000000000000000000000000000..0b30af81208a3514b0c66e480d2e0b1b6e98ed61 --- /dev/null +++ b/fithesis2.cls @@ -0,0 +1,66 @@ +%% +%% This is file `fithesis2.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fithesis.dtx (with options: `oldclass2') +%% +%% +%% Copyright 1993 1994 1995 The LaTeX3 Project and any individual +%% authors listed elsewhere in this file. +%% +%% For further copyright information, and conditions for modification +%% and distribution, see the file legal.txt, and any other copyright +%% notices in this file. +%% +%% This file is part of the LaTeX2e system. +%% ---------------------------------------- +%% This system is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% IMPORTANT COPYRIGHT NOTICE: +%% +%% You are NOT ALLOWED to distribute this file alone. +%% +%% If you receive only some of these files from someone, complain! +%% +%% However, NO PERMISSION is granted to generate or to distribute a +%% modified version of this file under its original name. +%% +%% You are NOT ALLOWED to change this file. +%% +%% +%% 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} +\ProvidesClass{oldfithesis2}[2015/03/04 old fithesis2 will load fithesis3 MU thesis class] + +\errmessage{% + You are using the fithesis2 class, which has been deprecated. + The fithesis3 class will be used instead. + For more information, see <https://www.fi.muni.cz/tech/unix/tex/fithesis.xhtml>% +}\LoadClass{fithesis3} + +\endinput +%% +%% End of file `fithesis2.cls'. diff --git a/fithesis3.cls b/fithesis3.cls index 20e276ed1fcb8b4edb2b0003bd3b596cf5695a4c..27f847b1703019a813482266e74afa28173d5f15 100644 --- a/fithesis3.cls +++ b/fithesis3.cls @@ -1,19 +1,70 @@ +%% +%% This is file `fithesis3.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fithesis.dtx (with options: `class') +%% +%% +%% Copyright 1993 1994 1995 The LaTeX3 Project and any individual +%% authors listed elsewhere in this file. +%% +%% For further copyright information, and conditions for modification +%% and distribution, see the file legal.txt, and any other copyright +%% notices in this file. +%% +%% This file is part of the LaTeX2e system. +%% ---------------------------------------- +%% This system is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% IMPORTANT COPYRIGHT NOTICE: +%% +%% You are NOT ALLOWED to distribute this file alone. +%% +%% If you receive only some of these files from someone, complain! +%% +%% However, NO PERMISSION is granted to generate or to distribute a +%% modified version of this file under its original name. +%% +%% You are NOT ALLOWED to change this file. +%% +%% +%% 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@version{2015/03/21 fithesis3 version 0.3.09 MU thesis class} \ProvidesClass{fithesis3}[\thesis@version] -% The base class and packages \LoadClass[a4paper]{rapport3} \RequirePackage{xstring} \RequirePackage{keyval} \RequirePackage{newfile} \RequirePackage{etoolbox} -% Interface \def\thesissetup#1{% \setkeys{thesis}{#1}% \thesis@load} - \def\thesis@basepath{} \define@key{thesis}{basepath}{% \ifx\@empty#1\@empty% @@ -21,19 +72,10 @@ \else% \def\thesis@basepath{#1/}% \fi} - -\def\thesis@logopath{\thesis@basepath logo/\thesis@university/} +\def\thesis@logopath{\thesis@basepath logo/\thesis@university/} \define@key{thesis}{logopath}{% \def\thesis@logopath{\thesis@subdir{#1}}} -\def\thesis@stylepath{\thesis@basepath style/} -\define@key{thesis}{stylepath}{% - \def\thesis@stylepath{\thesis@subdir{#1}}} - -\def\thesis@localepath{\thesis@basepath locale/} -\define@key{thesis}{localepath}{% - \def\thesis@localepath{\thesis@subdir{#1}}} - \def\thesis@subdir#1{% \ifx\@empty#1\@empty% \thesis@basepath% @@ -46,7 +88,12 @@ \thesis@basepath#1/% \fi% \fi} - +\def\thesis@stylepath{\thesis@basepath style/} +\define@key{thesis}{stylepath}{% + \def\thesis@stylepath{\thesis@subdir{#1}}} +\def\thesis@localepath{\thesis@basepath locale/} +\define@key{thesis}{localepath}{% + \def\thesis@localepath{\thesis@subdir{#1}}} \newif\ifthesis@woman\thesis@womanfalse \define@key{thesis}{gender}{% \def\thesis@male{m}% @@ -56,11 +103,9 @@ \else% \thesis@womantrue% \fi} - \def\thesis@author{\thesis@authorPlaceholder} \define@key{thesis}{author}{% \def\thesis@author{#1}} - \def\thesis@bachelors{bc} \def\thesis@masters{mgr} \def\thesis@doctoral{d} @@ -68,11 +113,9 @@ \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}} @@ -84,7 +127,7 @@ \def\thesis@programme{\thesis@programmePlaceholder} \define@key{thesis}{programme}{% \def\thesis@Programme{#1}} - + \def\thesis@logo{\thesis@faculty} \define@key{thesis}{logo}{% \def\thesis@logo{#1}} @@ -173,12 +216,10 @@ \def\thesis@documentStart{} \def\thesis@documentEnd{} -% Utility functions \def\thesis@lower#1{% \edef\thesis@expanded{\csname thesis@#1\endcsname}% \expandafter\lowercase\expandafter{\thesis@expanded}} -% The loading routine \def\thesis@exists#1#2{% \IfFileExists{#1}{#2}{% \typeout{File #1 doesn't exist.}}} @@ -186,7 +227,6 @@ \def\thesis@input#1{% \thesis@exists{#1}{\input{#1}}} -% The BibTeX file generator %% Temporarily swap the meaning of {} and <> {\catcode`\<=1 \catcode`\>=2 @@ -252,7 +292,7 @@ \thesis@input{\thesis@localepath\thesis@locale}% \ifthesis@locale@inheritance \thesis@input{\thesis@localepath\thesis@university/% - \thesis@locale}% + \thesis@locale}% \thesis@input{\thesis@localepath\thesis@university/% \thesis@faculty/\thesis@locale}% \fi @@ -297,3 +337,7 @@ \fi% \makeatother% \fi} + +\endinput +%% +%% End of file `fithesis3.cls'.