Theorem mit integrierter Aufzählung

Formelsatz für Mathematik, Naturwissenschaften und Technik


ko3rn3r
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: Mi 23. Jan 2019, 13:46

Theorem mit integrierter Aufzählung

Beitrag 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:

\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.
Dateianhänge
Theorem 3.pdf
(45.28 KiB) 206-mal heruntergeladen

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Wenn ich Deine Beschreibung mit einem unvollständigen Beispiel richtig verstanden habe, dann suchst Du so etwas:
\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.

ko3rn3r
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: Mi 23. Jan 2019, 13:46

Beitrag 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

Gast

Beitrag 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.

ko3rn3r
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: Mi 23. Jan 2019, 13:46

Beitrag von ko3rn3r »

Bartman hat geschrieben:Wenn ich Deine Beschreibung mit einem unvollständigen Beispiel richtig verstanden habe, dann suchst Du so etwas:
\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.
\begin{task}[Test] \label{test}
    bla bla bla
\end{task}

\cref{test}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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?

ko3rn3r
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: Mi 23. Jan 2019, 13:46

Beitrag 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.
\newtheorem{aufgabe}{Aufgabe}[chapter]

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Man muss außer dem Umgebungsnamen auch die Zuweisung für die Option ref anpassen:
\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}

ko3rn3r
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: Mi 23. Jan 2019, 13:46

Beitrag von ko3rn3r »

Vielen Dank für deine Antwort,
das Problem bei mir war, dass ich mit dem "amsthm" die Umgebung verändern wollte.
\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.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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.

Antworten