Seite 1 von 1

Änderung der Nummerierung von Überschriften

Verfasst: Mi 17. Sep 2008, 17:54
von Gast1
1. Frage:

Ich möchte gern eine kleine Abhandlung in Tex schreiben, die aus mehreren Kapiteln besteht. Bislang habe ich dazu den "scrreprt" genutzt. Zur besseren Abgrenzung der Kapitel würde ich gern statt der automatischen Nummerierung Großbuchstaben verwenden. Die Überschriften dieser Kapitel sollten dann wieder automatisch nummeriert werden.

Halt in der Form:

A. Sonne
1. Größe
1.1 ...
1.2 ...
2. Zusammensetzung

B. Mond
1. Größe
1.1 ...
1.2 ...
2. Zusammensetzung

C. Erde
1. Größe
1.1 ...
1.2 ...
2. Zusammensetzung

Im userguide zum KOMA-Package, titlesec und tocloft habe ich keine Hinweise gefunden, welche Einstellungen vorzunehmen sind. Kann mir hierzu jemand eine Tip geben bzw. einen Hinweis, wo ich darüber etwas lesen könnte?

2. Frage:

Gibt es eine Möglichkeit Überschriften auch ohne Nummerierung ins Inhaltsverzeichnis einzutragen?

Vielen Dank schon einmal im Voraus.

Alphabetische Nummerierung von Kapiteln

Verfasst: Mi 17. Sep 2008, 19:31
von Stefan Kottwitz
Hallo,
  1. verwende in der Präambel:

    Code: Alles auswählen

    \renewcommand*\thechapter{\Alph{chapter}}
  2. unnummerierte Überschriften erhältst Du mit \chapter*, \section* etc. bzw. \addchap, \addchap* usw. siehe KOMA-Script-Doku. Du kannst auch einstellen, bis zu welcher Tiefe Überschriften generell nummeriert werden sollen. Oder sollen sie im Text nummeriert werden, im Inhaltsverzeichnis jedoch nicht? Das hielte ich für inkonsistent. Evtl. beschreibe genauer, was Dir vorschwebt, falls die obigen Befehle nicht passen sollen. Ggf. kann man immer noch mit \addcontentsline oder \addtocontents Einträge in das Verzeichnis vornehmen.
Viele Grüße,

Stefan

Verfasst: Do 18. Sep 2008, 12:57
von KOMA
In Ergänzung zu Stefans Antwort:

Falls Nummern in den Überschriften der \section-Ebene tatsächlich die Nummer der \chapter-Ebene nicht enthalten soll, dann ist zusätzlich

Code: Alles auswählen

\renewcommand*{\thesection}{\arabic{section}}
\renewcommand*{\p@section}{\thechapter.}% Wegen @ im Makronamen den zusätzlichen Hinweis im Text beachten!
zu verwenden. Die erste Zeile nimmt die \chapter-Ebene aus den Nummern der \section-Ebene heraus, die zweite Zeile sorgt dafür, dass beim Referenzieren die Kapitelnummer wieder Teil der Gliederungsnummer wird. Es könnte sein, dass genau das dann auch noch für alle weiteren Ebenen gemacht werden muss. Ich weiß jetzt auswendig nicht, ob die \p@Gliederungebene automatisch vererbt werden.

Es ist zu beachten, dass Makros mit @ im Namen nur in Klassen- und Paketdateien (und lco-Dateien von KOMA-Script) verwendet, definiert oder umdefiniert werden können. Soll ein solcher Makronamen in der Dokumentpräambel verwendet werden, so ist vor dem entsprechende Teil der Präambel \makeatletter und danach \makeatother zu setzen! Näheres dazu ist auch der De-TeX-FAQ zu entnehmen.

Verfasst: Do 18. Sep 2008, 20:51
von Gast1
Vielen Dank für die Hilfe. Nachdem die erste Anweisung

Code: Alles auswählen

\renewcommand*\thechapter{\Alph{chapter}}
einen Großbuchstaben für das Kapitel (und auch vorangestellt für die Nummerierung der section-Einträge) bewirkt, verschwindet der Großbuchstabe durch die nächste Anweisung wieder und die Nummerierung der section-Einträge erfolgt wie gewohnt. Das Ergebnis ist genau so, wie ich es mir vorgestellt habe. :D

Code: Alles auswählen

\renewcommand*{\thesection}{\arabic{section}} 
Nur die dritte Codezeile

Code: Alles auswählen

\renewcommand*{\p@section}{\thechapter.}% Wegen @ im Makronamen den zusätzlichen Hinweis im Text beachten!
incl. der Erläuterungen mit den @-Makros habe ich ehrlich gesagt noch nicht verstanden, was aber daran liegt, dass ich mich noch nicht allzulange mit Latex beschäftige. Bis zum Aha-Effekt kommt, brauchts noch etwas... :wink:

Beim testen der dritten Zeile habe ich übrigens folgende Fehlermeldung erhalten:

Code: Alles auswählen

! LaTeX Error: Missing \begin{document}. 
Hatte die Anweisung direkt nach den beiden anderen im Vorspann der .tex-Datei und vor dem Beginn des eigentlichen Dokuments eingebunden. Beim Voranstellen eines % lief's problemlos.

zu 2. Nein, Inkonsistenz will ich bei der Überschrift und dem Inhaltsverzeichnis natürlich vermeiden. Beim probieren war mir nur aufgefallen, dass Überschriften, die mit "*" kennzeichnet sind, wie z. B. \section* im Text ohne Nummerierung erscheinen, aber nicht im Inhaltsverzeichnis angezeigt werden. Das war mir aufgrund meiner Word-Kenntnisse nicht logisch. Word übernimmt stur den Text, der als Überschrift im Rahmen der Formatvorlage definiert ist und insofern dachte ich, dieses würde auch in Latex funktionieren.

Insofern hat mir der Befehl \addcontentsline schon etwas die Augen geöffnet, so dass ich unter Verwendung der zweiten Codezeile (s.o.) schon ein ähnliches Ergebnis erreichen konnte. - Die Frage ist nur, will man das? :wink:

Im Moment gibt es für mich noch unzählige unbekannte Befehle, die es zu entdecken gibt und eine richtige Systematik zum Lernen, abgesehen von den Dokumentaionen der einzelnen Packages und zig Diplomarbeiten, die immer ähnlich schreiben, hab ich noch nicht gefunden. Da hilft halt nur lesen und am Ball bleiben.

In diesem Sinne, noch einmal vielen Dank für die Antworten und viele Grüße.

Verfasst: Fr 19. Sep 2008, 08:16
von KOMA
Gast1 hat geschrieben:Nur die dritte Codezeile

Code: Alles auswählen

\renewcommand*{\p@section}{\thechapter.}% Wegen @ im Makronamen den zusätzlichen Hinweis im Text beachten!
incl. der Erläuterungen mit den @-Makros habe ich ehrlich gesagt noch nicht verstanden
...
Gast1 hat geschrieben:Beim testen der dritten Zeile habe ich übrigens folgende Fehlermeldung erhalten:

Code: Alles auswählen

! LaTeX Error: Missing \begin{document}. 
Die Fehlermeldung liegt daran, dass Du den Hinweis auf \makeatother und \makeatletter nicht beachtet hast. Eigentlich sollte die Erklärung nicht sonderlich schwer zu verstehen sein, insbesondere wenn man dann wirklich in der De-TeX-FAQ nach \makeatletter sucht. Wie dem auch sei: Hier noch einmal mit einem vollständigen Minimalbeispiel:

Code: Alles auswählen

\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}

\renewcommand*{\thechapter}{\Alph{chapter}}% Kapitel mit Großbuchstaben
\renewcommand*{\thesection}{\arabic{section}}% Abschnitte mit arabischen
                                % Zahlen ohne Kapitelzähler
\makeatletter% Soll ein Makronamen mit @ in der Dokumentpräambel verwendet
             % werden, so ist vor dem entsprechende Teil der Präambel
             % \makeatletter zu setzen.
\renewcommand*{\p@section}{\thechapter.}% Referenzen von Abschnitten wird die
                                % Kapitelnummer vorangestellt, um die
                                % Abschnitte der unterschiedlichen Kapitel
                                % unterscheiden zu können.
\renewcommand*{\p@subsection}{\p@section}% Referenzen von Unterabschnitten
                                % wird der Parent der Abschnitte vererbt.
\renewcommand*{\p@subsubsection}{\p@section}% Referenzen von
                                % Unterunterabschnitten wird der Parent der
                                % Unterabschnitte vererbt.
\renewcommand*{\p@paragraph}{\p@section}% Referenzen von
                                % Unterunterunterabschnitten wird der Parent
                                % der Unterunterabschnitte vererbt.
\renewcommand*{\p@subparagraph}{\p@section}% Referenzen von
                                % Unterunterunterunterabschnitten wird der
                                % Parent der Unterunterunterabschnitte
                                % vererbt.
\makeatother% Soll ein Makronamen mit @ in der Dokumentpräambel verwendet
            % werden, so ist nach dem entsprechende Teil der Präambel
            % \makeatother zu setzen.

\begin{document}
\tableofcontents
\chapter{Sonne}\label{cha:sun}
\dots
\section{Größe}\label{sec:sun.size}
\dots
\subsection{\dots}\label{ssec:sun.size.1}
\dots
\subsection{\dots}\label{ssec:sun.size.2}
\dots
\section{Zusammensetzung}
\dots

\chapter{Mond}\label{cha:moon}
\dots
\section{Größe}\label{sec:moon.size}
\dots
\subsection{\dots}\label{ssec:moon.size.1}
\dots
\subsection{\dots}\label{ssec:moon.size.2}
\dots
\section{Zusammensetzung}
\dots

\chapter{Erde}\label{cha:earth}
Siehe auch Kapitel~\ref{cha:sun} und \ref{cha:moon}.
\section{Größe}\label{sec:earth.size}
Siehe auch Abschnitt~\ref{sec:sun.size} und \ref{sec:moon.size}.
\subsection{\dots}\label{ssec:earth.size.1}
Siehe auch Abschnitt~\ref{ssec:sun.size.1} und \ref{ssec:moon.size.1}.
\subsection{\dots}\label{ssec:earth.size.2}
Siehe auch Abschnitt~\ref{ssec:sun.size.2} und \ref{ssec:moon.size.2}.
\section{Zusammensetzung}
\dots
\end{document}
Wenn Du jetzt noch nicht verstanden hast, was die \p@Gliederungsebene bewirken, dann kommentier sie einfach mal von unten nach oben eine nach der anderen aus, mach danach jeweils zwei LaTeX-Läufe und schau Dir Seite 4 des Ergebnisses an. Spätestens, wenn Du die Umdefinierung von \p@subsection auskommentierst, solltest Du einen Unterschied sehen und auch erkennen, warum diese Umdefinierung sinnvoll ist.

Und dann liest Du bitte noch min. 8.5.1. in der De-TeX-FAQ. Link auf die De-TeX-FAQ gibt es in der Signatur meiner Beiträge. Anfängern sei außerdem empfohlen sich auch über die anderen Dokumente in meiner Signatur einen Überblick zu verschaffen.

Verfasst: Fr 19. Sep 2008, 08:20
von steve
Gast1 hat geschrieben: Nur die dritte Codezeile

Code: Alles auswählen

\renewcommand*{\p@section}{\thechapter.}% Wegen @ im Makronamen den zusätzlichen Hinweis im Text beachten!
[...]
Beim testen der dritten Zeile habe ich übrigens folgende Fehlermeldung erhalten:

Code: Alles auswählen

! LaTeX Error: Missing \begin{document}. 
Hatte die Anweisung direkt nach den beiden anderen im Vorspann der .tex-Datei und vor dem Beginn des eigentlichen Dokuments eingebunden. Beim Voranstellen eines % lief's problemlos.
Die Lösung für dein Problem hat KOMA schon gegeben:
KOMA hat geschrieben: Es ist zu beachten, dass Makros mit @ im Namen nur in Klassen- und Paketdateien (und lco-Dateien von KOMA-Script) verwendet, definiert oder umdefiniert werden können. Soll ein solcher Makronamen in der Dokumentpräambel verwendet werden, so ist vor dem entsprechende Teil der Präambel \makeatletter und danach \makeatother zu setzen! Näheres dazu ist auch der De-TeX-FAQ zu entnehmen.
Das bedeutet nichts weiter, als dass du folgendes schreiben musst:

Code: Alles auswählen

\makeatletter
\renewcommand*{\p@section}{\thechapter.}
\makeatother
Das es mit einem vorangestellten "%" funktioniert macht insofern Sinn, dass du die Zeile einfach auskommentiert hast und sie bei der Kompilierung nicht berücksichtigt wird.

Gruß
Alex

Verfasst: Fr 26. Sep 2008, 19:48
von Gast1
Vielen Dank für die Erläuterungen. Das Minibeispiel und das anschließende Auskommentieren haben die Erleuchtung gebracht. :D

Hab in der Zwischenzeit auch die vielen Literaturangaben gesichtet, insbesondere auch die DE-Tex-FAQ. Eine wahre Fundgrube...

In diesem Zusammenhang hätte ich noch eine weitere Frage zum Inhaltsverzeichnis.

Ich habe mit dem folgenden Code die subsection so umdefiniert, dass vor der Nummerierung das Wort "Aufgabe" erscheint. (Hintergrund: Ich will eine kleine Aufgaben/Lösungssammlung anlegen und probiere derzeit, wie ich eine vernüftige Dokumentenstruktur aufsetze, so dass wahlweise einmal nur die Aufgaben und dann auch die Aufgaben incl. Lösungen ausgedruckt werden können. Falls jemand eine Idee dazu hat - nur raus damit. :) Doch das ist eine andere Baustelle - zurück zum Inhaltsverzeichnis.)

Durch die Umdefinierung der subsection war das Feld für die Nummerierung zu klein, so dass eventuell nachfolgender Überschriftentext in die "Aufgabe"-Nummerierung ragte. Das Problem konnte mit \@dottedtocline gelöst werden.

Frage: Ist es möglich, sich vor einer Umdefinierung von Makros deren derzeitigen Werte/Werte anzeigen zu lassen? Bei der Umdefinierung stand ich vor dem Problem, die neue \subsection mit der Hand und einem guten Augenmass ausrichten zu müssen.

Code: Alles auswählen

\renewcommand*{\thesubsection}{Aufgabe \arabic{subsection}} % Stellt das Wort "Aufgabe" vor die Nummerierung

\makeatletter
\renewcommand{\l@subsection}{\@dottedtocline{2}{3.8em}{5.1em}} % Vergrößert den Abstand zwischen Nummerierung und Inhalt
\makeatother

Anzeige einer Makrodefinition

Verfasst: Fr 26. Sep 2008, 19:56
von Stefan Kottwitz
Hallo,
Gast1 hat geschrieben: Frage: Ist es möglich, sich vor einer Umdefinierung von Makros deren derzeitigen Werte/Werte anzeigen zu lassen?
dafür kannst Du \show verwenden, die Ausgabe erfolgt in das logfile. Mit \showthe kannst Du z.B. die Werte von Längen ausgeben lassen.

Zudem kann man auch in den Quelltext der zugehörigen Klasse oder in die entsprechende Paket-Datei schauen, wenn man sich sicher ist, worin das Makro definiert wird.

Viele Grüße,

Stefan

Verfasst: Di 30. Sep 2008, 21:11
von Gast1
Hallo Stefan,

vielen Dank für die Antwort und viele Grüße. :D