PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Redefinition von Befehlen



h0b0
25-04-2007, 13:35
Ein Anfängerproblem: Ich verwende eine Dokumentvorlage eines anderen Autors und habe diese an meine Bedürfnisse angepasst. Nun änderte ich dazu die Dokumentklasse von article nach report.
Die Redefinition von \maketitle, die mein Vorlagenverfasser getroffen hat, wird seitdem ignoriert.
Ich habe keine Ahnung, wo der Fehler liegen könnte, hier aber die Neudefinition des Befehls, falls das hilft:

\makeatletter

...

\def\@maketitle{
%\begin{titlepage}
\begin{center}
\colorbox{bgctitle}{
\parbox{\textwidth}{
\vskip 8pt
\centering{\titlefont{\@title}}
\par
\vskip 8pt
}
}
\colorbox{white}{
\parbox{\textwidth}{
\vskip 8pt
\centering{\inversetitlefont{\@project}}
\par
\vskip 8pt
}
}
\end{center}
\vskip 1.0em {
\lineskip .5em
\begin{flushright}
\begin{tabular}[t]{rl}
\attrname{Projekt:} & \@project \\
\attrname{Objekt:} & \@object \\
\attrname{Projektnummer:} & \@projectNr \\
\attrname{Bearbeiter:} & \@author \\
\attrname{Erstellt mit:} & \LaTeX \\
\attrname{Version:} & \@version ~ ~ \@date
\end{tabular}
\end{flushright}
\par
}
\vskip 5.5em
%\end{titlepage}
}

...

\makeatother
Hat jemand eine Idee?

h0b0
26-04-2007, 10:30
Ich habe nun anstatt \maketitle zu überschreiben das ganze in eine Neudefinition eines eigenen Makros geändert:

%\def\@maketitle{
\newcommand{\maketitleB}{
...
}
Bleibt nur die Frage, warum erstere Variante in der neuen Dokumentklasse nicht mehr funktionierte.

sommerfee
26-04-2007, 11:19
Bleibt nur die Frage, warum erstere Variante in der neuen Dokumentklasse nicht mehr funktionierte.

In report wird kein \@maketitle definiert bzw. benutzt. Ein Blick in classes.dtx offenbart:



% \begin{macro}{\if@titlepage}
% A switch to indicate if a titlepage has to be produced. For the
% article document class the default is not to make a separate
% titlepage.
% \begin{macrocode}
\newif\if@titlepage
%(article)\@titlepagefalse
%(!article)\@titlepagetrue
% \end{macrocode}
% \end{macro}

...

\if@titlepage
\newcommand\maketitle{\begin{titlepage}%
... (Definition ohne \@maketitle)
\else
\newcommand\maketitle{\par
... (Definition mit \@maketitle)
\def\@maketitle{...}
\fi


Hättest du \renewcommand\@maketitle anstelle von \def\@maketitle benutzt, wäre es auch mit einer passenden Fehlermeldung aufgeschlagen.

Liebe Grüße,
Axel