Anzeige:
Ergebnis 1 bis 13 von 13

Thema: Verweise auf \newtheorem-Umgebungen

  1. #1
    Registrierter Benutzer
    Registriert seit
    10.03.2010
    Beiträge
    30

    Verweise auf \newtheorem-Umgebungen

    Hallo,

    bei Verweisen auf Lemmata oder Sätze durch \ref erhält man nur die Nr. und muss "Lemma" oder "Satz" von Hand davor schreiben:

    Code:
    \documentclass{scrbook}
    \newtheorem{theorem}{Satz}[chapter]
    \newtheorem{lemma}[theorem]{Lemma}
    \begin{document}
    \begin{lemma}\label{Aussage1}
     Text Text
    \end{lemma}
    
    \begin{theorem}\label{Aussage2}
     Text Text
    \end{theorem}
    siehe Lemma \ref{Aussage1}, siehe Satz \ref{Aussage2}
    \end{document}
    Ich finde das allerdings recht unpraktisch. Mache ich nun aus einem Satz ein Lemma, so muss ich im ganzen Dokument nach Verweisen auf den Satz suchen und dort von Hand "siehe Satz" auf "siehe Lemma" ändern. Das ist aufwendig und fehleranfällig, gerade bei langen Dokumenten über mehrere Dateien (durch Ändern des Labels findet man die Stellen immerhin). Typisch Latex wäre für mich, die Umgebung zu ändern und alle Namen mit Nr. passen automatisch. Geht das irgendwie?

    Viele Grüße
    Soldberg

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Du suchst vermutlich cleveref.

  3. #3
    Registrierter Benutzer
    Registriert seit
    10.03.2010
    Beiträge
    30
    danke, das Paket liest sich interessant. Zum Laufen habe ich es aber leider noch nicht gekriegt:
    Code:
    \documentclass{scrbook}
    \newtheorem{theorem}{Satz}[chapter]
    \newtheorem{lemma}[theorem]{Lemma}
    \begin{document}
    \begin{lemma}\label{Aussage1}
     Text Text
    \end{lemma}
    
    \begin{theorem}\label{Aussage2}
     Text Text
    \end{theorem}
    \cref{Aussage1}, \cref{Aussage2}
    \end{document}
    Das \cref gibt anscheinend den Name des Zählers aus, das hilft mir ja aber nicht weiter. Da Lemma und Satz den gleichen Zähler haben, würde auch reines Umbenennen des Zählers denke ich nicht helfen.

  4. #4
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Dein Beispiel funktioniert nicht, weil Du u. a. das Paket cleveref gar nicht geladen hast. Bezüglich theorem etc. sei auf die Anleitung zu cleveref verwiesen. Folgendes funktioniert jedenfalls:
    Code:
    \documentclass{scrbook}
    \usepackage{ntheorem}
    \usepackage{cleveref}
    \newtheorem{theorem}{Satz}[chapter]
    \newtheorem{lemma}[theorem]{Lemma}
    \begin{document}
    \begin{lemma}\label{Aussage1}
     Text Text
    \end{lemma}
    
    \begin{theorem}\label{Aussage2}
     Text Text
    \end{theorem}
    \cref{Aussage1}, \cref{Aussage2}
    \end{document}

  5. #5
    Registrierter Benutzer
    Registriert seit
    10.03.2010
    Beiträge
    30
    Sorry, das \usepackage ist beim kopieren verloren gegangen, mir hat aber sowieso ntheorem gefehlt. Dein Beispiel ist immer noch nicht genau das was ich wollte (es erscheint z.B. "theorem" statt "Satz" bei einem \cref). Ich vermute aber das wird irgendwo in der Anleitung erklärt, die werde ich mir dann jetzt nochmal genauer anschauen.

    Danke für deine Hilfe.

  6. #6
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Zitat Zitat von Soldberg Beitrag anzeigen
    es erscheint z.B. "theorem" statt "Satz" bei einem \cref
    Wenn Du die Umgebung nicht theorem sondern Satz nennst, dann steht da AFAIK automatisch Satz. Ansonsten geht das vielleicht etwas über die alias-Geschichte, die in der cleveref-Anleitung erklärt ist. Ich habe das aber bisher noch nie gebraucht und deshalb selbst noch nicht genau gelesen.

  7. #7
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Soldberg Beitrag anzeigen
    bei Verweisen auf Lemmata oder Sätze durch \ref erhält man nur die Nr. und muss "Lemma" oder "Satz" von Hand davor schreiben:

    Ich finde das allerdings recht unpraktisch. Mache ich nun aus einem Satz ein Lemma, so muss ich im ganzen Dokument nach Verweisen auf den Satz suchen und dort von Hand "siehe Satz" auf "siehe Lemma" ändern. Das ist aufwendig und fehleranfällig, gerade bei langen Dokumenten über mehrere Dateien (durch Ändern des Labels findet man die Stellen immerhin). Typisch Latex wäre für mich, die Umgebung zu ändern und alle Namen mit Nr. passen automatisch. Geht das irgendwie?
    Code:
    \documentclass{scrbook}
    \newtheorem{theorem}{Satz}[chapter]
    \newtheorem{lemma}[theorem]{Lemma}
    \def\Ref#1{Satz~\ref{#1}}
    \begin{document}
    \begin{lemma}\label{Aussage1}
     Text Text
    \end{lemma}
    
    \begin{theorem}\label{Aussage2}
     Text Text
    \end{theorem}
    siehe Lemma \ref{Aussage1}, siehe \Ref{Aussage2}
    \end{document}
    Herbert

  8. #8
    Registrierter Benutzer
    Registriert seit
    10.03.2010
    Beiträge
    30
    Hallo Herbert,

    aber bei deiner Lösung muss ich doch wieder im ganzen Dokument Referenzen ändern, wenn ich aus einem Satz ein Lemma mache, oder?

  9. #9
    Registrierter Benutzer
    Registriert seit
    10.03.2010
    Beiträge
    30
    Zitat Zitat von Schweinebacke Beitrag anzeigen
    Wenn Du die Umgebung nicht theorem sondern Satz nennst, dann steht da AFAIK automatisch Satz.
    Da hast Du vermutlich recht. Eine Alternative ist denke ich \crefformat :
    Code:
    \documentclass{scrbook}
    \usepackage{ntheorem}
    \usepackage{cleveref}
    \newtheorem{theorem}{Satz}[chapter]
    \newtheorem{lemma}[theorem]{Lemma}
    \crefformat{lemma}{Lemma #2#1#3}
    \crefformat{theorem}{Satz (#2#1#3)}
    
    \begin{document}
    \begin{lemma}\label{Aussage1}
     Text Text
    \end{lemma}
    
    \begin{theorem}\label{Aussage2}
     Text Text
    \end{theorem}
    \cref{Aussage1}, \cref{Aussage2}
    \end{document}

  10. #10
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Soldberg Beitrag anzeigen
    aber bei deiner Lösung muss ich doch wieder im ganzen Dokument Referenzen ändern, wenn ich aus einem Satz ein Lemma mache, oder?
    Wieso im ganzen Dokument?
    - wenn du es einmal machst, ersetzt du \Ref durch \ref
    - wenn du es für das ganze Dokument machst, dann nach
    der Definition von \Ref einfach \let\Ref\ref

    Herbert

  11. #11
    Registrierter Benutzer
    Registriert seit
    06.03.2010
    Ort
    St. Petersburg, Russland
    Beiträge
    2.468
    Nein, wenn EIN Satz zu einem Lemma gemacht wird, nicht ALLE Sätze, denke ich.

  12. #12
    Registrierter Benutzer
    Registriert seit
    10.03.2010
    Beiträge
    30
    Zitat Zitat von rstuby Beitrag anzeigen
    Nein, wenn EIN Satz zu einem Lemma gemacht wird, nicht ALLE Sätze, denke ich.
    Genau so meinte ich es.
    Ein Beispiel dazu:
    Code:
    \documentclass{scrbook}
    \newtheorem{theorem}{Satz}[chapter]
    \newtheorem{lemma}[theorem]{Lemma}
    \def\Ref#1{Satz~\ref{#1}}
    \begin{document}
    \begin{theorem}\label{Aussage1}
     Text Text
    \end{theorem}
    \begin{theorem}\label{Aussage2}
     Text Text
    \end{theorem}
    siehe \Ref{Aussage1}, siehe \Ref{Aussage2}\\
    Text\\
    siehe \Ref{Aussage1}, siehe \Ref{Aussage2}\\
    Text\\
    \end{document}
    Jetzt will ich aus dem zweiten Satz ein Lemma machen. Mit dem zuletzt von mir geposteten Code muss ich nur \begin{theorem} zu \begin{lemma} ändern und die Referenzen passen automatisch alle.

  13. #13
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von Soldberg Beitrag anzeigen
    Genau so meinte ich es.
    Ein Beispiel dazu:
    Jetzt will ich aus dem zweiten Satz ein Lemma machen. Mit dem zuletzt von mir geposteten Code muss ich nur \begin{theorem} zu \begin{lemma} ändern und die Referenzen passen automatisch alle.
    Jetzt habe ich verstanden ...
    Das geht natürlich nicht mit meiner Idee.

    Herbert

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •