Das bringt aber nur etwas, wenn man aus allen \ebeneZwei später beispielsweise Abschnitte statt Kapitel machen will. So wie ich den OP verstanden habe, will er aber später noch "chaotisch" umordnen. Das wird nie komplett automatisch funktionieren, weil man zumindest angeben muss, ob eine konkrete Überschrift auf einer höheren oder tieferen Ebene als die letzten oder auf derselben Ebene wie die letzte angeordnet werden soll. Wenn man dazu bereit ist, ginge immerhin (mangels
vollständigen Minimalbeispiels ungetestet):
\newcounter{currentlevel}% Zähler für Gliederungsebenen
\newcommand*{\currentlevelheading}{% Überschrift der aktuellen Ebene einfügen
\ifcase \value{currentlevel}\relax
\expandafter\chapter% Ebene 0
\or
\expandafter\section% Ebene 1
\or
\expandafter\subsection% Ebene 2
\or
\expandafter\subsubsection% Ebene 3
\or
\expandafter\paragraph% Ebene 4
\or
\expandafter\subparagraph% Ebene 5
\else
\expandafter\part% Ebene -1
\fi
}
\newcommand*{\sublevelheading}{%
\ifnum \value{currentlevel}<5\relax % Nur so lange tiefer gehen, bis 5=subparagraph erreicht ist
\stepcounter{currentlevel}%
\fi
\currentlevelheading
}
\newcommand*{ancestorlevelheading}[1]{% Das erste Argument gibt zwingend an, wieviele Ebenen nach oben gegangen werde soll!
\addtocounter{currentlevel}{-#1}%
\ifnum \value{currentlevel}<-1\relax \setcounter{currentlevel}{-1}\fi
\currentlevelheading
}
\newcommand*{\levelheading}[1]{% Das erste Argument gibt zwingend an, welche Ebenennummer verwendet werden soll
\ifnum #1<-1\relax
\setcounter{currentlevel}{-1}%
\else \ifnum #1>5\relax
\setcounter{currentlevel}{5}%
\else
\setcounter{currentlevel}{#1}%
\fi
\fi
\currentlevelheading
}
Der Befehl \currentlevelheading hat dieselben Argumente wie die normalen Gliederungsbefehle (also ein optionales für Inhaltsverzeichnis und Kolumnentitel und ein obligatorisches für die Überschrift). Er erstellt eine Überschrift derselben Ebene, wie die letzte mit obigen Befehlen erstellte Überschrift.
\sublevelheading funktionier genauso erstellt aber eine Unterüberschrift zur letzten Überschrift.
\ancestorlevelheading erwartet als erstes Argument eine Nummer, die angibt, wieviele Ebenen man nach oben will. Die nächsten beiden Argumente wie gehabt.
\levelheading schließlich erwartet als erstes Argument ebenfalls eine Nummer. Diese gibt die Überschriftenebene an (wobei \part=-1 ist und \subparagraph=5).
Die normalen Ebenen dürfen nicht verwendet werden.
Wenn eine Klasse ohne chapter verwendet wird, müssen die Definitionen so angepasst werden, dass 0=section und 4=subparagraph.
Ob das dann letztlich komfortabler ist, als beim Verschieben von Abschnitten in eine andere Ebene, die Überschriftenbefehle für den verschobenen Teil anzupassen, muss der OP selbst entscheiden. Obige Befehle mit den normalen Befehlen mischen sollte man jedenfalls nicht. Weil dann currentlevel nicht mehr stimmt.
Ich würde wirklich beim Verschieben einfach per Suchen/Ersetzen, die Gliederungsbefehle austauschen. Dasselbe gilt, wenn man von einer Klasse ohne \chapter zu einer Klasse mit \chapter oder umgekehrt tauscht. Das ist so schnell erledigt, dass sich die Verwirrung mit den level-Befehlen nicht lohnt.
Das bringt aber nur etwas, wenn man aus allen \ebeneZwei später beispielsweise Abschnitte statt Kapitel machen will. So wie ich den OP verstanden habe, will er aber später noch "chaotisch" umordnen. Das wird nie komplett automatisch funktionieren, weil man zumindest angeben muss, ob eine konkrete Überschrift auf einer höheren oder tieferen Ebene als die letzten oder auf derselben Ebene wie die letzte angeordnet werden soll. Wenn man dazu bereit ist, ginge immerhin (mangels [url=http://www.golatex.de/wiki/Minimalbeispiel]vollständigen Minimalbeispiels[/url] ungetestet): [code]\newcounter{currentlevel}% Zähler für Gliederungsebenen
\newcommand*{\currentlevelheading}{% Überschrift der aktuellen Ebene einfügen
\ifcase \value{currentlevel}\relax
\expandafter\chapter% Ebene 0
\or
\expandafter\section% Ebene 1
\or
\expandafter\subsection% Ebene 2
\or
\expandafter\subsubsection% Ebene 3
\or
\expandafter\paragraph% Ebene 4
\or
\expandafter\subparagraph% Ebene 5
\else
\expandafter\part% Ebene -1
\fi
}
\newcommand*{\sublevelheading}{%
\ifnum \value{currentlevel}<5\relax % Nur so lange tiefer gehen, bis 5=subparagraph erreicht ist
\stepcounter{currentlevel}%
\fi
\currentlevelheading
}
\newcommand*{ancestorlevelheading}[1]{% Das erste Argument gibt zwingend an, wieviele Ebenen nach oben gegangen werde soll!
\addtocounter{currentlevel}{-#1}%
\ifnum \value{currentlevel}<-1\relax \setcounter{currentlevel}{-1}\fi
\currentlevelheading
}
\newcommand*{\levelheading}[1]{% Das erste Argument gibt zwingend an, welche Ebenennummer verwendet werden soll
\ifnum #1<-1\relax
\setcounter{currentlevel}{-1}%
\else \ifnum #1>5\relax
\setcounter{currentlevel}{5}%
\else
\setcounter{currentlevel}{#1}%
\fi
\fi
\currentlevelheading
}
[/code]
Der Befehl \currentlevelheading hat dieselben Argumente wie die normalen Gliederungsbefehle (also ein optionales für Inhaltsverzeichnis und Kolumnentitel und ein obligatorisches für die Überschrift). Er erstellt eine Überschrift derselben Ebene, wie die letzte mit obigen Befehlen erstellte Überschrift.
\sublevelheading funktionier genauso erstellt aber eine Unterüberschrift zur letzten Überschrift.
\ancestorlevelheading erwartet als erstes Argument eine Nummer, die angibt, wieviele Ebenen man nach oben will. Die nächsten beiden Argumente wie gehabt.
\levelheading schließlich erwartet als erstes Argument ebenfalls eine Nummer. Diese gibt die Überschriftenebene an (wobei \part=-1 ist und \subparagraph=5).
Die normalen Ebenen dürfen nicht verwendet werden.
Wenn eine Klasse ohne chapter verwendet wird, müssen die Definitionen so angepasst werden, dass 0=section und 4=subparagraph.
Ob das dann letztlich komfortabler ist, als beim Verschieben von Abschnitten in eine andere Ebene, die Überschriftenbefehle für den verschobenen Teil anzupassen, muss der OP selbst entscheiden. Obige Befehle mit den normalen Befehlen mischen sollte man jedenfalls nicht. Weil dann currentlevel nicht mehr stimmt.
Ich würde wirklich beim Verschieben einfach per Suchen/Ersetzen, die Gliederungsbefehle austauschen. Dasselbe gilt, wenn man von einer Klasse ohne \chapter zu einer Klasse mit \chapter oder umgekehrt tauscht. Das ist so schnell erledigt, dass sich die Verwirrung mit den level-Befehlen nicht lohnt.