Hans schrieb:
> Ich schreibe in einem Kapitel \chapter{Das Problem im �berblick} dahin.
> Zu einem Detailproblem m�chte ich dann einige Erl�uterungen einf�gen,
> z.B. als \section{Einschub: die Details}
>
> Wenn ich mit dem "Einschub" fertig bin, m�chte ich wieder im \chapter
> weiterarbeiten und sp�ter einen weiteren "Einschub" einbauen.
Chapter - Section - Subsection etc geh�ren zu denjenigen - ich
nenne es mal - Rubrifizierungskategorien, die die
Dokumentengliederung bilden.
Daneben gibt es noch andere Rubrifizierungskategorien, zB
Abbildungen, Tabellen, Theorems etc, bei denen sich zB die
Nummerierung an der Dokumentengliederung orientieren kann, aber
nicht unbedingt muss.
Deine "Einsch�be", die Du mittels \section gestalten willst,
geh�ren nach meinem Verst�ndnis nicht zur Dokumentengliederung
und deshalb w�rde ich daf�r auch keinen Dokumentengliederungs-
befehl wie \section verwenden. Anderenfalls steht man vor der
Frage, wie ein "Einschub", der in eine normale Section oder in
eine normale Subsection eingef�gt werden soll, zu
bewerkstelligen ist, bzw wie man zB eine normale Section von
einem Einschub unterscheiden soll.
Meiner Ansicht nach empfiehlt es sich, f�r "Einsch�be" eine
eigene Rubrifizierunbgskategorie zu schaffen.
Beispielsweise k�nnte man daf�r vielleicht mittels
\newtheorem{Einschub}{Einschub}[<within>]
oder
\newtheorem{Einschub}[numbered_like]{Einschub}
eine eigene theoremartige Umgebung bereitstellen.
Es gibt diverse Pakete, die es erm�glichen, auf das
Erscheinungsbild theoremartiger Umgebungen Einfluss zu nehmen.
Das Ntheorem-Paket stellt ein \listtheorems{<Umgebung>}-Makro
zur Verf�gung, mittels dessen man ein Verzeichnis aller
Einsch�be realisieren k�nnte.
Um tats�chlich die Einsch�be im Inhaltsverzeichnis integriert
mitaufgelistet anstatt ein eigenst�ndiges Einsch�be-Verzeichnis
zu bekommen, k�nnte man vielleicht im caption-Argument des
\newtheorem-Befehls eine
"\addcontentsline{toc}{<Gliederungseben>}{\numberline...}"
-Anweisung einf�gen, wobei man <Gliedrungsebene> durch ein Makro
darstellen l�sst, welches man - je nachdem, in welcher
Gliederungsebene der Einschub auftaucht, auf eine Ebene tiefer
expandieren l�sst.
Die jeweils n�tige Umdefinition k�nnte man bewerkstelligen,
indem man dazu die jeweiligen \cl@<counter>-Listen der
Gliederungsz�hler "missbraucht".
Details zur LaTeX-Z�hlerverwaltung (auch diese \cl@<counter>-
Geschichte) findet man im kommentierten Quelltext "The LaTeX2e
sources", welcher bei den allermeisten LaTeX-Installationen
heutzutage irgendwo auf der Festplatte in einer pdf-Datei zu
finden ist, die source2e.pdf heisst. Und zwar dort in dem
Abschnitt, der das "File m: ltcounts.dtx" beschreibt.
In der zu einem Z�hler geh�renden \cl@<counter>-Liste werden all
diejenigen anderen Z�hler aufgelistet, die auf Null
zur�ckgesetzt werden m�ssen, wenn dieser besagte Z�hler durch
einen Gliederungsbefehl um 1 erh�ht wird.
Aufgrund der Art und Weise, wie diese Liste abgearbeitet wird,
kann man sie ein bisschen "missbrauchen", um daf�r zu sorgen,
dass jedesmal wenn sie abgearbeitet wird, weil der entsprechende
Gliederungsz�hler um 1 erh�t worden ist und die ihm
untergeordneten Gliederungsz�hler auf Null gesetzt werden
m�ssen, auch gleich das Makro umdefiniert wird, welches f�r den
\addcontentsline-Eintrag die Gliederungsebene liefert.
Ich habe unten auf die Schnelle ein Beispiel gebastelt, in dem
ich eine theoremartige "Einschub"-Umgebung bastle, bei der das
Makro \currentsectioningcounter die Gliederungsebene f�r den
Eintrag ins Inhaltsverzeichnis angibt sodass ich auch �ber
\@addtoreset (erkl�rt in source2e.pdf, "File m: ltcounts.dtx" )
an den \cl@-Listen der Gliederungsz�hler herumschrauben musste.
[ Falls Interesse daran besteht, den Code dieses Postings zu
�bernehmen, bitte vor dem "Edit-Copy-Edit-Paste" sicherstellen,
dass das Posting im Originalformat angezeigt wird.
Web-Interfaces f�rs Usenet wie Google Groups tendieren dazu,
Postings beim Anzeigen anders umzubrechen, was wohl eine
Verbesserung der Lesbarkeit mit sich bringen soll, sich aber
negativ auf die Funktionalit�t von Code auswirken kann. ]
Ulrich
Beispiel:
\documentclass[a4paper]{book}
\usepackage{hyperref}
\makeatletter
%
% Liste mit allen Dokumenrengliederungsz�hlern:
%
\newcommand\sectioningcounterslist{%
part,chapter,section,subsection,subsubsection,paragraph,subparagraph%
}%
%
% Kleine Helferchen:
%
\newcommand\Exchange[2]{#2#1}%
\newcommand\nameuse{}\let\nameuse=\@nameuse
%
% \currentsectioningcounter - Variable, die zum Namen der
% momnentan verwendeten Gliederungsebene expandiert und
% \belowcurrentsectioningcounter - Variable, die zum Namen
% der im Vergleich zur momnentan verwendeten n�chst tieferen
% Gliederungsebene expandiert:
%
\newcommand\initializecurrentsectioningcounter{}%
\def\initializecurrentsectioningcounter#1,#2,#3\relax{%
\newcommand\currentsectioningcounter{#1}%
\newcommand\belowcurrentsectioningcounter{#2}%
}%
\expandafter\initializecurrentsectioningcounter
\sectioningcounterslist,\relax
%
% �ber eine Schleife f�r jeden Gliederungsz�hler ein
% \c@SetCurrentSectioningCounterAt<Gliederungsz�hler>-Makro
% definieren, welches die "Variablen" \currentsectioningcounter
% und \belowcurrentsectioningcounter gem�� diesem
% Gliederungsz�hler "setzt".
% Die Schleife wird auch gleich genutzt, um dieses Makro
% per \@addtoreset in die \cl@-Liste des jeweiligen
% Gliederungsz�hlers zu packan, sodass es immer dann
% ausgef�hrt wird, wenn der entsprechende Gliederungsbefehl
% den Gliederungsz�hler hochsetzt wobei die \cl@-Liste
% abgearbeitet wird, eigentlich um die untergrordneten
% Gliederungsz�hler auf Null zu setzen, aber wir lassen
% da halt statt dessen die Umdefinition machen:
%
\newcommand\SetCurrentSectioningCounterViaResetList[2]{%
\expandafter\newcommand
\csname c@SetCurrentSectioningCounterAt#1\endcsname{}%
\@namedef{c@SetCurrentSectioningCounterAt#1}\z@{%
\def\currentsectioningcounter{#1}%
\gdef\belowcurrentsectioningcounter{#2}%
}%
\@addtoreset{SetCurrentSectioningCounterAt#1}{#1}%
}%
\newcommand\@SetCurrentSectioningCounterViaResetListLoop{}%
\def\@SetCurrentSectioningCounterViaResetListLoop#1,#2,{%
\ifx\relax#2\expandafter\@firstoftwo
\else\expandafter\@secondoftwo\fi
{\SetCurrentSectioningCounterViaResetList{#1}{#1}}%
{%
\SetCurrentSectioningCounterViaResetList{#1}{#2}%
\@SetCurrentSectioningCounterViaResetListLoop#2,%
}%
}%
\expandafter\Exchange
\expandafter{\sectioningcounterslist,\relax,}%
{\@SetCurrentSectioningCounterViaResetListLoop}%
%
% Eine Schleife, die daf�r sorgt, dass ein Z�hler per \@addtoreset
% in der \cl@-Liste eines jeden Gliederungsz�hlers landet, sodass
% er immer auf Null gesetzt wird wenn irgendein Gliederungsz�hler
% hochgez�hlt wird:
%
\newcommand\AddToResetOfAllSectioningCounters[1]{%
\expandafter\Exchange
\expandafter{\sectioningcounterslist,\relax,}%
{\@AddToResetOfAllSectioningCounters{#1}}%
}%
\newcommand\@AddToResetOfAllSectioningCounters{}%
\def\@AddToResetOfAllSectioningCounters#1#2,{%
\ifx\relax#2\expandafter\@gobble
\else\expandafter\@firstofone\fi
{\@addtoreset{#1}{#2}\@AddToResetOfAllSectioningCounters{#1}}%
}%
\makeatother
%
% Theoremartige Umgebung definieren und dabei im caption-Argument
% einen \addcontentsline-Befehl miteinbauen sodass auch etwas
% im Inhaltsverzeichnis steht:
%
\newtheorem{Einschub}{%
Einschub%
\addcontentsline{toc}%
{\belowcurrentsectioningcounter}%
{\protect\numberline{\protect\null}Einschub\protect~\theEinschub}%
}%
%
% Daf�r sorgen, dass der Z�hler dieser theoremartigen Umgebung
% immer zur�ck auf Null gesetzt wird, wenn ein Gliederungsz�hler
% erh�ht wird:
%
\AddToResetOfAllSectioningCounters{Einschub}%
%
% Die Nummer des Einschubs soll bestehen aus:
% - dem f�hrenden Buchstaben "E" als Abk�rzung f�r
% "Einschub",
% - der Nummer der Gliederungs�berschift unter der der
% Einschub steht (der Name des gerade verwndeten
% Gliederungsz�hlers ist in \currentsectioningcounter
% gespeichert) und
% - einem nur f�r den jeweiligen Gliederungsabschnitt
% im Z�hler "Einschub" fortlaufend zu z�hlenden Anh�ngsel:
%
\renewcommand\theEinschub{%
E\protect~\nameuse{the\currentsectioningcounter}.\arabic{Einschub}%
}%
\renewcommand\theHEinschub{%
E.\nameuse{theH\currentsectioningcounter}.\arabic{Einschub}%
}%
\setcounter{tocdepth}{7}
\setcounter{secnumdepth}{7}
\begin{document}
\tableofcontents
\chapter{Kapitel}
Verweis auf den zweiten Einschub in der Subsection:
\ref{ZweiterEinschubinSubsection}%
\begin{Einschub}%
Einschub im Kapitel
\end{Einschub}%
\begin{Einschub}%
Zweiter Einschub im Kapitel
\end{Einschub}%
\section{Erste Section}
\begin{Einschub}%
Einschub in erster Section
\end{Einschub}%
\begin{Einschub}%
Zweiter Einschub in erster Section
\end{Einschub}%
\subsection{Subsection}
\begin{Einschub}%
Einschub in Subsection
\end{Einschub}%
\begin{Einschub}%
\label{ZweiterEinschubinSubsection}%
Zweiter Einschub in Subsection
\end{Einschub}%
\section{Zweite Section}
\begin{Einschub}%
Einschub in zweiter Section
\end{Einschub}%
\begin{Einschub}%
Zweiter Einschub in zweiter Section
\end{Einschub}%
\end{document}