Minor change
[u/philim/db2osl_thesis.git] / cs-cover / uni-stuttgart-cs-cover.sty
1 % (C) 1990-1996 Bernd Raichle
2 % (C) 2001 Timo Heiber, Matthias Papesch
3 % (C) 2005 Steffen Keul
4 % (C) 2006 Nils Radtke, Oliver Kopp
5 % (C) 2007 Oliver Kopp
6 % (C) 2012 Oliver Kopp, Kai Mindermann, Niklas Schnelle
7
8 \NeedsTeXFormat{LaTeX2e}
9 \newcommand{\USCCover@Pgkname}{uni-stuttgart-cs-cover}
10 \ProvidesPackage{\USCCover@Pgkname}[2012/11/20 Cover and affirmation for work at the University of Stuttgart, Computer Science.]
11 \typeout{Package: `\USCCover@Pgkname' v3.0}
12 % ------------------------------
13 % required packages
14 % ------------------------------
15 % kvoptions for key value options support
16 \RequirePackage{kvoptions}
17 \RequirePackage{ifthen}
18
19 % this package requires utf8 inputenc
20 \def\USCCover@stop{\PackageWarningNoLine{\USCCover@Pgkname}
21   {This package won't work without loading\MessageBreak
22    `inputenc' or `inputenx' with the `utf8' option}%
23   \let\USCCover@Pgkname\@gobbletwo\endinput}
24 \@ifpackageloaded{inputenx}
25   {\def\USCCover@tempa{inputenx}}
26   {\@ifpackageloaded{inputenc}{\def\USCCover@tempa{inputenc}}{\USCCover@stop}}
27 \@ifpackagewith{\USCCover@tempa}{utf8}{}{\USCCover@stop}
28 \@ifpackagewith{\USCCover@tempa}{utf8x}{\USCCover@stop}{}
29
30 % ------------------------------
31 % options
32 % ------------------------------
33 \SetupKeyvalOptions{
34         family=MCS,
35         prefix=MCS@
36 }
37
38 % for possible option values see README.md
39 \DeclareStringOption[title not set]{title} % Title of the work
40 \DeclareStringOption[author not set]{author}
41 \DeclareStringOption[bachelor]{type}
42 \DeclareStringOption[fac]{institute}
43 \DeclareStringOption[not set]{number} % running number
44 \DeclareStringOption[cs]{course}
45 \DeclareStringOption[examiner not set]{examiner}
46 \DeclareStringOption[supervisor not set]{supervisor} 
47 \DeclareStringOption[startdate not set]{startdate} 
48 \DeclareStringOption[enddate not set]{enddate}
49 \DeclareStringOption[crk not set]{crk}
50
51 \DeclareStringOption[german]{language}
52 \DeclareBoolOption[false]{setPageNumberToOne}
53 \DeclareBoolOption[false]{setCoverPageNumberToMinusOne}
54
55 % ------------------------------
56 % process options
57 % ------------------------------
58 \ProcessKeyvalOptions*
59
60 % ------------------------------
61 % define language specific labels:
62 % ------------------------------
63 % - labels are defined seperate for each language
64 % - if language is not set, german is used
65 % ------------------------------
66 \def\labelsenglish{
67         \gdef\@labelExaminer{Examiner}%
68         %\gdef\@labelprueferin{Examiner}%
69         \gdef\@labelSupvervisor{Supervisor}%
70         %\gdef\@labelbetreuerin{Supervisor}%
71         \gdef\@labelCourse{Course of Study}%
72         \gdef\@labelStartdate{Commenced}%
73         \gdef\@labelEnddate{Completed}%
74         \gdef\@labelcrk{CR-Classification}%
75         \gdef\@labelUniversity{~\newline University of Stuttgart}%
76         \gdef\@labelDept{Faculty of Computer Science}%
77         
78         \gdef\@labelTypeStudy{Studienarbeit}%
79         \gdef\@labelTypeDiplom{Diplomarbeit}%
80         \gdef\@labelTypeBachelor{Bachelorarbeit}%
81         \gdef\@labelTypeMaster{Masterarbeit}%
82         \gdef\@labelTypeProjectINF{Projekt-INF}%
83         \gdef\@labelTypeFachstudie{Fachstudie}%
84         \gdef\@labelTypeProzessanalyse{Prozessanalyse}%
85         
86         \gdef\@labelCourseCS{Informatik}%
87         \gdef\@labelCourseSE{Softwaretechnik}%
88         \gdef\@labelCourseMCL{Computerlinguistik}%
89         \gdef\@labelCourseTK{Technische Kybernetik}%
90         \gdef\@labelCourseMSV{Maschinelle Sprachverarbeitung}%
91         \gdef\@labelCourseBIS{Wirtschaftsinformatik}%
92         \gdef\@labelCourseSimTech{Simulation Technology}%
93         
94         % institute names
95         \gdef\@labeliaas{Institute of Architecture of Application Systems}%
96         \gdef\@labelipvs{Institute of Parallel and Distributed Systems}%
97         \gdef\@labelfmi{Institute of Formal Methods in Computer Science}%
98         \gdef\@labeliste{Institute of Software Technology}%
99         \gdef\@labeliti{Institute of Computer Architecture and Computer Engineering}%
100         \gdef\@labeliris{Institute of Computer-aided Product Development Systems}%
101         \gdef\@labelvis{Institute for Visualization and Interactive Systems}%
102         
103         \gdef\@labelAffirmation{Declaration}%
104         \gdef\@AffirmationText{I hereby declare that the work presented in this thesis is entirely my own and that
105                 I did not use any other sources and references than the listed ones.
106                 I have marked all direct or indirect statements from other sources contained therein as quotations.
107                 Neither this work nor significant parts of it were part of another examination procedure.
108                 I have not published this work in whole or in part before.
109                 The electronic copy is consistent with all submitted copies.
110         }
111         \gdef\@labelSignature{\ place, date, signature}
112 }
113
114 \def\labelsgerman{
115         \gdef\@labelExaminer{Prüfer/in}%
116         \gdef\@labelSupvervisor{Betreuer/in}%
117         \gdef\@labelCourse{Studiengang}%
118         \gdef\@labelStartdate{Beginn am}%
119         \gdef\@labelEnddate{Beendet am}%
120         \gdef\@labelcrk{CR-Nummer}%
121         \gdef\@labelUniversity{~\newline Universität Stuttgart}%
122         \gdef\@labelDept{Fakultät Informatik, Elektrotechnik und Informationstechnik}%
123         
124         \gdef\@labelTypeStudy{Studienarbeit}%
125         \gdef\@labelTypeDiplom{Diplomarbeit}%
126         \gdef\@labelTypeBachelor{Bachelorarbeit}%
127         \gdef\@labelTypeMaster{Masterarbeit}%
128         \gdef\@labelTypeProjectINF{Projekt-INF}%
129         \gdef\@labelTypeFachstudie{Fachstudie}%
130         \gdef\@labelTypeProzessanalyse{Prozessanalyse}%
131         
132         \gdef\@labelCourseCS{Informatik}%
133         \gdef\@labelCourseSE{Softwaretechnik}%
134         \gdef\@labelCourseMCL{Computerlinguistik}%
135         \gdef\@labelCourseTK{Technische Kybernetik}%
136         \gdef\@labelCourseMSV{Maschinelle Sprachverarbeitung}%
137         \gdef\@labelCourseBIS{Wirtschaftsinformatik}%
138         \gdef\@labelCourseSimTech{Simulation Technology}%
139         
140         % institute names
141         \gdef\@labeliaas{Institut für Architektur von Anwendungssystemen}%
142         \gdef\@labelipvs{Institut für Parallele und Verteilte Systeme}%
143         \gdef\@labelfmi{Institut für Formale Methoden der Informatik}%
144         \gdef\@labeliste{Institut für Softwaretechnologie}%
145         \gdef\@labeliti{Institut für Technische Informatik}%
146         \gdef\@labeliris{Institut für Rechnergestützte Ingenieursysteme}%
147         \gdef\@labelvis{Institut für Visualisierung und Interaktive Systeme}%
148         
149         \gdef\@labelAffirmation{Erklärung}%
150         \gdef\@AffirmationText{Ich versichere, diese Arbeit selbstständig verfasst zu haben.
151         Ich habe keine anderen als die angegebenen Quellen benutzt und alle wörtlich oder sinngemäß aus anderen Werken übernommene Aussagen als solche gekennzeichnet.
152         Weder diese Arbeit noch wesentliche Teile daraus waren bisher Gegenstand eines anderen Prüfungsverfahrens.
153         Ich habe diese Arbeit bisher weder teilweise noch vollständig veröffentlicht.
154         Das elektronische Exemplar stimmt mit allen eingereichten Exemplaren überein.
155         }
156         \gdef\@labelSignature{\ Ort, Datum, Unterschrift}
157 }
158
159 % set those labels according to the set language
160 \newcommand{\USCCover@setLanguage{
161         \def\0{english}
162         \ifx\MCS@language\0
163                 \labelsenglish
164         \else
165                 \labelsgerman
166         \fi
167 }}
168
169 % set \@labelType if matched
170 \newcommand{\USCCover@setType}{
171         \gdef\@labelType{\MCS@type}
172         \def\1{\MCS@type}
173         % dont remove last two braces / empty else clause
174         \def\0{diplom}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelType{\@labelTypeDiplom}}{}
175         \def\0{study}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelType{\@labelTypeStudy}}{}
176         \def\0{bachelor}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelType{\@labelTypeBachelor}}{}
177         \def\0{master}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelType{\@labelTypeMaster}}{}
178         \def\0{projectinf}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelType{\@labelTypeProjectINF}}{}
179 }
180
181 % ------------------------------                
182 % Institute addresses
183 % ------------------------------
184
185 % general university address
186 \gdef\@labelAddress{\@labelUniversity\\Universitätsstraße 38\\D--70569 Stuttgart}
187
188 \newcommand{\USCCover@setInstitute}{
189         % use specified text if institute does not match
190         \gdef\@labelInstitute{\MCS@institute}
191         
192         \def\1{\MCS@institute}
193         % dont remove last two braces / empty else clause
194         \def\0{ipvs}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelInstitute{\@labelipvs\\\@labelAddress}}{}
195         \def\0{iaas}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelInstitute{\@labeliaas\\\@labelAddress}}{}
196         \def\0{fmi}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelInstitute{\@labelfmi\\\@labelAddress}}{}
197         \def\0{iste}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelInstitute{\@labeliste\\\@labelAddress}}{}
198         \def\0{iti}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelInstitute{\@labeliti\\\@labelUniversity\\Pfaffenwaldring 47\\D--70569 Stuttgart}}{}
199         \def\0{iris}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelInstitute{\@labeliris\\\@labelAddress}}{}
200         \def\0{vis}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelInstitute{\@labelvis\\\@labelAddress}}{}
201         \def\0{fac}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelInstitute{\@labelDept\\\@labelAddress}}{}
202 }
203
204 % ------------------------------                
205 % Evaluate course option and set course
206 % ------------------------------
207 \newcommand{\USCCover@setCourse}{
208         % use specified text if course does not match
209         \gdef\@labelCourseValue{\MCS@course}
210         
211         \def\1{\MCS@course}
212         % dont remove last two braces / empty else clause
213         \def\0{cs}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelCourseValue{\@labelCourseCS}}{}
214         \def\0{se}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelCourseValue{\@labelCourseSE}}{}
215         \def\0{mcl}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelCourseValue{\@labelCourseMCL}}{}
216         \def\0{msv}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelCourseValue{\@labelCourseMSV}}{}
217         \def\0{bis}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelCourseValue{\@labelCourseBIS}}{}
218         \def\0{simtech}\ifthenelse{\equal{\0}{\1}}{\gdef\@labelCourseValue{\@labelCourseSimTech}}{}
219 }
220
221 % ------------------------------
222 % evaluate options by calling those functions that set text accordingly
223 % ------------------------------
224 \USCCover@setLanguage
225 \USCCover@setType
226 \USCCover@setInstitute
227 \USCCover@setCourse
228  
229 % ------------------------------                
230 % helping commands
231 % ------------------------------
232 % - \USCCover@umrandet
233 % - \USCCover@TBlabel
234 % - \USCCover@TBlist
235 % ------------------------------
236 \def\USCCover@umrandet{\global\let\@USCCover@umrandet=\fbox}
237 \let\@USCCover@umrandet\relax
238
239 \newcommand{\USCCover@TBlabel}[1]{\textbf{#1}\hfil}
240
241 \newenvironment{USCCover@TBlist}{%
242   \list{}{\labelwidth 45mm \leftmargin 70mm % alt: 35/60 mm
243           \rightmargin 20mm \let\makelabel\USCCover@TBlabel}%
244 }{\endlist}
245
246 % ------------------------------
247 % usable commands
248 % ------------------------------
249 % - \Titelblatt
250 % - \Versicherung
251 % (contain code from old diplomtitel.sty)
252 % ------------------------------
253 \newcommand{\Titelblatt}{%
254   \cleardoublepage
255   \ifthenelse{\boolean{MCS@setCoverPageNumberToMinusOne}}{\setcounter{page}{-1}}{}
256 \begingroup
257         \newcommand{\USCCover@isTwoColumn}{false}
258         \if@twocolumn \renewcommand{\USCCover@isTwoColumn}{true} \onecolumn \fi
259   \normalfont\sffamily
260   \pagestyle{empty}%
261   \thispagestyle{empty}%
262   %\fontfamily{ppl}\selectfont
263   %
264   \@normalsize \@setsize\normalsize{13.6pt}\xipt\@xipt
265   %
266   \frenchspacing    % besser, da viele Abk. (<- da ist schon eine)
267   \parskip=0pt\parindent=0pt\null
268   %
269   % Damit alles richtig funktioniert, mu"s der Ursprung auf die
270   %  tats"achliche linke obere Ecke des Blattes gelegt werden (ohne den
271   %  bekannten 1in Offset also).
272   %  Ausserdem werden die beiden Seitenr"ander auf 28mm + 4.5mm Falz
273   %  gesetzt, die Seitenh"ohe auf DIN A4-H"ohe.
274   %
275   \hsize=154mm       %% DIN A4: 210mm - 2*28mm
276   \columnwidth=\hsize \linewidth=\hsize
277   %
278   \dimen0=0pt
279   \advance\dimen0-\oddsidemargin
280   \advance\dimen0 2.6mm %% 
281   \advance\dimen0 4.5mm %% 
282  \hbox to 0pt{\kern\dimen0\vbox to\topskip{%
283   \dimen0=-1in
284   \advance\dimen0-\topmargin
285   \advance\dimen0-\headheight
286   \advance\dimen0-\headsep
287   \vskip\dimen0\relax
288   %
289
290   \vskip 20mm\relax %%%
291
292   \vbox to 70mm{
293   \begin{center}%
294     \@labelInstitute
295   \end{center}
296   \vfill}%
297
298   \vskip -4mm\relax
299   %%%%% ==> 155mm (Titel: 165mm/Autor: 195mm) von oben
300   %%% Die Box kann max. 100mm breit und 60mmm hoch sein,
301   %%% au"serdem wird noch ein Rand von mind. 2.5mm gelassen
302   \centerline{\fboxsep=0pt
303     \@USCCover@umrandet{\hbox to 100mm{\hfil
304     \vbox to 60mm{\hsize=95mm\parindent=0pt
305       \vskip 10mm plus 30mm minus 7.5mm
306       \begin{center}\@setsize\large{14pt}\xiipt\@xiipt %%\large
307         \@labelType\ Nr.\,\MCS@number
308       \end{center}%
309       \vskip 12.5mm plus 12.5mm minus 10mm
310       \begin{center}\@setsize\LARGE{22pt}\xviipt\@xviipt %%\LARGE
311         \textbf{ \MCS@title}
312       \end{center}%
313       \vskip 10mm plus 10mm minus 7.5mm
314       \begin{center}\@setsize\large{14pt}\xiipt\@xiipt %%\large
315         \MCS@author
316       \end{center}%
317       \vskip 17.5mm plus 35mm minus 12.5mm}\hfil}}}%
318   \vskip 20mm %%%%%
319
320   \vbox to 15mm{%
321     \begin{USCCover@TBlist}%
322       \item[\@labelCourse: ]\@labelCourseValue
323     \end{USCCover@TBlist}%
324     \vfill}%
325   \vbox to 45mm{%
326     \begin{USCCover@TBlist}%
327       \item[\@labelExaminer:]\MCS@examiner
328       \item[\@labelSupvervisor:]\MCS@supervisor
329     \end{USCCover@TBlist}%
330     \vfill}%
331   \vbox to 70mm{%%%%% ==> 85 mm von oben
332     \begin{USCCover@TBlist}%
333       \item[\@labelStartdate:]\MCS@startdate
334       \item[\@labelEnddate:]\MCS@enddate
335       \ifx\@crk\relax \else
336           \vskip 1.5\baselineskip
337           \item[\@labelcrk:]\MCS@crk
338       \fi
339     \end{USCCover@TBlist}%
340     \vfill}%
341
342  \vss}\hss}%
343   %
344   \thispagestyle{empty}%
345   \cleardoublepage % if twoside add a blank page after cover
346   % set counter to start at 1 after the clear(double)page
347   \ifthenelse{\boolean{MCS@setPageNumberToOne}}{\setcounter{page}{1}}{}
348   \newcommand{\USCCover@true}{true}
349   \ifthenelse{\equal{\USCCover@isTwoColumn}{\USCCover@true}}{\twocolumn}{}
350 \endgroup
351 }
352 \newcommand{\Coverpage}{\Titelblatt}
353
354 \newcommand{\Versicherung}{
355   \newcommand{\USCCover@isTwoColumn}{false}
356   \if@twocolumn \renewcommand{\USCCover@isTwoColumn}{true} \onecolumn \fi
357   \null
358   \vskip 5cm\relax
359         \begin{center}
360                 \begin{minipage}[t]{10cm}
361                         \hbox{\normalfont\bfseries \@labelAffirmation}%
362                         \vskip 1cm\relax
363                         %\begin{flushleft}%
364                         \@AffirmationText
365                         %\end{flushleft}%
366                         \vskip 4cm\relax
367                         \hrulefill
368                         \vskip .4\baselineskip
369                         \hbox{\@labelSignature}
370                 \end{minipage}
371         \end{center}
372   \clearpage
373   \newcommand{\USCCover@true}{true}
374   \ifthenelse{\equal{\USCCover@isTwoColumn}{\USCCover@true}}{\twocolumn}{}
375 }
376 \newcommand{\Affirmation}{\Versicherung}