Seite 1 von 1

amsthm und cref Problem

Verfasst: Sa 14. Mär 2020, 22:19
von ko3rn3r
Hallo,
ich habe das Problem, dass, wenn ich "amsthm" und "cref" zusammen verwende, es zu einem Fehler kommt, wenn ich den Verweis an die Aufgaben-Umgebung mache: "\begin{aufgabe}[Test]\label{test}".
Nur an dieser Stelle kommt es zu einem Problem. Wenn sich das Label an der "\begin{enumtask}"-Umgebung befindet, funktioniert es.
Wenn ich den markierten Teil (%______) auskommentiere, sprich nicht das "amsthm"-Paket verwende, funktioniert alles (auch mit dem Verweis der Aufgaben-Umgebung: "\begin{aufgabe}[Test]\label{test}").
Das möchte ich aber wirklich ungern, da ich die Umgebung gerne verändern möchte.

Liebe Grüße!
\documentclass{report} 
\usepackage{enumitem} 
\usepackage[capitalise]{cleveref} 
  
%_______________________________
\usepackage{amsthm} 
\newtheoremstyle{Aufgabenstellung}% name of the style to be used
{}% measure of space to leave above the theorem. E.g.: 3pt
{}% measure of space to leave below the theorem. E.g.: 3pt
{}% name of font to use in the body of the theorem
{}% measure of space to indent
{\bfseries\sffamily}% name of head font
{}% punctuation between head and body
{1em}% space after theorem head; " " = normal interword space
{\thmname{#1}\thmnumber{ #2}\thmnote{: #3}}% Manually specify head

\theoremstyle{Aufgabenstellung}
%______________________________________________
\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 test 1 
    \item test 2 \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: So 15. Mär 2020, 00:09
von Bartman
Ich bekomme keine Fehlermeldung, aber statt der Benennung des Querverweises auf die Aufgaben-Umgebung erhalte ich Fragezeichen. Das lässt sich beheben, wenn man cleveref nach amsthm lädt.

Verfasst: So 15. Mär 2020, 11:59
von ko3rn3r
Hallo, danke für deine Antwort!
Stimmt, es kommt nicht zu einem Fehler, sondern zu einer Warnung:
" cref reference format for label type `aufgabe' undefined ".

Aber auch wenn ich "cref zum Schluss lade, bleiben die Fragezeichen.

Verfasst: Fr 27. Mär 2020, 20:23
von ko3rn3r
Hallo,
meintest du es so?
Kann es sein, dass man irgendwie noch ein Befehl definieren muss, den man im Label dann aufruft? Also in der Art wie: "fig:bla" oder "sec:bla2" als Bezeichnung des Labels damit "cleverref" weiß was er vorne dran schreiben muss?

Vielen Dank im Voraus und Liebe Grüße!
\documentclass{report} 
\usepackage{enumitem} 
  
\usepackage{amsthm} 
\newtheoremstyle{Aufgabenstellung}% name of the style to be used 
{}% measure of space to leave above the theorem. E.g.: 3pt 
{}% measure of space to leave below the theorem. E.g.: 3pt 
{}% name of font to use in the body of the theorem 
{}% measure of space to indent 
{\bfseries\sffamily}% name of head font 
{}% punctuation between head and body 
{1em}% space after theorem head; " " = normal interword space 
{\thmname{#1}\thmnumber{ #2}\thmnote{: #3}}% Manually specify head 

\theoremstyle{Aufgabenstellung} 

\newtheorem{aufgabe}{Aufgabe}[chapter] 
\renewcommand{\theaufgabe}{\arabic{aufgabe}} % zählt die Aufgaben arabisch (1, 2, 3, ...)

\usepackage{hyperref}

\usepackage[capitalise]{cleveref} 
\crefname{enumtaski}{Aufgabe}{Aufgaben} 
\newlist{enumtask}{enumerate}{1} 
\setlist[enumtask]{label=\alph*), ref=\theaufgabe\alph*)} 


\begin{document}
	
\chapter{Kapitel}

\begin{aufgabe}[Test]\mbox{} 
    \begin{enumtask} 
    \item test 1 
    \item test 2 \label{bla} 
    \end{enumtask} 
\end{aufgabe}

Die \cref{bla} kann referenziert werden!

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

Hier scheitert es jedoch: \cref{test}

\end{document}


Verfasst: Fr 27. Mär 2020, 20:35
von Gast
Wenn du erst eine neue Theorem-Umgebung definierst und dann cleveref lädst, kann das Paket natürlich keinen Einfluss mehr darauf nehmen. Daher wird auch immer wieder empfohlen: Erst Pakete laden, dann eigene Definitionen etc. Leider machen das ganz viele Leute nicht so – auch Leute, die Anleitungen schreiben oder diese unsäglichen Vorlagen.

Verfasst: Sa 28. Mär 2020, 14:06
von ko3rn3r
Vielen Dank für deine Antwort!
Stimmt in der Dokumentation stand es auch unter Punkt 14: Bekannte Bugs.
\newtheorem muss nach cleveref geladen werden. Das ist schon alles.
Hiermit klappt es :)

\documentclass{report} 
\usepackage{enumitem} 
 
\usepackage{amsthm} 

\newtheoremstyle{Aufgabenstellung}% name of the style to be used 
{}% measure of space to leave above the theorem. E.g.: 3pt 
{}% measure of space to leave below the theorem. E.g.: 3pt 
{}% name of font to use in the body of the theorem 
{}% measure of space to indent 
{\bfseries\sffamily}% name of head font 
{}% punctuation between head and body 
{1em}% space after theorem head; " " = normal interword space 
{\thmname{#1}\thmnumber{ #2}\thmnote{: #3}}% Manually specify head


\usepackage{hyperref}

\usepackage[capitalise]{cleveref} 
	\crefname{enumtaski}{Aufgabe}{Aufgaben} 
	\newlist{enumtask}{enumerate}{1} 
	\setlist[enumtask]{label=\alph*), ref=\theaufgabe\alph*)} 

\theoremstyle{Aufgabenstellung} 
\newtheorem{aufgabe}{Aufgabe}[chapter] 
\renewcommand{\theaufgabe}{\arabic{aufgabe}}

\begin{document}
	
\chapter{Kapitel}

\begin{aufgabe}[Test]\mbox{} 
    \begin{enumtask} 
    \item test 1 
    \item test 2 \label{bla} 
    \end{enumtask} 
\end{aufgabe}

Die \cref{bla} kann referenziert werden!

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

Hier scheitert es nicht mehr: \cref{test}

\end{document}
Anonymous hat geschrieben:Wenn du erst eine neue Theorem-Umgebung definierst und dann cleveref lädst, kann das Paket natürlich keinen Einfluss mehr darauf nehmen. Daher wird auch immer wieder empfohlen: Erst Pakete laden, dann eigene Definitionen etc. Leider machen das ganz viele Leute nicht so – auch Leute, die Anleitungen schreiben oder diese unsäglichen Vorlagen.

Verfasst: Sa 28. Mär 2020, 22:53
von ko3rn3r
Okay ich hätte doch noch eine Frage und zwar möchte ich gerne, dass mehrere Aufgaben mit einem Befehl zusammen aufgerufen werden (\cref{test1,test2}). Dies klappt auch bei den Teilaufgaben, jedoch nicht wenn die Referenzierung an den "normalen" Aufgaben liegt.

Lieb Grüße

\documentclass{report} 
\usepackage{enumitem} 
 
\usepackage{amsthm} 

\newtheoremstyle{Aufgabenstellung}% name of the style to be used 
{}% measure of space to leave above the theorem. E.g.: 3pt 
{}% measure of space to leave below the theorem. E.g.: 3pt 
{}% name of font to use in the body of the theorem 
{}% measure of space to indent 
{\bfseries\sffamily}% name of head font 
{}% punctuation between head and body 
{1em}% space after theorem head; " " = normal interword space 
{\thmname{#1}\thmnumber{ #2}\thmnote{: #3}}% Manually specify head


\usepackage{hyperref}

\usepackage[german,capitalise]{cleveref} 
	\crefname{enumtaski}{Aufgabe}{Aufgaben}
	\newlist{enumtask}{enumerate}{1}
	\setlist[enumtask]{label=\alph*), ref=\theaufgabe\alph*)}

\theoremstyle{Aufgabenstellung}
\newtheorem{aufgabe}{Aufgabe}[chapter]
\renewcommand{\theaufgabe}{\arabic{aufgabe}}

\begin{document}
	
\chapter{Kapitel}

\begin{aufgabe}[Test]\mbox{} \label{test1} 
    \begin{enumtask} 
    \item test 1 \label{foo}
    \item test 2 \label{bar} 
    \end{enumtask} 
\end{aufgabe}

Die \cref{foo,bar} können referenziert werden!

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

Hier scheitert es doch noch mal: \cref{test1,test2}

\end{document}


Verfasst: Sa 28. Mär 2020, 23:24
von Bartman
Lies den Abschnitt 8.1.3 "Automatic \newtheorem Definitions".

Off-Topic: Für die aktuelle Rechtschreibung solltest Du besser die Option ngerman wählen. Da sie außer cleveref wahrscheinlich noch weitere Pakete in Deiner Präambel beeinflussen soll, kannst Du sie gleich als Option der Klasse verwenden.

Verfasst: So 29. Mär 2020, 20:14
von ko3rn3r
Vielen Dank!
Folgender Befehl führt zum Erfolg:
\crefname{aufgabe}{Aufgabe}{Aufgaben}
Bartman hat geschrieben:Lies den Abschnitt 8.1.3 "Automatic \newtheorem Definitions".

Off-Topic: Für die aktuelle Rechtschreibung solltest Du besser die Option ngerman wählen. Da sie außer cleveref wahrscheinlich noch weitere Pakete in Deiner Präambel beeinflussen soll, kannst Du sie gleich als Option der Klasse verwenden.