Die Datei
Die Datei ist mit Windows/DOS-Zeilenenden (CR+LF) versehen. Darin sehe ich kein grundsätzliches Problem. Solche Zeilenenden sind zwar in der LaTeX-Welt für Pakete, Klassen etc. eher unüblich, stören aber auch nicht weiter. Allerdings sollte man es vermeiden, innerhalb eines Projekts oder einer Vorlage Dateien mit unterschiedlichen Zeilenenden zu verwenden.
titlepage.tex:
%% titlepage.tex %%
Erfreulich ist, dass hier im Kopfkommentar der Original-Dateinamen angegeben ist. Leider fehlen aber erneut Angaben zum Urheber, zur Lizenz und zum Zweck der Datei.
Im Kopf einer Vorlagendatei oder einer anderen Datei, die man weitergibt, sollte neben dem Original-Dateinamen auch der Urheber, die Lizenz und idealer Weise der Zweck der Datei angegeben sein.
titlepage.tex:
% coordinates for the bg shape on the titlepage \newcommand{\diameter}{20} \newcommand{\xone}{-15} \newcommand{\xtwo}{160} \newcommand{\yone}{15} \newcommand{\ytwo}{-253}
Wie schon in mm
und eine Koordinate mit der Einheit pt
versehen wird. Warum die Einheiten nicht bereits Teil der Definition hier sind, erschließt sich nicht.
Makros sollten entweder selbsterklärend benannt oder in einem Kommentar kurz erläutert werden.
Längen oder Koordinaten sollten entweder mit Einheit angegeben werden oder die Einheit sollte in einem Kommentar kurz erläutert werden.
Ebenso ist für Längen und Koordinaten ein Bezugspunkt anzugeben.
Schwerer wiegt jedoch, dass Definitionen nach der Dokumentpräambel aber eigentlich nichts mehr verloren haben. Das gilt auch oder sogar erst recht für Dateien, die nach der Dokumentpräambel geladen werden. Es drängt sich hier also die Vermutung auf, dass die gesamte Titeldefinition besser in einem Paket oder in diesem Fall in der Wrapper-Klasse untergebracht wäre.
Das generelle Layout und Markup sollte Teil der Wrapper-Klasse sein. Das gilt ebenso für Voreinstellungen.
Einzelfallabweichungen von den Voreinstellungen sollten über Definitionen in der Dokumentpräambel oder spezielle Markup-Anweisungen und Parameter zu Markup-Anweisungen vorgenommen werden.
titlepage.tex:
\begin{titlepage}
Es ist sehr zu begrüßen, dass hier die titlepage-
Umgebung verwendet wird. Leider wird das allzu häufig bei selbst definierten Titelseiten missachtet.
Für selbst definierte Titelseiten ist titlepage
genau die richtige Umgebung.
Obwohl der Verdacht nahe liegt, dass hier gar kein normaler Titel, sondern eher eine Art Umschlag gemeint ist, ist das in Ermangelung einer besseren Alternative eine gute Lösung. Eine Alternative für Cover-Seiten ist im Paket titlepage zu finden. Aber auch diese basiert auf titlepage
.
titlepage.tex:
Hier löst sich nun also die Frage, was mit bg shape gemeint ist. Es ist tatsächlich eine Umrandung. Wie sich bei näherer Analyse – im Zweifelsfall schlicht dem Anschauen des Ergebnisses – zeigt, liegt dieser Rahmen allerdings nicht im Hintergrund, wie das bg im Kommentar vermuten lassen würde, sondern schlicht um den Titel.
Abkürzungen in den Kommentaren sollten allgemein gebräuchlich und zutreffend sein.
Hier werden nun auch die zuvor als Makro definierten Koordinaten verwendet. Unverständlich bleibt allerdings, warum die Einheiten erst hier hinzu gefügt werden und nicht bereits Teil der Definitionen sind. Darüber hinaus wird nun auch die Bedeutung der Makros klar. Allerdings hätte man die Namen der Makros auch spezifischer wählen können.
Nun wird auch deutlich, dass die Festlegung der Koordinaten eher heuristisch oder geschätzt als zielgerichtet erfolgte. Dass die Koordinaten relativ zur aktuellen Position angegeben sind, führt dazu, dass die Position, nicht jedoch die Größe des Rahmens empfindlich auf Änderungen der Ränder reagieren. Es ist anzunehmen, dass dies keineswegs beabsichtigt ist. Da der Rand mit Hilfe von Tikz gezeichnet wird, gäbe es durchaus sehr einfache Möglichkeiten, um den Rahmen stattdessen an der Seite fest zu machen. Darüber hinaus existieren Pakete, um Elemente an absolute Positionen zu verankern. Man könnte aber auch von der relativen Position aus eine absolute Position berechnen. Es liegt auch die Vermutung nahe, dass der Rahmen eigentlich horizontal zentriert sein sollte. Mit den oben definierten Werten wird dies allerdings im Beispiel nicht erreicht. Ob es versäumt wurde, die Werte nach einer Änderung der Ränder, entsprechend anzupassen, oder ob die Werte nie ganz korrekt waren, ist nicht mehr festzustellen.
Die Position von absolut zu platzierenden Elementen sollte über entsprechende Pakete oder passende Berechnungen und nicht mit für nur einen speziellen Fall passenden Werten eingestellt werden.
Am Rande sei erwähnt, dass gegen die Verwendung von Tikz nichts einzuwenden ist. Dieses Paket ist für dergleichen Arbeiten bestens geeignet. Interessierten Anwendern sei allerdings verraten, dass man einen passenden Rahmen auch mit den einfachen LaTeX-Mitteln der picture-
Umgebung erreichen könnte. Im titlepage-Projekt wurde das beispielhaft durchgeführt.
Bei der Dicke – oder eher Dünne – der Linie ist übrigens Grau kaum von Schwarz zu unterscheiden. Deshalb wurde im titlepage-Projekt auch abweichend schwarz verwendet.
Wie schon in tikzpicture-
Umgebung eher zufällig erscheint.
Die Formatierung des Quellcodes sollte die Erkennung von Syntax und Semantik unterstützen.
titlepage.tex:
\begin{textblock}{10}[0,0](4,2.5) \includegraphics[width=.3\textwidth]{logos/KITLogo_RGB.pdf} \end{textblock}
Hier wird eine externe Grafik absolut positioniert. Zunächst ist zu bemerken, dass hier plötzlich anders eingerückt wird als zuvor, nämlich mit ein bis zwei Tabulatoren. Dazu sei auf die Ausführungen zu
Man sollte Tabulatoren in LaTeX-Dokumenten vermeiden.
Bei Verwendung von Tabulatoren sollte beispielsweise in einer README-Datei die Tabulatorweite klar definiert sein.
Die Positionierung selbst erfolgt absolut mit Hilfe des Pakets textpos. Dazu wurde dieses Paket in der Wrapper-Klasse mit der Option absolute
geladen. Das erschwert es ggf. Anwendern das Paket selbst später in anderer Weise zu verwenden. Trotzdem ist dieses Vorgehen nicht grundsätzlich abzulehnen. Die Frage ist allerdings, warum man das Logo nicht relativ zum Rahmen oder ggf. absolut mit Hilfe des ohnehin bereits verwendeten Tikz-Pakets platziert.
In Vorlagen sollten Pakete nicht mehrere Pakete für denselben Zweck geladen werden, wenn dies dem Anwender erschwert, eines der Paket selbst auf andere Weise zu nutzen.
Die Verwendung von textpos in dieser Form ist auch deshalb nicht unproblematisch, da das Ergebnis ganz erheblich von Einstellungen abhängig ist, die der Anwender in der Präambel ändern kann. So sind beispielsweise die Größen, die textpos für die horizontalen und vertikalen Koordinaten verwendet, veränderbar. Dadurch können für den Anwender verblüffende Effekte auf der Titelseite entstehen.
Darüber hinaus wird die Abbildung hier zwingend aus einem bestimmten Unterverzeichnis und mit einer bestimmten Endung geladen. Das Laden aus einem Unterverzeichnis kann unter Umständen die Übersicht erleichtern. Wenn allerdings ein Unterverzeichnis nur für eine einzige Datei angelegt wird, dann bringt das Unterverzeichnis kaum einen Gewinn. Da das Logo auch die einzige Datei ist, die in einem Unterverzeichnis liegt, stört dies eher. Während für die Weitergabe des Dokuments ansonsten nur die Dateien des Hauptverzeichnisses kopiert werden müssen, muss hier auch noch ein Unterverzeichnis kopiert werden. Das macht das Ganze eher unhandlicher. Desweiteren könnte es den Anwender dazu verleiten, selbst Bilder in Unterverzeichnissen in dieser Weise anzusprechen. Tatsächlich wäre dafür aber \graphicspath
oder – nach Empfehlung des LaTeX-Teams – die Änderung von $TEXINPUTS
vorzuziehen. Das wäre dann auch wesentlich robuster gegen das Verschieben von Abbildungen oder Umbenennen von Verzeichnissen.
Verzeichnisnamen sollten beim Laden von externen Abbildungen im Argument von \includegraphics
weggelassen werden.
Die Endung »
Beim Laden von Abbildungen mit \includegraphics
sollte man die Dateiendung weglassen.
Der Anwender einer Vorlage sollte nicht ohne Not auf eine bestimmte TeX-Maschine, beispielsweise PDFLaTeX mit direkter PDF-Ausgabe, festgelegt werden.
Übrigens wäre eine Festlegung auf EPS nicht ganz so problematisch wie die Festlegung auf PDF. TeX Live kann in der Voreinstellung bereits min. seit 2010 EPS-Dateien zur Laufzeit in PDF-Dateien umwandeln.
Mehr als eigenartig ist, dass hier die Breite des Logos über die Breite des Textbereichs bestimmt wird. Das Logo absolut zu platzieren, seine Größe aber relativ zum Textbereich zu bestimmen erscheint zumindest mir, unlogisch.
Ein Layout-Element, das Bestandteil des Papiers ist, sollte nur relativ zum Papier bzw. absolut positioniert werden und auch nur absolute oder vom Papier bestimmte Maße besitzen.
Ein Layout-Element, das Bestandteil des Inhalts ist, sollte nur relativ zum Inhalt platziert werden. Seine Maße können entweder absolut oder relativ zu einem Inhaltselement angegeben werden.
titlepage.tex:
\changefont{phv}{m}{n} % helvetica
Hier wird nun für den gesamten restlichen Titel auf Helvetica umgeschaltet. Ob es sinnvoll ist, für den Titel unabhängig von der ansonsten im Dokument verwendeten Grotesk auf eine ganz bestimmte Grotesk umzuschalten, kann sicher lebhaft diskutiert werden. Dagegen spräche beispielsweise, dass der Titel eigentlich Teil des Buchblocks ist und innerhalb des Buchblocks derartige Schriftmischungen eher vermieden werden sollten. Dafür spräche, dass hier der Titel möglicherweise als eine Art Cover missbraucht wird und für das Cover andere Regeln gelten. Abschließend ist diese Frage daher nicht zu beantworten. Es kann allenfalls eine bedingte Regel abgeleitet werden.
Soll nicht ein ganz bestimmter Font verwendet werden, so sollte man auch nicht einen ganz bestimmten Font laden, sondern beispielsweise mit den Standard-Familienbefehlen \rmfamily
, \sffamily
und \ttfamily
arbeiten.
Ungünstig ist normalerweise die für die Umschaltung verwendete Anweisung. Diese Anweisung wurde eins für einen Schriftkatalog definiert, um innerhalb des Schriftkatalogs möglichst viele Fonts vorführen zu können. Leider hat sich diese Anweisung verselbständigt. Unbedarfte Anwender versuchen inzwischen sehr häufig sie dazu zu verwenden, die Dokumentschrift insgesamt umzuschalten, was natürlich so nicht funktioniert. Darüber hinaus besitzt LaTeX auch mit \usefont
auch bereits eine ganz ähnliche Anweisung, die im Unterschied lediglich als zusätzliches erstes Argument noch das Font-Encoding erwartet. Hier würde sich beispielsweise T1
als Encoding empfehlen. Man könnte die Umschaltung aber auch mit \fontfamily{phv}\mdseries\upshape
erreichen.
Die Anweisung \changefont
sollte aus didaktischen Gründen weder definiert noch verwendet werden!
titlepage.tex:
Der weitere Titel soll nun offenbar nicht mehr absolut, sondern relativ zum Textbereich platziert und horizontal zentriert werden. Allerdings vermute ich sehr stark, dass der Entwickler dieser Titelseite sich nicht bewusst war, dass die center-
Umgebung zusätzlichen vertikalen Abstand einfügt, der zudem von der Schriftgröße abhängig ist. Wie auch in Gleitumgebungen wäre hier möglicherweise – aber das kann nur als Vermutung geäußert werden – \centering
vorzuziehen. Die Vermutung gründet sich allein auf die Tatsache, dass der initiale vertikale Abstand mit dem absoluten Wert 3,5 cm angegeben wurde. Denkbar wäre außerdem dass die gegebene Abhängigkeit vom Satzspiegel ebenfalls nicht beabsichtigt ist, sondern der Anfang des Titels eigentlich relativ zum Rahmen oder Logo platziert werden sollte. Genau lässt sich das aber nicht sagen. Es kann durchaus sein, dass sowohl der Abstand als auch die Umgebung mit voller Absicht und absolut korrekt so gewählt wurden.
titlepage.tex:
\Huge{\mytitle}
Hier wurde bei der Implementierung offensichtlich fälschlich davon ausgegangen, dass \Huge
eine Anweisung mit einem Argument sei. Das ist jedoch keineswegs der Fall. Vielmehr handelt es sich bei allen Schriftgrößenbefehlen um Umschalter, die ab sofort bis zum Ende der aktuellen Gruppe (oder einer neuerlichen Umschaltung) gelten. Es handelt sich hier um ein sehr häufiges Missverständnis bei Anfängern, dem man keinen Vorschub leisten sollte. Dieser offensichtliche Fehler setzt sich mit anderen Schriftgrößenschaltern im gesamten Titel fort.
Die Wirkung von Schriftgrößenumschaltungen wie \Huge
ist ggf. durch eine Gruppe zu begrenzen. Diese muss vor der Umschaltung begonnen werden und sollte immer nach einem Absatzende beendet werden.
titlepage.tex:
\vspace*{2cm}\\
Die Verwendung der Sternform von \vspace
bringt innerhalb einer Seite keinen Vorteil mehr. Darüber hinaus kennt \\
ein optionales Argument, um zusätzlichen Abstand einzufügen. Man hätte das also auch deutlich abkürzen können. Im Übrigen wird der Abstand ohnehin erst durch das \\
ausgelöst.
Vertikaler Abstand mit \vspace
oder \vspace*
wird erst vor der nächsten Zeile eingefügt.
Statt vertikalen Abstand mit \vspace
oder \vspace*
unmittelbar vor \\
einzufügen, ist es sinnvoll, das optionale Argument von \\
für diesen Zweck zu verwenden.
titlepage.tex:
\Large{ \iflanguage{english}{Diploma Thesis of} {Diplomarbeit\\von} }\\
Hier haben wir erneut das Problem, dass eine Schriftgrößenschalter falsch angewendet wird. Im Prinzip ist das aber sogar fast gut, weil so wenigstens der harte Umbruch in der richtigen Schriftgröße erfolgt.
Dazu kommt wieder das Problem mit möglichen schlechten Formatierung des Quelltextes durch überlange Zeilen infolge der Verwendung nicht klar definierter Tabulatoren, das bereits für
Man sollte Tabulatoren in LaTeX-Dokumenten vermeiden.
Bei Verwendung von Tabulatoren sollte beispielsweise in einer README-Datei die Tabulatorweite klar definiert sein.
Im Quelltext sind Zeilenlängen über einer Darstellungsbreite von 80 Zeichen bei Dateien, die man weitergibt, nach Möglichkeit zu vermeiden. Besser ist eine Begrenzung auf 76–78 Zeichen.
Die Fallunterscheidung für zwei Sprachen kann man so tatsächlich machen. Wenn ein Dokument nur zwei Sprachen unterstützt, ist das prinzipiell ein guter Weg. Will man dem Benutzer allerdings auch die Verwendung weiterer Sprachen ermöglichen, wäre die Definition von Sprach-Makros anzuraten. Die verwendete Basisklasse bietet dafür über das Paket scrbase Befehle wie \providecaptionname
, die in der KOMA-Script-Anleitung nachgelesen werden können.
Für sprachabhängige Begriffe oder Wendungen empfiehlt es sich, Makros zu definieren.
Darüber hinaus erfolgt an dieser Stelle eine alleinige Festlegung auf Diplomarbeiten. Die Vorlage wird aber ausdrücklich für Abschlussarbeiten präsentiert. Solche könnten auch Bachelor-Arbeiten, Master-Arbeiten oder Dissertationen sein. Auch für Studienarbeiten wäre die Vorlage sicher grundsätzlich verwendbar. Damit man dazu nicht die Definition der Titelseite selbst, sondern nur den Inhalt ändern muss, wäre hier ebenfalls ein Makro empfehlenswert.
Zur Trennung von Form und Inhalt sollten variable Inhalte über Makros definiert werden. Es ist empfehlenswert, wenn diese Makros nicht vom Anwender direkt umdefiniert werden müssen, sondern die Inhalte über Befehle einzustellen sind.
titlepage.tex:
Alles, was zu diesem Teil des Codes anzumerken ist, wurde bereits oben erwähnt: Zeileneinzug, \vspace*
, Schriftgrößenumschaltung, feste Kopplung von Form und Inhalt.
titlepage.tex:
Es ist absolut nicht nachzuvollziehen, warum hier die center-
Umgebung beendet wird, nur um (wieder mit der Sternversion von \vspace
statt der normalen Version) einen vertikalen Abstand einzufügen. Sowohl Zeilenenden mit Abstand (siehe optionales Argument von \\
) als auch Absätze und \vspace
sind auch innerhalb der center-
Umgebung möglich. Das gilt ebenso, wenn man \centering
verwendet. Auch die erneut falsch verstandene Verwendung von \Large
ist kein Argument für die Unterbrechung der Umgebung. Darüber hinaus führt sowohl das Ende als auch der neue Anfang der Umgebung zu vertikalen Abständen (siehe oben).
Unmotivierte Unterbrechungen von Umgebungen sind zu vermeiden.
titlepage.tex:
\begin{tabular}[ht]{l c l} % Gutachter sind die Professoren, die die Arbeit bewerten. \iflanguage{english}{Reviewer}{Erstgutachter}: & \hfill & \reviewerone\\ \iflanguage{english}{Second reviewer}{Zweitgutachter}: & \hfill & \reviewertwo\\ \iflanguage{english}{Advisor}{Betreuender Mitarbeiter}: & \hfill & \advisor\\ \iflanguage{english}{Second advisor}{Zweiter betreuender Mitarbeiter}: & \hfill & \advisortwo\\ % Der zweite betreuende Mitarbeiter kann weggelassen werden. \end{tabular}
Eine Anordnung mit einer Tabelle ist für eine derartige Formatierung eine sehr gute Wahl. Allerdings findet sich hier ein typischer Anfängerfehler: Die Optionen von tabular
werden teilweise mit denen für table
verwechselt. Zwar kennt tabular
eine Option t
, diese führt aber lediglich dazu, dass die oberste Zeile der Tabelle an der Grundlinie der aktuellen Zeile ausgerichtet wird. Ist die Tabelle das einzige Element eines Absatzes, hat das keine unmittelbaren Auswirkungen. Die Optione h
kennt die tabular-
Umgebung überhaupt nicht. Es ist anzunehmen, dass das optionale Argument schlicht gelöscht werden sollte.
Die tabular-
Umgebung besitzt zwar ein optionales Argument, dieses bestimmt aber lediglich die vertikale Ausrichtung der Tabelle und steht in keiner Beziehung zum optionalen Argument der table-
Umgebung.
Darüber hinaus entsteht der Eindruck, dass der Entwickler beabsichtigt hat, die mittlere Spalte mit Hilfe von \hfill
so zu dehnen, dass die Tabelle die gesamte Breite des Textbereichs einnimmt. Das ist so nicht möglich. Um eine Tabelle auf Textbreite zu dehnen, kann beispielsweise tabular*
oder tabularx
verwendet werden.
Innerhalb von l-
, r-
oder c-
Spalten hat \hfill
keine dehnende Wirkung.
Per Kommentar wird hier außerdem darauf hingewiesen, dass der Zweitkorrektor und der zweite Betreuer entfallen können. Auch hier handelt es sich wieder um Vermischung von Form und Inhalt. Wenn die beiden Felder entfallen können, sollte das in der Definition der Form Berücksichtigung finden. Der entsprechenden Merksatz zur Trennung von Form und Inhalt ist oben bereits zu finden.
titlepage.tex:
Diese Eigentümlichkeit kennen wir bereits von oben.
titlepage.tex:
Der Zeitraum wird hier als Startzeitpunkt bis Endzeitpunkt angegeben. Dabei wird ein Strich für »bis« verwendet. Leider ist dabei aber nur die Wahl von --
für den Strich korrekt. Höchstwahrscheinlich wird nicht berücksichtigt, dass das Leerzeichen nach \timestart
zwar nicht ausgegeben wird, das Leerzeichen nach der schließenden Klammer von \hspace*{0.25cm}
aber jeweils sehr wohl. Ebenso wird das Leerzeichen nach dem Strich durchaus auch gesetzt. Darüber hinaus sind die Abstände typografisch im Deutschen falsch und im Englischen nach meinem Wissen ebenfalls nicht gebräuchlich.
Leerzeichen im Quellcode sind an vielen Stellen signifikant.
Der Bisstrich wird ohne Abstand davor und dahinter gesetzt!
titlepage.tex:
\end{center}
Hier haben wir dann zunächst einmal das korrekte Ende der weniger korrekten center-
Umgebung.
titlepage.tex:
\begin{textblock}{10}[0,0](4,16.8) \tiny{ \iflanguage{english} {KIT -- University of the State of Baden-Wuerttemberg and National Research Center of the Helmholtz Association} {KIT -- Universit\"at des Landes Baden-W\"urttemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft} } \end{textblock} \begin{textblock}{10}[0,0](14,16.75) \large{ \textbf{www.kit.edu} } \end{textblock}
Diese beiden Texte sollten ganz offensichtlich relativ zum oben definierten Rahmen gesetzt werden. Das wird mit der textblock-
Umgebung auch erreicht. Allerdings gilt hier, was bereits bezüglich des Logos oben geschrieben wurde: Man hätte das auch direkt im Zuge des Rahmens mit Tikz lösen können.
titlepage.tex:
\end{titlepage}
Und das war es dann – vollkommen korrekt.
Damit bin ich am Ende der Datei \maketitle
zu erstellen. Wie ich mir eine solche Alternative vorstellen könnte, habe ich im titlepage-Projekt bereits gezeigt. Eventuell werde ich im Zuge einer alternativen Fassung von
Kommentare
Bis-Strich
Sicher? Gehört da nicht ein Halbgeviertstrich hin? Damit wäre doch
--
korrekt.Ja
In dem Satz war leider mehr als ein Tippfehler. So ergab er ja auch absolut keinen Sinn. Ich habe das korrigiert. Danke.
Aber warum »leider«?
Jetzt steht da:
Warum »leider«? Es wurde doch der korrekte Strich gewählt. Übrigens ist nicht nur
--
korrekt, man kann auch den Halbgeviertstrich direkt eingeben, zumindest wenn man pdflatex und utf8 benutzt (vielleicht braucht man auch noch T1, keine Ahnung).Weil leider der Rest des
Weil leider der Rest des Codes, der für den Bis-Strich verwendet wurde, nicht korrekt ist, wie anschließend ausgeführt wird.
Ah, jetzt.
Jetzt verstehe ich den Absatz:
Das soll wohl heißen, daß an dem zitierten Code nur das
--
korrekt ist, der Rest weniger. Ich dachte zuerst, der Satz solle heißen, daß man an dieser Stelle »leider einzig« ein--
als Strich verwenden »darf«. Das klingt dann so, als hätte sich jemand nicht daran gehalten, was ja nicht zutrifft.