PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Theorem-Zähler



Geronimo
10-07-2007, 16:45
Hallo!

Ich habe ein längeres Skript mit verschieden Regelsätzen geschrieben. Diese beinhalten als Nummerierung
subsection-Nummer . laufende Nummer
Dies funktioniert auch bestens, jedoch gibt es beim Beginn einer neuen Section Probleme.
Gibt es z.B. in Section 1.2 einen Satz 2.1 und Satz 2.2, so beginnt zu Zählung in Section 3.2 mit Satz 2.3.
Ich hätte jedoch gerne wieder Satz 2.1.
Gibt es da einen Zähler, den man rücksetzten kann, oder eine andere Lösung?

Vielleicht weiß jemand Rat, danke!

Viele Grüße!

countbela666
11-07-2007, 07:04
Hallo, Geronimo,

deine Angaben zum Verhalten der Satznummerierung sind recht widersprüchlich. Du sagst, dass die vergebene Nummer zweiteilig ist, wobei der erste Teil der subsection-Zähler ist. Soweit so gut. Dann sagst du, dass zu Beginn einer neuen section Probleme mit der Nummerierung auftreten und sprichst dann wiederum von Kapiteln -- was denn nun, Kapitel (chapter) oder Abschnitt (section)? :confused:

Weiterhin verrätst du uns nicht, wie du die Nummerierung der Sätze beeinflusst hast. Dazu gibt es verschiedene Möglichkeiten, die -- sofern korrekt angewandt -- alle zum Ziel führen.

Hier ein funktionierendes Beispiel ohne Kapitel, das den Zähler von "Definition" an den subsection-Zähler bindet und bei der Nummerierung nur die subsection-Nummer (ohne die section-Nummer) verwendet:

\documentclass{scrartcl}
\usepackage{ntheorem}
\newtheorem{Def}{Definition}[subsection]
\renewcommand{\theDef}{\arabic{subsection}.\arabic {Def}}
\begin{document}
\section{sec1}
\subsection{subsec1}
\begin{Def}
text
\end{Def}
\begin{Def}
text
\end{Def}
\subsection{subsec2}
\begin{Def}
text
\end{Def}
\section{sec2}
\subsection{subsec1}
\begin{Def}
text
\end{Def}
\subsection{subsec2}
\begin{Def}
text
\end{Def}
\end{document}Grüße
Marcel

Geronimo
11-07-2007, 09:22
Hallo!


deine Angaben zum Verhalten der Satznummerierung sind recht widersprüchlich. [...] -- was denn nun, Kapitel (chapter) oder Abschnitt (section)? :confused:

Das ist wohl wahr, tut mir leid. Das habe ich entsprechend geändert. Es geht um Sections.


Weiterhin verrätst du uns nicht, wie du die Nummerierung der Sätze beeinflusst hast. Dazu gibt es verschiedene Möglichkeiten, die -- sofern korrekt angewandt -- alle zum Ziel führen.

Ok, ich dachte, da kommt eine Antwort; Klar, da musst du nur den XY-Zähler auf Null setzen und dann ... war wohl zu naiv :o

Also dann führe ich in wichtigen Zügen meinen Quellcode auf:

\documentclass[12pt, titlepage]{article}
\usepackage{ngerman, amsfonts, amsthm, makeidx}
\usepackage[utf8]{inputenc}
\makeindex

\begin{document}
\input{AN4_Titel}
\date{München, den \today}
\maketitle

\input{AN4_TOC}

\newcounter{Saetze}
\newtheoremstyle{note} % name
{} % Space above
{} % Space below
{\itshape} % Body font
{} % Indent amount (empty = no indent, \parindent = para indent)
{\bfseries} % Thm head font
{:} % Punctuation after thm head
{ } % Space after thm head: " " = normal interword space;
% \newline = linebreak
{} % Thm head spec (can be left empty, meaning `normal')
\theoremstyle{note}

\newtheorem*{Def2}{Definition}
\newtheorem{Sat2}{Satz}[Saetze]

\input{Own_Commands.tex}

\newpage
\section{Funktionentheorie} %ergibt: 1. Funk...

\subsection{Einleitung} %ergibt: 1.1 Einl...
\setcounter{Saetze}{1}

\begin{Sat2} %ergibt: Satz 1.1
...
\end{Sat2}
\begin{Sat2} %ergibt: Satz 1.2
...
\end{Sat2}

\subsection{Cauchy'sche Integralformel} %ergibt: 1.2 Cauchy...
\stepcounter{Saetze}

...

\newpage

\section{Gewöhnliche Differentialgleichungen} %ergibt: 2. Gewöh...

\subsection{Grundlegende Konzepte} %ergibt: 2.1 Grund...
\setcounter{Saetze}{1}

\begin{Sat2} %ergibt: Satz 1.3
... %sollte aber wieder Satz 1.1 sein!!!
\end{Sat2}

...


Danke für den Hinweis, Marcel! Ich hoffe, dass mein Problem nun klar ist.

Viele Grüße
Michael

countbela666
11-07-2007, 11:42
Hallo, Michael,

wenn ich dein Beispiel folgendermaßen anpasse, um es auf meinem Rechner kompilierbar zu machen, erhalte ich genau die von dir gewünschte Lösung (Nummerierung des dritten Satzes als 1.1):

\listfiles
\documentclass[12pt, titlepage]{article}
\usepackage{ngerman, amsfonts, amsthm, makeidx}
\usepackage[latin1]%utf8]
{inputenc}
\makeindex

\begin{document}
%\input{AN4_Titel}
%\date{München, den \today}
%\maketitle

%\input{AN4_TOC}

\newcounter{Saetze}
\newtheoremstyle{note} % name
{} % Space above
{} % Space below
{\itshape} % Body font
{} % Indent amount (empty = no indent, \parindent = para indent)
{\bfseries} % Thm head font
{:} % Punctuation after thm head
{ } % Space after thm head: " " = normal interword space;
% \newline = linebreak
{} % Thm head spec (can be left empty, meaning `normal')
\theoremstyle{note}

\newtheorem*{Def2}{Definition}
\newtheorem{Sat2}{Satz}[Saetze]

%\input{Own_Commands.tex}

\newpage
\section{Funktionentheorie} %ergibt: 1. Funk...

\subsection{Einleitung} %ergibt: 1.1 Einl...
\setcounter{Saetze}{1}

\begin{Sat2} %ergibt: Satz 1.1
...
\end{Sat2}
\begin{Sat2} %ergibt: Satz 1.2
...
\end{Sat2}

\subsection{Cauchy'sche Integralformel} %ergibt: 1.2 Cauchy...
\stepcounter{Saetze}

...

\newpage

\section{Gewöhnliche Differentialgleichungen} %ergibt: 2. Gewöh...

\subsection{Grundlegende Konzepte} %ergibt: 2.1 Grund...
\setcounter{Saetze}{1}

\begin{Sat2} %ergibt: Satz 1.3
... %sollte aber wieder Satz 1.1 sein!!!
\end{Sat2}

...
\end{document}Entweder liegt der Fehler also an Code, der in den per \input eingebundenen Dateien zu finden ist oder du nutzt veraltete Pakete. Um Fall eins ausschließen zu können, solltest du ein kompilierbares Minimalbeispiel (http://www.minimalbeispiel.de) erstellen. Für Fall zwei kannst du deinem Code ein \listfiles voranstellen und die ausgegebene Dateiliste aus dem LOG-File mit meiner (recht aktuellen) Liste vergleichen:

*File List*
article.cls 2005/09/16 v1.4f Standard LaTeX document class
size12.clo 2005/09/16 v1.4f Standard LaTeX file (size option)
ngerman.sty 1998/07/08 v2.5e Support for writing german texts (br)
amsfonts.sty 2001/10/25 v2.2f
amsthm.sty 2004/08/06 v2.20
makeidx.sty 2000/03/29 v1.0m Standard LaTeX package
inputenc.sty 2006/05/05 v1.1b Input encoding file
latin1.def 2006/05/05 v1.1b Input encoding file
***********Grüße
Marcel

Geronimo
11-07-2007, 16:46
Hallo, Marcel!

Danke für den Tipp mit dem Minimalbeispiel, das ich kompilieren sollte. Dabei habe ich auch die richtige Nummerierung erhalten.
Nach genauerem Hinsehen habe ich dann im Original Folgendes festgestellt:
Ich bekomme in subsection 2.1 als erstes einen Satz 1.3 NICHT weil es in subsection 1.1 einen Satz 1.1 und 1.2 gibt.
Vielmehr gibt es in der letzten subsection 1.8 von Sektion 1 einen Satz 8.2. Die nächste folgende Nummer ist dann die 3. Zusammen mit

\setcounter{Saetze}{1}
ergibt das Satz 1.3 :eek:

Habe nun folgendes geändert: Den obigen Code einfach durch

\setcounter{Saetze}{0}
\stepcounter{Saetze}
ersetzt.

Dadurch wird wohl erst klar, dass der Zähler für die Theoreme neu starten soll!?
Was da genau passiert, kann ich mir nicht erklären, aber es hängt wohl damit zusammen, dass ich jede Section in einem eigenen TEX-File habe und diese dann mit \input einbinde.
Unterlässt man dies, funktioniert es einfach wie im Minimalbeispiel.

Herzlichen Dank für deine Mühen, Marcel!
Hast mich in die richtige Richtung geschubst :)

Viele Grüße
Michael