Seite 1 von 1

Eigenen Counter referenzieren

Verfasst: Mi 26. Aug 2009, 22:22
von Fingolfin
Hallo,

ich habe mir zwei counter definiert um anforderungen zu nummerieren, wobei der zweite an den ersten gekoppelt ist. Die Anforderungen erstelle ich dann mit den befehlen \requirement bzw. \subrequirement.

Die beiden Counter ...
\newcounter{req}
\newcounter{subreq}[req]
und die Definition der Befehle.
\newcommand{\requirement}[1]{%
\refstepcounter{req}
\arabic{req}~#1}

\newcommand{\subrequirement}[1]{%
\refstepcounter{subreq}
\arabic{req}.\arabic{subreq}~#1}
Bei der Verwendung tritt nun, folgendes Problem auf:
\requirement{A}
\requirement{B}
\subrequirement{a}
\subrequirement{b}
\label{b}
\ref{b}
Die Referenzierung von "b" liefert lediglich 2 und nicht die gewünschte 2.2 sowie es bei der Referenzierung eines Abschnitts der Fall ist. Weiß vielleicht jemand wie ich das erreichen kann?

Verfasst: Do 27. Aug 2009, 07:37
von sommerfee
Bei jedem Zähler, der mit \newcounter definitiert wird, wird auch ein passendes \the... Makro mitdefiniert, welches für die Darstellung im Dokument und in Referenzen zuständig ist. Vorbelegt ist es auf \arabic{<Zähler>}. Durch Umdefinition von \thesubreq erreicht man also das gewünschte. Bei der Gelegenheit habe ich die Darstellung im Text auch gleich auf die \the...-Makros umgestellt, so daß die Darstellung im Text und in Referenzen immer gleich ist, egal wie \thesubreq definiert ist:
\documentclass{article}
\begin{document}

\newcounter{req}
\newcounter{subreq}[req]
\renewcommand\thesubreq{\thereq.\arabic{subreq}}

\newcommand{\requirement}[1]{%
  \refstepcounter{req}\thereq~#1}

\newcommand{\subrequirement}[1]{%
  \refstepcounter{subreq}\thesubreq~#1}

\requirement{A}
\requirement{B}
\subrequirement{a}
\subrequirement{b}
\label{b}
\ref{b}

\end{document}

Verfasst: Do 27. Aug 2009, 09:55
von Fingolfin
Vielen Dank,

ich hätte nicht gedacht, dass es so einfach ist nachdem ich mich gestern den halben Tag damit herumgeschlagen habe ohne zu einem Ergebnis zu kommen.