Algorithmen werden nicht korrekt aufgezählt

Schriftbild, Absätze und Auflistungen einstellen


fragendergast

Algorithmen werden nicht korrekt aufgezählt

Beitrag von fragendergast »

Hallo,

ich möchte im Dokument eine fortlaufende Nummerierung für Satz, Lemma und insbesondere Algorithmus haben.
Nur für den Algo scheint dies nicht zu klappen. Diese erstelle ich mit algorithm2e.

Hier mein MWE.
\documentclass[fontsize=11pt, DIV=15, parskip=half-]{scrartcl}
\usepackage{amsmath}
\usepackage{amssymb}

\usepackage[german, linesnumbered]{algorithm2e}
\newtheorem{erstersatz}{Das hier erscheint eh nicht}[subsection] %--Stellt sicher, dass unterschiedliche Environments den gleichen Zähler erhalten
\newtheorem{satz}[erstersatz]{Satz}
\newtheorem{lemma}[erstersatz]{Lemma}
\newtheorem{algo}[erstersatz]{Algorithmus}

\begin{document}
\section{Kapitel 1}

\begin{satz}
Der Zaehler ist korrekt
\end{satz}

\begin{lemma}
Auch dieser Zaehler ist korrekt
\end{lemma}

\section{Kapitel 2}
\begin{lemma}
Auch dieser Zaehler ist korrekt
\end{lemma}
Aber beim Algorithmus geht es nicht mehr!

\begin{algorithm}[H]\label{algo: jacobi}
	\caption{ich sollte eigentlich Algorithmus 2.0.2 heißen}	

\end{algorithm}

\end{document}

ich meine ja nur

Re: Algorithmen werden nicht korrekt aufgezählt

Beitrag von ich meine ja nur »

Da alogrithm keine Theorem-Umgebung ist, kannst du auch nicht nachträglich dafür sorgen, dass diese Umgebung den gleichen Zähler verwendet, wie die Theorem-Umgebungen. Der umgekehrte Weg geht aber natürlich. Man nimmt also einfach den Zähler algocf, das ist der Zähler der algorithm-Umgebung, als Basiszähler für die Theorem-Umgebungen. Die Abhängigkeit von subsection bekommt man dann einfach über \counterwithin. Die Anweisung ist seit Ende 2018 in LaTeX definiert:
\documentclass[fontsize=11pt, DIV=15, parskip=half-]{scrartcl}
\usepackage{amsmath}
\usepackage{amssymb}

\usepackage[german, linesnumbered]{algorithm2e}
\newtheorem{satz}[algocf]{Satz}
\newtheorem{lemma}[algocf]{Lemma}
\counterwithin{algocf}{subsection}

\begin{document}
\section{Abchnitt 1}% scrartcl kennt keine Kapitel!

\begin{satz}
Der Zähler ist korrekt
\end{satz}

\begin{lemma}
Auch dieser Zähler ist korrekt
\end{lemma}

\section{Abschnitt 2}
\begin{lemma}
Auch dieser Zaehler ist korrekt
\end{lemma}
Aber beim Algorithmus geht es nicht mehr!

\begin{algorithm}[H]\label{algo: jacobi}
	\caption{ich sollte eigentlich Algorithmus 2.0.2 heißen}	

\end{algorithm}

\end{document}
Die überhaupt nicht verwendeten Theorem-Umgebungen habe ich weggelassen. Bei Bedarf kannst du die nach dem gleichen Schema neu definieren.

fragendergast

Re: Algorithmen werden nicht korrekt aufgezählt

Beitrag von fragendergast »

Auf Anhieb!! Spitze!! :D

Danke sehr!

fragendergast

Re: Algorithmen werden nicht korrekt aufgezählt

Beitrag von fragendergast »

Zu früh gefreut :(

Wieso klappt die Referenzierung denn nicht?
\documentclass[fontsize=11pt, DIV=15, parskip=half-]{scrartcl}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{chngcntr}
\usepackage{theoremref}


\usepackage[german, linesnumbered]{algorithm2e}
\newtheorem{erstersatz}{Das hier erscheint eh nicht}[subsection] %--Stellt sicher, dass unterschiedliche Environments den gleichen Zähler erhalten
\newtheorem{satz}[algocf]{Satz}
\newtheorem{lemma}[algocf]{Lemma}
\newtheorem{algo}[algocf]{Algorithmus}

\begin{document}
\counterwithin{algocf}{subsection}
\section{Kapitel 1}

\begin{satz}
Der Zaehler ist korrekt
\end{satz}

\begin{lemma}
Auch dieser Zaehler ist korrekt
\end{lemma}

\section{Kapitel 2}
\begin{lemma}\thlabel{lemma}
Auch dieser Zaehler ist korrekt
\end{lemma}

Ich referenziere \thref{lemma}

\begin{algorithm}\label{algo}
	\caption{Jetzt heiße ich richtig}	

\end{algorithm}

und jetzt referenziere ich \thref{algo}
\end{document}

ich meine ja nur

Re: Algorithmen werden nicht korrekt aufgezählt

Beitrag von ich meine ja nur »

Wie bereits gesagt, ist es keine Theorem-Umgebung, also ist \thref an der Stelle Unfug. Hinzu kommt, dass erst \caption den Zähler erhöht und daher \label immer nach \caption stehen muss. Das immer gilt also auch für Abbildungen, Tabellen etc. Da das auch in einer ausführlichen LaTeX-Einführung stehen sollte, empfehle ich, eine solche zu lesen.

BTW: Dein ersatzsatz kannst du dir sparen. Was die neue Theoremumgebung algo soll, ist mir auch nicht klar. Wie ebenfalls bereits erwähnt, kannst du damit jedenfalls aus algorithm nicht nachträglich eine Theoremumgebung machen. Stattdessen definierst du nur eine neue Umgebung algo, die aber wieder im Beispiel nicht verwendet ist. Und wie bei mir gezeigt gehört \counterwithin wie möglichst alle Einstellungen in die Dokumentpräambel – schon alleine Zwecks sauberer Trennung von Form und Inhalt. Und wie ebenfalls erwähnt, braucht man für \counterwithin schon seit Jahren kein Paket mehr. Das Paket chngcntr ist insgesamt inzwischen überflüssig. Wenn dein LaTeX so alt ist, dass du das brauchst, dann sind in Zukunft alle meine Antworten mit Vorsicht zu genießen, denn eine so alte LaTeX-Installation habe ich nicht mehr und kann daher auch nicht dagegen testen.

Ehrlich gesagt, entsetzt es mich mal wieder, wie sehr alles, was ich explizit erwähnt habe, einfach ignoriert wird.

ich meine ja nur

Re: Algorithmen werden nicht korrekt aufgezählt

Beitrag von ich meine ja nur »

Achja: Für ein Dokument auf Deutsch fehlt auch mal wieder babel, wie mir leider erst jetzt auffällt.

ich meine ja nur

Re: Algorithmen werden nicht korrekt aufgezählt

Beitrag von ich meine ja nur »

Und zum wiederholten Mal: scrartcl hat keine Kapitel! Warum mir das so wichtig ist? Weil falscher Sprachgebrauch die Hauptursache für Missverständnisse ist.

fragendergast

Re: Algorithmen werden nicht korrekt aufgezählt

Beitrag von fragendergast »

Danke für die Hilfestellungen.

Leider hast du völlig Recht was meine Inkonsequentheit angeht.
ich bin mit LaTeX auf Kriegsfuß und denke mir immer, solange es geht ist alles ok. Aber dass das der falsche Weg ist, zeigt sich in diesem und meinem anderen Thread.

Ich werde mich da mal richtig einarbeiten. danke dir!

Antworten