PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit ref bzw. refstepcounter auf einen kombinierten Zähler hinweisen



trustee
25-02-2009, 21:37
Hallo zusammen,

ich stehe vor folgendem Problem: Zur Nummerierung eigener Elemente habe ich einen Zähler mit Unterzähler definiert. Auf die Elemente würde ich gerne verweisen, so dass Zähler und Unterzähler ausgegeben werden. Ich weiß jedoch nicht, wie ich auf die Kombination der beiden Zähler verweise.

Hier ein MB zur vereinfachten Darstellung meines Kernproblems:

\documentclass{book}
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel}

\newcounter{Haupt}
\newcounter{Neben}[Haupt]

\begin{document}

\refstepcounter{Haupt}\theHaupt\label{NummerEins}

\refstepcounter{Haupt}\theHaupt\label{NummerZwei}

\refstepcounter{Neben}\theHaupt\theNeben\label{Num merZweiEins}

NummerEins: \ref{NummerEins}

NummerZweiEins: \ref{NummerZweiEins}

\end{document}

An der Stelle hinter "NummerZweiEins:" benötige ich 21. Also vermute ich, dass ich entweder \ref{NummerZweiEins} oder \refstepcounter{Neben} anders gestalten muss, sodass ich nicht nur auf den Nebenzähler, sondern auch auf den Hauptzähler referenziere. Hat jemand eine Idee?

Vielen Dank im Voraus!
Sebastian

trustee
25-02-2009, 22:42
Wie es manchmal ist: Nun habe ich die Lösung selbst gefunden:

\def\theNeben{\theHaupt\theNeben}

in der Präambel löst mein Problem.

Oriel
06-05-2012, 00:05
Die genannte Lösung läuft bei mir nicht! Ich bekomme die Fehlermeldung "TeX capacity exceeded." Kann mir jemand sagen, wie es richtig geht?

rais
06-05-2012, 07:38
Hallo und Herzlich Willkommen :)

Die genannte Lösung läuft bei mir nicht! Ich bekomme die Fehlermeldung "TeX capacity exceeded." Kann mir jemand sagen, wie es richtig geht?
ja, in einem \def/\(re)newcommand darf der zu definierende Befehl idR nicht verwendet werden.


\renewcommand*\theNeben{\theHaupt\arabic{Neben}}

dann hat Dein Leser aber das Problem, bei z. B. `11' zu sehen, was gemeint ist: nur der Hauptzähler mit eben 11 oder Hauptzähler 1 und Nebenzähler 1...
Besser:


\renewcommand*\theNeben{\theHaupt.\arabic{Neben}}

oder vllt


\renewcommand*\theNeben{\theHaupt\alph{Neben}}

MfG

thinkfree
06-05-2012, 11:24
Also ich stand letztens vor einem sehr ähnlichen Problem, ich wollte eine Referenz auf einen Enumerate-Unterpunkt (sagen wir mal "3") eines Theorems (sagen wir mal "1.2") im Stil "1.2.3" generieren.

Ich hab mir dann folgende "Bastellösung" ergoogelt, die auf dem Paket "hyperref" basiert:

Folgendes Makro:

\newcommand{\deepref}[2]{\hyperref[#2]{\ref*{#1}.\ref*{#2}}}

Das dann verwendet mit


\deepref{TheoremLabel}{UnterpunktLabel}

Ja ich weiß, nicht besonders elegant, aber funktioniert :-)

Oriel
06-05-2012, 14:23
Danke, Rais! Hatte das ewig vergeblich zu lösen versucht. Der entscheidende Satz ist: "In einem \def oder \(re)newcommand darf der zu definierende Befehl idR nicht verwendet werden." Daher \arabic{} im Definiendum. Jetzt habe ich meine vollständige Lösung zur Absatznummerierung. Für die Nachwelt:



\documentclass{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[german]{babel}
\usepackage{hyperref}
\newcounter{absnum}[section]
\renewcommand*{\theabsnum}{\thesection.\arabic{abs num}}
\newcommand*{\abs}{\refstepcounter{absnum}(\thesec tion.arabic{absnum}) }

\begin{document}

\section{Erste Überschrift}
\abs Befiehl du deine Wege und was dein Herze kränkt der allertreusten
Pflege des, der den Himmel lenkt. Siehe § \ref{abs:zwei}.

\subsection*{Zwischenüberschrift}
\abs Befiehl du deine Wege und was dein Herze kränkt der allertreusten
Pflege des, der den Himmel lenkt.

\section{Zweite Überschrift}
\abs Befiehl du deine Wege und was dein Herze kränkt der allertreusten
Pflege des, der den Himmel lenkt.

\abs\label{abs:zwei} HIER Befiehl du deine Wege und was dein Herze
kränkt der allertreusten Pflege des, der den Himmel lenkt.
\end{document}


Man muß hyperref VOR newcounter laden, sonst kommt die Warnung „pdfTeX warning (ext4): destination with the same identifier (name{absnum.4}) has been already used, duplicate ignored“.