Hier reproduzieren wir den in http://texwelt.de/wissen/fragen/24620/svmono56-richtige-namen-eigener-theoremumgebungen-mit-cleveref erwähnten Fehler mit bereits vorhandenen Umgebungen (und vereinfachen die Problemstellung somit ein wenig). Dafür machen wir das Beispiel realistischer für die deutschsprachige Leserschaft durch deutschprachenspezifische Pakete und Optionen und lassen Öffne in Overleaf
\documentclass[deutsch,envcountsame,envcountsect]{hacked-svmono}%%% V5.6 aus https://www.springer.com/gp/authors-editors/book-authors-editors/resources-guidelines/rights-permissions-licensing/manuscript-preparation/5636, without the block that loads ntheorem (otherwise error). %\documentclass[deutsch,envcountsame]{hacked-svmono}%%% Doens't work in a similar way. %\documentclass[deutsch,envcountsect]{hacked-svmono}%%% Works, but the counters are different. \usepackage[ngerman]{babel} \usepackage[ngerman]{cleveref} \crefname{corollary}{Kor.}{Kore.} \Crefname{corollary}{Korollar}{Korollare} \begin{document} \chapter{MeinKapitel} \section{MeinAbschnitt} \section{MeinUnterabschnitt} \begin{theorem}[MeinSatz]1+1=2\end{theorem} \begin{corollary}[MeinKorollar] \label{corl:MyCorl} %\label[corollary]{corl:MyCorl}%%% Ulrike's solution as an alternative to the line above. (It works but is less automatic than we wish it to be.) 0+1+1=2.\end{corollary} Verweisen wir mal drauf: \cref{corl:MyCorl}. \end{document} Die letzte Zeile der Ausgabe ist falsch, denn es gibt kein Theorem 1.2.2. Nimmt man Ulrike's Lösung mit dem optionalen Argument für
Jedoch muss man wohl bei der Lösung bei allen nummerierten Theoremumgebungen, auf die verwiesen wird, immer an das optionale Argument denken; vergisst man's einmal, so erhält man möglicherweise unbemerkte Fehler. Kann man nicht irgendeine Änderung in der Präambel, in svmono oder in cleveref machen, derart dass der Hauptteil gefragt 20 Apr '19, 01:20 user0 |
Das Hauptproblem ist, dass
svmono
wederamsthm
, nochntheorem
, noch LaTeXs internes\newtheorem
verwendent, sondern da was eigenes drum herum bastelt (dieses\spnewtheorem
). Das kenntcleveref
natürlich nicht und deshalb funktioniert da nichts.@Henri Danke. Vermutlich könnte man deine Lösung https://texwelt.de/wissen/fragen/24620/svmono56-richtige-namen-eigener-theoremumgebungen-mit-cleveref/24640 auch in hacked-svmono für vorhandene Umgebungen reinbasteln. Etwa
\global\@namedef{#1}{\@spthm{#2}{\csname #1name\endcsname}{#4}{#5}}
in der Definition von\@spothm
durch\global\@namedef{#1}{\@spthm{#2}{\csname #1name\endcsname}{#4}{#5\defaultlabel{#1}}}
ersetzen. Es bleibt trotzdem ein Problem, wenn wir innerhalb von theoremähnlichen Umgebungen\label
zusätzlich für etwas anderes, etwa für Gleichungen, nutzen wollen.@Henri Vielleicht wäre die "richtigere" Lösung, die Option nospthms zu nutzen und doch amsthm zu laden und stattdessen das Problem zu lösen, wie man unterschiedliche QED-Bezeichnungen an Enden unterschiedlicher Umgebungen reinkriegt.
@user0 Auf
spthm
zu verzichten und dafüramsthm
zu verwenden erscheint mir am sinnvollsten. Diesesvmono
-Klasse ist irgendwie nicht so das Gelbe vom Ei.Darüber hinaus ist svmono.cls am 23. April 2019 (dem Datum der Datei nach zu urteilen) verändert worden ohne die Versionsnummer hochzusetzen. Mir fehlen die Worte.