Seite 1 von 2

Theorem mit integrierter Aufzählung

Verfasst: Mi 26. Feb 2020, 18:17
von ko3rn3r
Hallo,
ich habe mal wieder ein sehr spezielles Problem:
und zwar möchte ich gerne mit einem Theorem-Paket eine eingebundene Aufzählung (a), b), c), ...), sodass ich nur ein Label an einer der Aufzählungen machen muss und dann auch die Nummerierung des Theorems mit aufgeführt wird.

________________________________
---Beginn des Theorems:

<automatisch Erzeugt: Theorem><automatisch nummeriert: 1><evtl. benutzerdefinierter Text: Bla bla bla>
<Absatz>
<evtl. Aufzählung: a)><Text: foo>
<evtl. Aufzählung: b)><Text: bar> \label{bar}
...

---Ende des Theorems
---Beginn Normale Text-Umgebung

Bla bla bla... wie in <EIN ref-Befehl: Theorem 1b)> zu sehen ...

---Ende Normale Text-Umgebung
________________________________
Ich habe es auch schon mit dem amsthm-Paket mit dem enumitem-Paket versucht, jedoch benötigt man dort denn mindestens 2 Label: einen für das Theorem und einen am Aufzählungspunkt:

Code: Alles auswählen


\begin{theorem}[Test]
		
		\begin{enumerate}[label=\alph*)]
			\item jkdlfj
			\item sdlkfjkl \label{bla}
		\end{enumerate}
	\end{theorem}

	bla bla bla ... \ref{bla}

Weiterhin stört mich daran, dass der Aufzählungspunkt a) nicht in einer neuen Zeile beginnt.

Verfasst: Mi 26. Feb 2020, 19:55
von Bartman
Wenn ich Deine Beschreibung mit einem unvollständigen Beispiel richtig verstanden habe, dann suchst Du so etwas:

Code: Alles auswählen

\documentclass{article}
\usepackage{enumitem}
\usepackage{cleveref}
  
\newtheorem{task}{Aufgabe}

\newlist{enumtask}{enumerate}{1}
\setlist[enumtask]{label=\alph*), ref=\thetask\alph*)}

\crefname{enumtaski}{Aufgabe}{Aufgaben}

\begin{document}
\begin{task}[Test]\mbox{}
    \begin{enumtask}
    \item jkdlfj
    \item sdlkfjkl \label{item:bla}
    \end{enumtask}
\end{task}
\cref{item:bla}
\end{document}
Andererseits dürfte ein Paket wie xsim auch dafür geeignet sein.

Verfasst: Mi 26. Feb 2020, 22:01
von ko3rn3r
Super!!! Vielen Dank! Genau so habe ich mir das Vorgestellt!
Könntest du eventuell kurz erklären was da genau passiert? Also was \newlist bzw. \setlist genau macht?

Liebe Grüße

Verfasst: Mi 26. Feb 2020, 22:20
von Gast
ko3rn3r hat geschrieben:Also was \newlist bzw. \setlist genau macht?
Wenn Du das genau wissen willst, dann solltest Du vielleicht einfach einmal einen Blick in die Anleitung von Paket enumitem werfen. Da werden sowohl die beiden Befehle als auch die Optionen erklärt.

Verfasst: Fr 13. Mär 2020, 18:16
von ko3rn3r
Bartman hat geschrieben:Wenn ich Deine Beschreibung mit einem unvollständigen Beispiel richtig verstanden habe, dann suchst Du so etwas:

Code: Alles auswählen

\documentclass{article}
\usepackage{enumitem}
\usepackage{cleveref}
  
\newtheorem{task}{Aufgabe}

\newlist{enumtask}{enumerate}{1}
\setlist[enumtask]{label=\alph*), ref=\thetask\alph*)}

\crefname{enumtaski}{Aufgabe}{Aufgaben}

\begin{document}
\begin{task}[Test]\mbox{}
    \begin{enumtask}
    \item jkdlfj
    \item sdlkfjkl \label{item:bla}
    \end{enumtask}
\end{task}
\cref{item:bla}
\end{document}
Andererseits dürfte ein Paket wie xsim auch dafür geeignet sein.
Hallo,
vielen Dank nochmal!
Ich hätte aber noch eine Frage:
Ist es auch möglich mit dem "\cref" Befehl dann auch nur die "\begin{task}"-Umgebung zu referenzieren, sodass "Aufgabe 1" erscheint?
Also folgender Code wirft dann einen Fehler.

Code: Alles auswählen

\begin{task}[Test] \label{test}
    bla bla bla
\end{task}

\cref{test}

Verfasst: Fr 13. Mär 2020, 18:43
von Bartman
Man könnte dafür im Grunde ein neues Thema starten, denn die ursprüngliche Frage dieses Themas wurde bereits beantwortet.

Wie lautet die Fehlermeldung?

Verfasst: Fr 13. Mär 2020, 19:24
von ko3rn3r
Danke für die schnelle Antwort!

Der Fehler lautet:
cref reference format for label type `aufgabe' undefined

Zu beachten ist, dass ich das Theorem bei mir umbenannt habe.

Code: Alles auswählen

\newtheorem{aufgabe}{Aufgabe}[chapter]

Verfasst: Fr 13. Mär 2020, 20:19
von Bartman
Man muss außer dem Umgebungsnamen auch die Zuweisung für die Option ref anpassen:

Code: Alles auswählen

\documentclass{report}
\usepackage{enumitem}
\usepackage{cleveref}
 
\newtheorem{aufgabe}{Aufgabe}[chapter]

\newlist{enumtask}{enumerate}{1}
\setlist[enumtask]{label=\alph*), ref=\theaufgabe\alph*)}

\crefname{enumtaski}{Aufgabe}{Aufgaben}

\begin{document}
\chapter{Kapitel}
\begin{aufgabe}[Test]\mbox{}
    \begin{enumtask}
    \item jkdlfj
    \item sdlkfjkl \label{item:bla}
    \end{enumtask}
\end{aufgabe}
\cref{item:bla}

\begin{aufgabe}[Test]\label{test}
    bla bla bla
\end{aufgabe} 

\Cref{test}
\end{document}

Verfasst: Sa 14. Mär 2020, 21:50
von ko3rn3r
Vielen Dank für deine Antwort,
das Problem bei mir war, dass ich mit dem "amsthm" die Umgebung verändern wollte.

Code: Alles auswählen

\usepackage{amsthm} 
\newtheoremstyle{Aufgabenstellung}
...
\theoremstyle{Aufgabenstellung}
Und hier kann ich nun keinen "\cref"-Verweis mehr an den "Aufgaben" machen.
Kann man das irgendwie beheben?

Weiterhin hätte ich noch die Frage, ob es möglich ist den "\Cref"-Befehl so umzudefinieren, dass er auch mit "\cref"-Befehl "Aufgabe 2" statt "aufgabe 2" schreibt? Da "Aufgabe ..." immer groß geschrieben werden soll.

Verfasst: Sa 14. Mär 2020, 22:00
von Bartman
Starte für die Übersicht ein neues Thema mit einem Minimalbeispiel, welches das Problem mit dem Befehl von amsthm nachvollziehbar macht. Diese Informationshäppchen helfen nur sehr begrenzt.
ko3rn3r hat geschrieben:Weiterhin hätte ich noch die Frage, ob es möglich ist den "\Cref"-Befehl so umzudefinieren, dass er auch mit "\cref"-Befehl "Aufgabe 2" statt "aufgabe 2" schreibt? Da "Aufgabe ..." immer groß geschrieben werden soll.
Ja, mit dem bereits benutzten Befehl \crefname.