Archiv verlassen und diese Seite im Standarddesign anzeigen : 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!
\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}
6217
Johannes_B
13-11-2016, 09:22
Du musst \refstepcounter anstatt des einfachen \stepcounter nutzen.
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?
\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}
6218
Johannes_B
13-11-2016, 11:08
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.
\documentclass[12pt,a4paper]{scrbook}
\usepackage{amsfonts, amsmath, amssymb, latexsym, amscd}
\usepackage[framemethod=tikz]{mdframed}
\newcounter{theorem}
\renewcommand\thetheorem{\thechapter.\arabic{theor em}}
\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}
Das hast Du selbst dadurch verbrochen, dass Du "Beispiel" in \thetheorem mit eingefügt hast.
\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{theor em}}
\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.
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?
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?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.