Die Umgebung soll folgendermaßen funktionieren:
\documentclass[12pt,oneside]{scrreprt} \usepackage[latin1]{inputenc} \usepackage[babel,german=quotes]{csquotes} \usepackage[german]{babel} \usepackage{fancyhdr} \usepackage{float} \usepackage{tikz} \usetikzlibrary{shapes,backgrounds} \usepackage{array} \newsavebox{\GrafikCaption} \newsavebox{\GrafikLabel} \newenvironment{grafik}[2] {\begin{figure}[H] \sbox{\GrafikCaption}{#1} \sbox{\GrafikLabel}{#2} \begin{center} \begin{tikzpicture}} {\end{tikzpicture} \end{center} \caption{\label{\usebox{\GrafikLabel}}\usebox{\GrafikCaption}} \end{figure}} \begin{grafik}{Venn-Diagramm einer echten Teilmenge}{label} \draw [fill=yellow!50] (0,0) circle(1) node[]{$Z_1$}; \draw (0.5,0) circle(2) node[]{}; \node (L) at (1.75,0) {L}; \end{grafik}
Das Problem scheint die Stelle \label{\usebox{\GrafikLabel} zu sein. Wenn ich stattdessen \label{test} eingebe, funktioniert es einwandfrei. Das Label muss ja aber nach Caption kommen, deshalb sind andere Stellen ausgeschlossen.
Wo ist mein Fehler?
Ich habe auch schon versucht, das \label nicht ins Environment zu nehmen sondern manuell an die Stelle vor \end{grafik} zu schreiben. Allerdings ist die Referenz dann nicht die Grafik, sondern die Section. Das bringt also auch nichts.