PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \title erst nach \maketitle definieren



rafael
31-03-2009, 15:18
Hallo,

ich möchte in eine große Texdatei wahlweise andere Dateien einzeln einbinden, die jeweils einen Titel haben. Da die Einbindung natürlich erst nach dem \maketitle erfolgt, weiß ich nicht, wie ich Titel und Autor geeignet übergebe.


\documentclass{scrartcl}
\begin{document}
\maketitle
\tableofcontents

\input{wert}%enthält den Titel
\end{document}

, wobei wert.tex so aussehen könnte


\title{Aufsatz}
das ist ein Aufsatz

Hat jemand eine Idee?

voss
31-03-2009, 15:24
ich möchte in eine große Texdatei wahlweise andere Dateien einzeln einbinden, die jeweils einen Titel haben. Da die Einbindung natürlich erst nach dem \maketitle erfolgt, weiß ich nicht, wie ich Titel und Autor geeignet übergebe.


und wieso geht \input nicht vor \maketitle?

Herbert

rafael
31-03-2009, 15:43
und wieso geht \input nicht vor \maketitle?
weil die eingebundene Datei auch Text enthält, der nicht vor das Titelblatt geschoben werden soll

voss
31-03-2009, 16:30
weil die eingebundene Datei auch Text enthält, der nicht vor das Titelblatt geschoben werden soll

dann machst du halt dein \maketitlke auch in diese Datei.

Herbert

Xenara
31-03-2009, 16:55
Das wäre vielleicht auch eine Variante (die Idee hab ich von hier (http://matheraum.de/forum/Variablen_unter_Latex/t356949)):



Hier als filecontents das, was in deiner Input-Datei steht.
\begin{filecontents}{wert.tex}
\MyTitle{Titel dieses Aufsatzes}
\MyText{%
\Blinddocument%
}
\end{filecontents}

\documentclass{scrartcl}
\usepackage[english,ngerman]{babel}
\usepackage{blindtext}


\newcommand{\MyTitle}[1]{\newcommand{\MyTitleName}{#1}}
\newcommand{\MyText}[1]{\newcommand{\MyTextName}{#1}}


\begin{document}

\input{wert}% Die grad zu verwendende Input-Datei (die Datei und mit ihr die Variable für den Titel müssen _vor_ \title definiert werden, deshalb der Umweg über \MyTitle und \MyText.

\title{\MyTitleName} % Hier wird dein Titel übernommen.
\author{Autor}
\date{Datum}
\maketitle
\tableofcontents

\MyTextName % Hier wird dann der Fliesstext ausgegeben.

\end{document}

rafael
01-04-2009, 09:50
Das wäre vielleicht auch eine Variante (die Idee hab ich von hier (http://matheraum.de/forum/Variablen_unter_Latex/t356949)):


Vielen Dank, ich dachte zwar das geht etwas direkter und ohne weitere Befehlseinschachtelungen in meiner einzubindenden Datei, aber das ist schon mal eine Lösung.
Übrigens ist der Text in der input Datei schon vollständig in Befehlen gebunden, also etwa so:


\begin{filecontents}{wert.tex}
%%Rahmeninfo
\Titel{Aufsatz}
\Autor{Micky}
\Datum{dd}
%%Text
\Text{
\Stoff{Teilüberschrift1}{beamervariante1}{Textvari ante1}
\Stoff{Teilüberschrift2}{beamervariante2}{Textvari ante2}
}
\end{filecontents}

\documentclass{scrartcl}
\usepackage[english,ngerman]{babel}

\newcommand{\Stoff}[3]{\section{#1} #3}%Textvariante

\newcommand{\Titel}[1]{\newcommand{\MyTitleName}{#1}}
\newcommand{\Autor}[1]{\newcommand{\MyautorName}{#1}}
\newcommand{\Datum}[1]{\newcommand{\Mydatum}{#1}}
\newcommand{\Text}[1]{\newcommand{\MyTextName}{#1}}


\begin{document}

\input{wert}

\title{\MyTitleName} % Hier wird dein Titel übernommen.
\author{\Myautorname}
\date{\Mydatum}
\maketitle
\tableofcontents

\MyTextName % Hier wird dann der Fliesstext ausgegeben.

\end{document}


Kann man da nicht einen Weg finden, um die \Text{} Einschachtelung zu vermeiden?

Xenara
01-04-2009, 10:07
Das Problem, über das ich gestolpert bin war das, dass der Input-Text erst _nach_ der Titelei (\title etc.) eingebunden wird, die Variable für den Titel _erst_ aufgerufen und _danach_ definiert wird, und das gab einen Fehler.

Die einzige Lösung war, das Input vor die Titelei zu setzen. Dann müssen aber natürlich Titel und Text getrennt werden, denn der Text soll ja erst nach maketitle gesetzt werden.

Gibt es einen Fehler mit dem zusätzlichen Befehl um den Text herum? Oder ist es einfach nur etwas "unelegant"? Ich hatte es mit dem Blinddocument getestet und keine Fehler festgestellt.

Theoretisch müsste es gehen, wenn man die Variable erst nach ihrem Aufruf definiert und dann eben LaTeX zweimal laufen lässt. Denn nach meinem Verständnis arbeiten BibTeX und die label/ref-Möglichkeiten nach diesem Prinzip.
Leider reichen meine LaTeX-Programmierkenntnisse nicht aus, um das sauber und ohne Fehler eingebaut zu bekommen.
Vielleicht bekommt das jemand anderes hin? Und hat noch den einen oder anderen Tipp, wo man etwas darüber nachlesen kann?

rafael
02-04-2009, 10:22
Gibt es einen Fehler mit dem zusätzlichen Befehl um den Text herum? Oder ist es einfach nur etwas "unelegant"? Ich hatte es mit dem Blinddocument getestet und keine Fehler festgestellt.

naja, ich möchte alle Dokumente über eine Hauptdatei kompilieren. Und diese fertigenDokumente sollten nicht zu sehr von Befehlen verschachtelt werden. A


Theoretisch müsste es gehen, wenn man die Variable erst nach ihrem Aufruf definiert und dann eben LaTeX zweimal laufen lässt. Denn nach meinem Verständnis arbeiten BibTeX und die label/ref-Möglichkeiten nach diesem Prinzip.

Genau das dachte ich auch. Ein tableofcontents wird ja auch ausgegeben, ohne das ich vorher alle sections angeben muss. Aber trotzdem vielen Dank für deine Hilfe Xenara



Leider reichen meine LaTeX-Programmierkenntnisse nicht aus, um das sauber und ohne Fehler eingebaut zu bekommen.
Vielleicht bekommt das jemand anderes hin? Und hat noch den einen oder anderen Tipp, wo man etwas darüber nachlesen kann?

Ich hoffe, es findet sich jemand

voss
02-04-2009, 10:55
naja, ich möchte alle Dokumente über eine Hauptdatei kompilieren. Und diese fertigenDokumente sollten nicht zu sehr von Befehlen verschachtelt werden. A

Genau das dachte ich auch. Ein tableofcontents wird ja auch ausgegeben, ohne das ich vorher alle sections angeben muss.


es wird _nicht_ im ersten Durchlauf ausgegeben, da ist es leer!

Herbert

Xenara
02-04-2009, 11:09
@ voss: Kannst du ein Stichwort nennen, nach dem man suchen muss, wenn man Werte so als Variablen deklarieren will, damit sie dann eben im zweiten Lauf eingebaut werden?