3
2

Liebe Gruppe.

Ist es möglich mit \include{} die Präambel auf zu teilen? Des weiteren würde ich sehr gerne dies als Titelseite in einem anderen Dokument machen und dann einfügen (das was ich wie geht). Allerdings würde ich äußerst gerne in meinem Alphadokument [das Dokument worin ich schreibe - nicht das Titeldokument] alles erledigen können - zum Beispiel meinen Namen eingeben, die Überschrift. Das Titeldokument soll die Informationen dann einfach in das gewollte Layout wandeln. Ist das möglich - und wenn ja: wie? Hier mein Titeldokument mit Kopf- und Fußzeile. Es wäre schön alles aus einem Dokument machen zu können - ohne alles in einem anderen Dokument zu ändern.

Hier der Quellcode:

Open in writeLaTeX
\begingroup
    \noindent
    \bfseries
    \begin{tabular}{|p{\dimexpr0.5\textwidth-2\tabcolsep}p{\dimexpr0.5\textwidth-2\tabcolsep}|}
        \hline
        Received:            & Approved:  \cr
                             & Date:      \cr
                             & Signature: \cr
        (for the instructor) &            \cr
        \hline
    \end{tabular}
\endgroup
\bigskip
\begingroup
    \centering
    \obeylines
    \scshape
    \lsstyle
   \normalsize DAS FACH
    \vspace{0.01ex}
    \Huge ABGABE
 \vspace{0.1ex}
    \normalsize NAME \\{\small E-MAIL} \linebreak
   \hspace{1ex}    
    \begin{normalsize}
    INSTITUT
    \end{normalsize}
    \large UNI
   {\normalsize  \today}
\endgroup

\clearpage

\pagebreak
\onecolumn
\rhead{\scshape{\today}}
\lhead{\scshape{NAME}

\cfoot{\parbox{\textwidth}{\hrulefill\kern-0.6ex\raisebox{-0.5ex}{$\Bigl[$\makebox[2em][c]{\thepage}$\Bigr]$}\kern-0.5ex\hrulefill}}
\setlength\headheight{15pt}

\setlength\headheight{15pt

}

Vielen Dank schon mal im Voraus!

gefragt 02 Sep '14, 00:12

Basilius%20Sapientia's gravatar image

Basilius Sap...
510143442
Akzeptiert-Rate: 33%

bearbeitet 26 Nov '14, 17:27

Johannes's gravatar image

Johannes
7.3k294566

Wenn ich das richtig sehe, sind das eigentlich zwei Frage:

  • Wie kann ich eine Dokumentpräambel in eine oder mehrere Dateien auslagern?
  • Wie kann ich die Titelseite so definieren, dass Teile davon variable sind und nicht immer die komplette Definition der Titelseite editiert werden muss?

In meinen Augen wäre es daher sinnvoll gewesen, erst die erste Frage und darauf aufbauend dann die zweite Frage zu stellen. Antworten zu vermischten Fragen werden leider immer sehr lang oder lassen irgendwelche Fragen offen.

(02 Sep '14, 09:23) gast3

@basilius Können wir diese Frage auf »Wie kann ich meine Titelseite ausgliedern?« (oder etwas ähnliches) verallgemeinern? Andere Sucher würden die sehr gute Antwort von @Ijon dann schneller/besser/leichter finden.

(26 Nov '14, 17:10) Johannes

@basilius Können wir diese Frage auf »Wie kann ich meine Titelseite ausgliedern?« (oder etwas ähnliches) verallgemeinern? Andere Sucher würden die sehr gute Antwort von @Ijon dann schneller/besser/leichter finden.

(11 Dez '14, 09:53) Johannes

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« 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:

Open in Online-Editor
\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:

Open in Online-Editor
\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

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.

Permanenter link

beantwortet 02 Sep '14, 09:17

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 24 Sep '16, 10:59

tom75's gravatar image

tom75
2.2k187884

2

Im Zusammenhang vielleicht interessant: Was ist der Unterschied zwischen include und input

(02 Sep '14, 09:31) cgnieder

Vielen Dank für die Hilfe! Und @Clemens - Danke für den Hinweis! :-)

(02 Sep '14, 15:47) Basilius Sap...
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×17
×17
×9
×4

gestellte Frage: 02 Sep '14, 00:12

Frage wurde gesehen: 15,019 Mal

zuletzt geändert: 24 Sep '16, 10:59