% \iffalse meta-comment % % File: se2thesis.dtx Copyright (C) 2022--2023 Stephan Lukasczyk % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this % license or (at your option) any later version. The latest version % of this license is in the file % % https://www.latex-project.org/lppl.txt % % This file is part of the "se2thesis bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. % % The released version of this bundle is available from CTAN. % % ---------------------------------------------------------------------- % % The development version of the bundle can be found at % % https://github.com/se2p/se2thesis % % for those people who are interested. % % ---------------------------------------------------------------------- % %<*driver> \documentclass{l3doc} % The next line is needed so that \GetFileInfo will be able to pick up % version data. \usepackage{se2colors} \begin{document} \DocInput{\jobname.dtx} \end{document} % % \fi % % \GetFileInfo{se2colors.sty} % % \title{^^A % \pkg{se2thesis}---Overall set up^^A % \thanks{This file describes \fileversion, last revised \filedate.}^^A % } % % \author{^^A % Stephan Lukasczyk^^A % \thanks{^^A % E-Mail: \href{mailto:stephan@dante.de}{stephan@dante.de}^^A % }^^A % } % % \begin{documentation} % % \section{Introduction}\label{sec:doc-intro} % % The University of Passau does not provide a common thesis template % to its students. % For theses, written at the Chair of Software Engineering~II, % many students chose between two templates that were provided by different % people from the chair; % other students chose from the large variety of templates available from the % internet, causing each thesis looking differently. % % The author of this package provided a template, % which he initially created for his bachelor and master thesis, % that was recommended and used by many students. % The implementation of that template, however, was very hacky and required % some changes over time. % This lead to the idea of creating a new template from scratch, % that shall be used by all our students for their various types of theses, % from bachelor to PhD level. % The result is the \pkg{se2thesis} bundle. % % The bundle itself consists of several \LaTeX{} classes and packages % that also allow reuse of various parts of it. % Its main class is the \pkg{se2thesis} document class, % an extension of the \KOMAScript{} |scrreprt| document class. % The packages \pkg{se2colors} and \pkg{se2fonts} provide necessary % colour and font settings for the \pkg{se2thesis} class; % the \pkg{se2packages} allows to load several recommended packages~(see % \cref{sec:doc-se2packages}) with our recommended, % predefined settings. % They are available as separate packages, however, to allow their reuse for % other classes, packages, and projects, as well. % % \subsection{Installation}\label{sec:doc-intro-install} % % The \pkg{se2thesis} bundle is available from \CTAN\footnote{ % \href{https://ctan.org/pkg/se2thesis}{ctan.org/pkg/se2thesis} % }. % It is part of both \MiKTeX{} and \TeXLive. % You can find its development version from GitHub\footnote{ % \href{https://github.com/se2p/se2thesis}{github.com/se2p/se2thesis} % }. % The easiest way of installing it is through your \TeX{} distribution; % please check your distribution's documentation on this. % Note that it might be necessary to update your \TeX{} distribution % because they might not provide you updates; % for example, there is a new version of \TeXLive{} every year % which needs to be installed separately. % If you have installed an older version of \pkg{se2thesis} % consider updating it to the latest version available from \CTAN{} % through your distribution. % % For manual installation, we recommend to clone the Git repository % and run the \texttt{l3build} tool that we also use for building the bundle. % Running |l3build ctan| builds the source files and compiles the documentation. % This creates a folder |build| containing these artefacts; % |build/doc| contains the documentation, % |build/local| the source files. % See the documentation of \texttt{l3build} and your \TeX{} distribution % on how to install them manually. % Please note that \texttt{l3build} also provides a |l3build install| target % to install the bundle files to your local texmf tree. % % The “Island of \TeX{}” project provides Docker images of \TeXLive\footnote{% % \href{https://islandoftex.gitlab.io/community/projects/docker/}{islandoftex.gitlab.io/community/projects/docker/} % }. % If you do not want to install/update \TeXLive{} on your system % you might want to consider their \texttt{latest} image, % which contains a recent \TeXLive{} 2023 build. % They build their images weekly, % thus also recent releases of \pkg{se2thesis} will be part of the image % soon after their release date. % % \subsection{Availability on Overleaf}\label{sec:doc-intro-overleaf} % % Since April 3, 2024, the \pkg{se2thesis} document template is also available % from Overleaf. The document that is in Overleafs gallery is based on the % example document that comes with this package. Any Overleaf user can just % create a new thesis document based on the template by clicking the respective % button on Overleaf's gallery page. % % The gallery entry for \pkg{se2thesis} is available from % \href{https://www.overleaf.com/latex/templates/se2thesis-a-thesis-class-for-the-chair-of-software-engineering-ii-at-the-university-of-passau-germany/fpymkmxmbgpc}{https://www.overleaf.com/latex/templates/se2thesis-a-thesis-class-for-the-chair-of-software-engineering-ii-at-the-university-of-passau-germany/fpymkmxmbgpc}.% % % \emph{Important remark:} Currently, the Overleaf template does not support % \LuaLaTeX{} but requires builds with \pdfLaTeX. The reason is that Overleaf % does not yet ship \TeXLive~2024, but only \TeXLive~2023, which does not % provide the respective font package~(notably \pkg{inconsolata-nerd-font}). % Until the latest \TeXLive{} will be available from Overleaf, one can only use % the \pdfLaTeX{} mode, which has some drawbacks on the fonts, but works fine % otherwise. From the Overleaf blog, we assume that \TeXLive~2024 might be % available from some time in autumn 2024. We will update this documentation % accordingly, as soon as the new version is available. % % \subsection{General Macros}\label{sec:doc-intro-macros} % % They all have in common one macro, \cs{IfFormatAtLeastTF}; % this macro is part of the latest \LaTeX{} kernel. % However, not all users might have upgraded their \TeX{} installation % to a level using a recently-enough kernel version. % Therefore, every class and package of this bundle will conditionally % define the following macro: % % \begin{function}{\IfFormatAtLeastTF} % \begin{syntax} % \cmd{\IfFormatAtLeastTF} \marg{version} \marg{then block} \marg{else-block} % \end{syntax} % Checks whether the used \LaTeX{} format is at least the one from the % given date value. % The date needs to be specified either in YYYY/MM/DD or in YYYY-MM-DD % format. % \end{function} % % \section{License}\label{sec:doc-license} % % Permission is granted to copy, distribute, and/or modify this software under % the terms of the \LaTeX{} Project Public License~(LPPL), version~1.3c or % later~(\href{https://www.latex-project.org/lppl.txt}{https://www.latex-project.org/lppl.txt}). % The software has the status \enquote{maintained}. % % \section{The \cls{se2thesis} class}\label{sec:doc-se2thesis} % % The \cls{se2thesis} class is the central component of this bundle. % It provides a wide variety of settings, mostly regarding the title page~(see % \cref{sec:doc-se2thesis-title}) and the type area~(see % \cref{sec:doc-se2thesis-typearea}). % % We aim to keep the \cls{se2thesis} class relatively small, especially % considering packages that we load. % Currently, the class itself loads the \pkg{se2colors}~(see % \cref{sec:doc-se2colors}) and \pkg{se2fonts}~(see \cref{sec:doc-se2fonts}) % packages. % The following packages and classes are loaded: % \pkg{expl3}, \pkg{l3keys2e} in case one uses a \LaTeX{} kernel from before % 2022--06--01, \pkg{graphicx}, \pkg{translations}, \KOMAScript, \pkg{xcolor}, % \pkg{ifthen}, as well as \pkg{fontspec}, \pkg{unicode-math}, % and \pkg{libertinus-otf} if one uses \LuaTeX{}; % for \pdfLaTeX{} we load \pkg{fontenc}, \pkg{libertinus-type1}, and % \pkg{AnonymousPro} instead of the latter three. % Furthermore, we load \pkg{microtype}; % when using \LuaTeX{}, we also load \pkg{lua-widow-control} and \pkg{selnolig}. % % However, we recommend to use a couple of further packages, together with some % further options to those package. We describe these settings in % \cref{sec:doc-se2packages}. % Please consider looking at this section when starting to write your document. % % Before we start with a detailed documentation of the class, we explain one % helper macro that can be used to check whether a package has been loaded. % \begin{function}[pTF, updated = 2022-09-27]{\slcd_package_if_loaded:n} % \begin{syntax} % |\slcd_package_if_loaded:nTF| \Arg{package name} \Arg{true code} \Arg{false code} % \end{syntax} % Checks whether a package has been loaded and conditionally executes code. % \end{function} % % \subsection{Load-time options}\label{sec:doc-se2thesis-options} % % The \pkg{se2thesis} class defines several load-time options, all of them % optional, on top of the options provided by the \KOMAScript{} document % classes. % \begin{function}{class} % \begin{syntax} % |class| = \meta{choice} % \end{syntax} % Set the base document class. % Values are \cls{scrreprt} or \cls{scrbook}. % \emph{Note:} you cannot use \cls{scrartcl} because it does not provide % the required |chapter| sectioning. % Default is |scrbook|. % \end{function} % \begin{function}{paper} % \begin{syntax} % |paper| = \meta{choice} % \end{syntax} % Set the paper format. % Possible values are |a4| or |b5|. % Default is |a4|. % \end{function} % % \begin{function}{logofile} % \begin{syntax} % |logofile| = \marg{path-to-file} % \end{syntax} % Defines the path to the University's logo for the title page. % \end{function} % % \begin{function}{thesistype} % \begin{syntax} % |thesistype| = \meta{choice} % \end{syntax} % Defines the type of the thesis. % Possible values are: % |bachelor| for a bachelor thesis, |bachelorproposal| for a proposal to % a bachelor thesis, |master| for a master thesis, |masterproposal| for % a proposal to a master thesis, |phdproposal| for a proposal to a PhD thesis, % |phd| for a PhD thesis in the natural sciences, |phdeng| for a PhD thesis % in engineering, and |phdphil| for a PhD thesis in philosophy. % \end{function} % % \begin{function}{colormode} % \begin{syntax} % |colormode| = \meta{choice} % \end{syntax} % Select the color scheme used by the automatically loaded \pkg{se2colors} % package, see \cref{sec:doc-se2colors} for a description. % \end{function} % % % \subsection{The title page}\label{sec:doc-se2thesis-title} % % Designing a title package for a thesis can be complicated. % There might be some requirements that are not obvious to the user, especially % considering the positioning of elements. % The University of Passau, for example, requires the logo to be positioned on % the top right of a page; % theses—especially PhD theses that shall be published through the University's % library system—could be rejected from publication by the library until this is % fixed. % % We thus redeclare the standard \cs{maketitle} macro from \KOMAScript{} and % customise it to our needs. % \begin{variable}{\@maketitle} % \begin{syntax} % \cmd{\@maketitle} % \end{syntax} % We override the definition of the \cmd{\@maketitle} macro for our needs. % \end{variable} % In addition to the macros provided by the \KOMAScript{} classes % for the title-page values (e.g. \cs{author}, \cs{title}, % we provide some further macros that can be used. % Setting values to these macros is optional in any case, % if they are not set, the corresponding value is not put to the title page. % % \begin{function}{\version} % \begin{syntax} % \cmd{\version} \marg{version} % \end{syntax} % Specify the version of the document. This can, for example, be a |git| hash % of the current version. % \end{function} % % \begin{function}{\degreeprogramme} % \begin{syntax} % \cmd{\degreeprogramme} \marg{programme-name} % \end{syntax} % Specify the degree programme the thesis is meant to be accepted in. % Possible values are, among others, \enquote{Informatik} if you are writing % your thesis in German, or \enquote{Computer Science} if you are writing the % thesis in English. % \end{function} % % \begin{function}{\matrnumber} % \begin{syntax} % \cmd{\matrnumber} \marg{matriculation-number} % \end{syntax} % Specify the matriculation number of the student writing the thesis. % This is required for Bachelor and Master theses. % \end{function} % % \begin{function}{\supervisor, \cosupervisor} % \begin{syntax} % \cmd{\supervisor} \marg{name} % \cmd{\cosupervisor} \marg{name} % \end{syntax} % Specify the name of your supervisor and co-supervisor. % Both people usually are professors. % \end{function} % % \begin{function}{\advisor, \coadvisor} % \begin{syntax} % \cmd{\advisor} \marg{name} % \cmd{\coadvisor} \marg{name} % \end{syntax} % Specify the name of your advisor and co-advisor. % Both people usually are PhD students or postdocs. % \end{function} % % \begin{function}{\department, \institute} % \begin{syntax} % \cmd{\department} \marg{name} % \cmd{\institute} \oarg{short-name} \marg{name} % \end{syntax} % Specify the department and institute. % The department is, for example, \enquote{Faculty of Computer Science and % Mathematics}, the institute, for example, \enquote{Chair of Software % Engineering~II}. % If the \cs{department} value is not specify, we use \enquote{Faculty of % Computer Science} as the default value for English theses and % \enquote{Fakultät für Informatik und Mathematik} as the default value of % German theses. % \end{function} % % \begin{function}{\external} % \begin{syntax} % \cmd{\external} \marg{name} % \end{syntax} % Specify the name of an external referee. % \end{function} % % \begin{function}{\location} % \begin{syntax} % \cmd{\location} \marg{name-of-town} % \end{syntax} % Specify the name of your residence town for the signature field. % \end{function} % % To define the path to the logo graphics we require a different workflow: % We do not bundle logo graphics with this package due to legal restrictions. % They can be downloaded from the University's website; please note that the % website for downloading the logo graphics is only accessible from within the % University's campus network or a VPN connection. % To specify the path to the logo graphics, we provide a load-time option to the % \cls{se2thesis} class called |logofile|~(see \cref{sec:doc-se2thesis-options}). % % When printing the thesis in two-side mode—which we recommend—the back of the % title page again denotes author and title on the bottom. % \begin{variable}{\@lowertitleback} % \begin{syntax} % \cmd{\l@lowertitleback} % \end{syntax} % Override this internal macro of \KOMAScript{} to print this information on % the back side of the title page. % \end{variable} % % Additionally, we provide some interal rewritings to standard macros from % \KOMAScript{} that allow to automatically split authors using the \cmd{\and} % command. % \begin{variable}{\author, \@author} % \begin{syntax} % \cmd{\author} \marg{author} % \end{syntax} % We rewrite the definitions of \cmd{\author} and \cmd{\@author} to do this % splitting automatically. % Additionally, this also adds a correctly translated version of \enquote{and} % between the author names if required. % \end{variable} % % \subsection{Type-area settings}\label{sec:doc-se2thesis-typearea} % % The \cls{se2thesis} class manipulates the type area compared to the default % settings of the \KOMAScript{} classes. % Our settings are inspired by the \pkg{classicthesis} package, which itself is % inspired by the style used by famous statistician Edward Tufte. % We provide predefined settings for DIN-A4, DIN-A5, and DIN-B5 papers. % If you need settings for other paper sizes, please open an issue on this % package's GitHub repository % (\href{https://github.com/se2p/se2thesis}{https://github.com/se2p/se2thesis}) % and we will happily include those settings in a future release of this bundle. % % Additionally, we are setting the page footer in a way that it contains the % page numbers in the outer margin and the headmarks split from the page numbers % by a vertical bar. % % \subsection{Abstract for the thesis}\label{sec:doc-se2thesis-abstract} % % Each thesis shall come with an abstract that summarises its content. % The abstract should be written in the language the thesis is written in. % Additionally, there is the requirement to provide a German abstract if the % thesis is written in a foreign language. % \begin{function}{\abstract} % \begin{syntax} % \cmd{\abstract} % \end{syntax} % We ensure that the \cmd{\abstract} command is defined for all document % classes. % \end{function} % % \DescribeEnv{abstract} % To typeset an abstract, we provide an environment called \env{abstract}. % The environment takes an optional argument that specifies the language that is % used in this abstract. % Setting the abstract's language will cause its title to change to the % respective language; % additionally, hyphenation is also changed for that language. % \begin{verbatim} % \begin{abstract}[language] % Your abstract text. % \end{abstract} % \end{verbatim} % % \subsection{Acknowledgements}\label{sec:doc-se2thesis-acknowledgements} % % \DescribeEnv{acknowledgements} % We provide the \env{acknowledgements} environment to typeset acknowledgements % for your thesis. % Using this environment is optional. % Usually, bachelor and master thesis do not contain such an acknowledgements % section, however, there is no general rule to this. % \begin{verbatim} % \begin{acknowledgements}[language] % Your acknowledgements. % \end{acknowledgements} % \end{verbatim} % % \subsection{Document structuring}\label{sec:doc-se2thesis-structuring} % % A larger work, such as a thesis, is usually structured in three large blocks: % a frontmatter that provides all the overview, such as abstract, table of % contents, etc., % a mainmatter that contains all the actual content, % and a backmatter for appendices. % \cls{se2thesis} ensures that the following macros are defined because they are % not provided by all \KOMAScript{} classes. % \begin{function}{\frontmatter, \mainmatter, \backmatter} % \begin{syntax} % \cmd{\frontmatter} % \cmd{\mainmatter} % \cmd{\backmatter} % \end{syntax} % Switches between frontmatter, mainmatter, and backmatter. % Most notably, the frontmatter will have roman page numbers, while the other % two will have arabic page numbers. % \end{function} % % \subsection{Authorship declaration}\label{sec:doc-se2thesis-authorship} % % The University of Passau requires its students to provide an authorship % declaration as part of their thesis for submission. % They provide a template form, which would not fit the style of the % \cls{se2thesis} class. % Thus, we provide the \cmd{\authorshipDeclaration} macro to typeset such % a declaration. % It uses the original~(German) text of the declaration and fills in the values % that are specified by the \cmd{\author} and \cmd{\location} macros. % \begin{function}{\authorshipDeclaration} % \begin{syntax} % \cmd{\authorshipDeclaration} % \end{syntax} % Print the authorship declaration text. % \end{function} % \emph{Please note:} the authorship declaration will always be printed in % German, no matter what the language of the thesis is. % This happens due to legal requirements. % In order to make this work, you have to load the \pkg{babel} or % \pkg{polyglossia} package in a way that it also supports German hyphenation. % For example, use % \begin{verbatim} % \usepackage[ngerman,main=UKenglish]{babel} % \end{verbatim} % for a thesis with \emph{traditional English}\footnote{ % there is a nice, probably photoshopped, picture of a Steam setup dialogue % stating that American English is a \enquote{simplified version} of British % English, see % \href{https://jakubmarian.com/is-american-english-simplified-and-british-english-traditional/}{https://jakubmarian.com/is-american-english-simplified-and-british-english-traditional/}. % } as its main language and support for German. % % \begin{function}{\signatureBox} % \begin{syntax} % \cmd{\signatureBox} \oarg{width} \marg{signature-name} % \end{syntax} % A helper macro to print the signature box for the authorship declaration. % The optional argument \oarg{width} allows to specify a custom width for the % signature line. % The default is 5\,cm. % The mandatory argument \marg{signature-name} specifies the name of the % signee, which will be typeset below the signature line. % \end{function} % % \subsection{Research Questions and findings summaries}\label{sec:doc-se2thesis-summaries} % % Most theses written at our Chair will require the student to provide some % empirical evaluation of their work to shed insights whether their proposed % ideas are actually useful. % For an empirical study, one needs to specify research questions and maybe also % hypotheses. % The \cls{se2thesis} class supports this by providing environments for this. % % \DescribeEnv{resq} % The \env{resq} environment shall be used to specify a research question. % % \DescribeEnv{hyp} % The \env{hyp} environment shall be used to specify a hypothesis. % % \DescribeEnv{summary} % After describing the results, we recommend to give an explicit summary of the % findings for a research question or hypothesis. % This summary shall be given in one or two sentences. % The \env{summary} environment provides a convenient way for this; % it will be typeset in a highlighted box that is easy to spot and also allows % readers of the work to quickly grasp the main findings. % \begin{verbatim} % \begin{summary}{label-reference} % The summary text itself. % \end{summary} % \end{verbatim} % The environment expects as a parameter a label, for example, to a research % question; % however, this can also be arbitrary text. % % \end{documentation} % % \clearpage % % \begin{implementation} % % \section{Global helpers}\label{sec:impl-global} % % These helpers might be useful for many exported packages and classes, % thus we keep them on the global level of this implementation. % % \begin{macrocode} %<*init> % \end{macrocode} % % Load only the essential support (\pkg{expl3}) \enquote{up-front}, and only % if required. % \begin{macrocode} \@ifundefined{ExplLoaderFileDate} { \RequirePackage{expl3} } {} % \end{macrocode} % % Make sure that the version of \pkg{l3kernel} in use is sufficiently new. % We use \cs{ExplFileDate} as \cs{@ifpackagelater} does not work for % pre-loaded \pkg{expl3} in the absence of the package. % \begin{macrocode} \@ifl@t@r\ExplLoaderFileDate{2020-01-09} {} {% \PackageError{se2colors}{Support package expl3 too old} {% You need to update your installation of the bundles 'l3kernel' and 'l3packages'.\MessageBreak Loading~se2colors~will~abort!% }% \endinput }% % \end{macrocode} % % \begin{macro}{\IfFormatAtLeastTF} % This macro is not present in older kernels, thus we use the \LaTeXe{} % mechanism as this is correct for this case. % \begin{macrocode} \providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion } % \end{macrocode} % \end{macro} % % \begin{macrocode} % % \end{macrocode} % % \section{The \cls{se2thesis} implementation}\label{sec:impl-se2thesis} % % Start the \pkg{DocStrip} guards. % \begin{macrocode} %<*class> % \end{macrocode} % % Identify the internal prefix (\LaTeX3 \pkg{DocStrip} convention): only % internal material in this \emph{submodule} should be used directly. % \begin{macrocode} %<@@=slcd> % \end{macrocode} % % Identify the class and give the overall version number. % \begin{macrocode} \ProvidesExplClass {se2thesis} {2024-04-20} {3.4.0} {A thesis class for the Chair of Software Engineering II} % \end{macrocode} % % \begin{macro} % { % \slcd_package_if_loaded:nTF, % \slcd_package_if_loaded:nT, % \slcd_package_if_loaded:nF, % \slcd_package_if_loaded_p:n % } % Defines various \LaTeX3{} variants for the internal \cmd{\@ifpackageloaded} % macro to check whether a package has been loaded. % \begin{macrocode} \prg_new_conditional:Nnn \slcd_package_if_loaded:n { p, T, F, TF } { \use:c { @ifpackageloaded } { #1 } { \prg_return_true: } { \prg_return_false: } } % \end{macrocode} % \end{macro} % % Load required packages early. % \begin{macrocode} \RequirePackage{graphicx} \RequirePackage{translations} \LoadDictionary{se2translations} \DeclareTranslationFallback{version-of-date}{% Version~\l_@@_version_tl\ of~\@date } \DeclareTranslation{German}{version-of-date}{% Version~\l_@@_version_tl\ vom~\@date } \DeclareTranslation{English}{version-of-date}{% Version~\l_@@_version_tl\ of~\@date } % \end{macrocode} % % \subsection{Define Variables} % % The following variables are necessary for the argument handling. % \begin{macro}{\l_@@_paper_int} % A variable to store the key of the page size selected by the user. % \begin{macrocode} \int_new:N \l_@@_paper_int % \end{macrocode} % \end{macro} % % We also need properties to store class options that are not for us, % thus shall be handled by the underlying base class. % \begin{macro} % { % \l_@@_base_class_tl, % \l_@@_clsopts_prop, % \l_@@_unknown_clsopts_prop % } % Store the known and the unknown class options. % The latter will be forwarded to the base class later. % \begin{macrocode} \tl_new:N \l_@@_base_class_tl \prop_new:N \l_@@_clsopts_prop \prop_new:N \l_@@_unknown_clsopts_prop % \end{macrocode} % \end{macro} % % Define internal variables to hold the values of the fields of the title % page. % \begin{macro} % { % \l_@@_version_tl, % \l_@@_degreeprogramme_tl, % \l_@@_matrnumber_tl, % \l_@@_supervisor_tl, % \l_@@_cosupervisor_tl, % \l_@@_advisor_tl, % \l_@@_coadvisor_tl, % \l_@@_department_tl, % \l_@@_institute_tl, % \l_@@_external_tl, % \l_@@_logofile_tl, % \l_@@_signature_tl, % \l_@@_location_tl % } % \begin{macrocode} \tl_new:N \l_@@_version_tl \tl_new:N \l_@@_degreeprogramme_tl \tl_new:N \l_@@_matrnumber_tl \tl_new:N \l_@@_supervisor_tl \tl_new:N \l_@@_cosupervisor_tl \tl_new:N \l_@@_advisor_tl \tl_new:N \l_@@_coadvisor_tl \tl_new:N \l_@@_department_tl \tl_new:N \l_@@_institute_tl \tl_new:N \l_@@_external_tl \tl_new:N \l_@@_logofile_tl \tl_new:N \l_@@_signature_tl \tl_new:N \l_@@_location_tl % \end{macrocode} % \end{macro} % % Define several dimensions for the \pkg{typearea} package to define the % package style. % \begin{macro} % { % \l_@@_marginspace_dim, % \l_@@_headmarkspace_dim, % \l_@@_rulespace_dim, % \l_@@_pagemark_minipage_dim, % \l_@@_ruleraise_dim, % \l_@@_rulewidth_dim, % \l_@@_rulethickness_dim % } % \begin{macrocode} \dim_new:N \l_@@_marginspace_dim \dim_new:N \l_@@_headmarkspace_dim \dim_new:N \l_@@_rulespace_dim \dim_new:N \l_@@_pagemark_minipage_dim \dim_new:N \l_@@_ruleraise_dim \dim_new:N \l_@@_rulewidth_dim \dim_new:N \l_@@_rulethickness_dim \dim_gset:Nn \l_@@_marginspace_dim { -1.85cm } \dim_gset:Nn \l_@@_headmarkspace_dim { 0.75cm } \dim_gset:Nn \l_@@_rulespace_dim { 10pt } \dim_gset:Nn \l_@@_pagemark_minipage_dim { 1.5cm } \dim_gset:Nn \l_@@_ruleraise_dim { -5pt } \dim_gset:Nn \l_@@_rulewidth_dim { 1.25pt } \dim_gset:Nn \l_@@_rulethickness_dim { 15pt } % \end{macrocode} % \end{macro} % % \subsection{Load-time options} % % We define the key-value interface for the class. % \begin{macro} % { % \l_@@_base_class_tl, % \l_@@_unknown_clsopts_prop, % \l_@@_paper_int, % \l_@@_thesis_type_tl, % \l_@@_licensetype_tl, % \l_@@_licensemodifier_tl, % \l_@@_licenseversion_tl, % \l_@@_colormode_tl, % } % \begin{macrocode} \keys_define:nn { seiithesis } { class .choice:, class / report .meta:n = {class=scrreprt}, class / scrreprt .code:n = \tl_gset:Nn \l_@@_base_class_tl {scrreprt}, class / book .meta:n = {class=scrbook}, class / scrbook .code:n = \tl_gset:Nn \l_@@_base_class_tl {scrbook}, class .initial:n = scrbook, paper .choices:nn = {a4,b5}{ \int_gset_eq:NN \l_@@_paper_int \l_keys_choice_int }, paper .initial:n = a4, logofile .tl_gset:N = \l_@@_logofile_tl, logofile .initial:n =, thesistype .choice:, thesistype / bachelor .code:n = \tl_gset:Nn \l_@@_thesis_type_tl {bachelor}, thesistype / bachelorproposal .code:n = { \tl_gset:Nn \l_@@_thesis_type_tl {bachelorproposal} }, thesistype / master .code:n = \tl_gset:Nn \l_@@_thesis_type_tl {master}, thesistype / masterproposal .code:n = { \tl_gset:Nn \l_@@_thesis_type_tl {masterproposal} }, thesistype / phd .code:n = \tl_gset:Nn \l_@@_thesis_type_tl {phd}, thesistype / phdeng .code:n = \tl_gset:Nn \l_@@_thesis_type_tl {phdeng}, thesistype / phdphil .code:n = \tl_gset:Nn \l_@@_thesis_type_tl {phdphil}, thesistype / phdproposal .code:n = { \tl_gset:Nn \l_@@_thesis_type_tl {phdproposal} }, thesistype .initial:n = master, colormode .choices:nn = {cmyk,rgb,bw}{ \tl_gset_eq:NN \l_@@_colormode_tl \l_keys_choice_tl }, colormode .initial:n = cmyk, unknown .code:n = { \prop_gput:NVn \l_@@_unknown_clsopts_prop \l_keys_key_tl {#1} }, } % \end{macrocode} % \end{macro} % % Handle the options % \begin{macrocode} \IfFormatAtLeastTF { 2022-06-01 } { \ProcessKeyOptions [ seiithesis ] } { \RequirePackage{ l3keys2e } \ProcessKeysOptions { seiithesis } } % \end{macrocode} % % Handle the known options for base class % \begin{macrocode} \prop_map_inline:Nn \l_@@_clsopts_prop { \tl_if_empty:nTF {#2} { \PassOptionsToClass {#1} {\l_@@_base_class_tl} } { \clist_map_inline:nn {#2} { \PassOptionsToClass {#1=##1} {\l_@@_base_class_tl} } } } % \end{macrocode} % % Load the base class % \begin{macrocode} \LoadClass{\l_@@_base_class_tl} % \end{macrocode} % % Attempt to handle the unknown options % \begin{macrocode} \prop_map_inline:Nn \l_@@_unknown_clsopts_prop { \cs_if_exist:cT {KV@KOMA.\l_@@_base_class_tl.cls@#1} { \tl_if_empty:nTF {#2} { \KOMAoptions{#1} } { \KOMAoption{#1}{#2}} } } % \end{macrocode} % % \subsection{Package loading} % % We load some packages with options that depend on options to the % \cls{se2thesis} class. % Thus, we load them here to be able to hand them over the respective values. % % We start with the \pkg{se2colors} and \pkg{se2fonts} packages. % \begin{macrocode} \PassOptionsToPackage{\l_@@_colormode_tl}{se2colors} \RequirePackage{se2colors} \RequirePackage{se2fonts} % \end{macrocode} % % \subsection{User macros for the title page} % % In addition to the macros provided by the \KOMAScript{} classes % for the title-page values (e.g. \cs{author}, \cs{title}), % provide these additional macros to the user. % \begin{macro}{\version} % Specify the version of the document, e.g., a |git| hash. % \begin{macrocode} \ProvideDocumentCommand \version { m } { \tl_set:Nn \l_@@_version_tl {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\degreeprogramme} % Specify the degree programme the thesis is meant to be accepted in. % \begin{macrocode} \ProvideDocumentCommand \degreeprogramme { m } { \tl_set:Nn \l_@@_degreeprogramme_tl {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\matrnumber} % Specify the matriculation number of the student. % \begin{macrocode} \ProvideDocumentCommand \matrnumber { m } { \tl_set:Nn \l_@@_matrnumber_tl {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\supervisor, \cosupervisor} % Specify the supervisor and co-supervisor of the thesis, usually a professor. % \begin{macrocode} \ProvideDocumentCommand \supervisor { m } { \tl_set:Nn \l_@@_supervisor_tl {#1} } \ProvideDocumentCommand \cosupervisor { m } { \tl_set:Nn \l_@@_cosupervisor_tl {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\advisor, \coadvisor} % Specify the advisor and co-advisor of the thesis, usually a PhD student or % postdoc. % \begin{macrocode} \ProvideDocumentCommand \advisor { m } { \tl_set:Nn \l_@@_advisor_tl {#1} } \ProvideDocumentCommand \coadvisor { m } { \tl_set:Nn \l_@@_coadvisor_tl {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\department, \institute} % Specify the university's department and institute you are writing % the thesis for. % \begin{macrocode} \ProvideDocumentCommand \department { m } { \tl_set:Nn \l_@@_department_tl {#1} } \ProvideDocumentCommand \institute { o m } { \tl_set:Nn \l_@@_institute_tl {#2} } % \end{macrocode} % \end{macro} % % \begin{macro}{\external} % Specify an external referee. % \begin{macrocode} \ProvideDocumentCommand \external { m } { \tl_set:Nn \l_@@_external_tl {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\location} % Specify the location for the signature field. % \begin{macrocode} \ProvideDocumentCommand \location { m } { \tl_set:Nn \l_@@_location_tl {#1} } % \end{macrocode} % \end{macro} % % \subsection{Define logo, paper size, and paper style} % % For the logo on the titlepage, we define further variables to store its height % and a box to store the logo itself. % \begin{macro}{\l_@@_logo_height_dim, \l_@@_logo_box} % \begin{macrocode} \dim_if_exist:NF \l_@@_logo_height_dim { \dim_new:N \l_@@_logo_height_dim \int_compare:nTF { \l_@@_paper_int=1 } { \dim_gset:Nn \l_@@_logo_height_dim { 67.5pt } } { \dim_gset:Nn \l_@@_logo_height_dim { 56.8pt } } } \box_if_exist:NF \l_@@_logo_box { \box_new:N \l_@@_logo_box } \tl_if_empty:NF \l_@@_logofile_tl { \hbox_gset:Nn \l_@@_logo_box { \includegraphics[% height=\l_@@_logo_height_dim% ]{\l_@@_logofile_tl} } } % \end{macrocode} % \end{macro} % % Set the paper size depending on the selected |paper| option. % \begin{macrocode} \int_compare:nTF { \l_@@_paper_int=1 } { \areaset[current]{350pt}{567pt} \setlength{\marginparsep}{8.5cm} \setlength{\marginparsep}{1em} }{ \areaset[current]{350pt}{567pt} \setlength{\marginparsep}{7.4cm} \setlength{\marginparsep}{0.87em} } % \end{macrocode} % % Provide the package style. % We start by loading the \pkg{scrlayer-scrpage} package with the appropriate % options and set some basic properties. % \begin{macrocode} \PassOptionsToPackage{automark}{scrlayer-scrpage} \RequirePackage{scrlayer-scrpage} \clearpairofpagestyles \setkomafont{pagefoot}{\normalfont\sffamily} % \end{macrocode} % % We can then define the footer for odd pages, which will appear on the right % side of the page's footer. % This definition contains first, as an optional argument, the style of a page % with |pagestyle| set to |empty|, i.e., a page where a new chapter starts, and % afterwards the style of a regular right-hand side page. % \begin{macrocode} \rofoot[{% \group_begin: \ \group_end: \footnotesize% \hspace*{\l_@@_headmarkspace_dim}% \group_begin: \color{UPSE2-Blue}% \rule[\l_@@_ruleraise_dim]{\l_@@_rulewidth_dim}{\l_@@_rulethickness_dim}% \group_end: \hspace*{\l_@@_rulespace_dim}% \begin{minipage}[b]{\l_@@_pagemark_minipage_dim}% \normalsize\textbf{\pagemark}% \end{minipage}% \hspace{\l_@@_marginspace_dim}% }]{% \group_begin: \ \group_end: \footnotesize% \group_begin: \color{UPSE2-Blue}\headmark \group_end: \hspace*{\l_@@_rulespace_dim}% \group_begin: \color{UPSE2-Blue}% \rule[\l_@@_ruleraise_dim]{\l_@@_rulewidth_dim}{\l_@@_rulethickness_dim}% \group_end: \hspace*{\l_@@_rulespace_dim}% \begin{minipage}[b]{\l_@@_pagemark_minipage_dim}% \normalsize\textbf{\pagemark}% \end{minipage}% \hspace{\l_@@_marginspace_dim}% } % \end{macrocode} % % Similarly, we define the footer for even pages, which will appear on the left % side of the page's footer. % \begin{macrocode} \lefoot[{% \null\hspace{\l_@@_marginspace_dim}% \footnotesize% \begin{minipage}[b]{\l_@@_pagemark_minipage_dim}% \raggedleft\normalsize\textbf{\pagemark}% \end{minipage}% \footnotesize% \hspace*{\l_@@_rulespace_dim}% \group_begin: \color{UPSE2-Blue}% \rule[\l_@@_ruleraise_dim]{\l_@@_rulewidth_dim}{\l_@@_rulethickness_dim}% \group_end: }]{% \null\hspace{\l_@@_marginspace_dim}% \footnotesize% \begin{minipage}[b]{\l_@@_pagemark_minipage_dim}% \raggedleft\normalsize\textbf{\pagemark}% \end{minipage}% \footnotesize% \hspace*{\l_@@_rulespace_dim}% \group_begin: \color{UPSE2-Blue}% \rule[\l_@@_ruleraise_dim]{\l_@@_rulewidth_dim}{\l_@@_rulethickness_dim}% \group_end: \hspace*{\l_@@_headmarkspace_dim}% \group_begin: \color{UPSE2-Blue}\headmark \group_end: } % \end{macrocode} % % Finally, set the page style. % \begin{macrocode} \pagestyle{scrheadings} % \end{macrocode} % % \subsection{The title page} % % We start out by adjusting some \KOMAScript{} fonts. % \begin{macrocode} \setkomafont{title}{\Huge} \setkomafont{subtitle}{\Large} \setkomafont{subject}{\normalsize} \setkomafont{author}{\large} \setkomafont{date}{\normalsize} \setkomafont{publishers}{\normalsize} % \end{macrocode} % % \begin{macro}{\author, \@author} % Allow for automated splitting of author's names. % \begin{macrocode} \seq_new:N \l_@@_author_seq \renewcommand*\author[2][]{ \seq_gset_split:Nnn \l_@@_author_seq {\and} {#2} \tl_if_empty:nTF {#1} { \tl_set:Nn \l_@@_signature_tl {#2} } { \tl_set:Nn \l_@@_signature_tl {#1} } } \renewcommand*{\@author}{ \group_begin: \hyphenpenalty=100000 \seq_use:Nnnn \l_@@_author_seq {~\GetTranslation{and}~} {,~} {~\&~} \group_end: } % \end{macrocode} % \end{macro} % % Define a new layer using the functionality from \pkg{scrlayer-scrpage} for the % logo image. % \begin{macrocode} \DeclareNewLayer[ mode=picture, foreground, align=tr, hoffset=\oddsidemargin+1.5in+\textwidth, voffset=\coverpagetopmargin+1.5in+\ht\strutbox, width=\textwidth - \box_wd:N \l_@@_logo_box, height=\box_ht:N \l_@@_logo_box, contents={\putUL{\box_use:N \l_@@_logo_box}}, ]{title.seii.logo} \DeclareNewPageStyleByLayers{title.seii}{title.seii.logo} \renewcommand*{\titlepagestyle}{title.seii} % \end{macrocode} % % Redefine the \cs{maketitle} command. % The following code is an adapted version of the corresponding \KOMAScript{} % macro by Markus Kohm. % \begin{macrocode} \renewcommand*{\maketitle}[1][1]{ \begin{titlepage} \setcounter{page}{#1} \def\thefootnote{\fnsymbol{footnote}} \edef\titlepage@restore{% \noexpand\endgroup \noexpand\global\noexpand\@colht\the\@colht \noexpand\global\noexpand\@colroom\the\@colroom \noexpand\global\vsize\the\vsize \noexpand\global\noexpand\@titlepageiscoverpagefalse \noexpand\let\noexpand\titlepage@restore\noexpand\relax }% \begingroup \topmargin=\dimexpr \coverpagetopmargin-1in\relax \oddsidemargin=\dimexpr 0in\relax \evensidemargin=\dimexpr 0in\relax \textwidth=\dimexpr \paperwidth-2in\relax \textheight=\dimexpr \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax \headheight=0pt \headsep=0pt \footskip=\baselineskip \@colht=\textheight \@colroom=\textheight \vsize=\textheight \columnwidth=\textwidth \hsize=\textwidth \linewidth=\hsize \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative \thispagestyle{title.seii} % \@maketitle % \if@twoside \@tempswatrue \if@tempswa \next@tpage \begin{minipage}[t]{\textwidth} \@uppertitleback \end{minipage} \vfill \begin{minipage}[b]{\textwidth} \@lowertitleback \end{minipage}\par \@thanks\let\@thanks\@empty \fi \fi \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi \end{titlepage} } % \end{macrocode} % % \begin{macro}{\l_@@_title_box} % Define a box for the title if it does not yet exist. % \begin{macrocode} \box_if_exist:NF \l_@@_title_box { \box_new:N \l_@@_title_box } % \end{macrocode} % \end{macro} % % \begin{macro}{\@maketitle} % Redeclare the \cs{@maketitle} macro. % \begin{macrocode} \renewcommand*{\@maketitle}{% \group_begin: \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative \thispagestyle{title.seii} \hbox_gset:Nn \l_@@_title_box { \parbox{\textwidth}{\__@@_print_title:} } \null \skip_vertical:n { 2.5 \box_ht:N \l_@@_logo_box } \box_use:N \l_@@_title_box \skip_vertical:n { .5 \box_ht:N \l_@@_logo_box } \group_end: \@thanks\let\@thanks\@empty } % \end{macrocode} % \end{macro} % % Load the \pkg{ifthen} package. % \begin{macrocode} \RequirePackage{ifthen} % \end{macrocode} % % Prints the title formatted appropriately. % We start with printing the title, optional subtitle, and the author names. % \begin{macrocode} \cs_new:Nn \__@@_print_title: { \group_begin: \usekomafont{title}\centering\@title\par \group_end: \ifx\@subtitle\@empty\else{% \medskip\usekomafont{subtitle}\centering\@subtitle\par% }\fi \bigskip \group_begin: \usekomafont{author}\centering\@author\par \group_end: \bigskip % \end{macrocode} % The next block generates the text that describes the thesis. % In case of a PhD thesis, this text is predefined to match the requirements. % In case of a bachelor or master thesis, or a proposal thereof, we generate % a text based on the values of the |thesistype| load-time option and the % values of the \cmd{\degreeprogramme}, \cmd{\department}, and % \cmd{\institute} variables. % \begin{macrocode} \exp_args:NV { \begin{center} \tl_if_eq:NnTF \l_@@_thesis_type_tl { phd } { Dissertation~ zur~ Erlangung~ des~ Doktorgrades\\ der~ Naturwissenschaften~ (Dr.\,rer.\,nat.)\\ eingereicht~ an~ der~ Fakultät~ für~ Informatik~ und~ Mathematik\\ der~ Universität~ Passau\\ \rule{\textwidth}{.1pt}\\ Dissertation~ submitted~ to\\ the~ Faculty~ of~ Computer~ Science~ and~ Mathematics\\ of~ the~ University~ of~ Passau\\ in~ partial~ fulfillment~ of~ obtaining\\ the~ degree~ of~ a~ Doctor~ of~ Natural~ Sciences } { \tl_if_eq:NnTF \l_@@_thesis_type_tl { phdeng } { Dissertation~ zur~ Erlangung~ des~ Doktorgrades\\ der~ Ingenieurwissenschaften~ (Dr.-Ing.)\\ eingereicht~ an~ der~ Fakultät~ für~ Informatik~ und~ Mathematik\\ der~ Universität~ Passau\\ \rule{\textwidth}{.1pt}\\ Dissertation~ submitted~ to\\ the~ Faculty~ of~ Computer~ Science~ and~ Mathematics\\ of~ the~ University~ of~ Passau\\ in~ partial~ fulfillment~ of~ obtaining\\ the~ degree~ of~ a~ Doctor~ of~ Engineering } { \tl_if_eq:NnTF \l_@@_thesis_type_tl { phdphil } { Dissertation~ zur~ Erlangung~ des~ Doktorgrades\\ der~ Philosophie~ (Dr.\,phil.)\\ eingereicht~ an~ der~ Fakultät~ für~ Informatik~ und~ Mathematik\\ der~ Universität~ Passau\\ \rule{\textwidth}{.1pt}\\ Dissertation~ submitted~ to\\ the~ Faculty~ of~ Computer~ Science~ and~ Mathematics\\ of~ the~ University~ of~ Passau\\ in~ partial~ fulfillment~ of~ obtaining\\ the~ degree~ of~ a~ Doctor~ of~ Philosophy } { \tl_if_eq:NnT \l_@@_thesis_type_tl { bachelor } { \GetTranslation{Bachelor-thesis} } \tl_if_eq:NnT \l_@@_thesis_type_tl { bachelorproposal } { \GetTranslation{Bachelor-thesis-proposal} } \tl_if_eq:NnT \l_@@_thesis_type_tl { master } { \GetTranslation{Master-thesis} } \tl_if_eq:NnT \l_@@_thesis_type_tl { masterproposal } { \GetTranslation{Master-thesis-proposal} } \tl_if_eq:NnT \l_@@_thesis_type_tl { phdproposal } { \GetTranslation{PhD-thesis-proposal} } \tl_if_empty:NF \l_@@_degreeprogramme_tl { \ in~\l_@@_degreeprogramme_tl } \par \tl_if_empty:NF \l_@@_department_tl { \l_@@_department_tl \par } \tl_if_empty:NF \l_@@_institute_tl { \l_@@_institute_tl \par } } } } \end{center}\par\bigskip % \end{macrocode} % Finally, generate a table with information about supervisors, advisors, etc. % \begin{macrocode} \begin{center} \begin{tabular}{@{} l @{\quad} l} \tl_if_empty:NF \l_@@_matrnumber_tl { \GetTranslation{Matrnumber} & \l_@@_matrnumber_tl \\ } \tl_if_empty:NF \l_@@_supervisor_tl { \GetTranslation{Supervisor} & \l_@@_supervisor_tl \\ } \tl_if_empty:NF \l_@@_cosupervisor_tl { \GetTranslation{Co-supervisor} & \l_@@_cosupervisor_tl \\ } \tl_if_empty:NF \l_@@_advisor_tl { \GetTranslation{Advisor} & \l_@@_advisor_tl \\ } \tl_if_empty:NF \l_@@_coadvisor_tl { \GetTranslation{Co-advisor} & \l_@@_coadvisor_tl \\ } \tl_if_empty:NF \l_@@_external_tl { \GetTranslation{External} & \l_@@_external_tl \\ } \end{tabular} \end{center} \par\medskip % \end{macrocode} % Last, print the date or the version. % \begin{macrocode} \group_begin: \usekomafont{date} \centering \tl_if_empty:NTF \l_@@_version_tl { \@date } { \GetTranslation{version-of-date} } \par\smallskip \group_end: } } % \end{macrocode} % % \begin{macro}{\@lowertitleback} % Afterwards, override the definition of \cs{@lowertitleback}. % \begin{macrocode} \renewcommand*{\@lowertitleback}{% \group_begin: \noindent\textbf{\@author}:\\ \emph{\@title}\\ \tl_if_eq:NnT \l_@@_thesis_type_tl { bachelor } { \GetTranslation{Bachelor-thesis},~ } \tl_if_eq:NnT \l_@@_thesis_type_tl { master } { \GetTranslation{Master-thesis},~ } \tl_if_eq:NnT \l_@@_thesis_type_tl { phd } { \GetTranslation{PhD-thesis},~ } \GetTranslation{up},~\the\year. \group_end: } % \end{macrocode} % \end{macro} % % \subsection{Styling of the sectioning commans} % % We change the formatting of the chapter, section, and sub-section headings. % \begin{macrocode} \addtokomafont{chapterprefix}{\raggedleft\bfseries} \addtokomafont{chapter}{\mdseries} \addtokomafont{section}{\large\mdseries} \addtokomafont{subsection}{\normalsize\mdseries} \renewcommand*{\chapterformat}{% \enskip\mbox{% \scalebox{3}{\color{UPSE2-DarkGray}\thechapter\autodot}% }% } \renewcommand{\chapterlinesformat}[3]{% \parbox[b]{\textwidth}{\hrulefill#2}\par% #3\par\bigskip% \hrule% } \RedeclareSectionCommand[afterskip=1.5\baselineskip]{chapter} \renewcommand*{\chapterlineswithprefixformat}[3]{% \Ifstr{#1}{chapter} {#2\textls*[75]{\MakeUppercase{#3}}}% change definition for chapter {#2#3}% original definition }% \renewcommand*{\sectionlinesformat}[4]{% #3\textls*[75]{\MakeUppercase{#4}}% } % \end{macrocode} % % Change the loop of a \cmd{\paragraph} to be italic and end with a full stop. % \begin{macrocode} \setkomafont{paragraph}{\normalsize\normalfont\itshape} \AddtoDoHook{heading/endgroup/paragraph}{\headingdot} \newcommand*{\headingdot}[1]{.} % \end{macrocode} % % Change the width of a dictum % \begin{macrocode} \renewcommand*{\dictumwidth}{0.42\linewidth} % \end{macrocode} % % \subsection{Provide an environment for abstracts} % % We want to allow abstracts in German and English, which is also a requirement % when writing a thesis in English. % First, ensure that the \cmd{\abstract} macro is available for all classes. % \begin{macro}{\abstract} % \begin{macrocode} \providecommand{\abstract}{} % \end{macrocode} % \end{macro} % Then redefine the |abstract| environment such that it provides an optional % argument for language selection. % \begin{environment}{abstract} % Used to typeset an abstract for the thesis. % The optional argument allows to specify a language. % As a default the current document language will be used. % \begin{macrocode} \RenewDocumentEnvironment { abstract } { o } { \group_begin: \IfNoValueF {#1} { \selectlanguage{#1} } \scr@ifundefinedorrelax{chapter}{ \Iftocfeature{toc}{leveldown} {\subsection*} {\section*} }{ \let\clearpage\relax \Iftocfeature{toc}{leveldown} {\section*} {\chapter*} } { \GetTranslation{Abstract} } } { \group_end: } % \end{macrocode} % \end{environment} % % \subsection{Provide an environment for acknowledgements} % % Often, especially in a PhD thesis, one wants to acknowledge the help of % certain people, for example, supervisors, family, and friends. % \begin{environment}{acknowledgements} % Use to typeset the acknowledgements for the thesis. % \begin{macrocode} \NewDocumentEnvironment { acknowledgements } { o } { \group_begin: \IfNoValueF {#1} { \selectlanguage{#1} } \scr@ifundefinedorrelax{chapter}{ \Iftocfeature{toc}{leveldown} {\subsection*} {\section*} }{ \Iftocfeature{toc}{leveldown} {\section*} {\chapter*} } { \GetTranslation{Acknowledgements} } } { \group_end: } % \end{macrocode} % \end{environment} % % \subsection{Document structuring macros} % % Ensure that these macros are defined. % These are the exact definitions from \KOMAScript. % \begin{macrocode} \newif\if@mainmatter\@mainmattertrue % \end{macrocode} % \begin{macro}{\frontmatter} % Starts the frontmatter. % Most notably, set the page numbers to roman. % \begin{macrocode} \providecommand*{\frontmatter} { \if@twoside\cleardoubleoddpage\else\clearpage\fi \@mainmatterfalse \pagenumbering { roman } } % \end{macrocode} % \end{macro} % \begin{macro}{\mainmatter, \backmatter} % Starts the mainmatter or the backmatter. % Most notably, set the page numbers to arabic. % \begin{macrocode} \providecommand*{\mainmatter} { \if@twoside\cleardoubleoddpage\else\clearpage\fi \@mainmattertrue \pagenumbering { arabic } } \providecommand*{\backmatter} { \if@twoside\cleardoubleoddpage\else\clearpage\fi \@mainmatterfalse } % \end{macrocode} % \end{macro} % % \subsection{Declaration of authorship} % % \begin{macro}{\authorshipDeclaration} % Provide a command to typeset the authorship declaration. % \begin{macrocode} \NewDocumentCommand \authorshipDeclaration { o } { \par \group_begin: \selectlanguage{ngerman} \IfNoValueF {#1} { \tl_gset:Nn \l_@@_location_tl {#1} } \tl_if_empty:NT \l_@@_location_tl { \msg_new:nnn { seiithesis } { no-location-specified } { You~ need~ to~ specify~ a~ location~ for~ the~ authorship~ declaration.~ Either~ via~ the~ location~ macro~ or~ via~ the~ optional~ argument~ of~ the~ authorshipDeclaration~ macro. } \msg_warning:nn { seiithesis } { no-location-specified } } \scr@ifundefinedorrelax{chapter}{ \Iftocfeature{toc}{leveldown} {\subsection*} {\section*} }{ \Iftocfeature{toc}{leveldown} {\section*} {\chapter*} } { Eigenständigkeitserklärung } Hiermit~ versichere~ ich,~ \l_@@_signature_tl, \begin{enumerate} \item dass~ ich~ die~ vorliegende~ Arbeit~ selbstständig~ und~ ohne~ unzulässige~ Hilfe~ verfasst~ und~ keine~ anderen~ als~ die~ angegebenen~ Quellen~ und~ Hilfsmittel~ benutzt,~ sowie~ die~ wörtlich~ und~ sinngemäß~ übernommenen~ Passagen~ aus~ anderen~ Werken~ kenntlich~ gemacht~ habe. \item Außerdem~ erkläre~ ich,~ dass~ ich~ der~ Universität~ ein~ einfaches~ Nutzungsrecht~ zum~ Zwecke~ der~ Überprüfung~ mittels~ einer~ Plagiatssoftware~ in~ anonymisierter~ Form~ einräume. \end{enumerate}\par \bigskip \noindent \l_@@_location_tl,~ \@date\hfill \signatureBox{\l_@@_signature_tl} \group_end: \\\strut\cleardoublepage } % \end{macrocode} % \end{macro} % % \begin{macro}{\signatureBox} % Provide a box for the signature. % \begin{macrocode} \newcommand*{\signatureBox}[2][5cm]{ \parbox[t]{#1}{ \centering \rule{\linewidth}{.3pt}\\\makebox[0pt][c]{#2} } } % \end{macrocode} % \end{macro} % % \subsection{Research questions and summary boxes} % % We utilise the \pkg{ntheorem} package for defining new theorem environments % that are used for defining research questions and hypotheses. % Therefore, start with loading this package. % \pkg{ntheorem}. % \begin{macrocode} \slcd_package_if_loaded:nT { amsmath } { \PassOptionsToPackage{amsmath}{ntheorem} } \RequirePackage{ntheorem} \theoremseparator{:} % \end{macrocode} % % \begin{environment}{resq, hyp} % We can then define the \env{resq} and \env{hyp} environments using the % \cmd{\newtheorem} macro from \pkg{ntheorem}. % \begin{macrocode} \newtheorem{resq}{Research~ Question} \newtheorem{hyp}{Hypothesis} % \end{macrocode} % \end{environment} % % For the summary boxes, we utilise the \pkg{tcolorbox} package. % We start with loading this package. % \begin{macrocode} \RequirePackage{tcolorbox} % \end{macrocode} % % \begin{environment}{summary} % The \env{summary} environment expects a label and has the summary text in % its content. % \begin{macrocode} \NewDocumentEnvironment { summary } { m } { \begin{tcolorbox}[title={Summary~ (#1)}] } { \end{tcolorbox} } % \end{macrocode} % \end{environment} % % % % % % % % % % \begin{macrocode} % % \end{macrocode} % % \section{Translations for \cls{se2thesis}}\label{sec:impl-translations} % % \begin{macrocode} %<*translations> % \end{macrocode} % % \subsection{English Translations}\label{sec:impl-translations-english} % % \begin{macrocode} %<*english> % \end{macrocode} % % We provide the following English translations. % % \begin{macrocode} \ProvideDictionaryFor{English}{se2translations}[2024/04/20] \ProvideDictTranslation{abstract}{abstract} \ProvideDictTranslation{Abstract}{Abstract} \ProvideDictTranslation{acknowledgement}{acknowledgement} \ProvideDictTranslation{Acknowledgement}{Acknowledgement} \ProvideDictTranslation{acknowledgements}{acknowledgements} \ProvideDictTranslation{Acknowledgements}{Acknowledgements} \ProvideDictTranslation{advisor}{advisor} \ProvideDictTranslation{Advisor}{Advisor} \ProvideDictTranslation{advisors}{advisors} \ProvideDictTranslation{Advisors}{Advisors} \ProvideDictTranslation{co-advisor}{co-advisor} \ProvideDictTranslation{Co-advisor}{Co-advisor} \ProvideDictTranslation{co-advisors}{co-advisors} \ProvideDictTranslation{Co-advisors}{Co-advisors} \ProvideDictTranslation{matrnumber}{matriculation number} \ProvideDictTranslation{Matrnumber}{Matriculation number} \ProvideDictTranslation{supervisor}{supervisor} \ProvideDictTranslation{Supervisor}{Supervisor} \ProvideDictTranslation{co-supervisor}{co-supervisor} \ProvideDictTranslation{Co-supervisor}{Co-supervisor} \ProvideDictTranslation{external}{external examiner} \ProvideDictTranslation{External}{External Examiner} \ProvideDictTranslation{degreeprogramme}{programme} \ProvideDictTranslation{Degreeprogramme}{Programme} \ProvideDictTranslation{Bachelor-thesis}{Bachelor Thesis} \ProvideDictTranslation{Bachelor-thesis-proposal}{Bachelor Thesis Proposal} \ProvideDictTranslation{Master-thesis}{Master Thesis} \ProvideDictTranslation{Master-thesis-proposal}{Master Thesis Proposal} \ProvideDictTranslation{PhD-thesis}{PhD Thesis} \ProvideDictTranslation{PhD-thesis-proposal}{PhD Thesis Proposal} \ProvideDictTranslation{date}{date} \ProvideDictTranslation{Date}{Date} \ProvideDictTranslation{university-of-passau}{University of Passau} \ProvideDictTranslation{up}{University of Passau} \ProvideDictTranslation{fim}{Faculty of Computer Science and Mathematics} % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \subsection{German Translations}\label{sec:impl-translations-german} % % \begin{macrocode} %<*german> % \end{macrocode} % % We provide the following German translations. % % \begin{macrocode} \ProvideDictionaryFor{German}{se2translations}[2024/04/20] \ProvideDictTranslation{abstract}{Zusammenfassung} \ProvideDictTranslation{Abstract}{Zusammenfassung} \ProvideDictTranslation{acknowledgement}{Danksagung} \ProvideDictTranslation{Acknowledgement}{Danksagung} \ProvideDictTranslation{acknowledgements}{Danksagungen} \ProvideDictTranslation{Acknowledgements}{Danksagungen} \ProvideDictTranslation{advisor}{Betreuer} \ProvideDictTranslation{Advisor}{Betreuer} \ProvideDictTranslation{advisors}{Betreuer} \ProvideDictTranslation{Advisors}{Betreuer} \ProvideDictTranslation{co-advisor}{Mitbetreuer} \ProvideDictTranslation{Co-advisor}{Mitbetreuer} \ProvideDictTranslation{co-advisors}{Mitbetreuer} \ProvideDictTranslation{Co-advisors}{Mitbetreuer} \ProvideDictTranslation{matrnumber}{Matrikelnummer} \ProvideDictTranslation{Matrnumber}{Matrikelnummer} \ProvideDictTranslation{supervisor}{Prüfer} \ProvideDictTranslation{Supervisor}{Prüfer} \ProvideDictTranslation{co-supervisor}{Zweitprüfer} \ProvideDictTranslation{Co-supervisor}{Zweitprüfer} \ProvideDictTranslation{external}{Externer Gutachter} \ProvideDictTranslation{External}{Externer Gutachter} \ProvideDictTranslation{degreeprogramme}{Studiengang} \ProvideDictTranslation{Degreeprogramme}{Studiengang} \ProvideDictTranslation{Bachelor-thesis}{Bachelorarbeit} \ProvideDictTranslation{Bachelor-thesis-proposal}{Bachelorarbeitsproposal} \ProvideDictTranslation{Master-thesis}{Masterarbeit} \ProvideDictTranslation{Master-thesis-proposal}{Masterarbeitsproposal} \ProvideDictTranslation{PhD-thesis}{Dissertation} \ProvideDictTranslation{PhD-thesis-proposal}{Dissertationsproposal} \ProvideDictTranslation{date}{Datum} \ProvideDictTranslation{Date}{Datum} \ProvideDictTranslation{university-of-passau}{Universität Passau} \ProvideDictTranslation{up}{Universität Passau} \ProvideDictTranslation{fim}{Fakultät für Informatik und Mathematik} % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \end{implementation} % % \clearpage % % \PrintIndex