Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Ref bei mdframed

  1. #1
    Registrierter Benutzer
    Registriert seit
    31.07.2009
    Beiträge
    67

    Ref bei mdframed

    Hallo,
    ich habe Probleme bei Referenz auf Theorems unter Verwendung von mdframed. Es wird großteils falsch refenziert.
    Anbei ein Bsp.-Code und das pdf, das ich daraus erhalte.
    Was muss ich ändern?
    Danke!

    Code:
    \documentclass[12pt,a4paper]{scrbook} 
    
    \usepackage{amsfonts, amsmath, amssymb, latexsym, amscd}
    
    \usepackage[framemethod=tikz]{mdframed}
    
    
    \newcounter{theorem}
    \setcounter{theorem}{0}
    \renewcommand\thetheorem{Beispiel \thechapter.\arabic{theorem}}
    \makeatletter
    \mdf@dolist{\mdf@do@stringoption}{%
        {theoremtitle=={}}%
    }
    \renewrobustcmd\mdfcreateextratikz{%
          \node[anchor=west,rounded corners,draw,thick,shading=axis,left color=gray!20,xshift=0.5cm,minimum height=.7cm,minimum width=2cm] at (P-|O) 
                  {~\mdf@frametitlefont{\thetheorem}%
                      \ifdefempty{\mdf@theoremtitle}%
                      {~}%
                      {:~\mdf@theoremtitle~}%
                  };
    }
    \makeatother
    \mdfdefinestyle{theoremstyle}{%
    outerlinewidth=1pt,
    innerlinewidth=0pt,
    roundcorner=5pt,
    linecolor=black,
    shadow=false,
    splittopskip=1cm,         % THIS IS THE REQUIRED OPTION FOR SPACE ABOVE THE SPLIT ON THE SECOND PAGE
    splitbottomskip=1cm,      % THIS IS THE REQUIRED OPTION FOR SPACE BELOW THE SPLIT ON THE FIRST PAGE 
    innertopmargin=1.2\baselineskip,
    skipabove={\dimexpr0.5\baselineskip+\topskip\relax},
    needspace=3\baselineskip,
    frametitlefont=\sffamily\bfseries,
    settings={\global\stepcounter{theorem}},
    }
    \newenvironment{bsp}[1][]
    {\begin{mdframed}[style=theoremstyle,theoremtitle={#1}]
    \relax}{
    \end{mdframed}
    }
    
    
    \begin{document}
    
    \chapter{Start}
    
    \begin{bsp}\label{bsp1}
    Bsp 1
    \end{bsp}
    
    \begin{bsp}\label{bsp2}
    Bsp 2
    \end{bsp}
    
    \begin{bsp}\label{bsp3}
    Bsp 3
    \end{bsp}
    
    \ref{bsp1} und \ref{bsp2} und \ref{bsp3}
    
    \end{document}
    test00.pdf

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.07.2013
    Beiträge
    193
    Du musst \refstepcounter anstatt des einfachen \stepcounter nutzen.

  3. #3
    Registrierter Benutzer
    Registriert seit
    31.07.2009
    Beiträge
    67
    Habs jetzt geändert, und dafür kommt auch der Name nicht nur die Nummer beim Zitieren. Ist dies auch änderbar, dass nur auf die Nummer referenziert wird?

    Code:
    \documentclass[12pt,a4paper]{scrbook} 
    
    \usepackage{amsfonts, amsmath, amssymb, latexsym, amscd}
    
    \usepackage[framemethod=tikz]{mdframed}
    
    
    \newcounter{theorem}
    \setcounter{theorem}{0}
    \renewcommand\thetheorem{Beispiel \thechapter.\arabic{theorem}}
    \makeatletter
    \mdf@dolist{\mdf@do@stringoption}{%
        {theoremtitle=={}}%
    }
    \renewrobustcmd\mdfcreateextratikz{%
          \node[anchor=west,rounded corners,draw,thick,shading=axis,left color=gray!20,xshift=0.5cm,minimum height=.7cm,minimum width=2cm] at (P-|O) 
                  {~\mdf@frametitlefont{\thetheorem}%
                      \ifdefempty{\mdf@theoremtitle}%
                      {~}%
                      {:~\mdf@theoremtitle~}%
                  };
    }
    \makeatother
    \mdfdefinestyle{theoremstyle}{%
    outerlinewidth=1pt,
    innerlinewidth=0pt,
    roundcorner=5pt,
    linecolor=black,
    shadow=false,
    splittopskip=1cm,         % THIS IS THE REQUIRED OPTION FOR SPACE ABOVE THE SPLIT ON THE SECOND PAGE
    splitbottomskip=1cm,      % THIS IS THE REQUIRED OPTION FOR SPACE BELOW THE SPLIT ON THE FIRST PAGE 
    innertopmargin=1.2\baselineskip,
    skipabove={\dimexpr0.5\baselineskip+\topskip\relax},
    needspace=3\baselineskip,
    frametitlefont=\sffamily\bfseries,
    settings={\global\refstepcounter{theorem}},
    }
    \newenvironment{bsp}[1][]
    {\begin{mdframed}[style=theoremstyle,theoremtitle={#1}]
    \relax}{
    \end{mdframed}
    }
    
    
    \begin{document}
    
    \chapter{Start}
    
    \begin{bsp}\label{bsp1}
    Bsp 1
    \end{bsp}
    
    \begin{bsp}\label{bsp2}
    Bsp 2
    \end{bsp}
    
    \begin{bsp}\label{bsp3}
    Bsp 3
    \end{bsp}
    
    Beispiel \ref{bsp1} und Beispiel \ref{bsp2} und Beispiel \ref{bsp3}
    
    \end{document}
    test00.pdf
    Geändert von Oelle74 (13-11-2016 um 11:05 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    20.07.2013
    Beiträge
    193
    Du stellst doch ganz explizit ein, dass die Darstellung des Zählers das Wort Beispiel enthält. Und nun willst du das nicht mehr? Versteh ich nicht.

    Code:
    \documentclass[12pt,a4paper]{scrbook} 
    
    \usepackage{amsfonts, amsmath, amssymb, latexsym, amscd}
    
    \usepackage[framemethod=tikz]{mdframed}
    
    
    \newcounter{theorem}
    \renewcommand\thetheorem{\thechapter.\arabic{theorem}}
    \makeatletter
    \mdf@dolist{\mdf@do@stringoption}{%
    	{theoremtitle=={}}%
    }
    \renewrobustcmd\mdfcreateextratikz{%
    	\node[anchor=west,rounded corners,draw,thick,shading=axis,left color=gray!20,xshift=0.5cm,minimum height=.7cm,minimum width=2cm] at (P-|O) 
    	{~\mdf@frametitlefont{Beispiel~\thetheorem}%
    	\ifdefempty{\mdf@theoremtitle}%
    	{~}%
    	{:~\mdf@theoremtitle~}%
    };
        }
        \makeatother
        \mdfdefinestyle{theoremstyle}{%
    	    outerlinewidth=1pt,
    	    innerlinewidth=0pt,
    	    roundcorner=5pt,
    	    linecolor=black,
    	    shadow=false,
    	    splittopskip=1cm,         % THIS IS THE REQUIRED OPTION FOR SPACE ABOVE THE SPLIT ON THE SECOND PAGE
    	    splitbottomskip=1cm,      % THIS IS THE REQUIRED OPTION FOR SPACE BELOW THE SPLIT ON THE FIRST PAGE 
    	    innertopmargin=1.2\baselineskip,
    	    skipabove={\dimexpr0.5\baselineskip+\topskip\relax},
    	    needspace=3\baselineskip,
    	    frametitlefont=\sffamily\bfseries,
    	    settings={\global\refstepcounter{theorem}},
        }
        \newenvironment{bsp}[1][]
        {\begin{mdframed}[style=theoremstyle,theoremtitle={#1}]
        \relax}{
        \end{mdframed}
        }
    
    
        \begin{document}
    
        \chapter{Start}
    
        \begin{bsp}\label{bsp1}
    	    Bsp 1
        \end{bsp}
    
        \begin{bsp}\label{bsp2}
    	    Bsp 2
        \end{bsp}
    
        \begin{bsp}\label{bsp3}
    	    Bsp 3
        \end{bsp}
    
        \ref{bsp1} und \ref{bsp2} und \ref{bsp3}
    
        \end{document}

  5. #5
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    Das hast Du selbst dadurch verbrochen, dass Du "Beispiel" in \thetheorem mit eingefügt hast.
    Code:
    \documentclass[12pt,a4paper]{scrbook} 
    
    \usepackage{amsfonts, amsmath, amssymb, latexsym, amscd}
    
    \usepackage[framemethod=tikz]{mdframed}
    
    \newcounter{theorem}[chapter]% Zähler in Abhängigkeit von chapter zurücksetzen
    \renewcommand\thetheorem{\thechapter.\arabic{theorem}}
    \makeatletter
    \mdf@dolist{\mdf@do@stringoption}{%
        {theoremtitle=={}}%
    }
    \renewrobustcmd\mdfcreateextratikz{%
          \node[anchor=west,rounded corners,draw,thick,shading=axis,left color=gray!20,xshift=0.5cm,minimum height=.7cm,minimum width=2cm] at (P-|O) 
                  {~\mdf@frametitlefont{Beispiel~\thetheorem}%
                      \ifdefempty{\mdf@theoremtitle}%
                      {~}%
                      {:~\mdf@theoremtitle~}%
                  };
    }
    \makeatother
    \mdfdefinestyle{theoremstyle}{%
    outerlinewidth=1pt,
    innerlinewidth=0pt,
    roundcorner=5pt,
    linecolor=black,
    shadow=false,
    splittopskip=1cm,         % THIS IS THE REQUIRED OPTION FOR SPACE ABOVE THE SPLIT ON THE SECOND PAGE
    splitbottomskip=1cm,      % THIS IS THE REQUIRED OPTION FOR SPACE BELOW THE SPLIT ON THE FIRST PAGE 
    innertopmargin=1.2\baselineskip,
    skipabove={\dimexpr0.5\baselineskip+\topskip\relax},
    needspace=3\baselineskip,
    frametitlefont=\sffamily\bfseries,
    settings={\refstepcounter{theorem}},% \stepcounter und \refstepcounter sind
                                    % bereits global
    }
    \newenvironment{bsp}[1][]
    {\begin{mdframed}[style=theoremstyle,theoremtitle={#1}]
    \relax}{
    \end{mdframed}
    }
    
    
    \begin{document}
    
    \chapter{Start}
    
    \begin{bsp}\label{bsp1}
    Bsp 1
    \end{bsp}
    
    \begin{bsp}\label{bsp2}
    Bsp 2
    \end{bsp}
    
    \begin{bsp}\label{bsp3}
    Bsp 3
    \end{bsp}
    
    Beispiel \ref{bsp1} und Beispiel \ref{bsp2} und Beispiel \ref{bsp3}
    
    \end{document}
    Ich habe auch gleich eingefügt, dass theorem mit chapter zurückgesetzt wird, weil es sonst IMHO wenig sinnvoll wäre, den Zähler in Abhöngigkeit von chapter auszugeben. Außerdem habe ich das sinnlose \setcounter{theorem}{0} entfernt. Das ist nämlich bereits in \newcounter{theorem} enthalten. Auch das \global vor \refstepcounter habe ich entfernt, da \setcounter, \stepcounter und \refstepcounter ohnehin global arbeiten und daher das \global IMHO im Zweifelsfall sogar stören könnte.

  6. #6
    Registrierter Benutzer
    Registriert seit
    31.07.2009
    Beiträge
    67
    Ich hab mir das aus einem anderen Beispiel kopiert und anscheinend nicht ganz verstanden.
    Ich verwende den Code für ein altes Projekt von mir, wo ich mit ref nur die Nummer benötige. Was muss ich dazu im Code ändern?

  7. #7
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    Haben Johannes und ich doch zeitgleich gezeigt. Vergleiche meinen Code mit Deinem, dann siehst Du, was ich geändert habe. Hast Du meinen Code überhaupt ausprobiert?

  8. #8
    Registrierter Benutzer
    Registriert seit
    31.07.2009
    Beiträge
    67
    Super, danke!

Lesezeichen

Berechtigungen

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