Anzahl von sections und dergleichen

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


tcpluess
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Fr 21. Nov 2014, 16:22

Anzahl von sections und dergleichen

Beitrag von tcpluess »

Hallo hallo,

ich möchte einen Counter definieren, der mit über das ganze Dokument die maximale Anzahl an sections und subsections liefert. Der counter soll also über alle Chapters iterieren und in jedem Chapter schauen, wie viele Sections es gibt. Beispiel:

Kapitel 1
Sektion 1
Sektion 2

Kapitel 2
Sektion 1
Sektion 2
Sektion 3

hier wäre die maximale Anzahl Sektionen = 3, denn im Kapitel 3 sind 3 Sektionen enthalten. Ich hoffe man versteht was ich meine. Wie könnte man sowas realisieren?

Noch so einer

Beitrag von Noch so einer »

Mit Hilfe von etoolbox \chapter vorn so erweitern, dass es vergleicht, ob der aktuelle section-Zähler größer ist als das aktuelle Maximum und dann ggf. das aktuelle Maximum auf diesen Wert setzen. Den Vergleich machen Experten mit \ifnum, einfache Anwender mit dem Paket ifthen. Das Maximum kann man in einem neuen Zähler oder einen Makro speichern. Falls man ein Makro verwendet, muss man \edef nehmen.

Und natürlich muss man auch bei anderen Kapitel-End-Gelegenheiten einen entsprechenden Vergleich durchführen, beispielsweise am Dokumentende.

Da Du kein VM (mit Anleitung zur Erstellung nicht nur für Anfänger) geliefert hast, gehe ich davon aus, dass Du die Implementierung selbst vornehmen willst.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Ich würde mich ja eher in \refstepcounter einhängen.

tcpluess
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Fr 21. Nov 2014, 16:22

Beitrag von tcpluess »

@Noch so einer
danke für den Tip. Ansatzweise verstehe ich sogar, was du meinst, aber ganz genau weiss ich nicht, wie ich es umsetzen soll. VM kann ich dir natürlich zusammenbasteln, ich dachte allerdings dass mein Anwendungsfall so einfach ist, dass es nicht erforderlich ist ;-) ich bau dir mal eins und versuche es hochzuladen (die letzten paar Posts hat die Upload-Funktion hier nie funktioniert).

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

uploads sind hier seit Jahren kaputt. Ist nun mal so.

Aber du kannst TeXt ganz normal innerhalb der [code] [/code] Blöcke reinstellen. Das ist ja das schöne an Minimalbeispielen, sie sind minimal.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

tcpluess
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Fr 21. Nov 2014, 16:22

Beitrag von tcpluess »

So, habe ein Minimalbeispiel erstellt:
\documentclass[a4paper, twoside, 10pt]{report}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage{lmodern}


\begin{document}

\tableofcontents

\chapter{Erstes Kapitel}
\section{Sektion 1}
\section{Sektion 2}
\section{Sektion 3}
Hier will einen Befehl: wie \maxsections, der in diesem Fall den Wert 6 liefern
soll, da die Anzahl der Sektionen {3, 6, 4} ist und ich will das Maximum davon
wissen, das 6 ist.


\chapter{Zweites Kapitel}
\section{Sektion 1}
\section{Sektion 2}
\section{Sektion 3}
\section{Sektion 4}
\section{Sektion 5}
\section{Sektion 6}

\chapter{Drittes Kapitel}
\section{Sektion 1}
\section{Sektion 2}
\section{Sektion 3}
\section{Sektion 4}

\end{document}
Alles, was ich wissen will, steht im Code.
Ich möchte aber kein extra Paket dafür verwenden, sondern ein Makro wenn möglich direkt in mein Dokument einbauen.

Gruss

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

\documentclass[a4paper, twoside, 10pt]{report}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}

\usepackage{etoolbox}
\newcounter{maxsection}
\makeatletter
\preto\cl@section{\ifnum \c@section > \c@maxsection \stepcounter{maxsection}\fi}
\makeatother
\AtEndDocument{\addtocounter{maxsection}{-1}\refstepcounter{maxsection}\label{maxsection}}

\begin{document}

\tableofcontents

\chapter{Erstes Kapitel}
\section{Sektion 1}
\section{Sektion 2}
\section{Sektion 3}
 Hier will einen Befehl: wie , \ref{maxsection} der in diesem Fall den Wert 6 liefern
 soll, da die Anzahl der Sektionen {3, 6, 4} ist und ich will das Maximum davon
 wissen, das 6 ist.


\chapter{Zweites Kapitel}
\section{Sektion 1}
\section{Sektion 2}
\section{Sektion 3}
\section{Sektion 4}
\section{Sektion 5}
\section{Sektion 6}

\chapter{Drittes Kapitel}
\section{Sektion 1}
\section{Sektion 2}
\section{Sektion 3}
\section{Sektion 4}


\end{document}
Und ich weigere mich, das ohne etoolbox zu machen. Wenn du darauf verzichten willst, überlege dir selbst wie man \preto implementiert.

tcpluess
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Fr 21. Nov 2014, 16:22

Beitrag von tcpluess »

Hallo hallo
sorry für meine späte Antwort. Habe es ausprobiert, und es funktioniert wie gewünscht :-) und ich habe es für subsections einfach erweitern können. Passt!

Antworten