texlive[74267] branches/branch2024.final/Master/texmf-dist:

commits+karl at tug.org commits+karl at tug.org
Mon Feb 24 21:31:09 CET 2025


Revision: 74267
          https://tug.org/svn/texlive?view=revision&revision=74267
Author:   karl
Date:     2025-02-24 21:31:09 +0100 (Mon, 24 Feb 2025)
Log Message:
-----------
hagenberg-thesis (branch) (24feb25)

Modified Paths:
--------------
    branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/README.md
    branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hagenberg-thesis-tutorial-de.pdf
    branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hagenberg-thesis-tutorial-en.pdf
    branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hagenberg-thesis.pdf
    branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hagenberg-thesis.tex
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgb.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbabbrev.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbalgo.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbarticle.cls
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbbib.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbheadings.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgblistings.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbmath.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbreport.cls
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbthesis.cls

Added Paths:
-----------
    branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/bibtex/
    branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/bibtex/references.bib
    branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-default-logo.pdf
    branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-fhooe24-coverbackground.pdf
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbdict.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbpdfa.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-custom.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-default.sty
    branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-fhooe24.sty

Modified: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/README.md
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/README.md	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/README.md	2025-02-24 20:31:09 UTC (rev 74267)
@@ -6,7 +6,7 @@
 
 ## Package information
 
-### Version: 2023/02/13
+### Version: 2025/02/24
 
 ### Authors:
 W. Burger, W. Hochleitner

Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/bibtex/references.bib
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/bibtex/references.bib	                        (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/bibtex/references.bib	2025-02-24 20:31:09 UTC (rev 74267)
@@ -0,0 +1,544 @@
+%%% Version[2025/02/24]%%AUTO
+
+ at book{BachBWV988,
+	author={Bach, Johann Sebastian},
+	title={Goldberg-Variationen für Streichquartett, BWV 988},
+	editor={Anka, Dana},
+	publisher={Musikverlag Hans Sikorski},
+	location={Hamburg},
+	date={2017},
+	langid={ngerman}
+}
+
+ at thesis{Bacher2004,
+	author={Bacher, Florian},
+	title={Interaktionsmöglichkeiten mit Bildschirmen und großflächigen Projektionen},
+	type={bathesis},
+	date={2004-06},
+	institution={University of Applied Sciences Upper Austria, Medientechnik und {-design}},
+	location={Hagenberg, Austria},
+	langid={ngerman}
+}
+
+ at manual{Bezos2025,
+	author={Bezos, Javier and Braams, Johannes L.},
+	title={Babel},
+	subtitle={Localization and internationalization},
+	date={2025-02-14},
+	version={25.4},
+	url={https://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf},
+	langid={english}
+}
+
+ at incollection{BurgeBurger1999,
+	author={Burge, Mark and Burger, Wilhelm},
+	title={Ear Biometrics},
+	booktitle={Biometrics},
+	booksubtitle={Personal Identification in Networked Society},
+	publisher={Kluwer Academic Publishers},
+	date={1999},
+	location={Boston},
+	editor={Jain, Anil K. and Bolle, Ruud and Pankanti, Sharath},
+	chapter={13},
+	pages={273-285},
+	doi={10.1007/0-306-47044-6_13},
+	langid={english}
+}
+
+ at inproceedings{Burger1987,
+	author={Burger, Wilhelm and Bhanu, Bir},
+	title={Qualitative Motion Understanding},
+	booktitle={Proceedings of the Tenth International Joint Conference on Artificial Intelligence},
+	date={1987-08},
+	editor={McDermott, John P.},
+	eventdate={1987-08-23/1987-08-28},
+	venue={Milano},
+	publisher={Morgan Kaufmann Publishers},
+	location={San Francisco},
+	pages={819-821},
+	doi={10.1007/978-1-4615-3566-9},
+	langid={english}
+}
+
+ at book{BurgerBurge2022,
+	author={Burger, Wilhelm and Burge, Mark James},
+	title={Digital Image Processing},
+	subtitle={An Algorithmic Introduction},
+	publisher={Springer},
+	location={Cham},
+	edition={3},
+	date={2022},
+	doi={10.1007/978-3-031-05744-1},
+	langid={english}
+}
+
+ at manual{Carlisle2024,
+	author={Carlisle, David P.},
+	title={Packages in the {`graphics'} bundle},
+	date={2024-05-22},
+	url={https://mirrors.ctan.org/macros/latex/required/graphics/grfguide.pdf},
+	langid={english}
+}
+
+ at image{CocaCola1940,
+	author={Wolcott, Marion Post},
+	title={Natchez, Miss.},
+	note={Library of Congress Prints and Photographs Division Washington, Farm Security Administration/Office of War Information Color Photographs},
+	date={1940-08},
+	url={https://www.loc.gov/pictures/item/2017877479/},
+	langid={english}
+}
+
+ at unpublished{Dai2016,
+	author={Dai, Jifeng and Li,Yi and He, Kaiming and Sun, Jian},
+	title={{R-FCN:} Object Detection via Region-Based Fully Convolutional Networks},
+	date={2016},
+	pubstate={prepublished},
+	doi={10.48550/arXiv.1605.06409},
+	langid={english}
+}
+
+ at manual{Daniel2018,
+	author={Daniel, Marco and Gundlach, Patrick and Schmidt, Walter and Knappen, Jörg and Partl, Hubert and Hyna, Irene},
+	title={\LaTeX2e-Kurzbeschreibung},
+	date={2018-04-08},
+	version={3.0c},
+	url={https://mirrors.ctan.org/info/lshort/german/l2kurz.pdf},
+	langid={ngerman}
+}
+
+ at report{Drake1948,
+	author={Drake, Hubert M. and McLaughlin, Milton D. and Goodman, Harold R.},
+	title={Results obtained during accelerated transonic tests of the {Bell} {XS-1} airplane in flights to a {MACH} number of 0.92},
+	type={techreport},
+	institution={NASA Dryden Flight Research Center},
+	date={1948-04-19},
+	location={Edwards, CA},
+	number={NACA-RM-L8A05A},
+	url={https://ntrs.nasa.gov/api/citations/19930085320/downloads/19930085320.pdf},
+	langid={english}
+}
+
+ at book{Duden1997,
+	author={Friedrich, Christoph},
+	title={Schriftliche Arbeiten im technisch-natur\-wissen\-schaft\-lichen Studium}, 
+	subtitle={Ein Leitfaden zur effektiven Erstellung und zum Einsatz moderner Arbeitsmethoden},
+	publisher={Bibliographisches Institut},
+	series={Duden Taschenbücher},
+	volume={27},
+	location={Mannheim},
+	date={1997},
+	langid={ngerman}
+}
+
+ at thesis{Eberl1987,
+	author={Eberl, Gerhard},
+	title={Automatischer Landeanflug durch Rechnersehen},
+	type={phdthesis},
+	date={1987-08},
+	institution={Universität der Bundeswehr, Fakultät für Raum- und Luftfahrttechnik},
+	location={München},
+	langid={ngerman}
+}
+
+ at legislation{EuRichtlinie2000,
+	author={{Europäische Union}},
+	title={Richtline 2000/14/EG des Europäischen Parlaments und des Rates vom 8.\ Mai 2000 zur 
+		Angleichung der Rechtsvorschriften der Mitgliedstaaten über umweltbelastende Geräuschemissionen 
+		von zur Verwendung im Freien vorgesehenen Geräten und Maschinen},
+	howpublished={Amtsblatt der Europäischen Gemeinschaften, L 162},
+	date={2000-05-08},
+	url={https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CONSLEG:2000L0014:20051227:de:PDF},
+	langid={ngerman}
+}
+
+ at manual{Fear2020,
+	author={Fear, Simon},
+	title={Publication quality tables in \LaTeX},
+	date={2020-01-14},
+	version={v1.61803398},
+	url={https://mirrors.ctan.org/macros/latex/contrib/booktabs/booktabs.pdf},
+	langid={english}
+}
+
+ at book{Faires1934,
+	author={Faires, Virgil Moring},
+	title={Design of Machine Elements},
+	publisher={The Macmillan Company},
+	date={1934},
+	origdate={1920},
+	note={Originalausgabe 1920},
+	langid={english}
+}
+
+ at online{Feder2006,
+	author={Feder, Alexander},
+	title={{BibTeX.org}},
+	date={2006},
+	url={https://www.bibtex.org/},
+	urldate={2025-02-18},
+	langid={english}
+}
+
+ at legislation{FhStG1993,
+	title={Bundesgesetz über Fachhochschulen},
+	titleaddon={Fachhochschulgesetz – FHG},
+	howpublished={BGBl.\ Nr.\ 340/1993, zuletzt geändert mit Bundesgesetz BGBl.\ I Nr.\ 50/2024},
+	date={1993-05-28},
+	url={https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10009895},
+	langid={ngerman}
+}
+
+ at video{Futurama1999,
+	author={Groening, Matt},
+	title={Futurama},
+	titleaddon={Season 1 Collection},
+	howpublished={DVD},
+	date={2002-02},
+	organization={Twentieth Century Fox Home Entertainment},
+	langid={english}
+}
+
+ at incollection{GershwinSummertime,
+	author={Gershwin, George and Heyward, DuBose},
+	title={Summertime},
+	booktitle={The Greatest Songs of George Gershwin},
+	publisher={Chappel Music},
+	location={London},
+	pages={40-43},
+	date={1979},
+	langid={english}
+}
+
+ at book{HaydnCelloConcerto2,
+	author={Haydn, Josef},
+	title={Konzert für Violoncello No.\ 2 in D-Dur, Hob.VIIb:2},
+	editor={Soldan,Kurt},
+	publisher={C. F. Peters},
+	location={Leipzig},
+	date={1920},
+	langid={ngerman}
+}
+
+ at book{Hemleben1969,
+	author={Hemleben, Johannes},
+	title={Galilei, Galileo},
+	publisher={rororo},
+	date={1969},
+	edition={20},
+	langid={ngerman}
+}
+
+ at book{Higham2020,
+	author={Higham, Nicholas J.},
+	title={Handbook of Writing for the Mathematical Sciences},
+	publisher={Society for Industrial and Applied Mathematics (SIAM)},
+	location={Philadelphia},
+	edition={3},
+	date={2020},
+	url={https://nhigham.com/handbook-of-writing-for-the-mathematical-sciences/},
+	langid={english}
+}
+
+ at video{HistoryOfComputers2008,
+	title={History of Computers},
+	date={2008-09-24},
+	url={https://www.youtube.com/watch?v=LvKxJ3bQRKE},
+	langid={english}
+}
+
+ at online{IBM360,
+	author={IBM},
+	title={The IBM System/360},
+	subtitle={The 5-billion-dollar gamble that changed the trajectory of IBM},
+	date={2024-01-05},
+	url={https://www.ibm.com/history/system-360},
+	urldate={2025-02-18},
+	langid={english}
+}
+
+ at manual{Kime2024,
+	author={Kime, Philip and Wemheuer, Moritz and Lehman, Philipp},
+	title={The \texttt{biblatex} Package},
+	subtitle={Programmable Bibliographies and Citations},
+	date={2024-03-21},
+	version={3.20},
+	url={https://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf},
+	langid={english}
+}
+
+ at book{Kopka2003,
+	author={Kopka, Helmut and Daly, Patrick William},
+	title={Guide to \LaTeX},
+	series={Tools and Techniques for Computer Typesetting},
+	publisher={Addison-Wesley},
+	location={Reading, MA},
+	date={2003},
+	edition={4},
+	langid={english}
+}
+
+ at book{Lamport1994,
+	author={Lamport, Leslie},
+	title={{LaTeX}, A Document Preparation System},
+	subtitle={User's Guide and Reference Manual},
+	publisher={Addison-Wesley},
+	location={Reading, MA},
+	date={1994},
+	edition={2},
+	langid={english}
+}
+
+ at book{Lamport1995,
+	author={Lamport, Leslie},
+	title={Das {LaTeX}-Handbuch},
+	publisher={Addison-Wesley},
+	location={Reading, MA},
+	date={1995},
+	edition={3},
+	langid={ngerman}
+}
+
+ at software{LegendOfZelda1998,
+	author={Miyamoto, Shigeru and Aonuma, Eiji and Koizumi, Yoshiaki},
+	title={The Legend of Zelda: Ocarina of Time},
+	howpublished={N64 Cartridge},
+	publisher={Nintendo},
+	date={1998-11},
+	langid={english}
+}
+
+ at thesis{Loimayr2019,
+	author={Loimayr, Nora},
+	title={Utilization of GPU-Based Smoothed Particle Hydrodynamics for Immersive Audiovisal Experiences},
+	type={mathesis},
+	date={2019-11-26},
+	institution={University of Applied Sciences Upper Austria, Interactive Media},
+	location={Hagenberg, Austria},
+	url={https://theses.fh-hagenberg.at/thesis/Loimayr19},
+	langid={english}
+}
+
+ at article{Mermin1989,
+	author={Mermin, Nathaniel David},
+	title={What's Wrong with these Equations?},
+	journaltitle={Physics Today},
+	volume={42},
+	number={10},
+	date={1989},
+	pages={9-11},
+	doi={10.1063/1.2811173},
+	langid={english}
+}
+
+ at manual{Mittelbach2024,
+	author={Mittelbach, Frank and Schöpf, Rainer and Downes, Michael and Jones, David M. and Carlisle, David},
+	title={The \texttt{amsmath} package},
+	date={2024-11-05},
+	version={2.17t},
+	url={https://mirrors.ctan.org/macros/latex/required/amsmath/amsmath.pdf},
+	langid={english}
+}
+
+ at movie{Nosferatu1922,
+	title={Nosferatu -- A Symphony of Horrors},
+	howpublished={Film},
+	date={1922},
+	note={Drehbuch/Regie: F.\ W.\ Murnau. Mit Max Schreck, Gustav von Wangenheim, Greta Schröder.},
+	langid={english}
+}
+
+ at manual{Oetiker2021,
+	author={Oetiker, Tobias and Partl, Hubert and Hyna, Irene and Schlegl, Elisabeth},
+	title={The Not So Short Introduction to \LaTeXe},
+	subtitle={Or \LaTeXe in 139 minutes},
+	date={2021-03-09},
+	version={6.4},
+	url={https://mirrors.ctan.org/info/lshort/english/lshort.pdf},
+	langid={english}
+}
+
+ at legislation{OoeRaumordnungsgesetz1994,
+	title={Landesgesetz vom 6. Oktober 1993 über die Raumordnung im Land Oberösterreich},
+	titleaddon={Oö. Raumordnungsgesetz 1994 - Oö. ROG 1994},
+	howpublished={LGBl.Nr. 114/1993 zuletzt geändert durch LGBl.Nr. 14/2025},
+	date={1993-12-23},
+	url={https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=LrOO&Gesetzesnummer=10000370},
+	langid={ngerman}
+}
+
+ at manual{Oostrum2025,
+	author={Oostrum, {Pieter van}},
+	title={The \textrm{fancyhdr} and \textrm{extramarks} packages},
+	date={2025-02-07},
+	version={5.2},
+	url={https://mirrors.ctan.org/macros/latex/contrib/fancyhdr/fancyhdr.pdf},
+	langid={english}
+}
+
+ at manual{Pakin2024,
+	author={Pakin, Scott},
+	title={The Comprehensive {\LaTeX} Symbol List},
+	date={2024-01-03},
+	url={https://mirrors.ctan.org/info/symbols/comprehensive/symbols-a4.pdf},
+	langid={english}
+}
+
+ at manual{Patashnik1988,
+	author={Patashnik, Oren},
+	title={{BiBTeXing}},
+	date={1988-02-08},
+	url={https://mirrors.ctan.org/biblio/bibtex/base/btxdoc.pdf},
+	langid={english}
+}
+
+ at patent{Pike2008,
+	author={Pike, Dion},
+	title={Master-slave communications system and method for a network element},
+	type={US Patent},
+	holder={Alcatel-Lucent SAS},
+	number={7,460,482},
+	date={2008-12-02},
+	url={https://patents.google.com/patent/US7460482},
+	langid={english}
+}
+
+ at movie{Psycho1960,
+	title={Psycho},
+	howpublished={Film},
+	date={1960},
+	note={Regie: Alfred Hitchcock, 
+		Drehbuch: Joseph Stefano.
+		Nach dem Roman von Robert Bloch. 
+		Mit Anthony Perkins, Vera Miles, Janet Leigh.},
+	langid={english}
+}
+
+ at book{Sedgewick2011,
+	author={Sedgewick, Robert and Wayne, Kevin},
+	title={Algorithms},
+	publisher={Addison-Wesley},
+	location={Reading, MA},
+	date={2011},
+	edition={4},
+	langid={english}
+}
+
+ at book{ShostakovichOp110,
+	author={Shostakovich, Dimitri},
+	title={Streichquartett Nr.\ 8 in c-Moll, Op.\ 110},
+	editor={Hans Sikorski},
+	publisher={G. Schirmer},
+	location={New York},
+	date={1960},
+	langid={ngerman}
+}
+
+ at manual{Sommerfeldt2023,
+	author={Sommerfeldt, Axel},
+	title={Customizing captions of floating environments},
+	date={2023-07-10},
+	version={3.6},
+	url={https://mirrors.ctan.org/macros/latex/contrib/caption/caption.pdf},
+	langid={english}
+}
+
+ at software{SpringFramework,
+	title={Spring Framework},
+	url={https://github.com/spring-projects/spring-framework},
+	langid={english}
+}
+
+ at article{Vardavoulia2001,
+	author={Vardavoulia, Maria I. and Andreadis, Ioannis and Tsalides, Phillipos},
+	title={A new vector median filter for colour image processing},
+	journaltitle={Pattern Recognition Letters},
+	volume={22},
+	number={6-7},
+	pages={675-689},
+	date={2001},
+	doi={10.1016/S0167-8655(00)00141-0},
+	langid={english}
+}
+
+ at manual{Voss2014,
+	author={Voß, Herbert},
+	title={Math mode},
+	date={2014-01-30},
+	version={2.47},
+	url={https://mirrors.ctan.org/obsolete/info/math/voss/mathmode/Mathmode.pdf},
+	langid={english}
+}
+
+ at standard{WHATWGHTMLLivingStandard,
+	author={{Web Hypertext Application Technology Working Group}},
+	shortauthor={WHATWG},
+	title={HTML},
+	titleaddon={Living Standard},
+	date={2025-02-17},
+	url={https://html.spec.whatwg.org/multipage/},
+	langid={english}
+}
+
+ at online{WikiReliquienschrein2023,
+	title={Reliquienschrein},
+	url={https://de.wikipedia.org/wiki/Reliquienschrein},
+	date={2023-12-20},
+	urldate={2025-02-18},
+	langid={ngerman}
+}
+
+ at online{WikibooksLaTeXLengths2018,
+	title={LaTeX/Lengths},
+	url={https://en.wikibooks.org/wiki/LaTeX/Lengths},
+	date={2018-08-04},
+	urldate={2025-02-18},
+	langid={english}
+}
+
+ at audio{Zappa1995,
+	author={Zappa, Frank},
+	title={Freak Out!},
+	type={audiocd},
+	date={1995-05},
+	organization={Rykodisc, New York},
+	langid={english}
+}
+
+%% used in thesis proposal example:
+
+ at inproceedings{Finke2008,
+	author={Finke, Matthias and Tang, Anthony and Leung, Rock and Blackstock, Michael},
+	title={Lessons Learned: Game Design for Large Public Displays},
+	booktitle={Proceedings of the 3rd International Conference on Digital Interactive Media in Entertainment and Arts},
+	series={DIMEA '08},
+	pages={26-33},
+	date={2008},
+	publisher={ACM},
+	location={New York, NY, USA},
+	doi={10.1145/1413634.1413644},
+	langid={english}
+}
+
+ at inproceedings{Hochleitner2013,
+	author={Hochleitner, Wolfgang and Lankes, Michael and Diephuis, Jeremiah and Hochleitner, Christina},
+	title={Limelight -- Fostering Sociability in a Co-located Game},
+	booktitle={Proceedings of the CHI 2013 Workshop on Designing and Evaluating Sociability in Online Video Games},
+	series={CHI '13},
+	pages={23-28},
+	date={2013},
+	location={Paris, France},
+	langid={english}
+}
+
+ at book{Schell2019,
+	author={Schell, Jesse},
+	title={The Art of Game Design},
+	subtitle={A Book of Lenses},
+	publisher={CRC Press},
+	date={2019},
+	edition={3},
+	location={Boca Raton, FL, USA},
+	doi={10.1201/b22101},
+	langid={english}
+}


Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/bibtex/references.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hagenberg-thesis-tutorial-de.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hagenberg-thesis-tutorial-en.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hagenberg-thesis.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hagenberg-thesis.tex
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hagenberg-thesis.tex	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hagenberg-thesis.tex	2025-02-24 20:31:09 UTC (rev 74267)
@@ -1,8 +1,12 @@
+\RequirePackage[utf8]{inputenc} % remove when using lualatex oder xelatex!
+\RequirePackage{hgbpdfa}        % Creates a PDF/A-2b compliant document
+
 \documentclass[english]{hgbarticle}
 
-\RequirePackage[utf8]{inputenc}		% remove when using lualatex oder xelatex!
+%%%----------------------------------------------------------
+\begin{document}
+%%%----------------------------------------------------------
 
-
 \title{The \textsf{hagenberg-thesis} Package}
 \date{\hgbDate}
 
@@ -10,21 +14,22 @@
 University of Applied Sciences Upper Austria\\
 Department of Digital Media, Hagenberg (Austria)}
 
-
 %%%----------------------------------------------------------
-\begin{document}
-%%%----------------------------------------------------------
 \maketitle
 %%%----------------------------------------------------------
 
 \begin{abstract}\noindent
 The \textsf{hagenberg-thesis} package is a collection of modern LaTeX
-templates for university theses (bachelor, master, or diploma programs) and
-related documents. This manual describes the main features of this package.
+templates for university theses (bachelor, master, diploma or PhD programs) and
+related documents. This manual describes the main features of this package
+and how they may be customized.
 Pre-configured document templates for English and German manuscripts and a
 complete tutorial are available on the package's home repository.
 \end{abstract}
 
+\clearpage
+\tableofcontents
+\clearpage
 
 \section{Introduction}
 
@@ -46,9 +51,9 @@
 %
 \begin{itemize}
     \item \textbf{\texttt{hgbthesis}} (\texttt{book}):
-    for bachelor's, master's, and diploma theses;
+    for bachelor's, master's, diploma, and PhD theses,
     \item \textbf{\texttt{hgbreport}} (\texttt{report}):
-    for project and term reports;
+    for project and term reports,
     \item \textbf{\texttt{hgbarticle}} (\texttt{article}):
     for drafting journal articles.
 \end{itemize}
@@ -61,8 +66,10 @@
 All document classes accept the following general options:
 %
 \begin{itemize}
-    \item \texttt{english} or \texttt{german} (select the primary language),
-    \item \texttt{smartquotes} (use smart quotes replacement),
+    \item \texttt{english}|\texttt{german}: specifies the main document language,%
+		\footnote{With class \texttt{hgbthesis} this is equivalent to \texttt{language=english|german}.}
+	  \item \texttt{oneside}|\texttt{twoside}: document layout (default is \texttt{oneside}),
+    \item \texttt{smartquotes}: use smart quotes replacement (\verb!"!...\verb!"! $\rightarrow$ ``...''),
     \item \texttt{apa} (use \texttt{apa} bibliography style instead of
     \texttt{numeric-comp}),
     \item \texttt{noUpdateCheck} (suppress check of package release date).
@@ -72,48 +79,71 @@
 \subsubsection{Class-specific options}
 
 In addition, the following class-specific options are accepted:
-%
-\begin{itemize}
-    \item \textbf{\texttt{hgbthesis}}:
-    \texttt{master}, \texttt{diploma}, \texttt{bachelor}, \texttt{internship}, \texttt{proposal};
-    \item \textbf{\texttt{hgbreport}}: \texttt{notitlepage};
-    \item \textbf{\texttt{hgbarticle}}: \texttt{twocolumn}.
-\end{itemize}
-%
+
+\noindent\textbf{\texttt{hgbthesis}}:
+	\begin{itemize}
+		\item \texttt{type=}%
+			\{\texttt{bachelor}|\texttt{master}|\texttt{diploma}|\texttt{phd}|\texttt{internship}|\texttt{custom}\}:
+				thesis type,
+		\item \texttt{language=}\{\texttt{english}|\texttt{german}\}: main document language,%
+			\footnote{Note: The \texttt{german} option implicitly loads Babel's \texttt{ngerman} setup. 
+			When switching languages (see Sec.~\ref{sec:LanguageSwitchingCommands}) only \texttt{german}
+			should be used.}
+		\item \texttt{titlelanguage=}\{\texttt{english}|\texttt{german}\}: 
+			language on title pages, defaults to main document language if omitted,
+		\item \texttt{proposal}: flag to indicate proposal documents.
+	\end{itemize}
+
+\noindent\textbf{\texttt{hgbreport}}:
+	\begin{itemize}
+		\item \texttt{notitlepage}: no separate title page.
+	\end{itemize}
+		
+\noindent\textbf{\texttt{hgbarticle}}:
+	\begin{itemize}
+		\item \texttt{twocolumn}: two-column page layout,
+		\item \texttt{review}: review mode with line numbers.
+	\end{itemize}
+
+\noindent
 For example, to start a master's thesis in German, simply place
 %
 \begin{LaTeXCode}[numbers=none]
-\documentclass[master,german,smartquotes]{hgbthesis}
+\documentclass[type=master,language=german,smartquotes]{hgbthesis}
 \end{LaTeXCode}
 %
 at the beginning of the document.
 
-The \texttt{proposal} option is intended for a \emph{thesis proposal} (``Exposé'') and is 
-only effective in \emph{conjunction} with the \texttt{bachelor} and \texttt{master} 
-options, \eg,
+The \texttt{proposal} option is intended for a \emph{thesis proposal} (``Exposé'' or ``Proposal'' ) and is 
+only effective in \emph{conjunction} with the main thesis types, \eg,
 %
 \begin{LaTeXCode}[numbers=none]
-\documentclass[bachelor,proposal,german,smartquotes]{hgbthesis}
+\documentclass[type=bachelor,language=english,titlelanguage=german,proposal]{hgbthesis}
 \end{LaTeXCode}
 %
-This option is meant for a short exposé, containing only one chapter. Thus,
+The result is a short exposé that contains only one chapter. Thus,
 chapter numbers are not displayed. Remove the \texttt{proposal} option to
-migrate a proposal document to the final thesis (and restore the usual
+migrate a proposal document straight to the final thesis (and restore the usual
 numbering scheme).
 
-\subsection{Thesis parameters (class \texttt{hgbthesis})}
+The example also shows that the main document language (\texttt{language=english}) and the
+language on the title page (\texttt{titlelanguage=german}) can be set independently.
 
+\subsection{Thesis settings (class \texttt{hgbthesis})}
+
 \texttt{hgbthesis} supports several types of thesis documents. The following
-parameters must be specified for \emph{all} types:
+parameters must be specified at the beginning of the main document:
 %
 \begin{itemize}
     \item \verb!\title{...}!,
+    \item \verb!\subtitle{...}! (optional),
     \item \verb!\author{...}!,
-    \item \verb!\programtype{...}!,
+    \item \verb!\programtype{...}! (optional), 
     \item \verb!\programname{...}!,
+    \item \verb!\institution{...}!,
     \item \verb!\placeofstudy{...}!,
     \item \verb!\dateofsubmission{yyyy}{mm}{dd}!,
-    \item \verb!\advisor{...}! (optional).
+    \item \verb!\advisor[]{...}! (optional, multiple \verb!\advisor! statements allowed),
 \end{itemize}
 %
 Note that \texttt{hgbthesis} only supports a \emph{single author} inside the
@@ -120,37 +150,83 @@
 \verb!\author{...}! macro argument (commands \verb!\and! and
 \verb!\thanks{...}! are deactivated)!
 
+The command \verb!\advisor[role]{name}! accepts an optional argument to associate a \emph{role} 
+with the advisor's \emph{name}, \eg, \verb!\advisor[Supervisor]{Prof.~Marie Curie, PhD}!.
+Multiple advisors can be specified, for example
+%
+\begin{LaTeXCode}[numbers=none]
+  \advisor[1.~Betreuerin]{Professor Frida K.~Putnik, PhD}
+  \advisor[2.~Betreuer]{Franz Grillparzer, TU Wien}
+  \advisor[Gutachter]{Dr.~B.\,Rutal, MIT}
+\end{LaTeXCode}
 
+\noindent
+Other (optional) settings for \texttt{hgbthesis} include:
+\begin{itemize}
+    \item \verb!\license{cc|strict}!:
+    Use the \emph{Creative Commons License} (\texttt{cc} = default) or strict license terms
+      (``all rights reserved'').
+    \item \verb!\logofile{xxx.pdf}!:
+    %Specifies a custom logo image for the title page, to be placed in \verb!images/xxx.pdf!
+    %(default is \texttt{logo.pdf}). 
+		This command is \textbf{deprecated} -- the thesis logo 
+		should be specified in the associated \emph{theme} file instead (see Sec.~\ref{sec:Themes}).
+\end{itemize}
+
 \section{Style files and user commands}
 
 The package comes with a set of style (\texttt{*.sty}) files that can be used
 independently of the document classes listed above:
-\texttt{hgb.sty},
-\texttt{hgbabbrev.sty},
-\texttt{hgbbib.sty},
-\texttt{hgbheadings.sty},
-\texttt{hgblistings.sty},
-\texttt{hgbmath.sty}.
+\begin{itemize}
+  \item \texttt{hgb.sty}: language and date setup, custom commands;
+  \item \texttt{hgbabbrev.sty}: various abbreviation macros;
+  \item \texttt{hgbalgo.sty}: additions to \texttt{algpseudocodex} package;
+  \item \texttt{hgbbib.sty}: bibliography setup;
+  \item \texttt{hgbdict.sty}: language dictionary functions;
+  \item \texttt{hgbheadings.sty}: definition of page headers;
+  \item \texttt{hgblistings.sty}: setup for code listings;
+  \item \texttt{hgbmath.sty}: setup and commands for math typesetting;
+  \item \texttt{hgbpdfa.sty}: setup for PDF/A generation.
+\end{itemize}
 
-
 \subsection{General user commands and environments (\texttt{hgb.sty})}
+\label{sec:GeneralUserCommands}
 
 \begin{itemize}
-    \item \texttt{{\bs}hgbDate}: Outputs the package version date,
+   \item \textbf{\texttt{{\bs}hgbDate}}: Outputs the package version date,
     \eg, ``\texttt{\hgbDate}''.
-		\item \texttt{{\bs}getcurrentlabel}: Yields the most recently assigned
-		label number.
-    \item \verb!\calibrationbox{width}{height}!: Inserts a test box for
-    checking the final print size (in millimeters).
-		\item \verb!\begin{block}...\end{block}!: Dummy environment, provides
-		a limited scope for variable/command redefinitions.
-    \item \verb!\begin{english}...\end{english}!: Temporarily switches 
-		to English language settings.
-    \item \verb!\begin{german}...\end{german}!: Temporarily switches 
-		to German language settings.
+	\item \textbf{\texttt{{\bs}getcurrentlabel}}:
+			Yields the most recently assigned label number.
+   \item \textbf{\texttt{{\bs}calibrationbox}}\verb!{width}{height}!:
+			Inserts a test box for checking the final print size (in millimeters).
+	\item \verb!\begin{block}...\end{block}!:
+			Dummy environment, provides a limited scope for variable/command redefinitions.
 \end{itemize}
 
 
+\subsection{Language switching commands and smart quotes (\texttt{hgb.sty})}
+\label{sec:LanguageSwitchingCommands}
+
+\begin{itemize}
+	\item \verb!\SetLanguage{<language>}!:
+    Switches to the specified language.
+		This and the other language switching commands listed below
+		also refresh the \texttt{smartquotes} settings (if activated).
+	\item \verb!\begin{SwitchLanguage}{<language>}...\end{SwitchLanguage}!:
+    Temporarily switches to the specified language and reverts to the current language 
+		afterwards. 
+	\item \verb!\begin{english}...\end{english}!:
+    Temporarily switches to English language settings, short for
+		\verb!\begin{SwitchLanguage}{english}..!.
+	\item \verb!\begin{german}...\end{german}!:
+    Temporarily switches to German language settings, short for
+		\verb!\begin{SwitchLanguage}{german}..!.
+	\item \verb!\SmartquotesActive!:
+		For debugging only. Returns \texttt{true}/\texttt{false} if smart quotes are activated in
+		the current context (or an appropriate message if the \texttt{csquotes} package was not loaded at all).
+\end{itemize}
+
+
 \subsection{Text commands (\texttt{hgbabbrev.sty})}
 
 \subsubsection*{Special characters:}
@@ -166,37 +242,38 @@
 \subsubsection*{German abbreviations:}
 
 \begin{itemize}
-    \item \textbf{\texttt{{\bs}bzgl}}: bzgl.
-    \item \textbf{\texttt{{\bs}bzw}}: bzw.
-    \item \textbf{\texttt{{\bs}ca}}: ca.
-    \item \textbf{\texttt{{\bs}dah}}: d.\thinspace{}h.
-    \item \textbf{\texttt{{\bs}Dah}}: D.\thinspace{}h.
-    \item \textbf{\texttt{{\bs}ds}}: d.\thinspace{}sind
-    \item \textbf{\texttt{{\bs}etc}}: etc.
-    \item \textbf{\texttt{{\bs}evtl}}: evtl.
-    \item \textbf{\texttt{{\bs}ia}}: i.\thinspace{}Allg.
-    \item \textbf{\texttt{{\bs}sa}}: s.\ auch
-    \item \textbf{\texttt{{\bs}so}}: s.\ oben
-    \item \textbf{\texttt{{\bs}su}}: s.\ unten
-    \item \textbf{\texttt{{\bs}ua}}: u.\thinspace{}a.
-    \item \textbf{\texttt{{\bs}Ua}}: U.\thinspace{}a.
-    \item \textbf{\texttt{{\bs}uae}}: u.\thinspace{}\"A.
-    \item \textbf{\texttt{{\bs}usw}}: usw.
-    \item \textbf{\texttt{{\bs}uva}}: u.\thinspace{}v.\thinspace{}a.
-    \item \textbf{\texttt{{\bs}uvm}}: u.\thinspace{}v.\thinspace{}m.
-    \item \textbf{\texttt{{\bs}va}}: vor allem
-    \item \textbf{\texttt{{\bs}vgl}}: vgl.
-    \item \textbf{\texttt{{\bs}zB}}: z.\thinspace{}B.
-    \item \textbf{\texttt{{\bs}ZB}}: Zum Beispiel
+    \item \textbf{\texttt{{\bs}bzgl}}: 	\bzgl
+    \item \textbf{\texttt{{\bs}bzw}}: 	\bzw
+    \item \textbf{\texttt{{\bs}ca}}: 		\ca
+    \item \textbf{\texttt{{\bs}dah}}: 	\dah
+    \item \textbf{\texttt{{\bs}Dah}}: 	\Dah
+    \item \textbf{\texttt{{\bs}ds}}: 		\ds
+    \item \textbf{\texttt{{\bs}etc}}: 	\etc
+    \item \textbf{\texttt{{\bs}evtl}}: 	\evtl
+    \item \textbf{\texttt{{\bs}ia}}: 		\ia
+		\item \textbf{\texttt{{\bs}oa}}: 		\oa
+    \item \textbf{\texttt{{\bs}sa}}: 		\sa
+    \item \textbf{\texttt{{\bs}so}}: 		\so
+    \item \textbf{\texttt{{\bs}su}}: 		\su
+    \item \textbf{\texttt{{\bs}ua}}: 		\ua
+    \item \textbf{\texttt{{\bs}Ua}}: 		\Ua
+    \item \textbf{\texttt{{\bs}uae}}: 	\uae
+    \item \textbf{\texttt{{\bs}usw}}: 	\usw
+    \item \textbf{\texttt{{\bs}uva}}: 	\uva
+    \item \textbf{\texttt{{\bs}uvm}}: 	\uvm
+    \item \textbf{\texttt{{\bs}va}}: 		\va
+    \item \textbf{\texttt{{\bs}vgl}}: 	\vgl
+    \item \textbf{\texttt{{\bs}zB}}: 		\zB
+    \item \textbf{\texttt{{\bs}ZB}}: 		\ZB
 \end{itemize}
 
 \subsubsection*{English abbreviations:}
 
 \begin{itemize}
-    \item \textbf{\texttt{{\bs}ie}}: \ie
-    \item \textbf{\texttt{{\bs}eg}}: \eg
-    \item \textbf{\texttt{{\bs}etc}}: etc.
-    \item \textbf{\texttt{{\bs}Eg}}: \Eg
+    \item \textbf{\texttt{{\bs}ie}}: 	\ie
+    \item \textbf{\texttt{{\bs}eg}}: 	\eg
+    \item \textbf{\texttt{{\bs}etc}}: \etc
+    \item \textbf{\texttt{{\bs}Eg}}: 	\Eg
     \item \textbf{\texttt{{\bs}wrt}}: \wrt
 \end{itemize}
 
@@ -208,11 +285,13 @@
 \subsection{Bibliography commands (\texttt{hgbbib.sty})}
 
 \begin{itemize}
+    \item 
+    \textbf{\texttt{{\bs}AddBibFile}}\newline
+    A wrapper to \texttt{biblatex}'s \verb!\addbibresource! macro (for backward compatibility only).
     \item
-    \texttt{{\bs}AddBibFile}: A wrapper to \texttt{biblatex}'s
-    \verb!\addbibresource! macro (for backward compatibility only).
-    \item
-    \texttt{{\bs}MakeBibliography[\emph{options}]}: Inserts the
+    \textbf{\texttt{{\bs}MakeBibliography}}[\emph{options}]
+    \newline
+    Inserts the
     reference section or chapter. By default, references are automatically
     split into category subsections.%
     \footnote{Predefined reference categories are \texttt{literature},
@@ -220,12 +299,12 @@
     Use the option \texttt{nosplit} to produce a traditional (\ie,
     contiguous) list of references.
     \item
-    \texttt{{\bs}mcite%
+    \textbf{\texttt{{\bs}mcite}}%
         [\emph{text1}]\{\emph{key1}\}%
         [\emph{text2}]\{\emph{key2}\}%
         \ldots
         [\emph{textN}]\{\emph{keyN}\}%
-    }:
+    \newline
     Analogous to \texttt{bib\-la\-tex}'s \texttt{{\bs}cites} command%
     \footnote{%
     \url{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf}
@@ -254,6 +333,7 @@
     \item \textbf{\texttt{ObjCCode}}: for ObjectiveC,
     \item \textbf{\texttt{PhpCode}}: for PHP,
     \item \textbf{\texttt{PythonCode}}: for Python,
+    \item \textbf{\texttt{ScalaCode}}: for Scala,
     \item \textbf{\texttt{Swift}}: for Swift,
     \item \textbf{\texttt{XmlCode}}: for XML.
 \end{itemize}
@@ -264,6 +344,7 @@
 \footnote{\url{https://ctan.org/pkg/listings}}
 option may be used; for example, the option \texttt{numbers=none} to suppress
 line numbers:
+%
 \begin{LaTeXCode}[numbers=none]
     \begin{JavaCode}[numbers=none]
     ... // Java code comes here
@@ -341,9 +422,8 @@
 
 \paragraph{Defined algorithm colors:}
 \begin{itemize}
-    \item \textbf{\texttt{AlgKeywordColor}} (for algorithm keywords),
-    \item \textbf{\texttt{AlgProcedureColor}} (for procedure and function
-    names).
+    \item \textbf{\texttt{AlgKeywordColor}}: for algorithm keywords,
+    \item \textbf{\texttt{AlgProcedureColor}}: for procedure and function names.
 \end{itemize}
 These colors can be redefined at any time (see the \texttt{xcolor}%
 \footnote{\url{https://ctan.org/pkg/xcolor}}
@@ -354,13 +434,192 @@
 \end{LaTeXCode}
 
 
+\subsection{PDF/A generation (\texttt{hgbpdfa.sty})}
 
+Package \texttt{hgbpdfa} contains definitions for generating PDF/A-compliant 
+(PDF/A-2b) output files. It is based on the \texttt{pdfmanagement-testphase}
+package (requires version 0.95s or higher) and must be loaded before the
+\verb!\documentclass! statement in the main document, for example, by
+\begin{LaTeXCode}[numbers=none]
+\RequirePackage{hgbpdfa}
+\end{LaTeXCode}
+If omitted, a plain PDF (non-PDF/A-compliant) file is generated.
 
+
+
+\section{Custom front pages using \emph{themes}}
+\label{sec:Themes}
+
+The content and structure of the front pages generated for the various thesis types
+(\texttt{bachelor}, \texttt{master} \etc) may be easily customized to meet the specific
+requirements of different institutions or departments.
+Note that this kind of customization is typically done at the institutional level and not
+by the individual author (student).
+
+
+\subsection{Preconfigured themes}
+
+The various front page arrangements are called \emph{themes} in the following.
+Each theme is identified by a unique \texttt{\textit{themeID}} and associated with a 
+particular style file (\latex\ package) named 
+\texttt{hgbtheme-\textit{themeID}.sty}.
+For example, the theme with \texttt{\textit{themeID}} = \texttt{default} is defined 
+by the associated file
+\begin{itemize}
+  \item[] \texttt{hgbtheme-default.sty}.
+\end{itemize}
+%
+Additional resources required by a theme (such as graphics files) must be named with the 
+complete \emph{theme name} (\texttt{hgbtheme-\textit{themeID}})
+as a prefix, for example,%
+\footnote{This is to avoid file name conflicts since themes are part of the 
+CTAN distribution and thus all theme-related files will eventually end up in a single, 
+flat directory.}
+\begin{itemize}
+	\item[] \texttt{hgbtheme-default-logo.pdf}
+\end{itemize}
+%
+which contains the logo graphics used by that theme.
+
+To \emph{use} a specific theme, option \texttt{theme=\textit{themeID}}
+is added to the \verb!\documentclass! command, for example,
+\begin{itemize}
+	\item[] \verb!\documentclass[theme=default,...]{hgbthesis}!
+\end{itemize}
+
+
+\subsection{Customizing themes}
+\label{sec:CustomizingThemes}
+
+To customize the title page setup to their needs, authors (or administrators) should 
+\emph{not} modify any of the standard theme files, since these may not be local but loaded
+from a package distribution.
+There are two recommended ways instead:
+
+\subsubsection{Option 1: Adapt \texttt{hgbtheme-custom.sty}}
+
+Copy the theme file \texttt{hgbtheme-custom.sty} (which is part of this distribution) to the 
+\emph{main document directory} (if not there already) and open it in your LaTeX editor.
+It defines \texttt{hgbtheme-default.sty} as the parent theme by the initial command
+\begin{LaTeXCode}[numbers=none]
+\hgb at UseTheme{default}
+\end{LaTeXCode}
+%
+All commands defined in the parent theme are visible and may be redefined,
+typically by \verb!\renewcommand! (see Sec.\ \ref{sec:ThemeStyleCommands}
+for available commands).
+To activate the associated theme simply use \texttt{custom} as the \texttt{\textit{themeID}}
+in the associated document option, \ie,
+%
+\begin{LaTeXCode}[numbers=none]
+\documentclass[theme=custom,...]{hgbthesis}
+\end{LaTeXCode}
+%
+This is the simplest approach if only a \emph{single} custom theme is needed.
+
+\subsubsection{Option 2: Create multiple custom themes}
+
+Thesis administrators may find it useful to define \emph{multiple} custom themes for their
+institution or department(s).
+For this purpose, simply copy file \texttt{hgbtheme-default.sty} or \texttt{hgbtheme-custom.sty}
+to a new file, \eg, \texttt{hgbtheme-physics.sty},%
+\footnote{To be placed in the main document directory. Note the naming conventions!}
+and modify it accordingly. The associated theme can then be invoked by
+%
+\begin{LaTeXCode}[numbers=none]
+\documentclass[theme=physics,...]{hgbthesis}
+\end{LaTeXCode}
+%
+An error will be raised if the associated \texttt{.sty} file cannot be found.
+
+
+
+\subsection{Commands and variables available to custom theme styles}
+\label{sec:ThemeStyleCommands}
+
+Any theme style must at least define the command
+\begin{itemize}
+  \item[] \verb!\hgb at MakeFrontPages{..}!
+\end{itemize}
+which is pre-defined (as throwing an error) in \texttt{hgbthesis.cls}
+and invoked by \verb!\maketitle!.
+If \texttt{default} is used as the parent theme, \verb!\hgb at MakeFrontPages! 
+is already set up properly and redefinition is optional, \ie,
+%
+\begin{LaTeXCode}[numbers=none]
+\hgb at UseTheme{default}		% parent theme
+\renewcommand{\hgb at MakeFrontPages}{..}	% optional
+\end{LaTeXCode}
+%
+
+\noindent
+Moreover, the following macros and variables are assured to be available for defining custom themes
+(see \texttt{hgbtheme-default.sty} for their typical usage).
+These are defined in \texttt{hgbthesis.cls} and should \emph{not} be redefined:
+%
+\begin{itemize}
+  \item[] \verb!\hgb at Author!
+  \item[] \verb!\hgb at Title!
+  \item[] \verb!\hgb at SubTitle!
+  \item[] \verb!\hgb at Institution!
+  \item[] \verb!\hgb at ProgramType!
+  \item[] \verb!\hgb at ProgramName!
+  \item[] \verb!\hgb at PlaceOfStudy!
+\medskip
+	\item[] \verb!\hgb at ThesisName!
+	\item[] \verb!\hgb at ProposalName!
+\medskip
+  \item[] \verb!\hgb at AdvisorCount!
+  \item[] \verb!\hgb at getAdvisorRole{<number>}!
+  \item[] \verb!\hgb at getAdvisorName{<number>}!
+\medskip
+  \item[] \verb!\hgb at MainLanguage!
+  \item[] \verb!\hgb at TitleLanguage!
+  \item[] \verb!\hgb at TitlePageFont!
+  %\item[] \verb!\hgb at LogoFile!
+\medskip 
+  %\item[] \verb!\hgb at Advisor!
+  \item[] \verb!\hgb at SubmissionYear!
+  \item[] \verb!\hgb at SubmissionMonth!
+  \item[] \verb!\hgb at SubmissionDay!
+  \item[] \verb!\hgb at GetMonthName{<language>}{<monthnumber>}!
+\medskip
+	\item[] \verb!\hgb at License!
+\medskip
+  \item[] \verb!hgb at IsProposal! (\emph{boolean}, without \verb!\!)
+\end{itemize}
+
+\noindent
+Class \texttt{hgbthesis.cls} also defines a special \emph{hook}
+\begin{itemize}
+\item[] \verb!hgb at InitThemeHook!
+\end{itemize}
+for adding custom initialization code for the current theme in the form
+%
+\begin{LaTeXCode}[numbers=none]
+\AddToHook{hgb at InitThemeHook}{<initialization code>},
+\end{LaTeXCode}
+%
+typically placed at the beginning of the theme file. The collected code for
+this hook is executed immediately \emph{before} \verb!\maketitle!.
+
+
+In addition, theme \texttt{hgbtheme-default.sty} defines the following
+commands for generating individual title pages:
+%
+\begin{itemize}
+  \item[] \verb!\hgb at MakeTitlePage!
+  \item[] \verb!\hgb at MakeAdvisorPage!
+  \item[] \verb!\hgb at MakeCopyrightPage!
+  \item[] \verb!\hgb at MakeDeclarationPage!
+\end{itemize}
+%
+Each of these may be redefined by inheriting themes.
+
 \section{Package dependencies}
 
 \begin{sloppypar}
-The \texttt{hagenberg-thesis} package builds on the following \latex\
-packages:\newline
+The \texttt{hagenberg-thesis} package builds on the following \latex\ packages:\newline
 \texttt{abstract}, 
 \texttt{algorithm}, 
 \texttt{algorithmicx}, 
@@ -378,11 +637,12 @@
 \texttt{datetime2}, 
 \texttt{enumitem}, 
 \texttt{epstopdf}, 
-\texttt{eurosym}, 
-\texttt{exscale}, 
+\texttt{exscale},
+\texttt{extramarks},
 \texttt{fancyhdr}, 
 \texttt{float}, 
-\texttt{fontenc}, 
+\texttt{fontenc},
+\texttt{forloop},
 \texttt{geometry}, 
 \texttt{graphicx}, 
 \texttt{hypcap}, 
@@ -390,10 +650,13 @@
 \texttt{ifpdf}, 
 \texttt{inputenc}, 
 \texttt{lengthconvert},
+\texttt{lineno},
 \texttt{listingsutf8}, 
-\texttt{lmodern}, 
+\texttt{lmodern},
+\texttt{marvosym}, 
 \texttt{moreverb}, 
 \texttt{overpic}, 
+\texttt{pdfmanagement-testphase}, 
 \texttt{pdfpages}, 
 \texttt{pict2e}, 
 \texttt{subdepth}, 

Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-default-logo.pdf
===================================================================
(Binary files differ)

Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-default-logo.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-default-logo.pdf	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-default-logo.pdf	2025-02-24 20:31:09 UTC (rev 74267)

Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-default-logo.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-fhooe24-coverbackground.pdf
===================================================================
(Binary files differ)

Index: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-fhooe24-coverbackground.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-fhooe24-coverbackground.pdf	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-fhooe24-coverbackground.pdf	2025-02-24 20:31:09 UTC (rev 74267)

Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/hagenberg-thesis/hgbtheme-fhooe24-coverbackground.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Modified: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgb.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgb.sty	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgb.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -2,35 +2,39 @@
 %% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
 %% Author: Wilhelm Burger (wilbur at ieee.org)
 %% GitHub: https://github.com/Digital-Media/HagenbergThesis
-%% File encoding: ASCII
+%% File encoding: UTF-8
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{hgb}[2023/02/13]%%AUTO
+\ProvidesPackage{hgb}[2025/02/24]%%AUTO
 \typeout{******************* hgb.sty  (options=\@nameuse{opt at hgb.sty}) ***********************}
 
 % Create a default/fallback main language so it is set no matter what
-\providecommand{\hgb at MainLanguage}{german}
+\providecommand{\hgb at MainLanguage}{german}  	% also defined in hgbthesis.cls
+\providecommand{\hgb at TitleLanguage}{}  				% also defined in hgbthesis.cls
 
+
 \RequirePackage{xifthen}
+\RequirePackage{hgbdict}
 
 \newboolean{hgb at SmartQuotesOn}
 \setboolean{hgb at SmartQuotesOn}{false}	% smart quotes are turned off by default
 
-\newboolean{hgb at noUpdateCheck}
-\setboolean{hgb at noUpdateCheck}{false}	% update check is perfomed by default
+\newboolean{hgb at NoUpdateCheck}
+\setboolean{hgb at NoUpdateCheck}{false}	% update check is perfomed by default
 
 % Handle package options passed from the class file
-\DeclareOption{english}{\renewcommand{\hgb at MainLanguage}{english}}
-\DeclareOption{german}{\renewcommand{\hgb at MainLanguage}{german}}
-\DeclareOption{ngerman}{\renewcommand{\hgb at MainLanguage}{german}}
-\DeclareOption{smartquotes}{\setboolean{hgb at SmartQuotesOn}{true}}
-\DeclareOption{noUpdateCheck}{\setboolean{hgb at noUpdateCheck}{true}}
-\DeclareOption*{\ClassWarning{hgb}{Unknown option '\CurrentOption'.}}
+% Language options are not passed through by hgbthesis.cls!
+\DeclareOption{english}{\renewcommand{\hgb at MainLanguage}{english}\typeout{hgb.sty: option 'english' used}}
+\DeclareOption{german}{\renewcommand{\hgb at MainLanguage}{german}\typeout{hgb.sty: option 'german' used}}
+\DeclareOption{ngerman}{\renewcommand{\hgb at MainLanguage}{german}\typeout{hgb.sty: option 'ngerman' used}}
+
+\DeclareOption{smartquotes}{\setboolean{hgb at SmartQuotesOn}{true}\typeout{hgb.sty: option 'smartquotes' used}}
+\DeclareOption{noUpdateCheck}{\setboolean{hgb at NoUpdateCheck}{true}}
+\DeclareOption*{\PackageWarning{hgb}{Unknown option '\CurrentOption'.}}
 \ProcessOptions*
 
 %% Required Packages ----------------------------------------------------------
 
-
 \RequirePackage{lmodern}				% use Latin Modern Fonts
 \RequirePackage{cmap}						% make generated PDF files "searchable and copyable"
 \RequirePackage[utf8]{inputenc}
@@ -38,31 +42,63 @@
 
 % Set main language by selectively loading babel with the 'main' parameter (babel 3.9+)
 \ifthenelse{\equal{\hgb at MainLanguage}{german}}%
-	{\RequirePackage[english,main=ngerman]{babel}}{}
+	{\RequirePackage[main=ngerman,english]{babel}}{}
 \ifthenelse{\equal{\hgb at MainLanguage}{english}}%
 	{\RequirePackage[main=english,ngerman]{babel}}{}
 
-%% Setup for smart quotes (csquotes package) -- experimental! ----------------------------------
-	
-\ifthenelse{\boolean{hgb at SmartQuotesOn}}{
+% If title language has not been set make it the same as main language:
+\ifthenelse{\equal{\hgb at TitleLanguage}{}}%
+	{\renewcommand{\hgb at TitleLanguage}{\hgb at MainLanguage}}{}%
+
+%% Setup for smart quotes (csquotes package) ----------------------------------
+
+\newcommand{\SmartQuotesActive}{'csquotes' not loaded}
+
+% Turn smartquotes on depending on document settings:
+\newcommand{\@SmartQuotesRefresh}{%
+	\ifthenelse{\boolean{hgb at SmartQuotesOn}}{\@enablequotes}{}%	instead of '\EnableQuotes' to allow smartquotes in preamble
+}
+
+\ifthenelse{\boolean{hgb at SmartQuotesOn}}{%
 	\languageshorthands{none}%			%% turn off babel's shorthands (permanently)
 	\usepackage[autostyle=true,german=quotes]{csquotes}%
 	\MakeOuterQuote{"}%
-	\EnableQuotes}{}
+	\renewcommand{\SmartQuotesActive}{\iftoggle{csq at active}{true}{false}}%
+	\@SmartQuotesRefresh}%
+{}%
 
-%% Language environments ------------------------------------------------------
 
-% Switch from German to English (babel)
+%% Language setting commands and environments (babel) -------------------------
+
+% Switch to the specified language. This is only a wrapper around babel's \selectlanguage{} command,
+% replacing 'german' by 'ngerman'.
+\newcommand{\SetLanguage}[1]{% usage example: \SetLanguage{english} 
+	\edef\@tmpLang{#1}%	must expand argument!
+	\ifthenelse{\equal{\@tmpLang}{german}}{\def\@tmpLang{ngerman}}{}%	 needed to make babel treat 'german' as 'ngerman'
+	\selectlanguage{\@tmpLang}%
+	%\ifthenelse{\boolean{hgb at SmartQuotesOn}}{\@enablequotes}{}
+	\@SmartQuotesRefresh\ignorespaces%		needed!
+}
+
+% Temporarily switch to another language
+\newenvironment{SwitchLanguage}[1]{% usage example: \begin{SwitchLanguage}{english} ... \end{SwitchLanguage}
+	\edef\@tmpLang{#1}%	must expand argument!
+	\ifthenelse{\equal{\@tmpLang}{german}}{\def\@tmpLang{ngerman}}{}%	 needed to make babel treat 'german' as 'ngerman'
+	\begin{otherlanguage}{\@tmpLang}%
+	%\ifthenelse{\boolean{hgb at SmartQuotesOn}}{\@enablequotes}{}%
+	\@SmartQuotesRefresh\ignorespaces% 	needed!
+}%
+{\end{otherlanguage}\ignorespacesafterend}%
+
+% Temporarily switch to English (short for '\begin{SwitchLanguage}{english} ... \end{SwitchLanguage}')
 \newenvironment{english}%
-{\begin{otherlanguage}{english}%
-	\ifthenelse{\boolean{hgb at SmartQuotesOn}}{\EnableQuotes}{}}%
-{\end{otherlanguage}\ignorespacesafterend}% 
+	{\begin{SwitchLanguage}{english}}%
+	{\end{SwitchLanguage}\ignorespacesafterend}%
 
-% Switch from English to German (babel)
+% Temporarily switch to German (short for '\begin{SwitchLanguage}{german} ... \end{SwitchLanguage}')
 \newenvironment{german}%
-{\begin{otherlanguage}{ngerman}%
-	\ifthenelse{\boolean{hgb at SmartQuotesOn}}{\EnableQuotes}{}}%
-{\end{otherlanguage}}%
+	{\begin{SwitchLanguage}{german}}%
+	{\end{SwitchLanguage}\ignorespacesafterend}%
 
 
 %% Date-related stuff ---------------------------------------------------------
@@ -81,14 +117,16 @@
     %\DTMdate{\myYear-\myMonth-\myDay}%
 }
 
-\PackageToDTMdate{\hgbDate}{hgbPackageDate}	% converts package date to DTM format: \DTMusedate{hgbPackageDate}
-\DTMsavenoparsedate{hgbToday}{\the\year}{\the\month}{\the\day}{-1} % today's date in DTM format: \DTMusedate{hgbToday}
+\PackageToDTMdate{\hgbDate}{hgb at PackageDate}	% converts package date to DTM format: \DTMusedate{hgbPackageDate}
+\DTMsavenow{hgb at Today} % today's date in DTM format: \DTMusedate{hgbToday}
 
-\newcounter{hgbAgeLimit}\setcounter{hgbAgeLimit}{365}	% warn if package is older than 1 year
+\newcounter{hgb at AgeLimit}
+\setcounter{hgb at AgeLimit}{365}	% warn if package is older than 1 year
+
 \newcount\hgbAge
-\DTMsaveddatediff{hgbToday}{hgbPackageDate}{\hgbAge}
+\DTMsaveddatediff{hgb at Today}{hgb at PackageDate}{\hgbAge}
 
-\newcommand{\hgbWarnOldPackage}[1]{\PackageWarning{hagenberg-thesis}{%
+\newcommand{\hgb at WarnOldPackage}[1]{\PackageWarning{hagenberg-thesis}{%
 ^^J****************************************************************
 ^^JNOTE: 'hagenberg-thesis' is #1 days old - pls. check for updates 
 ^^Jat https://github.com/Digital-Media/HagenbergThesis
@@ -96,15 +134,20 @@
 ^^J} % https://tex.stackexchange.com/questions/6529/newline-linebreak-in-message
 }
 
-\ifthenelse{\hgbAge>\value{hgbAgeLimit} \AND \NOT \boolean{hgb at noUpdateCheck}}%
-	{\hgbWarnOldPackage{\the\hgbAge}}{}
+\ifthenelse{\hgbAge>\value{hgb at AgeLimit} \AND \NOT \boolean{hgb at NoUpdateCheck}}%
+	{\hgb at WarnOldPackage{\the\hgbAge}}{}
 
 
 %% ------------------------------------------------------
 
 \RequirePackage{upquote} 			% uses "right" quotes in the verbatim environment
-\RequirePackage{eurosym}			% provides \euro - conflict with marvosym on \EUR!
+\RequirePackage{marvosym}
+\providecommand{\euro}[0]{\EUR\xspace}  % for compatibility with 'eurosym' macro
 
+\RequirePackage{soul}           % for inserting additional space between letters
+  \let\@addspaces\so            % rename soul's \so command to @addspaces
+  \let\so\relax                 % shadow \so command (already defined in hgbabbrev.sty)
+
 \RequirePackage{graphicx}
 \RequirePackage[percent]{overpic}	% to allow text/graphics overlays on pictures
 \RequirePackage{pict2e}				% extends the LaTeX 'picture' environment		
@@ -130,15 +173,14 @@
 
 
 %% hyperref Setup -------------------------------------------------------------
-
 \RequirePackage[unicode]{hyperref}	% utf8-change
 \hypersetup{
-	linktocpage = true,				% make page number, not text, be link on TOC, LOF and LOT 
-	colorlinks = false,				% don't uses colored links (because this shows up in printing!) 
-	pdfborder = {0 0 0.5},			% use a thinner (0.5pt) border around all PDF links
-	allbordercolors = {0 0 0.8},	% dark blue border for all types of links
-	breaklinks = true				% allow links to break over lines by making links over multiple lines
-}	%see https://www.tug.org/applications/hyperref/manual.html
+	linktocpage=true,				  % make page number, not text, be link on TOC, LOF and LOT 
+	colorlinks=false,				  % don't uses colored links (because this shows up in printing!) 
+	pdfborder={0 0 0.5},			% use a thinner (0.5pt) border around all PDF links
+	allbordercolors={blue},	  % this only works with a named color, any effect?
+	%breaklinks = true				% allow links to break over lines by making links over multiple lines (obsolete)
+}
 
 % Redefine certain commands for bookmarks and meta-data
 \let\oldand\and
@@ -188,6 +230,17 @@
 \newcommand{\ShowParameter}[1]{\the#1\showthe#1} % to display TeX parameters
 %Beispiel: clubpenalty = \ShowParameter{\clubpenalty}
 
+% The supplied text is formatted either justified or centered, depending on its length
+% (modeled after internal \@makecaption macro).
+\newcommand{\hgbJustifyOrCenter}[1]{
+	\sbox\@tempboxa{#1}%
+	\ifdim \wd\@tempboxa >\hsize
+		\begin{sloppypar}\noindent#1\end{sloppypar}  % long text, format as block
+	\else
+		\global \@minipagefalse
+		\hb at xt@\hsize{\hfil\box\@tempboxa\hfil}%  % short text, format centered
+	\fi
+}
 
 %% Layout Settings ------------------------------------------------------------
 
@@ -213,7 +266,6 @@
 	\renewcommand{\footnote}[1]{\@WarnFootnoteInCaption\relax}#1}
 \captionsetup{textformat=nofootnotes}
 
-
 % Make float placement easier    
 \renewcommand{\floatpagefraction}{.9}	% previously: .5
 \renewcommand{\textfraction}{.1}		% previously: .2
@@ -246,9 +298,6 @@
 
 % Setup for Table of Contents (ToC)
 
-%\RequirePackage[tocgraduated,tocbreaksstrict]{tocstyle}%		%% Note: tocstyle is unsupported!
-%\usetocstyle{classic}%
-
 \RequirePackage{tocbasic}%				%% tocbasic is part of koma script
 \DeclareTOCStyleEntry[entryformat=\bfseries\textsf]{tocline}{chapter}%
 
@@ -261,13 +310,36 @@
 
 \floatstyle{plain}
 \restylefloat*{program}
-	
-\ifthenelse{\equal{\bbl at main@language}{german} \or \equal{\bbl at main@language}{ngerman}}%
-	{\floatname{program}{Programm}}{}%
 
-\ifthenelse{\equal{\bbl at main@language}{english}}%
-	{\floatname{program}{Program}}{}%
+\hgbDictionarySet{program-env-name}{english}{Program}
+\hgbDictionarySet{program-env-name}{german}{Programm}
 
+
+%% Add \DocumentMetadata settings ---------------------------------------
+
+\hgbDictionarySet{iso-language-code}{english}{en}
+\hgbDictionarySet{iso-language-code}{german}{de}
+\hgbDictionarySet{iso-language-code}{ngerman}{de}
+\hgbDictionarySet{iso-language-code}{french}{fr}
+% ... etc.
+
+\newcommand{\hgb at SetDocumentMetadata}{%
+	\def\theLang{\hgbDictionaryGet{iso-language-code}{\hgb at MainLanguage}}%
+	\ifthenelse{\equal{\theLang}{\hgbDictionaryUndefined}}%
+		{\PackageWarning{hgb}{Unknown main document language '\hgb at MainLanguage' (set to 'en').}%
+		 \DocumentMetadata{lang=en}}%			use en as default
+		{\DocumentMetadata{lang=\theLang}}%
+	% there may be more settings to come ...
+}
+
+\AtBeginDocument{%
+  \hgb at SetDocumentMetadata%		This may only be called in the document preamble!
+}%
+
+\AtBeginDocument{%
+	\floatname{program}{\hgbDictionaryGet{program-env-name}{\hgb at MainLanguage}}%
+}%
+
 %% Experimental items ---------------------------------------------------------
 
 \newenvironment{NarrowList}%
@@ -331,7 +403,6 @@
 \RequirePackage{longtable}
 \RequirePackage{multirow}
 
-
 %% Prevent subfigure package from being loaded -------------------------------
 
 % The subfigure package is DEPRECATED (see https://ctan.org/pkg/subfigure)!

Modified: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbabbrev.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbabbrev.sty	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbabbrev.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -4,12 +4,12 @@
 %% GitHub: https://github.com/Digital-Media/HagenbergThesis
 %% File encoding: ASCII
 
-\ProvidesPackage{hgbabbrev}[2023/02/13]%%AUTO
+\ProvidesPackage{hgbabbrev}[2025/02/24]%%AUTO
 
 \newcommand{\latex}{La\-TeX\xspace}	% no ornamental LaTeX anymore
-\newcommand{\tex}{TeX\xspace}		% no ornamental LaTeX anymore
-\newcommand{\bs}{\textbackslash}	% backslash character
-\newcommand{\obnh}{\hskip 0pt }		%optional break without hyphen: e.g. PlugIn{\obnh}Filter
+\newcommand{\tex}{TeX\xspace}		    % no ornamental LaTeX anymore
+\newcommand{\bs}{\textbackslash}	  % backslash character
+\newcommand{\obnh}{\hskip 0pt}		  % optional break without hyphen: e.g. PlugIn{\obnh}Filter
 %\newcommand{\optbreaknh}{\hskip 0pt } %obsolete, replaced by above
 
 % Miscellaneous abbreviations (in dependance on Jochen Kuepper, jkthesis):
@@ -26,6 +26,7 @@
 \newcommand{\etc}{etc.\@\xspace}
 \newcommand{\evtl}{evtl.\@\xspace}
 \newcommand{\ia}{i.\thinspace{}Allg.\@\xspace}
+\newcommand{\oa}{o.a.\@\xspace}
 \newcommand{\sa}{s.\ auch\@\xspace}
 \newcommand{\so}{s.\ oben\xspace}
 \newcommand{\su}{s.\ unten\@\xspace}

Modified: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbalgo.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbalgo.sty	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbalgo.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -11,7 +11,7 @@
 %% GitHub: https://github.com/Digital-Media/HagenbergThesis
 %% File encoding: ASCII
 
-\ProvidesPackage{hgbalgo}[2023/02/13]%%AUTO
+\ProvidesPackage{hgbalgo}[2025/02/24]%%AUTO
 
 \RequirePackage[noEnd=true,indLines=true,italicComments=false]{algpseudocodex}	% https://ctan.org/pkg/algpseudocodex
 \RequirePackage{calc}				% for numeric calculations

Modified: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbarticle.cls
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbarticle.cls	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbarticle.cls	2025-02-24 20:31:09 UTC (rev 74267)
@@ -8,7 +8,7 @@
 %% Package Information --------------------------------------------------------
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{hgbarticle}[2023/02/13]%%AUTO
+\ProvidesClass{hgbarticle}[2025/02/24]%%AUTO
 
 \RequirePackage{xifthen}
 
@@ -17,10 +17,18 @@
 \else{\errmessage{hgbarticle: *** LaTeX NOT running in PDF mode ***}}
 \fi
 
+%% Variable definitions -------------------------------------------------------
+
+\newboolean{reviewmode}
+\setboolean{reviewmode}{false}
+
 %% Handling class options --------------------------------------------------------------
 
+\DeclareOption{oneside}{\PassOptionsToClass{\CurrentOption}{article}}	% default
+\DeclareOption{twoside}{\PassOptionsToClass{\CurrentOption}{article}}
 \DeclareOption{twocolumn}{\PassOptionsToClass{\CurrentOption}{article}}
 \DeclareOption{apa}{\PassOptionsToPackage{\CurrentOption}{hgbbib}}
+\DeclareOption{review}{\setboolean{reviewmode}{true}}
 % pass all other options to hgb.sty
 \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{hgb}}
 \ProcessOptions*
@@ -35,12 +43,37 @@
 \RequirePackage[top=36mm,bottom=40mm,left=32mm,right=32mm]{geometry} %showframe
 \fi%
 
-\RequirePackage{hgb}	% load style file hgb.sty with options registered above
+%% Review mode with line numbers ----------------------------------------------
 
+\ifthenelse{\boolean{reviewmode}}%
+	{%
+		\if at twocolumn%
+			% When in two-column mode, use switch to display line numbers right of the second column
+			\RequirePackage[mathlines,switch]{lineno}%
+		\else%
+			\RequirePackage[mathlines]{lineno}%
+		\fi%
+		\renewcommand{\linenumberfont}{\sffamily\tiny\color{gray}}%
+		\linenumbers%
+	}%
+	{}%
 
-%% Set title font to SF
+% load style file hgb.sty with options registered above	
+\RequirePackage{hgb}
+
+%% Set title font to SF and inject PDF meta-data
 \RequirePackage{titling}
-\renewcommand{\maketitlehooka}{\sffamily}
+\renewcommand{\maketitlehooka}{%
+  \sffamily%
+  \hypersetup{
+		pdftitle={\thetitle},   % \thetitle is defined by titling package (instead of \@title)
+		pdfauthor={\theauthor}, % \theauthor is defined by titling package (instead of \@author)
+		pdfsubject={},
+		pdfcreator={LaTeX using class hgbreport [\hgbDate]},
+		pdfproducer={pdflatex},
+		pdfkeywords={}
+	}%
+}
 
 %% Set abstract name to bold (single column format only)
 \if at twocolumn%
@@ -49,20 +82,6 @@
 \renewcommand{\abstractnamefont}{\sffamily\small\bfseries}
 \fi%
 
-% Add PDF meta data
-
-\AtBeginDocument{%
-	\hypersetup{
-		pdftitle={\@title},
-		pdfauthor={\@author},
-		pdfsubject={},
-		pdfcreator={LaTeX using class hgbarticle [\hgbDate]},
-		pdfproducer={pdflatex},
-		pdfkeywords={}
-	}%
-}%
-
-
 %% Additional Hagenberg packages ----------------------------------------------
 
 \RequirePackage{hgbmath}

Modified: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbbib.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbbib.sty	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbbib.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -5,7 +5,7 @@
 %% GitHub: https://github.com/Digital-Media/HagenbergThesis
 %% File encoding: ASCII
 
-\ProvidesPackage{hgbbib}[2023/02/13]%%AUTO
+\ProvidesPackage{hgbbib}[2025/02/24]%%AUTO
 
 \newcommand{\@bibstyle}{numeric-comp}	%% default bibliography style is 'numeric-comp'
 \DeclareOption{apa}{\renewcommand{\@bibstyle}{apa}}
@@ -27,20 +27,32 @@
 	
 \RequirePackage{csquotes}				% recommended for biblatex
 
+%% set up dictionary terms
+
+\RequirePackage{hgbdict}
+
+\hgbDictionarySet{bibtitle}{english}{References}
+\hgbDictionarySet{bibtitle}{german}{Quellenverzeichnis}
+
+\hgbDictionarySet{bibtitleLiterature}{english}{Literature}
+\hgbDictionarySet{bibtitleLiterature}{german}{Literatur}
+
+\hgbDictionarySet{bibtitleMedia}{english}{Media}
+\hgbDictionarySet{bibtitleMedia}{german}{Medien}
+
+\hgbDictionarySet{bibtitleOnline}{english}{Online sources}
+\hgbDictionarySet{bibtitleOnline}{german}{Online-Quellen}
+
+\hgbDictionarySet{bibtitleSoftware}{english}{Software}
+\hgbDictionarySet{bibtitleSoftware}{german}{Software}
+
 %% titles of reference section + 3 categories of references:
-\newcommand{\@bibtitle}{Quellenverzeichnis}
-\newcommand{\@bibtitleLiteratur}{Literatur}
-\newcommand{\@bibtitleMedia}{Medien}
-\newcommand{\@bibtitleOnline}{Online-Quellen}
-\newcommand{\@bibtitleSoftware}{Software}	
 
-\ifthenelse{\equal{\hgb at MainLanguage}{english}}{%
-	\renewcommand{\@bibtitle}{References}
-	\renewcommand{\@bibtitleLiteratur}{Literature}
-	\renewcommand{\@bibtitleMedia}{Media}
-	\renewcommand{\@bibtitleOnline}{Online sources}	
-	\renewcommand{\@bibtitleSoftware}{Software}
-}{}
+\newcommand{\@bibtitle}{\hgbDictionaryGet{bibtitle}{\hgb at MainLanguage}}
+\newcommand{\@bibtitleLiterature}{\hgbDictionaryGet{bibtitleLiterature}{\hgb at MainLanguage}}
+\newcommand{\@bibtitleMedia}{\hgbDictionaryGet{bibtitleMedia}{\hgb at MainLanguage}}
+\newcommand{\@bibtitleOnline}{\hgbDictionaryGet{bibtitleOnline}{\hgb at MainLanguage}}
+\newcommand{\@bibtitleSoftware}{\hgbDictionaryGet{bibtitleSoftware}{\hgb at MainLanguage}}
 
 %% categories for a split bibliography (order of declaration is important!)
 \DeclareBibliographyCategory{literature}
@@ -51,8 +63,8 @@
 %% headings for the bibliography categories
 \defbibheading{literature}{%
 	\phantomsection%
-	\section*{\@bibtitleLiteratur}%
-	\addcontentsline{toc}{section}{\@bibtitleLiteratur}%
+	\section*{\@bibtitleLiterature}%
+	\addcontentsline{toc}{section}{\@bibtitleLiterature}%
 }
 
 \defbibheading{media}{%
@@ -107,41 +119,70 @@
 	\addbibresource{#1}%
 }
 
-% Declare a source map so the sorting in \cite commands works across the bib categories
-% The maps need to correspond to the entry types in the bib categories (which can't unfortunately used)
+% Declare a source map so the sorting in \cite commands works across the bib
+% categories. % The maps need to correspond to the entry types in the bib
+% categories (which unfortunately can't be used directly). The source map adds
+% the presort field with values from A to D that is responsible for sorting in
+% the four categories.
 \DeclareSourcemap{
-  \maps[datatype=bibtex]{
-    \map{ % All entry types except for media, software and online
-      \pernottype{movie}
-	  \pernottype{video}
-	  \pernottype{music}
-	  \pernottype{audio}
-	  \pernottype{image}
-	  \pernottype{software}
-	  \pernottype{electronic}
-	  \pernottype{online}
-	  \pernottype{www}
-	  \step[fieldset=presort, fieldvalue = {A}]
+	\maps[datatype=bibtex]{
+		\map{ % All entry types except for media, software and online
+			\pernottype{movie}
+			\pernottype{video}
+			\pernottype{music}
+			\pernottype{audio}
+			\pernottype{image}
+			\pernottype{software}
+			\pernottype{electronic}
+			\pernottype{online}
+			\pernottype{www}
+			\step[fieldset=presort, fieldvalue = {A}]
+		}
+		\map{ % media entry types
+			\pertype{movie}
+			\pertype{video}
+			\pertype{music}
+			\pertype{audio}
+			\pertype{image}
+			\step[fieldset=presort, fieldvalue = {B}]
+		}
+		\map{ % software entry types
+			\pertype{software}
+			\pertype{electronic}
+			\step[fieldset=presort, fieldvalue = {C}]
+		}
+		\map{ % online entry types
+			\pertype{online}
+			\pertype{www}
+			\step[fieldset=presort, fieldvalue = {D}]
+		}
 	}
-	\map{ % media entry types
-	  \pertype{movie}
-	  \pertype{video}
-	  \pertype{music}
-	  \pertype{audio}
-	  \pertype{image}
-	  \step[fieldset=presort, fieldvalue = {B}]
+}
+
+% Defines a sorting template for the nosplit option.
+% This is based on Biblatex's nty sorting template but disregards the presort
+% field which is generated by the source map and used to sort the bibliography
+% into the four categories. See Biblatex manual section 4.5.6.
+\DeclareSortingTemplate{nosplit}{
+	\sort[final]{
+		\field{sortkey}
 	}
-	\map{ % software entry types
-	  \pertype{software}
-	  \pertype{electronic}
-	\step[fieldset=presort, fieldvalue = {C}]
+	\sort{
+		\field{sortname}
+		\field{author}
+		\field{editor}
+		\field{translator}
+		\field{sorttitle}
+		\field{title}
 	}
-	\map{ % online entry types
-	  \pertype{online}
-	  \pertype{www}
-	  \step[fieldset=presort, fieldvalue = {D}]
+	\sort{
+		\field{sorttitle}
+		\field{title}
 	}
-  }
+	\sort{
+		\field{sortyear}
+		\field{year}
+	}
 }
 
 %See http://www.jr-x.de/publikationen/latex/tipps/zeilenumbruch.html
@@ -168,13 +209,15 @@
 		{% create a single bibliography with all entries:
 			\printbibheading[heading=bibintoc,title={\@bibtitle}]
 			\begin{bibhyphenation}	
-			\printbibliography[heading=noheader]
+				\begin{refcontext}[sorting=nosplit]
+					\printbibliography[heading=noheader]
+				\end{refcontext}
 			\end{bibhyphenation}
-		}
+		}%
 		{% split the bibliography using the predefined categories:
 			\printbibheading[heading=bibintoc,title={\@bibtitle}]
 			\begin{bibhyphenation}
-			\bibbycategory
+				\bibbycategory
 			\end{bibhyphenation}
 		}%
 }

Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbdict.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbdict.sty	                        (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbdict.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -0,0 +1,110 @@
+%% hgbmath.sty
+%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
+%% Author: Wilhelm Burger (wilbur at ieee.org)
+%% GitHub: https://github.com/Digital-Media/HagenbergThesis
+%% File encoding: ASCII
+
+%% This package defines a simple dictionary mechanism for terms used in title pages.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{hgbdict}[2025/02/24]%%AUTO
+
+\newcommand{\hgbDictionaryUndefined}{undefined}%
+
+% Usage: \hgbDictionarySet{bachelor-thesis}{english}{Bachelor Thesis}
+% Note: previously existing entry for the same key are replaced!
+\newcommand{\hgbDictionarySet}[3]{%  #1=key, #2=lang, #3=term
+  \expandafter\def\csname hgb at dict-#1-#2\endcsname{#3}
+}
+
+% Usage: \hgbDictionaryGet{bachelor-thesis}{english}
+\newcommand{\hgbDictionaryGet}[2]{%  #1=key, #2=lang
+\ifcsname hgb at dict-#1-#2\endcsname% \ifdefined, \@ifundefined
+  \csname hgb at dict-#1-#2\endcsname%
+  \else \hgbDictionaryUndefined% Term '#1' is undefined for language '#2'!%
+  \fi
+}
+
+%% ----------------------------------------------------------------------------
+%% Add thesis-relevant dictionary items
+%% ----------------------------------------------------------------------------
+%% Note: don't rely on smart quotes being turned on!
+
+% Front page terms:
+
+\hgbDictionarySet{bachelor-docname}{english}{Bachelor Thesis}
+\hgbDictionarySet{bachelor-docname}{german}{Bachelorarbeit}
+
+\hgbDictionarySet{master-docname}{english}{Master's Thesis}
+\hgbDictionarySet{master-docname}{german}{Masterarbeit}
+
+\hgbDictionarySet{diploma-docname}{english}{Diploma Thesis}
+\hgbDictionarySet{diploma-docname}{german}{Diplomarbeit}
+
+\hgbDictionarySet{phd-docname}{english}{Doctoral Thesis}
+\hgbDictionarySet{phd-docname}{german}{Dissertation}
+
+\hgbDictionarySet{proposal-name}{english}{Proposal}
+\hgbDictionarySet{proposal-name}{german}{Exposè}
+
+\hgbDictionarySet{advisorheader}{english}{Supervisor}
+\hgbDictionarySet{advisorheader}{german}{Betreuer*in}
+
+% Internship-related terms:
+
+\hgbDictionarySet{internship-docname}{english}{Internship Report}
+\hgbDictionarySet{internship-docname}{german}{Praktikumsbericht}
+
+\hgbDictionarySet{internship}{english}{Internship}
+\hgbDictionarySet{internship}{german}{Praktikumsstelle}
+
+\hgbDictionarySet{internship-contact-single}{english}{Contact}
+\hgbDictionarySet{internship-contact-single}{german}{Kontaktperson}
+
+\hgbDictionarySet{internship-contact-multiple}{english}{Contacts}
+\hgbDictionarySet{internship-contact-multiple}{german}{Kontaktpersonen}
+
+% License texts: 
+
+\hgbDictionarySet{strictlicense}{english}{All Rights Reserved}
+\hgbDictionarySet{strictlicense}{german}{Alle Rechte vorbehalten}
+
+\hgbDictionarySet{cclicense}{english}{%
+\begin{english}
+	This work is published under the conditions of the \textsf{Creative Commons License} 
+	\emph{Attribution-NonCommercial-NoDerivatives 4.0 International} (CC BY-NC-ND 4.0)%
+	---see \url{https://creativecommons.org/licenses/by-nc-nd/4.0/}.%
+\end{english}
+}
+
+\hgbDictionarySet{cclicense}{german}{%
+\begin{german}
+	Diese Arbeit wird unter den Bedingungen der \textsf{Creative Commons Lizenz} 
+	\emph{Attribution-NonCommercial-NoDerivatives 4.0 International} (CC BY-NC-ND 4.0) 
+	veröffentlicht -- siehe \url{https://creativecommons.org/licenses/by-nc-nd/4.0/}.%
+\end{german}
+}
+
+% Declarations:
+
+\hgbDictionarySet{declaration-title}{english}{Declaration}
+\hgbDictionarySet{declaration-title}{german}{Erklärung}
+
+\hgbDictionarySet{declaration-text}{english}{%
+\begin{english}
+I hereby declare and confirm that this thesis is entirely the result of my own original work. 
+Where other sources of information have been used, they have been indicated as such and properly 
+acknowledged. I further declare that this or similar work has not been submitted for credit elsewhere.
+This printed copy is identical to the submitted electronic version.
+\end{english}
+}
+
+\hgbDictionarySet{declaration-text}{german}{%
+\begin{german}
+Ich erkläre eidesstattlich, dass ich die vorliegende Arbeit selbstständig und ohne fremde Hilfe verfasst, 
+andere als die angegebenen Quellen nicht benutzt und die den benutzten Quellen entnommenen Stellen als 
+solche gekennzeichnet habe. Die Arbeit wurde bisher in gleicher oder ähnlicher Form keiner anderen 
+Prüfungsbehörde vorgelegt.
+Die vorliegende, gedruckte Arbeit ist mit dem elektronisch übermittelten Textdokument identisch.
+\end{german}
+}
\ No newline at end of file


Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbdict.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbheadings.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbheadings.sty	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbheadings.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -5,32 +5,53 @@
 %% GitHub: https://github.com/Digital-Media/HagenbergThesis
 %% File encoding: ASCII
 
-\ProvidesPackage{hgbheadings}[2023/02/13]%%AUTO
+\ProvidesPackage{hgbheadings}[2025/02/24]%%AUTO
 
 \RequirePackage{fancyhdr}
+\RequirePackage{extramarks} % http://mirrors.ctan.org/macros/latex/contrib/fancyhdr/fancyhdr.pdf (p. 20)
 \pagestyle{fancy}
 
 \RequirePackage[sf,raggedright]{titlesec}	% use sans serif for chapter/section headings
 
+% Specify the CONTENT to be shown in page headers:
+% See also http://mirrors.ctan.org/macros/latex/contrib/fancyhdr/fancyhdr.pdf (p. 18)
 \@ifundefined{chapter}%
-   {}%
-	 {\renewcommand{\chaptermark}[1]{%
+	{% documents without 'chapter' (article etc.)
+		\renewcommand{\sectionmark}[1]{%
+			\markboth{\thesection\ #1}{}}%
+		\renewcommand{\subsectionmark}[1]{%
+			\markright{\thesubsection\ #1}}%
+	}%
+	{% documents with 'chapter' (book etc.)
+		\renewcommand{\chaptermark}[1]{%
 			\ifthenelse{\value{chapter} < 1}%
 				{\markboth{#1}{}}%
-				{\markboth{\thechapter.\ #1}{}}
-		}}
+				{\markboth{\thechapter\ #1}{}}}%
+		\renewcommand{\sectionmark}[1]{%
+			\markright{\thesection\ #1}}%
+	}%
 
+% Specify the FORMAT of page headers:
 \addtolength{\headheight}{\baselineskip}
-\renewcommand{\headrulewidth}{0pt}		% thin line under header
-\renewcommand{\footrulewidth}{0pt}
-\fancyhf{}                            	% clear all fields.
-\fancyhead[R]{\sffamily\thepage} %{\bf \rightmark}
-\fancyhead[L]{\sffamily\nouppercase{\leftmark}}  %{\slshape \leftmark}
+\renewcommand{\headrulewidth}{0pt}	% no line under header
+\renewcommand{\footrulewidth}{0pt}	% no line above footer
 
+\fancyhf{}% clear all header/footer fields
+
+\ifthenelse{\boolean{@twoside}}% @twoside is defined in LaTeX kernel
+	{% twopside:
+		\fancyhead[RO,LE]{\sffamily\thepage}%
+		\fancyhead[LO]{\sffamily\nouppercase{\rightmark}}%
+		\fancyhead[RE]{\sffamily\nouppercase{\firstleftmark}}%
+	}%
+	{% oneside:
+		\fancyhead[R]{\sffamily\thepage}%
+		\fancyhead[L]{\sffamily\nouppercase{\firstleftmark}}%
+	}%
+
 \fancypagestyle{plain}{%
-	\fancyhf{}							% clear all header and footer fields
-	\fancyfoot[C]{\sffamily\thepage}	% except the center
+	\fancyhf{}% clear all header/footer fields except the center
+	\fancyfoot[C]{\sffamily\thepage}
 	\renewcommand{\headrulewidth}{0pt}
 	\renewcommand{\footrulewidth}{0pt}
 }
-

Modified: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgblistings.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgblistings.sty	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgblistings.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -4,7 +4,7 @@
 %% GitHub: https://github.com/Digital-Media/HagenbergThesis
 %% File encoding: UTF-8
 
-\ProvidesPackage{hgblistings}[2023/02/13]%%AUTO
+\ProvidesPackage{hgblistings}[2025/02/24]%%AUTO
 
 \RequirePackage{xifthen}
 \RequirePackage{textcomp}	%% required for upquote option
@@ -406,6 +406,13 @@
 	#1}}%
 {}
 
+% Code Enivornmente for Scala
+\lstnewenvironment{ScalaCode}[1][]
+{\lstset{%
+	language=Scala,
+	escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
+	#1}}%
+{}
 
 % Language Definition and Code Environment for Swift
 \lstdefinelanguage{Swift}

Modified: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbmath.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbmath.sty	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbmath.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -5,7 +5,7 @@
 %% File encoding: ASCII
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{hgbmath}[2023/02/13]%%AUTO
+\ProvidesPackage{hgbmath}[2025/02/24]%%AUTO
 
 \RequirePackage{amsmath,amsfonts,amssymb,amsbsy}
 \RequirePackage{subdepth}			% for positioning of sub and super scripts

Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbpdfa.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbpdfa.sty	                        (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbpdfa.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -0,0 +1,24 @@
+%% hgbpdfa.sty
+%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
+%% Author: Wilhelm Burger (wilbur at ieee.org)
+%% GitHub: https://github.com/Digital-Media/HagenbergThesis
+%% File encoding: ASCII
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{hgbpdfa}[2025/02/24]%%AUTO
+
+%% Setup for producing 	PDF/A-2B compliant output using the new LaTeX-internal
+%% PDF metadata management features 
+%% (see https://ctan.org/tex-archive/macros/latex/contrib/pdfmanagement-testphase).
+%% NOTE: This package must be loaded before the \documentclass statement!
+
+\pdfmajorversion=1
+\pdfminorversion=7  % PDF Version 1.7 (Acrobat 8.x)
+
+\RequirePackage{pdfmanagement-testphase} % only needed before LaTeX 2022-06-01
+\IfPackageAtLeastTF{pdfmanagement-testphase}{2022-09-26}% (Version 0.95s)
+  {}%
+  {\PackageWarning{hgbpdfa}{Package 'pdfmanagement-testphase' 0.95s or higher required, output may not be PDF/A!}}
+  
+\DocumentMetadata{pdfstandard=A-2b}
+%% Specification of color profiles may follow here!


Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbpdfa.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbreport.cls
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbreport.cls	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbreport.cls	2025-02-24 20:31:09 UTC (rev 74267)
@@ -8,7 +8,7 @@
 %% Package Information --------------------------------------------------------
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{hgbreport}[2023/02/13]%%AUTO
+\ProvidesClass{hgbreport}[2025/02/24]%%AUTO
 
 \typeout{****************** hgbreport.cls (options=\@nameuse{opt at hgbreport.cls}) ***********************}
 
@@ -21,6 +21,8 @@
 
 %% Handling class options --------------------------------------------------------------
 
+\DeclareOption{oneside}{\PassOptionsToClass{\CurrentOption}{report}}	%default
+\DeclareOption{twoside}{\PassOptionsToClass{\CurrentOption}{report}}
 \DeclareOption{notitlepage}{\PassOptionsToClass{\CurrentOption}{report}}
 \DeclareOption{apa}{\PassOptionsToPackage{\CurrentOption}{hgbbib}}
 % pass all other options to hgb.sty
@@ -30,35 +32,31 @@
 
 %% Paper options and style file -----------------------------------------------
 
-\LoadClass[a4paper,11pt,onecolumn]{report}
+\LoadClass[a4paper,11pt]{report}
 \RequirePackage[top=36mm,bottom=40mm,left=32mm,right=32mm]{geometry} %showframe
 
 \RequirePackage{hgb}	% load style file hgb.sty with options registered above
 
 
-%% Set title font to SF
+%% Set title font to SF and inject PDF meta-data
 \RequirePackage{titling}
-\renewcommand{\maketitlehooka}{\sffamily}
-
-%% Set abstract name to bold
-\RequirePackage{abstract}%
-\renewcommand{\abstractnamefont}{\sffamily\small\bfseries}
-
-
-% Add PDF meta data
-
-\AtBeginDocument{%
-	\hypersetup{
-		pdftitle={\@title},
-		pdfauthor={\@author},
+\renewcommand{\maketitlehooka}{%
+  \sffamily%
+  \hypersetup{
+		pdftitle={\thetitle},   % \thetitle is defined by titling package (instead of \@title)
+		pdfauthor={\theauthor}, % \theauthor is defined by titling package (instead of \@author)
 		pdfsubject={},
 		pdfcreator={LaTeX using class hgbreport [\hgbDate]},
 		pdfproducer={pdflatex},
 		pdfkeywords={}
 	}%
-}%
+}
 
+%% Set abstract name to bold
+\RequirePackage{abstract}%
+\renewcommand{\abstractnamefont}{\sffamily\small\bfseries}
 
+
 %% Additional Hagenberg packages ----------------------------------------------
 
 \RequirePackage{hgbmath}

Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-custom.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-custom.sty	                        (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-custom.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -0,0 +1,16 @@
+%% This file is part of the Hagenberg Thesis package
+%% Author: Wilhelm Burger (wilbur at ieee.org)
+%% GitHub: https://github.com/Digital-Media/HagenbergThesis
+%% File encoding: UTF-8
+
+\ProvidesPackage{hgbtheme-custom}[2025/02/24]%%AUTO
+\hgb at UseTheme{default}% parent theme
+
+\hgbDictionarySet{special-thesis}{english}{Special Thesis}%	edit!
+\hgbDictionarySet{special-thesis}{german}{Spezialarbeit}%		edit!
+
+\renewcommand{\hgb at ThesisName}{\hgbDictionaryGet{special-thesis}{\hgb at TitleLanguage}}
+
+\AddToHook{hgb at InitThemeHook}{%
+	% add initialization code if needed
+}%
\ No newline at end of file


Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-custom.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-default.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-default.sty	                        (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-default.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -0,0 +1,226 @@
+%% This file is part of the Hagenberg Thesis package
+%% Author: Wilhelm Burger (wilbur at ieee.org)
+%% GitHub: https://github.com/Digital-Media/HagenbergThesis
+%% File encoding: UTF-8
+
+\ProvidesPackage{hgbtheme-default}[2025/02/24]%%AUTO
+\RequirePackage{hgbdict}
+\RequirePackage{forloop}
+\RequirePackage[absolute]{textpos}
+
+% Define a grid of 10mm squares so there's 21 horizontal and 29 vertical ones
+\setlength{\TPHorizModule}{10mm}
+\setlength{\TPVertModule}{\TPHorizModule}
+
+%% Define various language-dependent text chunks to be used below -------------
+
+\hgbDictionarySet{submitted-to}{german}{eingereicht am}%
+\hgbDictionarySet{submitted-to}{english}{submitted to the}%
+
+\hgbDictionarySet{at-place-of-study}{german}{an der}%
+\hgbDictionarySet{at-place-of-study}{english}{at the}%
+
+\hgbDictionarySet{declaration-date}{english}%
+	{\hgb at GetMonthName{english}{\hgb at SubmissionMonth} \hgb at SubmissionDay, \hgb at SubmissionYear}%
+\hgbDictionarySet{declaration-date}{german}%
+	{am \hgb at SubmissionDay.~\hgb at GetMonthName{german}{\hgb at SubmissionMonth} \hgb at SubmissionYear}%
+
+%% Use the default logo if unspecified (and not empty):
+
+\ifthenelse{\equal{\hgb at LogoFile}{@unspecified}}%
+	{\renewcommand{\hgb at LogoFile}{hgbtheme-default-logo.pdf}}{}%
+
+%% Initialization (optional) --------------------------------------------------
+
+\AddToHook{hgb at InitThemeHook}{%
+	% add initialization code if needed
+}%
+
+%% Structure of front pages ---------------------------------------------------
+  
+\renewcommand{\hgb at MakeFrontPages}{  %% stub defined in hgbthesis.cls
+  \hgb at MakeTitlePage%
+	\ifthenelse{\equal{\hgb at ThesisType}{internship}}%
+		{\hgb at MakeCompanyPage}%
+		{}%
+	\ifthenelse{\boolean{hgb at IsProposal}}%
+		{}% no copyright/declaration pages for proposals
+		{%
+			\hgb at MakeCopyrightPage%
+			\hgb at MakeDeclarationPage%
+		}%
+}%
+
+%% Title page ---------------------------------------------------
+
+\newcommand{\hgb at MakeTitlePage}{%
+\begin{titlepage}%
+	\hgb at TitlePageFont%
+
+	% title and subtitle --------------------------------------------------
+	\begin{SwitchLanguage}{\hgb at MainLanguage}% thesis title is assumed to be in main document language!
+		\begin{textblock}{15}[0,1](3,7)
+			\centering
+			{\LARGE\bfseries\linespread{1.0}\selectfont\hgb at Title\par}%
+			\ifthenelse{\equal{\hgb at SubTitle}{}}%
+				{}% no subtitle defined
+				{%
+					\par\vspace{4mm}% separating space between title and subtitle		
+					{\Large\bfseries\linespread{1.0}\selectfont\hgb at SubTitle\par}%
+				}%
+		\end{textblock}
+	\end{SwitchLanguage}%
+
+	% author --------------------------------------------------
+	\begin{textblock}{15}[0,0.5](3,9)
+		\centering
+		{\large\hgb at Author\par}%
+	\end{textblock}
+
+	% logo --------------------------------------------------
+	\begin{textblock}{15}(3,11)
+		\centering
+		\hgb at MakeLogo%
+	\end{textblock}
+
+	% thesis type ---------------------------------------------
+	\begin{textblock}{15}[0,0.5](3,16)
+		\centering
+		{\Large\@addspaces{\MakeUppercase{\hgb at ThesisName}}%
+		\ifthenelse{\boolean{hgb at IsProposal}}%
+			{\space\space(\@addspaces{\MakeUppercase{\hgb at ProposalName}})}{}\par}
+	\end{textblock}
+
+	% program type, program name, institution, place of study ---------------------------------
+	\begin{textblock}{15}(3,18)
+		\centering
+		{\hgbDictionaryGet{submitted-to}{\hgb at TitleLanguage}\par}%
+		\vspace{1mm}%
+		{\large \hgb at ProgramType\par}%
+		\vspace{1mm}%
+		{\large\hgb at ProgramName\par}%
+		\vspace{4mm}%
+		{\hgbDictionaryGet{at-place-of-study}{\hgb at TitleLanguage}\par}%
+		\vspace{1mm}%
+		{\large\hgb at Institution\par}%
+		\vspace{1mm}%
+		{\large in \hgb at PlaceOfStudy\par}%
+	\end{textblock}
+
+	% submission year  ---------------------------------
+	\begin{textblock}{15}(3,23)
+		\centering
+		{\large\hgb at SubmissionYear\par}%
+	\end{textblock}
+
+	% advisors(s) (do not show for internship report) -------------------------------------
+	\ifthenelse{\equal{\hgb at ThesisType}{internship}}%
+		{}%
+		{%
+			\begin{textblock}{15}(3,25)
+				\centering
+				\ifthenelse{\hgb at AdvisorCount > 0}%
+					{%
+						\@makeAdvisorTable% defined below
+					}
+					{%
+						\color{red}No advisor(s) specified!\\
+					}%
+			\end{textblock}
+		}%
+
+	\null%	required to tell LaTeX that there is a non-empty content box
+\end{titlepage}%
+}
+
+%% Logo Generation ----------------------------------------
+
+\newlength{\hgb at LogoHeight}
+\setlength{\hgb at LogoHeight}{3\TPVertModule} % logo is 3 grid fields (30mm) high
+
+\newcommand{\hgb at MakeLogo}[0]{%
+\ifthenelse{\equal{\hgb at LogoFile}{}}%	check if \hgb at LogoFile is empty (not @unspecified)
+	{\vspace*{\hgb at LogoHeight}}%			skip logo
+	{\includegraphics[height=\hgb at LogoHeight]{\hgb at LogoFile}}%	insert logo
+}
+
+%% Advisor Table ----------------------------------------
+
+\newcommand{\@makeAdvisorTable}{%
+  \newcounter{C}%
+	\renewcommand{\arraystretch}{1.25}%
+	\setlength{\tabcolsep}{0.4em}%
+  \begin{tabular}{ll}%
+    \forloop{C}{1}{\not{\value{C} > \hgb at AdvisorCount}}{%   see 'forloop' package
+      \hgb at getAdvisorRole{\theC}: & \hgb at getAdvisorName{\theC}%
+      \ifthenelse{\value{C} < \hgb at AdvisorCount}{\\}{}% avoid extra \\ in last line!
+    }%
+  \end{tabular}%
+}
+
+% Copyright/License Page ----------------------------------------
+
+\newcommand{\hgb at MakeCopyrightPage}{%
+  \newpage
+  \thispagestyle{plain}
+  \rule{0mm}{1mm}
+  \vspace*{75mm}
+  \begin{center}
+  \textsf{\copyright\ Copyright\ \hgb at SubmissionYear\ \hgb at Author}
+  \end{center}
+  \vspace{8mm}
+  \hgbJustifyOrCenter{\hgbDictionaryGet{\hgb at License}{\hgb at TitleLanguage}} % defined above
+}
+
+% Declaration Page ----------------------------------------
+
+\newcommand{\hgb at MakeDeclarationPage}{
+	\chapter{\hgbDictionaryGet{declaration-title}{\hgb at TitleLanguage}}
+	\noindent%
+	\hgbDictionaryGet{declaration-text}{\hgb at TitleLanguage}%
+	\par
+	\vspace{10mm}
+	\noindent
+	{\hgb at PlaceOfStudy, \hgbDictionaryGet{declaration-date}{\hgb at TitleLanguage}}%
+	\par
+	\vspace{12mm}
+	\noindent
+	\hgb at Author
+}
+
+%% Company Page for Internship Reports ------------------------------
+
+\newcommand{\hgb at MakeCompanyPage}{%
+	\newpage
+	\thispagestyle{plain}
+	\rule{0mm}{1mm}
+	\begin{center}
+		\vspace{25mm} 
+		{\hgbDictionaryGet{internship}{\hgb at TitleLanguage}:}
+		\\
+		\vspace{3mm}
+		{\Large\sf\hgb at CompanyName\\ \mbox{}}
+		\\
+		{\sf \hgb at CompanyUrl}
+		\\
+		\vspace{45mm} 
+		\ifthenelse{\hgb at AdvisorCount = 1}%
+			{%
+				{\hgbDictionaryGet{internship-contact-single}{\hgb at TitleLanguage}:}%
+			}%
+			{}%
+		\ifthenelse{\hgb at AdvisorCount > 1}%
+			{%
+				{\hgbDictionaryGet{internship-contact-multiple}{\hgb at TitleLanguage}:}%
+			}%
+			{}%
+		\par\vspace{6mm}%
+		\ifthenelse{\hgb at AdvisorCount > 0}%
+			{%
+				\large\sffamily\@makeAdvisorTable% defined above
+			}%
+			{%
+				\color{red}No advisor(s) specified!\\
+			}%
+	\end{center}
+}


Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-default.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-fhooe24.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-fhooe24.sty	                        (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-fhooe24.sty	2025-02-24 20:31:09 UTC (rev 74267)
@@ -0,0 +1,201 @@
+%% This file is part of the Hagenberg Thesis package
+%% Author: Wilhelm Burger (wilbur at ieee.org)
+%% GitHub: https://github.com/Digital-Media/HagenbergThesis
+%% File encoding: UTF-8
+
+\ProvidesPackage{hgbtheme-fhooe24}[2025/02/24]%%AUTO
+\RequirePackage{hgbdict}
+\RequirePackage{forloop}
+\RequirePackage{tikz}
+\RequirePackage[absolute]{textpos}
+
+% FH OÖ CD defines 15 square boxes horizontally on the page, thus one is 14mm wide
+\setlength{\TPHorizModule}{14mm}
+\setlength{\TPVertModule}{\TPHorizModule}
+
+% Theres a margin of one box/module in the CD so we set the origin to that to avoid offset
+\textblockorigin{\TPHorizModule}{\TPHorizModule}
+\setlength{\parindent}{0pt}
+
+%% Define various language-dependent text chunks to be used below -------------
+
+\hgbDictionarySet{declaration-date}{english}%
+	{\hgb at GetMonthName{english}{\hgb at SubmissionMonth} \hgb at SubmissionDay, \hgb at SubmissionYear}%
+	
+\hgbDictionarySet{declaration-date}{german}%
+	{am \hgb at SubmissionDay.~\hgb at GetMonthName{german}{\hgb at SubmissionMonth} \hgb at SubmissionYear}%
+
+%% Initialization (optional) --------------------------------------------------
+
+\AddToHook{hgb at InitThemeHook}{%
+	\typeout{hgbtheme-fhooe24: initializing theme}%
+	% add initialization code if needed
+}%
+
+%% Structure of front pages ---------------------------------------------------
+
+\renewcommand{\hgb at MakeFrontPages}{  %% stub defined in hgbthesis.cls
+  \hgb at MakeTitlePage%
+	\ifthenelse{\equal{\hgb at ThesisType}{internship}}%
+		{\hgb at MakeCompanyPage}%
+		{}%
+	\ifthenelse{\boolean{hgb at IsProposal}}%
+		{}% no copyright/declaration pages for proposals
+		{%
+			\hgb at MakeCopyrightPage%
+			\hgb at MakeDeclarationPage%
+		}%
+}%
+		
+%% Title page ---------------------------------------------------
+
+\newcommand{\hgb at MakeTitlePage}{%
+\begin{titlepage}%
+	% background image -----------------------------------------
+	\AddToHookNext{shipout/background}{
+		\begin{tikzpicture}[remember picture,overlay]
+			\node at (current page.center) {
+					\includegraphics{hgbtheme-fhooe24-coverbackground.pdf} % was 'fhooe-cover'
+			};
+		\end{tikzpicture}
+	}
+
+	\hgb at TitlePageFont%
+
+	% author --------------------------------------------------
+	\begin{textblock}{10}[0,1](0,7)
+		{\Large\hgb at Author\par}%
+	\end{textblock}
+
+	% title --------------------------------------------------
+	\begin{SwitchLanguage}{\hgb at MainLanguage}% thesis title is assumed to be in main document language!
+		\begin{textblock}{10}(0,8)
+			\raggedright% set ragged right to avoid hyphenation
+			{\huge\bfseries\linespread{1.0}\selectfont\hgb at Title\par}%
+			\vspace{5mm}% add space between title and subtitle
+			{\LARGE\bfseries\linespread{1.0}\selectfont\hgb at SubTitle\par}%
+		\end{textblock}
+	\end{SwitchLanguage}%
+
+	% thesis type ---------------------------------------------
+	\begin{textblock}{10}[0,1](0,12)
+		{\Large\@addspaces{\MakeUppercase{\hgb at ThesisName}}%
+		\ifthenelse{\boolean{hgb at IsProposal}}%
+			{\space\space(\@addspaces{\MakeUppercase{\hgb at ProposalName}})}{}\par}
+	\end{textblock}
+
+	% program type, program name ---------------------------------
+	\begin{textblock}{10}(0,13)
+		{\large \hgb at ProgramType\par}%
+		{\large\hgb at ProgramName\par}%
+	\end{textblock}
+
+	% institution, place of study ---------------------------------------------
+	\begin{textblock}{10}(0,14)
+		{\large\hgb at Institution\par}%
+		{\large\hgb at PlaceOfStudy\par}%
+	\end{textblock}
+
+	% submission year  ---------------------------------
+	\begin{textblock}{10}[0,1](0,16)
+		{\large\hgb at SubmissionYear\par}%
+	\end{textblock}
+
+	% advisors(s) -------------------------------------
+	\ifthenelse{\equal{\hgb at ThesisType}{internship}}%
+		{}%
+		{%
+			\begin{textblock}{10}(0,17)
+				\ifthenelse{\hgb at AdvisorCount > 0}%
+					{%
+						\@makeAdvisorTable% defined below
+					}%
+					{%
+						\color{red}No advisor(s) specified!\\
+					}%
+			\end{textblock}
+		}%
+
+	\null%	required to tell LaTeX that there is a non-empty content box
+\end{titlepage}%
+}
+
+%% Advisor Table ----------------------------------------
+
+\newcommand{\@makeAdvisorTable}{%
+  \newcounter{C}%
+	\renewcommand{\arraystretch}{1.25}%
+  \begin{tabular}{@{}ll@{}}%
+    \forloop{C}{1}{\not{\value{C} > \hgb at AdvisorCount}}{%   see 'forloop' package
+      \hgb at getAdvisorRole{\theC}: & \hgb at getAdvisorName{\theC}%
+      \ifthenelse{\value{C} < \hgb at AdvisorCount}{\\}{}% avoid extra \\ in last line!
+    }%
+  \end{tabular}%
+}
+
+%% Copyright/License Page ----------------------------------------
+
+\newcommand{\hgb at MakeCopyrightPage}{%
+  \newpage
+  \thispagestyle{plain}
+  \rule{0mm}{1mm}
+  \vspace*{75mm}
+  \begin{center}
+  \textsf{\copyright\ Copyright\ \hgb at SubmissionYear\ \hgb at Author}
+  \end{center}
+  \vspace{8mm}
+  \hgbJustifyOrCenter{\hgbDictionaryGet{\hgb at License}{\hgb at TitleLanguage}}% defined in hgb.sty
+}
+
+%% Declaration Page ----------------------------------------
+
+\newcommand{\hgb at MakeDeclarationPage}{
+	\chapter{\hgbDictionaryGet{declaration-title}{\hgb at TitleLanguage}}
+	\noindent%
+	\hgbDictionaryGet{declaration-text}{\hgb at TitleLanguage}%
+	\par
+	\vspace{10mm}
+	\noindent
+	{\hgb at PlaceOfStudy, \hgbDictionaryGet{declaration-date}{\hgb at TitleLanguage}}%
+	\par
+	\vspace{12mm}
+	\noindent
+	\hgb at Author
+}
+
+%% Company Page for Internship Reports ------------------------------
+
+\newcommand{\hgb at MakeCompanyPage}{%
+	\newpage
+	\thispagestyle{plain}
+	\rule{0mm}{1mm}
+	\begin{center}
+		\vspace{25mm} 
+		{\hgbDictionaryGet{internship}{\hgb at TitleLanguage}:}
+		\\
+		\vspace{3mm}
+		{\Large\sf\hgb at CompanyName\\ \mbox{}}
+		\\
+		{\sf \hgb at CompanyUrl}
+		\\
+		\vspace{45mm} 
+		\ifthenelse{\hgb at AdvisorCount = 1}%
+			{%
+				{\hgbDictionaryGet{internship-contact-single}{\hgb at TitleLanguage}:}%
+			}%
+			{}%
+		\ifthenelse{\hgb at AdvisorCount > 1}%
+			{%
+				{\hgbDictionaryGet{internship-contact-multiple}{\hgb at TitleLanguage}:}%
+			}%
+			{}%
+		\par\vspace{6mm}%
+		\ifthenelse{\hgb at AdvisorCount > 0}%
+			{%
+				\large\sffamily\@makeAdvisorTable% defined above
+			}%
+			{%
+				\color{red}No advisor(s) specified!\\
+			}%
+	\end{center}
+}


Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbtheme-fhooe24.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbthesis.cls
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbthesis.cls	2025-02-24 20:30:51 UTC (rev 74266)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/hagenberg-thesis/hgbthesis.cls	2025-02-24 20:31:09 UTC (rev 74267)
@@ -3,12 +3,18 @@
 %% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
 %% Author: Wilhelm Burger (wilbur at ieee.org)
 %% GitHub: https://github.com/Digital-Media/HagenbergThesis
-%% File encoding: ASCII
+%% File encoding: UTF-8
 
+% Preferences for the naming macros (commands/variables):
+% * internal, undocumented macros (used in release *.cls and *.sty files):   \@macroname or \@MacroName
+% * documented internal macros for customizing (eg in theme *.sty files):    \hgb at MacroName or \hgb at macroname
+% * documented public macros (available in user documents):                  \hgbMacroName (preferred), \MacroName or \macroname
+
+
 %% Package Information --------------------------------------------------------
 
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{hgbthesis}[2023/02/13]%%AUTO
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]  % recent LaTeX kernel version, must support \DeclareKeys (ltkeys)
+\ProvidesClass{hgbthesis}[2025/02/24]%%AUTO
 
 \RequirePackage{xifthen}
 
@@ -19,561 +25,310 @@
 
 %% Commands for Title Pages (used in class options) ---------------------------
 
-\newcommand{\hgb at MainLanguage}{german}	% also referenced in hgb.sty
-\newcommand{\@mastertitlepages}{}
-\newcommand{\@diplomatitlepages}{}
-\newcommand{\@bachelortitlepages}{}
-\newcommand{\@internshiptitlepages}{}
-\newcommand{\@maketitlepages}{\@mastertitlepages}  %Default: Master's thesis
+\newcommand{\hgb at ThesisType}{master}%									type of thesis (theme name)						
 
-\newboolean{hgb at isProposal}
-\setboolean{hgb at isProposal}{false}
+\newcommand{\hgb at MainLanguage}{german}%								the main language for this document:
+\newcommand{\hgb at TitleLanguage}{}%										the language to be used for the front pages
 
-\newcommand{\@titlepagefont}{\sffamily}
+\newboolean{hgb at IsProposal} % indicates if this document is a proposal (true) or final thesis (false).
+\setboolean{hgb at IsProposal}{false}
+\newcommand{\hgb at ProposalName}{UNDEFINED}
 
-%% Handling class options --------------------------------------------------------------
+\newcommand{\hgb@@pagelayout}{oneside}% default to 'oneside' (used locally only in this file!)
 
-\DeclareOption{bachelor}{\renewcommand{\@maketitlepages}{\@bachelortitlepages}}
-\DeclareOption{master}{\renewcommand{\@maketitlepages}{\@mastertitlepages}}
-\DeclareOption{diploma}{\renewcommand{\@maketitlepages}{\@diplomatitlepages}}
-\DeclareOption{internship}{\renewcommand{\@maketitlepages}{\@internshiptitlepages}}
-\DeclareOption{apa}{\PassOptionsToPackage{\CurrentOption}{hgbbib}}
-\DeclareOption{proposal}{\setboolean{hgb at isProposal}{true}}	% use with 'bachelor' or 'master' option
-% pass all other options to hgb.sty
-\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{hgb}}
-\ProcessOptions*
+%% Utilities for handling class options -------------------------------------
 
-
-%% Paper Options and Style File -----------------------------------------------
-
-\LoadClass[a4paper,11pt,oneside]{book}
-\RequirePackage[top=36mm,bottom=40mm,left=32mm,right=32mm]{geometry} %showframe
- 
-\RequirePackage{hgb}	% load style file hgb.sty with options registered above
-
-
-%% Setup for Pages in the Front Matter ----------------------------------------
-
-% General Commands
-
-\newcommand{\@programtype}{\@MissingArg{Type of degree program not specified!}}
-\newcommand{\programtype}[1]{%
-	\ifthenelse{\isempty{#1}}{}{\renewcommand{\@programtype}{#1}}
+% Issue warning when using deprecated options:
+\newcommand{\@WarnDeprecatedOption}[2]{% #1=obsolete option, #2=replacement option
+	\ClassWarning{hgbthesis}{option '#1' is deprecated, use '#2' instead!}}%
+	
+% Register permissible key/value option, e.g.: \@RegisterClassOption{type}{master}
+\newcommand{\@RegisterClassOption}[2]{%  #1=optionKey, #2=optionValue
+  \expandafter\def\csname hgb at keyvalueoption-#1-#2\endcsname{\relax}%
 }
 
-\newcommand{\@programname}{\@MissingArg{Name of degree program not specified!}}
-\newcommand{\programname}[1]{%
-	\ifthenelse{\isempty{#1}}{}{\renewcommand{\@programname}{#1}}
+% Check if key/value option is permissible, e.g.: \@ValidateClassOption{type}{master}
+\newcommand{\@ValidateClassOption}[2]{%  #1=optionKey, #2=optionValue
+\ifcsname hgb at keyvalueoption-#1-#2\endcsname%
+  {}%
+  \else \ClassError{hgbthesis}{illegal key/value option: #1=#2}\relax%
+  \fi%
 }
 
-\newcommand{\@placeofstudy}{\@MissingArg{Place of study not specified!}}
-\newcommand{\placeofstudy}[1]{%
-	\ifthenelse{\isempty{#1}}{}{\renewcommand{\@placeofstudy}{#1}}
-}
+%% Specifiying/loading thesis theme styles ---------------------------------------------------
 
-\newcommand{\@advisor}{}					% empty by default
-\newcommand{\advisor}[1]{%
-	\renewcommand{\@advisor}{#1}		
-}
+\newcommand{\@ThemeID}{default}%			use theme 'hgbtheme-default' if no theme is specified
+\newcommand{\@ThemePrefix}{hgbtheme}%	fixed, all theme files are named 'hgbtheme-<themeID>.sty'
 
-\newcommand{\thesisnumber}[1]{%
-	\ClassWarning{hgbthesis}{command '\protect\thesisnumber' is not supported any longer.}
+% The .sty file for the specified theme (#2) is loaded if it exists, otherwise throws an error:
+\newcommand{\hgb at UseTheme}[2][]{%		#1=options passed to theme style file, #2=themeID
+	\def\@ThemeName{\@ThemePrefix-#2}
+	\def\@ThemeFile{\@ThemeName.sty}
+	%\typeout{ThemeFile = \@ThemeFile}
+	\IfFileExists{\@ThemeFile}%		true if LaTeX can find this file (need not be local!)
+		{\RequirePackage[#1]{\@ThemeName}}%  must load immediately, was {\AtEndOfPackage{\usepackage[#1]{\@ThemeName}}}%
+		{\ClassError{hgbthesis}{style file '\@ThemeFile' for theme '#2' could not be found}\relax}%
 }
 
-\newcommand{\coursetitle}[1]{%
-	\ClassWarning{hgbthesis}{command '\protect\coursetitle' is not supported any longer.}
-}
+% Class option handling --------------------------------------------------
 
-\newcommand{\semester}[1]{%
-	\ClassWarning{hgbthesis}{command '\protect\semester' is not supported any longer.}
-}
+% Specifiy permissible key/value options:
+\@RegisterClassOption{type}{bachelor}
+\@RegisterClassOption{type}{master}
+\@RegisterClassOption{type}{diploma}
+\@RegisterClassOption{type}{phd}
+\@RegisterClassOption{type}{internship}
 
-\newcommand{\@logofile}[0]{}
-\newcommand{\logofile}[1]{%
-	\renewcommand{\@logofile}{#1}
-}
+\@RegisterClassOption{language}{english}
+\@RegisterClassOption{language}{german}
 
-\newcommand{\makelogo}[0]{%
-\ifthenelse{\equal{\@logofile}{}}%
-	{\vspace*{30mm}}%
-	{\includegraphics[height=30mm]{\@logofile}}%
+\@RegisterClassOption{titlelanguage}{english}
+\@RegisterClassOption{titlelanguage}{german}
+
+% We are using the 
+% See http://mirrors.ctan.org/macros/latex/base/source2e.pdf (p. 956),
+% https://tex.stackexchange.com/questions/417704/key-value-syntax-in-package-options
+\DeclareKeys{
+	% legacy options (deprecated):
+	bachelor.code 	= {\renewcommand{\hgb at ThesisType}{bachelor}\@WarnDeprecatedOption{bachelor}{type=bachelor}},
+	master.code 		= {\renewcommand{\hgb at ThesisType}{master}\@WarnDeprecatedOption{master}{type=master}},
+	diploma.code 		= {\renewcommand{\hgb at ThesisType}{diploma}\@WarnDeprecatedOption{diploma}{type=diploma}},
+	internship.code = {\renewcommand{\hgb at ThesisType}{internship}\@WarnDeprecatedOption{internship}{type=internship}},
+	% catch old-style language options (for some reason they are still passed to hgb.sty!)
+	german.code     = {\renewcommand{\hgb at MainLanguage}{german}\@WarnDeprecatedOption{german}{language=german}},
+	ngerman.code    = {\renewcommand{\hgb at MainLanguage}{german}\@WarnDeprecatedOption{ngerman}{language=german}},
+	english.code    = {\renewcommand{\hgb at MainLanguage}{english}\@WarnDeprecatedOption{english}{language=english}},
+	% new options
+	type.code 				= {\@ValidateClassOption{type}{#1}\renewcommand{\hgb at ThesisType}{#1}},
+	theme.code 				= \renewcommand{\@ThemeID}{#1},
+	language.code			= {\@ValidateClassOption{language}{#1}\renewcommand{\hgb at MainLanguage}{#1}},
+	titlelanguage.code = {\@ValidateClassOption{titlelanguage}{#1}\renewcommand{\hgb at TitleLanguage}{#1}},
+	proposal.code			= \setboolean{hgb at IsProposal}{#1},
+	proposal.default:n	= true,	% https://tex.stackexchange.com/a/682260/175415
+	apa.code					= \PassOptionsToPackage{\CurrentOption}{hgbbib},
+	apa.default:n			= true,	% TODO: check if default value is properly passed!
+	%
+	%	This works, but default should be 'oneside' for backward compatibility ('twoside' is default for class 'book')
+	%oneside.code			= \PassOptionsToClass{\CurrentOption}{book},
+	%twoside.code			= \PassOptionsToClass{\CurrentOption}{book},
+	% Instead we define 
+	oneside.code			= {\renewcommand{\hgb@@pagelayout}{oneside}},
+	twoside.code			= {\renewcommand{\hgb@@pagelayout}{twoside}},
 }
 
-% Special sectioning setup for thesis proposals (called in \@bachelortitlepages):
-\newcommand{\@proposalsetup}[0]{%
-	% remove "Kapitel 1" (titlesec):
-	\titleformat{\chapter}[display]{\sffamily}{}{0pt}{\Huge}
-	% define an empty entry format for the TOC chapter numbering (tocbasic)
-	\newcommand\noentrynumber[1]{}
-	% set empty number and remove indentation for chapter numbering in TOC (tocbasic)
-	\DeclareTOCStyleEntry[entrynumberformat=\noentrynumber,numwidth=0pt]{tocline}{chapter}
-	 % remove chapter number from sections and figures (basic LaTeX):
-	\counterwithout{section}{chapter}
-	\counterwithout{figure}{chapter}
-	\counterwithout{table}{chapter}
-	\counterwithout{equation}{chapter}
-	\counterwithout{program}{chapter}
-	\counterwithout{algorithm}{chapter}
-	% remove chapter number from header (fancyhdr):
-	\renewcommand{\chaptermark}[1]{\markboth{##1}{}}
+\DeclareUnknownKeyHandler[hgbthesis]{
+    %\typeout{hgbthesis.cls: unknown option \CurrentOption}%
+    \PassOptionsToPackage{\CurrentOption}{hgb}
 }
 
-% Submission Commands
+\ProcessKeyOptions[hgbthesis]
 
-\newcounter{@dayofsubmission}
-\newcounter{@monthofsubmission}
-\newcounter{@yearofsubmission}
+%% Paper Options and Style File -----------------------------------------------
 
-\setcounter{@dayofsubmission}{\the\day}
-\setcounter{@monthofsubmission}{\the\month}
-\setcounter{@yearofsubmission}{\the\year}
+%\LoadClass[a4paper,11pt,oneside]{book}
+\LoadClass[a4paper,11pt,\hgb@@pagelayout]{book}
+\RequirePackage[top=36mm,bottom=40mm,left=32mm,right=32mm]{geometry} %showframe
+\RequirePackage{hgb}	% load style file hgb.sty with options registered above
+\RequirePackage{titling}
+\newcommand{\hgb at TitlePageFont}{\sffamily}
 
-\newcommand{\dateofsubmission}[3]{%	%\dateofsubmission{yyyy}{mm}{dd}
-	\setcounter{@yearofsubmission}{#1}
-	\setcounter{@monthofsubmission}{#2}
-	\setcounter{@dayofsubmission}{#3}
-}
+%% Setup for Pages in the Front Matter:
 
-% Internship Report Commands
+% General Thesis Parameters ----------------------------------------
 
-\newcommand{\@companyName}{\@MissingArg{Company not specified!}}
-\newcommand{\companyName}[1]{%
-	\ifthenelse{\isempty{#1}}{}{\renewcommand{\@companyName}{#1}}
-}
+%	Initialized from standard '\author{}' parameter (by \maketitle hook below)
+\newcommand{\hgb at Author}{Author undefined!}
 
-\newcommand{\@companyUrl}{\@MissingArg{Company URL not specified!}}
-\newcommand{\companyUrl}[1]{%
-	\ifthenelse{\isempty{#1}}{}{\renewcommand{\@companyUrl}{#1}}
-}
+\newcommand{\@warnmultipleauthors}%
+	{\ClassWarning{hgbthesis}{Multiple authors are not supported ('\string\and' is ignored)!}}%
 
-\newcommand{\companyPhone}[1]{%
-	\ClassWarning{hgbthesis}{command '\protect\companyPhone' is not supported any longer.}
-}
+\newcommand{\hgb at Title}{Undefined document title!}% derived from \title (initialized in \maketitle hook)
 
-%% ----------------------------------------------------------------------------
+\newcommand{\hgb at SubTitle}{}
+\newcommand{\subtitle}[1]{\renewcommand{\hgb at SubTitle}{#1}}
 
-\newcommand{\@license}{\@MissingArg{License information is missing!}}
-\newcommand{\license}[1]{%
-	\renewcommand{\@license}{#1}
-}
+\newcommand{\hgb at FullTitle}{}% = title + subtitle (initialized in \maketitle hook)
 
-%% Commands for Creating the Title Pages --------------------------------------
+\newcommand{\hgb at ThesisName}{Undefined thesis name!}%
 
-%% dirty trick: adds blank space after each letter (https://stackoverflow.com/a/3951837)
-\newcommand{\@addspaces}[1]{%  
-  \@tfor\letter:=#1\do{%
-    \letter\thinspace%	%\space
-  }\negthinspace%
+\newcommand{\hgb at Institution}{\@MissingArg{Name of institution not specified!}}
+\newcommand{\institution}[1]{%
+	\ifthenelse{\isempty{#1}}{}{\renewcommand{\hgb at Institution}{#1}}
 }
 
+\newcommand{\hgb at ProgramType}{\@MissingArg{Type of degree program not specified!}}
+\newcommand{\programtype}[1]{\renewcommand{\hgb at ProgramType}{#1}}
 
-\newcommand{\@bachelortitlefinal}{
-	% use language switch to add english term
-	\@addspaces{BACHELORARBEIT}%
-}
+\newcommand{\hgb at ProgramName}{\@MissingArg{Name of degree program not specified!}}
+\newcommand{\programname}[1]{\renewcommand{\hgb at ProgramName}{#1}}
 
-\newcommand{\@bachelortitleproposal}{
-	% use language switch to add english term
-	\@addspaces{BACHELORARBEIT} \space (\@addspaces{EXPOS{É}})%
-}
+\newcommand{\hgb at PlaceOfStudy}{\@MissingArg{Place of study not specified!}}
+\newcommand{\placeofstudy}[1]{\renewcommand{\hgb at PlaceOfStudy}{#1}}
 
-\newcommand{\@makebachelortitle}{%
-\begin{titlepage}%
-	\begin{german}
-		\rule{0mm}{1mm}%
-		\vspace*{0mm}%
-		\begin{center}%
-			\@titlepagefont%
-			\setlength{\unitlength}{1cm}%
-			\parbox[c][5cm][c]{12cm}{%
-				\centering\LARGE\bfseries%
-				\setlength{\baselineskip}{25pt}%
-				\@title%
-			}
-			\vskip 15mm%
-			{\large\@author}%
-			\vskip 15mm%
-			\makelogo%
-			\vskip 15mm%
-			%
-			\ifthenelse{\boolean{hgb at isProposal}}%
-					{\Large{\@bachelortitleproposal}}%
-					{\Large{\@bachelortitlefinal}}%
-			\vskip 4mm%
-			%
-			{\large eingereicht am} \vskip 1mm {\@programtype}%
-			\vskip 4mm%
-			{\large\@programname}%
-			\vskip 4mm%
-			{\large in \@placeofstudy}%
-			\vskip 16mm%
-			{\large im \DTMgermanmonthname{\value{@monthofsubmission}} \arabic{@yearofsubmission}}%
-		\end{center}%
-		\vfil%
-	\end{german}
-\end{titlepage}%
-}
+% Advisor(s) -------------------------------------------------------------------
 
-\newcommand{\@mastertitlefinal}{
-	% use language switch to add english term
-	\@addspaces{MASTERARBEIT}%
-}
+\newcounter{@advisorctr}
+\setcounter{@advisorctr}{0}
 
-\newcommand{\@mastertitleproposal}{
-	% use language switch to add english term
-	\@addspaces{MASTERARBEIT} \space (\@addspaces{EXPOS{É}})%
+% User command to specify the role(optional) and name of one advisor: \advisor[<role>]{<name>}
+% Repeat to specify multiple advisors.
+\newcommand{\advisor}[2][\hgbDictionaryGet{advisorheader}{\hgb at TitleLanguage}]{% e.g., \advisor[Supervisor]{Prof.~Marie Curie, PhD}
+	\stepcounter{@advisorctr}%
+	\expandafter\def\csname advisorrole-\the at advisorctr\endcsname{#1}
+	\expandafter\def\csname advisorname-\the at advisorctr\endcsname{#2}
 }
 
-\newcommand{\@makemastertitle}{%
-\begin{titlepage}%
-	\begin{german}
-		\rule{0mm}{1mm}%
-		\vspace*{0mm}%
-		\begin{center}%
-			\@titlepagefont %\normalfont
-			\setlength{\unitlength}{1cm}%
-			\parbox[c][5cm][c]{12cm}{%
-				\centering\LARGE\bfseries%%
-				\setlength{\baselineskip}{25pt}%
-				\@title%
-			}
-			\vskip 15mm%
-			{\large\@author}%{\large\scshape\@author}%
-			\vskip 15mm%
-			\makelogo%
-			\vskip 15mm%
-			%
-			\ifthenelse{\boolean{hgb at isProposal}}%
-					{\Large{\@mastertitleproposal}}%
-					{\Large{\@mastertitlefinal}}%
-			%
-			\vskip 4mm%
-			{\large eingereicht am} \vskip 1mm {\@programtype}%
-			\vskip 4mm%
-			{\large\@programname}%
-			\vskip 4mm%
-			{\large in \@placeofstudy}%
-			\vskip 16mm%
-			%{\large im \monthname[\value{@monthofsubmission}] \arabic{@yearofsubmission}}%
-			{\large im \DTMgermanmonthname{\value{@monthofsubmission}} \arabic{@yearofsubmission}}%
-		\end{center}%
-		\vfil%
-	\end{german}
-\end{titlepage}%
+% Returns the number of advisors specified 
+\newcommand{\hgb at AdvisorCount}{%
+	\the at advisorctr
 }
 
-\newcommand{\@makediplomatitle}{%
-\begin{titlepage}%
-	\begin{german}
-		\rule{0mm}{1mm}
-		\vspace*{0mm}
-		\begin{center}%
-			\@titlepagefont %\normalfont
-			\setlength{\unitlength}{1cm}
-			\parbox[c][5cm][c]{12cm}{%
-				\centering\LARGE\bfseries%
-				\setlength{\baselineskip}{25pt}%
-				\@title%
-			}
-			\vskip 15mm%
-			{\large\@author}%{\large\scshape\@author}%
-			\vskip 15mm%
-			\makelogo%
-			\vskip 15mm%
-			{\Large\uppercase{\@addspaces{Diplomarbeit}}}%
-			\vskip 4mm%
-			{\large eingereicht am} \vskip 1mm {\@programtype}%
-			\vskip 4mm%
-			{\large\@programname}%
-			\vskip 4mm%
-			{\large in \@placeofstudy}%
-			\vskip 16mm%
-			%{\large im \monthname[\value{@monthofsubmission}] \arabic{@yearofsubmission}}%
-			{\large im \DTMgermanmonthname{\value{@monthofsubmission}} \arabic{@yearofsubmission}}%
-		\end{center}%
-		\vfil%
-	\end{german}
-\end{titlepage}%
+% Returns the 'role' of advisor with the given number (#1 = 1,...,\hgb at AdvisorCount)
+\newcommand{\hgb at getAdvisorRole}[1]{%
+	\csname advisorrole-#1\endcsname
 }
 
-\newcommand{\@makeinternshiptitle}{%
-\begin{titlepage}%
-	\begin{german}
-		\rule{0mm}{1mm}
-		\vspace*{0mm}
-		\begin{center}%
-			\@titlepagefont %\normalfont
-			\setlength{\unitlength}{1cm}
-			\parbox[c][5cm][c]{12cm}{%
-				\centering\LARGE\bfseries%
-				\setlength{\baselineskip}{25pt}%
-				\@title%
-			}
-			\vskip 15mm%
-			{\large\@author}%{\large\scshape\@author}%
-			\vskip 15mm%
-			\makelogo%
-			\vskip 15mm%
-			{\Large\uppercase{\@addspaces{Praktikumsbericht}}}%
-			\vskip 4mm%
-			%{\large Nr.~\@thesisnumber}
-			%\vskip 4mm%
-			{\large eingereicht am} \vskip 1mm {\@programtype}%
-			\vskip 4mm%
-			{\large\@programname}%
-			\vskip 4mm%
-			{\large in \@placeofstudy}%
-			\vskip 16mm%
-			%{\large im \monthname[\value{@monthofsubmission}] \arabic{@yearofsubmission}}%
-			{\large im \DTMgermanmonthname{\value{@monthofsubmission}} \arabic{@yearofsubmission}}%
-		\end{center}%
-		\vfil%
-	\end{german}
-\end{titlepage}%
+% Returns the 'name' of advisor with the given number (#1 = 1,...,\hgb at AdvisorCount)
+\newcommand{\hgb at getAdvisorName}[1]{%
+	\csname advisorname-#1\endcsname
 }
 
+% Legacy cmommand, returns the first advisor's name
+\newcommand{\hgb at Advisor}{\hgb at getAdvisorName{1}}
 
-% Copyright and License Page --------------------------------------------------
+% Submission Date ---------------------------------------------------------------
 
-\newcommand{\strictlicense}{%
-\ifthenelse{\equal{\hgb at MainLanguage}{german}}%
-	{\license{Alle Rechte vorbehalten}}%
-	{\license{All Rights Reserved}}
-}
+\DTMsavenow{hgb at SubmissionDate}  % default submission date is today
 
-\newcommand{\@ccLicenseAt}{%
-Diese Arbeit wird unter den Bedingungen der 
-\textsf{Creative Commons Lizenz} 
-\emph{Attribution-NonCommercial-NoDerivatives 4.0 International} 
-(CC BY-NC-ND 4.0) ver\"offentlicht --
-siehe \url{https://creativecommons.org/licenses/by-nc-nd/4.0/}.}
-
-\newcommand{\@ccLicenseEn}{%
-This work is published under the conditions of the 
-\textsf{Creative Commons License} 
-\emph{Attribution-NonCommercial-NoDerivatives 4.0 International} 
-(CC BY-NC-ND 4.0)---see
-\url{https://creativecommons.org/licenses/by-nc-nd/4.0/}.}
-
-\newcommand{\cclicense}{%
-\ifthenelse{\equal{\hgb at MainLanguage}{german}}%
-	{\license{\@ccLicenseAt}} % german CC license text
-	{\license{\@ccLicenseEn}} % english CC license text (default)
+\newcommand{\dateofsubmission}[3]{%	usage: \dateofsubmission{yyyy}{mm}{dd}
+	\DTMsavenoparsedate{hgb at SubmissionDate}{#1}{#2}{#3}{-1}
 }
-	
-\cclicense	% Creative Commons License (default)
 
-\newcommand{\@makelicense}{ 
-	\sbox\@tempboxa{\@license}%
-	\ifdim \wd\@tempboxa >\hsize
-		\begin{sloppypar}\noindent\@license\end{sloppypar}
-	\else
-		\global \@minipagefalse
-		\hb at xt@\hsize{\hfil\box\@tempboxa\hfil}%
-	\fi
-}
+\newcommand{\hgb at SubmissionYear}{\DTMfetchyear{hgb at SubmissionDate}}
+\newcommand{\hgb at SubmissionMonth}{\DTMfetchmonth{hgb at SubmissionDate}}
+\newcommand{\hgb at SubmissionDay}{\DTMfetchday{hgb at SubmissionDate}}
 
-\newcommand{\@copyrightpage}{%
-\newpage
-%\setcounter{page}{2}
-\thispagestyle{plain}
-\rule{0mm}{1mm}
-\vspace*{75mm}
-\begin{center}
-\textsf{\copyright\ Copyright\ \arabic{@yearofsubmission}\ \@author}
-\end{center}
-\vspace{8mm}
-\@makelicense
+\newcommand{\hgb at GetMonthName}[2]{% #1=language #2=monthNumber,
+	\csname DTM#1monthname\endcsname{#2}% brittle?
 }
 
+% Copyright/License Settings --------------------------------------------------
 
-%% Company Page for Internship Report -----------------------------------------
+\newcommand{\hgb at License}{cclicense}
 
-\newcommand{\@companypage}{%
-\newpage
-\setcounter{page}{2}
-\thispagestyle{plain}
-\rule{0mm}{1mm}
-\begin{center}
-\vspace{25mm} 
-{Praktikumsstelle:}
-\\
-\vspace{3mm}
-{\Large\sf\@companyName\\ \mbox{}}
-\\
-{\sf \@companyUrl}
-\\
-\vspace{45mm} 
-{Kontaktperson:}
-\\
-\vspace{3mm}
-{\Large\sf\@advisor\\ \mbox{}}
-\end{center}
+\newcommand{\license}[1]{%
+	\renewcommand{\hgb at License}{#1}
+	\ifthenelse{\equal{#1}{cc}}{\renewcommand{\hgb at License}{cclicense}}{}%
+	\ifthenelse{\equal{#1}{strict}}{\renewcommand{\hgb at License}{strictlicense}}{}%
 }
 
-
-%% Advisor Page ----------------------------------------
-
-\newcommand{\@advisorheaderfinal}{
-	\ifthenelse{\equal{\hgb at MainLanguage}{german}}%
-			{Betreuung}%
-			{Advisor}%
+\newcommand{\cclicense}{% for backward compatibility, use \license{cc} instead
+	\ClassWarning{hgbthesis}{\string\cclicense\space command is deprecated, use \string\license{cc} instead!}%
+	\license{cc}%
 }
 
-\newcommand{\@advisorheaderproposal}{
-	\ifthenelse{\equal{\hgb at MainLanguage}{german}}%
-			{Betreuung (Vorschlag)}%
-			{Proposed Advisor}%
+\newcommand{\strictlicense}{% for backward compatibility, use \license{strict} instead
+	\ClassWarning{hgbthesis}{\string\strictlicense\space command is deprecated, use \string\license{strict} instead!}%
+	\license{strict}%
 }
 
-\newcommand{\@advisorpage}{%
-	\ifthenelse{\equal{\@advisor}{}}%	does nothing if advisor not defined 
-		{}{%
-		\newpage
-		\setcounter{page}{2}
-		\thispagestyle{plain}
-		\rule{0mm}{1mm}
-		\vspace{90mm}
-		\begin{center}
-			\ifthenelse{\boolean{hgb at isProposal}}%
-				{\@advisorheaderproposal:}%
-				{\@advisorheaderfinal:}%
-			\\
-			\vspace{3mm} 
-			{\Large\sf \@advisor\\ \mbox{}}
-		\end{center}
-		}
-}
+% Legacy commands, keep for internship reports:
+\newcommand{\hgb at CompanyName}{\@MissingArg{Company not specified!}}
+\newcommand{\companyName}[1]{\renewcommand{\hgb at CompanyName}{#1}}
 
-%% Declaration Pages in German and English ------------------------------------
+\newcommand{\hgb at CompanyUrl}{\@MissingArg{Company URL not specified!}}
+\newcommand{\companyUrl}[1]{\renewcommand{\hgb at CompanyUrl}{#1}}
 
-% German
 
-\newcommand{\@declarationpageDe}{%
-	\begin{german}
-		\chapter{Erkl\"arung}
-		\noindent
-		%Standardfassung der FH-OOe ab 04.04.2012:
-		Ich erkl\"are eidesstattlich, dass ich die vorliegende Arbeit selbstst\"andig und ohne fremde Hilfe verfasst, 
-		andere als die angegebenen Quellen nicht benutzt und die den benutzten Quellen entnommenen Stellen als 
-		solche gekennzeichnet habe. Die Arbeit wurde bisher in gleicher oder \"ahnlicher Form keiner anderen 
-		Pr\"ufungsbeh\"orde vorgelegt.
-		Die vorliegende, gedruckte Arbeit ist mit dem elektronisch \"ubermittelten Textdokument identisch.
-		\par
-		\vspace{10mm}
-		\noindent
-		%\@placeofstudy, am \formatdate{\value{@dayofsubmission}}{\value{@monthofsubmission}}{\value{@yearofsubmission}}
-		\@placeofstudy, am \DTMdate{\value{@yearofsubmission}-\value{@monthofsubmission}-\value{@dayofsubmission}}
-		\par
-		\vspace{12mm}
-		\noindent
-		\@author
-	\end{german}
+%% Logo -------------------------------------------------------------------------
+
+% Specify the institution's logo - DEPRECATED - logo is now handled in theme files only!
+\newcommand{\hgb at LogoFile}{@unspecified}	% 
+\newcommand{\logofile}[1]{%
+	\ClassWarning{hgbthesis}{Command \string\logofile\space is deprecated, logo should be specified in theme file!}%
+	\renewcommand{\hgb at LogoFile}{#1}
 }
 
-% English
+%% Create title pages -------------------------------------
 
-\newcommand{\leadingzero}[1]{\ifnum #1<10 0\the#1\else\the#1\fi}
-
-\newcommand{\@declarationpageEn}{%
-	\begin{english}
-		\chapter{Declaration}
-		\noindent
-		I hereby declare and confirm that this thesis is entirely the result of my own original work. 
-		Where other sources of information have been used, they have been indicated as such and properly 
-		acknowledged. I further declare that this or similar work has not been submitted for credit elsewhere.
-		This printed copy is identical to the submitted electronic version.
-		\par
-		\vspace{10mm}
-		\noindent
-		%\@placeofstudy, \the\year-\leadingzero{\month}-\leadingzero{\day} %http://de.wikibooks.org/wiki/LaTeX-W%F6rterbuch:_today 
-		%\@placeofstudy, {\usdate\formatdate{\value{@dayofsubmission}}{\value{@monthofsubmission}}{\value{@yearofsubmission}}}
-		\@placeofstudy, \DTMdate{\value{@yearofsubmission}-\value{@monthofsubmission}-\value{@dayofsubmission}}
-		\par
-		\vspace{12mm}
-		\noindent
-		\@author
-	\end{english}
+% Generate the front pages (to be redefined by theme .sty files)
+\newcommand{\hgb at MakeFrontPages}{%
+	\ClassError{hgbthesis}{Command \string\hgb at MakeFrontPages\space is not defined!}\relax%
 }
 
-\newcommand{\@declarationpage}{%
-\ifthenelse{\equal{\hgb at MainLanguage}{german}}%
-	{\@declarationpageDe}%
-	{\@declarationpageEn}
+% Redefine LaTeX's \maketitle to add PDF meta data
+\renewcommand{\maketitle}{% redefine standard \maketitle command
+	\hypersetup{
+			pdftitle={\hgb at FullTitle},%
+      pdfauthor={\hgb at Author},%
+			pdfsubject={\hgb at ProgramType~\hgb at ProgramName,~\hgb at PlaceOfStudy},
+			pdfcreator={LaTeX using class hgbthesis [\hgbDate]},
+			pdfproducer={pdflatex},
+			pdfkeywords={},
+			pageanchor=false%					disable hyperref page anchors in front pages
+	}%
+	\SetLanguage{\hgb at TitleLanguage}
+	\hgb at MakeFrontPages%						generate front pages
+	\SetLanguage{\hgb at MainLanguage}
+	\hypersetup{pageanchor=true}%		enable hyperref page anchors in the main document
 }
 
+% Define new hook to be used in theme style files for various initializations: 
+% Usage: \AddToHook{hgb at InitThemeHook}{...}
+% Invoked before \maketitle (by hook code below).
+\NewHook{hgb at InitThemeHook}
 
-%% Assembly of title pages ----------------------------------------------------
-
-\renewcommand{\@bachelortitlepages}{
-	\@makebachelortitle%
-	\ifthenelse{\boolean{hgb at isProposal}}%
-		{%	thesis proposal:
-			\@proposalsetup%
-			\@advisorpage%
-			%no copyright page for proposals
-			%no declaration page for proposals
-		}%			
-		{%	final thesis:
-			\@advisorpage%
-			\@copyrightpage%
-			\@declarationpage%
-		}%
+% Initialize remaining parameters before running \maketitle:
+\AddToHook{cmd/maketitle/before}{%
+	\renewcommand{\hgb at Author}{\theauthor}%		defined by 'titling' package
+	\renewcommand{\hgb at Title}{\thetitle}%		  defined by 'titling' package
+	\ifthenelse{\equal{\hgb at SubTitle}{}}%
+		{\renewcommand{\hgb at FullTitle}{\hgb at Title}}%
+		{\renewcommand{\hgb at FullTitle}{\hgb at Title: \hgb at SubTitle}}%
+	%
+	%\ifthenelse{\boolean{hgb at IsProposal}}{\hgb at ProposalSetup}{}% wilbur: moved to \AtBeginDocument
+	\UseHook{hgb at InitThemeHook}%	execute collected code for hgb at InitThemeHook (if any)
 }
 
-\renewcommand{\@mastertitlepages}{
-	\@makemastertitle
-	\ifthenelse{\boolean{hgb at isProposal}}%
-		{%	thesis proposal:
-			\@proposalsetup%
-			\@advisorpage%
-			%no copyright page for proposals
-			%no declaration page for proposals
-		}%			
-		{%	final thesis:
-			\@advisorpage%
-			\@copyrightpage%
-			\@declarationpage%
-		}%
+% Special sectioning setup for thesis proposals: ----------------------------
+% wilbur: should be simplified and moved elsewhere (TODO)
+%
+% Provides a special chapter/section configuration for thesis proposals:
+% The idea is to use the regular 'hgbthesis' class but to have only a single 
+% (unnumbered) chapter with a couple of sections. All float elements and equations
+% are numbered without the chapter count:
+%
+\newcommand{\hgb at ProposalSetup}[0]{%
+	% remove "Kapitel X"/"Chapter X" from chapter titles:
+	\titleformat{\chapter}[display]{\sffamily}{}{0pt}{\Huge}% from 'titlesec' package loaded by 'hgbheadings'
+	% remove chapter number from header:
+	\renewcommand{\chaptermark}[1]{\markboth{##1}{}}% wilbur: from 'fancyhdr' package loaded by 'hgbheadings'
+	% define an empty entry format for the TOC chapter numbering (tocbasic)
+	\newcommand\noentrynumber[1]{}
+	% set empty number and remove indentation for chapter numbering in TOC (tocbasic)
+	\DeclareTOCStyleEntry[entrynumberformat=\noentrynumber,numwidth=0pt]{tocline}{chapter}
+	 % remove chapter number from sections and figures (basic LaTeX):
+	\counterwithout{section}{chapter}
+	\counterwithout{figure}{chapter}
+	\counterwithout{table}{chapter}
+	\counterwithout{equation}{chapter}
+	\counterwithout{program}{chapter}
+	\counterwithout{algorithm}{chapter}
 }
 
-\renewcommand{\@diplomatitlepages}{
-	\@makediplomatitle
-	%\ifthenelse{\equal{\@advisor}{}}%
-			%{}{\@advisorpage}%
-	\@advisorpage
-	\@copyrightpage
-	\@declarationpage
+\AtBeginDocument{%
+	\ifthenelse{\boolean{hgb at IsProposal}}{\hgb at ProposalSetup}{}%
 }
 
+%% Set various terms to be redefined by title page themes
 
+\ifthenelse{\equal{\hgb at TitleLanguage}{}}%	duplicate in 'hgb.sty'!
+		{\renewcommand{\hgb at TitleLanguage}{\hgb at MainLanguage}}{}%
 
-\renewcommand{\@internshiptitlepages}{
-	\@makeinternshiptitle
-	\@companypage
-	\@copyrightpage
-	\@declarationpage
-}
+\renewcommand{\hgb at ThesisName}{\hgbDictionaryGet{\hgb at ThesisType-docname}{\hgb at TitleLanguage}}%
+\renewcommand{\hgb at ProposalName}{\hgbDictionaryGet{proposal-name}{\hgb at TitleLanguage}}%
 
-\newcommand{\@warnmultipleauthors}{\PackageWarning{hagenberg-thesis}{Multiple authors are not supported ('\@backslashchar and' is ignored)!}}%
 
-% Add PDF meta data and create title pages
-\renewcommand{\maketitle}{	%replace standard LaTeX-command
-	\def\and{\@warnmultipleauthors}% suppress \and inside \author{..}
-	\renewcommand{\thanks}[1]{}% suppress \thanks{..} inside \author{..}
-	\hypersetup{
-			pdftitle={\@title},
-			pdfauthor={\@author},
-			pdfsubject={\@programtype \@programname, \@placeofstudy},
-			pdfcreator={LaTeX using class hgbthesis [\hgbDate]},
-			pdfproducer={pdflatex},
-			pdfkeywords={},
-			pageanchor=false	% disable hyperref page anchors in frontmatter pages
-	}%
-	\@maketitlepages
-	\hypersetup{pageanchor=true}	% enable hyperref page anchors in the main document
-}
-
 %% Additional Hagenberg packages ----------------------------------------------
 
 \RequirePackage{hgbmath}
@@ -582,5 +337,8 @@
 \RequirePackage{hgbabbrev}
 \RequirePackage{hgblistings}
 \RequirePackage{hgbbib}
+\RequirePackage{hgbdict}
 
+\hgb at UseTheme{\@ThemeID}%		load theme style file
+
 \endinput



More information about the tex-live-commits mailing list.