Das wichtigste zuerst: `\include` hat in der Präambel *nichts* verloren. Die Anweisung ist dazu gedacht, den Inhalt eines Dokuments in voneinander weitgehend unabhängige Portionen zu unterteilen, die dann mit Hilfe von `\includeonly` auch nur teilweise kompiliert werden können. U. a. fügt LaTeX am Anfang und Ende des `\include` ein `\clearpage` ein und führt für jede per `\include` eingebundene Datei eine eigene `aux`-Datei. Das ist in der Dokumentpräambel nicht sinnvoll. Daher verwendet man in der Dokumentprämbel stattdessen ggf. `\input`.
*Exkurs in die Geschichte:* Ursprünglich hat ein LaTeX-Lauf eines Dokuments mit einigen hundert Seiten schon einmal mehrere zehn Minuten gedauert. Deshalb war es gerade in der Entwicklungsphase gut, wenn man den LaTeX-Lauf eines solchen Dokuments auf das Kapitel beschränken konnte, an dem man gerade arbeitet. Dazu hat man das Dokument kapitelweise in einzelne Dateien aufgeteilt und diese mit `\include` geladen. Während der Arbeit an einem Dokument hat man dann die Verarbeitung mit `\includeonly` auf das Kapitel eingeschränkt, an dem gerade geschrieben oder geändert hat. Verzeichnisse und Querverweise blieben dabei – im Gegensatz zu auskommentierten `\input`-Anweisungen – vollständig. Das hat die Arbeit erheblich beschleunigt. Heute hat der Geschwindigkeitsfaktor erheblich an Bedeutung verloren. Meist werden sogar während der Bearbeitung alle LaTeX-Läufe und alle Aufrufe von `makeindex`, `biber` etc. durchgeführt. `\includeonly` wird kaum noch verwendet. Ohne die Verwendung von `\includeonly` gibt es höchstens noch einen Grund für `\include`: Eine fehlende Datei erzeugt keine Fehlermeldung. Das kann aber auch ein Nachteil sein. Meist fährt man daher mit `\input` genauso gut oder besser.
Du kannst die Dokumentpräambel, also den Teil vor `\begin{document}`, natürlich in einzelne Dateien aufteilen und diese mit `\input` laden. Eine schöne Alternative wäre, stattdessen ein eigenes Paket oder sogar mehrere oder eine Wrapper-Klasse zu schreiben. Aus einer Präambel kann man normalerweise in wenigen Schritten ein Paket erstellen:
* Code in eine Datei mit Endung `.sty` kopieren.
* Alle `\makeatletter` und `\makeatother`, die nicht innerhalb einer Befehls- oder Umgebungsdefinition stehen, entfernen.
* Alle `\usepackage` durch `\RequirePackage` ersetzen.
* Am Anfang eine Zeile `\ProvidesPackage{<PAKETNAME>}[2014/09/02 <VERSIONSNUMMER> Paket von <MIR> fuer <DAS>]` ergänzen. Dabei die `<FOO>` durch sinnvolle Angaben ersetzen. `<PAKETNAME>` sollte der Namen der Datei *ohne die Endung `.sty`* sein. Anderenfalls gibt LaTeX später beim Laden des Pakets eine Warnung aus.
* Unmittelbar nach der `\ProvidesPackage`-Zeile ein `\ProcessOptions\relax` einfügen.
Niemals in ein Paket verlagern sollte man das Laden von `inputenc`, weil die Eingabecodierung immer eine Eigenschaft des Dokuments und nicht der verwendeten Pakete ist. Außerdem erschwert man dadurch ganz erheblich die Verwendung des eigenen Pakets mit einer anderen Eingabecodierung oder `xelatex` oder `lualatex`. Ebenso sollte man das Laden von `fontenc` oder `fontspec` ggf. über die Pakete `ifxetex` und `ifluatex` absichern bzw. nur vornehmen, wenn man bei der Verwendung des eigenen Pakets `xelatex` und `lualatex` bzw. `pdflatex` generell ausschließen will. Das sollte dann auch gut dokumentiert sein.
Wenn man jetzt möchte, kann man natürlich zusätzliche Optionen einbauen. Dazu sollte man unbedingt »[LaTeX2e for class and package writers](http://www.ctan.org/clsguide)« writers](http://www.ctan.org/pkg/clsguide)« gelesen und halbwegs verstanden haben.
Was nun Deinen Titel anbelangt. Den kannst Du als neuen Befehl definieren. Dinge wie Namen etc. die im Titel verwendet werden, kannst Du dabei beispielsweise als Argument definieren. Allerdings wirst Du dabei schnell auf das Problem stoßen, dass es schwer wird, sich zu merken welches Argument welche Bedeutung hat. Außerdem sind max. 9 Argumente einfach möglich. Daher arbeiten die meisten Klassen bei `\maketitle` auch mit zusätzlichen Befehlen, die dann ihrerseits Makros definieren, die im Titel verwendet werden. Das ist dann auch ein brauchbares Beispiel, wie ein Paket geschrieben werden könnte. In Deinem Fall könnte das beispielsweise so aussehen:
\ProvidesPackage{bastitle}[2014/09/02 Titelseite wie sie @Bas haben will]
% Hier würde man ggf. die Definition von Optionen einfügen. Dann folgt:
\ProcessOptions\relax
\renewcommand*{\maketitle}{%
\begin{titlepage}% gibt es bei vielen Klassen (siehe Anleitung der Klasse)
\setlength{\parskip}{0pt}\setlength{\parindent}{0pt}\setlength{\parfillskip}{0pt plus 1fil}
\textbf{%
\begin{tabular}{|p{\dimexpr0.5\textwidth-2\tabcolsep}p{\dimexpr0.5\textwidth-2\tabcolsep}|}
\hline
Received: & Approved: \tabularnewline
& Date: \tabularnewline
& Signature: \tabularnewline
(for the instructor) & \tabularnewline
\hline
\end{tabular}}
\bigskip
\begingroup
\centering
\scshape
\csname lsstyle\endcsname% existiert nur, wenn microtype geladen wurde
\@fach\unskip\strut\par
{\Huge \@abgabe\unskip\strut\par}
\@author\par
{\small \@email\unskip\strut}\par% Hier nach der Umgebung, um den größeren Abstand von \normalsize zu haben.
\medskip% das ursprüngliche \hspace{1ex} sieht an der Stelle nach einem Fehler aus
\@institut\unskip\strut\par
{\large\@universitaet\unskip\strut\par}
\endgroup
\end{titlepage}
}
\newcommand*{\fach}[1]{\gdef\@fach{#1}}
\newcommand*{\@fach}{%
\PackageWarning{bastitle}{Hey! Das Fach sollte unbedingt noch\MessageBreak
mit \string\fach\space gesetzt werden}%
}%
\newcommand*{\abgabe}[1]{\gdef\@abgabe{#1}}
\newcommand*{\@abgabe}{}
\newcommand*{\institut}[1]{\gdef\@institut{#1}}
\newcommand*{\@institut}{%
\PackageWarning{bastitle}{Du wirst ja wohl wissen, an welchem\MessageBreak
Institut die Arbeit abgegeben wird}%
}
\newcommand*{\universitaet}[1]{\gdef\@universitaet{#1}}
\newcommand*{\@universitaet}{%
\PackageWarning{bastile}{Komm schon! Wie heisst Deine Uni}%
}
\newcommand*{\email}[1]{\gdef\@email{#1}}
\newcommand*{\@email}{}
\endinput % Das ist das Ende von bastitle.sty
Anwenden könnte man das dann beispielsweise so:
\documentclass{scrbook}
\usepackage{bastitle}
\usepackage{microtype}
\begin{document}
\author{Autor}
\abgabe{31. Februar 2015}
\institut{Institut}
\universitaet{Uni}
\email{Email}
\maketitle
\end{document}
Mit dem Ergebnis:
![Beispiel für Titleseite][1]
Irgendwo fehlt mir noch der Titel der Arbeit. Wie bei `\author` könnte man dafür einfach den Standardbefehl `\title` mit dem Speichermakro `\@title` verwenden. Du kannst das nun bei Bedarf sicher selbst einfügen.
Die Anweisung `\lsstyle` habe ich übrigens oben durch `\csname lsstyle\endcsname` ersetzt, damit es auch ohne `microtype` funktioniert. Man könnte stattdessen auch ein `\RequirePackage{microtype}` außerhalb der Definition von `\maketitle` hinzufügen (beispielsweise direkt nach `\ProcessOptions`), um sicherzustellen, dass das Paket auch geladen ist.
[1]: http://texwelt.de/wissen/upfiles/test9.png