PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Labelprobleme bei eigenen Umgebungen



raspittyplatsch
27-04-2011, 10:36
Hallo allerseits,

ich bastel seit geraumer Zeit an eigenen Umgebungen (Satz, Definition, Beispiel,...). Leider habe ich jetzt das Problem, dass ich mit den Labels nicht das hinkriege, was ich haben will.
Ich hab mal ein Minibeispiel vorbereitet, und hoffe, dass das mein Problem so veranschaulicht:


\documentclass[11pt,onecolumn,liststotoc,bibtotoc,oneside,bighead ings,halfparskip]{scrbook}

\usepackage[T1]{fontenc} %erlaubt Silbertrennung von Wörtern mit Sonderzeichen
\usepackage[ngerman]{babel} % Sonderzeichen
\usepackage[latin1]{inputenc}

\usepackage{xcolor} % stellt viele Farben bereit

\usepackage{framed}
\usepackage{colortbl} % farbige Tabellenelemente
\usepackage{longtable} % Tabellen, die über mehrere Seiten gehen
\usepackage{calc} % Berechnung von metrischen Werten (z.B. \textwidth-2mm)

% Farben
\definecolor{beispiel_bg}{rgb}{1,1,1}
\definecolor{beispiel_r}{rgb}{0,0,0}
\definecolor{satz_bg}{gray}{0.95}
\definecolor{satz_r}{rgb}{1,1,1}
% Counter
\newcounter{CntAllg}[chapter]
\renewcommand\theCntAllg{\thechapter.\arabic{CntAl lg}}

\newcounter{CntBsp}[chapter]
\renewcommand\theCntBsp{\thechapter.\arabic{CntBsp }}

%Parameter: Name der folgenden Box, Titel, Breite der linken Spalte (mit dem Boxnamen)
\newcommand{\generictitle}[3]
{\begin{tabular}{@{}p{#3}@{}p{0.5\textwidth-13pt}@{}}
\\[-5pt]
#1& { } \hfill #2\\[4pt]
\end{tabular}}

% eigene Umgebungen

\newenvironment{satz}[1][]{
\stepcounter{CntAllg} %theCntAllg
\arrayrulecolor{satz_r}
\begin{longtable}[l]{| >{\columncolor{satz_bg}} p{\textwidth-13pt}|} \hline
\generictitle{\textbf{Satz \theCntAllg}}{#1}{0.5\textwidth}
\endfirsthead
\hline
\endlastfoot
\it}
{
\rm\\
\end{longtable}
\arrayrulecolor{black}}


\newenvironment{beispiel}[1][]{
\stepcounter{CntBsp}
\arrayrulecolor{beispiel_r}
\begin{longtable}[l]{| >{\columncolor{beispiel_bg}} p{\textwidth-13pt}|} \hline
\generictitle{\textbf{Beispiel \theCntBsp}}{#1}{0.5\textwidth}
\endfirsthead
\hline
\endlastfoot}
{
\\
\end{longtable}
\arrayrulecolor{black}}

\begin{document}
\begin{beispiel}\label{bsp:1}
Ein kleines Testbeispiel
\end{beispiel}

\begin{satz}\label{satz:1}
und ein Testsatz.
\end{satz}

Jetzt soll auf das Beispiel~\ref{bsp:1} verwiesen werden und jetzt auf den Satz~\ref{satz:1}.
\end{document}

tral
27-04-2011, 10:53
Hallo,

verwende statt \stepcounter:



\refstepcounter


Christian.

raspittyplatsch
27-04-2011, 11:04
Danke für die schnelle Antwort, aber irgendwie klappt es nicht damit. Oder hab ich was falsch umgesetzt?


\documentclass[11pt,onecolumn,liststotoc,bibtotoc,oneside,bighead ings,halfparskip]{scrbook}

\usepackage[T1]{fontenc} %erlaubt Silbertrennung von Wörtern mit Sonderzeichen
\usepackage[ngerman]{babel} % Sonderzeichen
\usepackage[latin1]{inputenc}

\usepackage{xcolor} % stellt viele Farben bereit

\usepackage{framed}
\usepackage{colortbl} % farbige Tabellenelemente
\usepackage{longtable} % Tabellen, die über mehrere Seiten gehen
\usepackage{calc} % Berechnung von metrischen Werten (z.B. \textwidth-2mm)

% Farben
\definecolor{beispiel_bg}{rgb}{1,1,1}
\definecolor{beispiel_r}{rgb}{0,0,0}
\definecolor{satz_bg}{gray}{0.95}
\definecolor{satz_r}{rgb}{1,1,1}
% Counter
\newcounter{CntAllg}[chapter]
\renewcommand\theCntAllg{\thechapter.\arabic{CntAl lg}}

\newcounter{CntBsp}[chapter]
\renewcommand\theCntBsp{\thechapter.\arabic{CntBsp }}

%Parameter: Name der folgenden Box, Titel, Breite der linken Spalte (mit dem Boxnamen)
\newcommand{\generictitle}[3]
{\begin{tabular}{@{}p{#3}@{}p{0.5\textwidth-13pt}@{}}
\\[-5pt]
#1& { } \hfill #2\\[4pt]
\end{tabular}}

% eigene Umgebungen

\newenvironment{satz}[1][]{
\refstepcounter{CntAllg} %theCntAllg
\arrayrulecolor{satz_r}
\begin{longtable}[l]{| >{\columncolor{satz_bg}} p{\textwidth-13pt}|} \hline
\generictitle{\textbf{Satz \theCntAllg}}{#1}{0.5\textwidth}
\endfirsthead
\hline
\endlastfoot
\it}
{
\rm\\
\end{longtable}
\arrayrulecolor{black}}


\newenvironment{beispiel}[1][]{
\refstepcounter{CntBsp}
\arrayrulecolor{beispiel_r}
\begin{longtable}[l]{| >{\columncolor{beispiel_bg}} p{\textwidth-13pt}|} \hline
\generictitle{\textbf{Beispiel \theCntBsp}}{#1}{0.5\textwidth}
\endfirsthead
\hline
\endlastfoot}
{
\\
\end{longtable}
\arrayrulecolor{black}}

\begin{document}
\begin{beispiel}\label{bsp:1}
Ein kleines Testbeispiel
\end{beispiel}
\begin{beispiel}\label{bsp:2}
Ein kleines Testbeispiel
\end{beispiel}

\begin{satz}\label{satz:1}
und ein Testsatz.
\end{satz}

Jetzt soll auf das erste Beispiel~\ref{bsp:1} und das zweite Beispiel~\ref{bsp:2} verwiesen werden und jetzt auf den Satz~\ref{satz:1}.
\end{document}

raspittyplatsch
29-04-2011, 18:31
Da ich leider noch keine Lösung gefunden habe, versuche ich mein Problem noch einmal zu präzisieren:
ich habe mir eigene Umgebungen gebastelt und will, dass die Beispiel-Umgebung eine eigene, unabhängige Nummerierung bekommt. Dazu habe ich die beiden separaten Zähler eingefügt. Leider scheitere ich daran, den Wert dieser Zähler dann auch an das Label zu "heften". Kann mir jemand bei dem Versuch helfen?

u_fischer
29-04-2011, 18:44
Deine Umgebungen benutzen longtable. longtable hat auch einen Zähler und der gewinnt. Du musst daher deinen \refstepcounter-Befehl später ausführen:


\newenvironment{satz}[1][]{
%theCntAllg
\arrayrulecolor{satz_r}
\begin{longtable}[l]{| >{\columncolor{satz_bg}} p{\textwidth-13pt}|} \hline
\stepcounter{CntAllg}\generictitle{\textbf{Satz \theCntAllg}}{#1}{0.5\textwidth}
\endfirsthead
\hline
\endlastfoot
\itshape\addtocounter{CntAllg}{-1}\refstepcounter{CntAllg}}
{
\rmfamily\\
\end{longtable}
\arrayrulecolor{black}}

raspittyplatsch
29-04-2011, 18:53
Funktioniert alles wie gewollt.

Herzlichen Dank!
raspittyplatsch