Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Mit ref bzw. refstepcounter auf einen kombinierten Zähler hinweisen

  1. #1
    Registrierter Benutzer
    Registriert seit
    19.04.2006
    Beiträge
    88

    Mit ref bzw. refstepcounter auf einen kombinierten Zähler hinweisen

    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:
    Code:
    \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{NummerZweiEins}
    
    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

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.04.2006
    Beiträge
    88
    Wie es manchmal ist: Nun habe ich die Lösung selbst gefunden:

    \def\theNeben{\theHaupt\theNeben}

    in der Präambel löst mein Problem.

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.05.2012
    Beiträge
    2
    Die genannte Lösung läuft bei mir nicht! Ich bekomme die Fehlermeldung "TeX capacity exceeded." Kann mir jemand sagen, wie es richtig geht?

  4. #4
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Hallo und Herzlich Willkommen
    Zitat Zitat von Oriel Beitrag anzeigen
    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.
    Code:
    \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:
    Code:
    \renewcommand*\theNeben{\theHaupt.\arabic{Neben}}
    oder vllt
    Code:
    \renewcommand*\theNeben{\theHaupt\alph{Neben}}
    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  5. #5
    Registrierter Benutzer
    Registriert seit
    28.03.2011
    Beiträge
    8
    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:
    Code:
    \newcommand{\deepref}[2]{\hyperref[#2]{\ref*{#1}.\ref*{#2}}}
    Das dann verwendet mit

    Code:
    \deepref{TheoremLabel}{UnterpunktLabel}
    Ja ich weiß, nicht besonders elegant, aber funktioniert :-)

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.05.2012
    Beiträge
    2

    Absatznummerierung

    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:

    Code:
    \documentclass{scrartcl}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc} 
    \usepackage{lmodern}
    \usepackage[german]{babel}
    \usepackage{hyperref}
    \newcounter{absnum}[section]
    \renewcommand*{\theabsnum}{\thesection.\arabic{absnum}} 
    \newcommand*{\abs}{\refstepcounter{absnum}(\thesection.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“.
    Geändert von Oriel (08-05-2012 um 02:40 Uhr) Grund: Hinweis auf Hyperref

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •