goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Werteübergabe von Zählervariablen in labels

 

ascore5000
Forum-Newbie
Forum-Newbie

Beiträge: 3
Anmeldedatum: 10.03.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2018, 02:08     Titel: Werteübergabe von Zählervariablen in labels
  Antworten mit Zitat      
Hallo Liebes Forum,

ich habe folgendes Problem:
Wie man im nachfolgenden Minimalbeispiel sieht, versuche ich die Texte, die beim Referenzieren von Labels ausgegeben werden anzupassen. Dabei soll der gewünschte Text aus der Überschrift (muss nicht unbedingt die Überschrift sein, kann auch anders funktionieren) genommen werden.
Problem: Habe ich hier eine Zählervariable drin, wird diese in der .aux-Datei nicht als Wert sondern als Befehl eingefügt:
Code • Öffne in Overleaf

\newlabel{x}{{1}{1}{Ueberschrift-Nr. \arabic {Testcounter}}{}{}}
 


Dementsprechend wird bei der Referenz der aktuelle Wert der Variable an der aktuellen Stelle im Dokument ausgegeben.

Hier das Minimalbeispiel:
Code • Öffne in Overleaf

\documentclass[
   a4paper,
]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{nameref}

\newcounter{Testcounter}
\newenvironment{Testueberschrift}[1]{
   \refstepcounter{Testcounter
}
   \paragraph{Ueberschrift-Nr. \arabic{Testcounter}}
   \label{#1}
}{}

\begin{document
}

Testtext, an dem die Referenz hängt: \nameref{y}

\begin{Testueberschrift}{x}
Text unter einer Überschrift.
\end{Testueberschrift}

\begin{Testueberschrift}{y}
Text unter einer anderen Überschrift.
\end{Testueberschrift}

\end{document}
 


Ich hoffe mein Problem ist verständlich.

Vielen Dank vorab für eure Hilfe!
ascore5000
Private Nachricht senden Benutzer-Profile anzeigen

Johannes_B
Moderator
Moderator


Beiträge: 5005
Anmeldedatum: 01.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2018, 09:49     Titel:
  Antworten mit Zitat      
Für mich nicht verständlich. LaTeX bietet dir doch bereits funktionierende automatisch nummerierte und referenzierbare überschriften an. Warum versuchst du das Rad neu zu erfinden?
_________________

TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
Private Nachricht senden Benutzer-Profile anzeigen

ascore5000
Forum-Newbie
Forum-Newbie

Beiträge: 3
Anmeldedatum: 10.03.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2018, 12:54     Titel:
  Antworten mit Zitat      
Hallo Johannes,

das Gezeigte ist nur ein Minimalbeispiel und wird in der eigentlichen Umsetzung deutlich komplexer.
Konkret: Ich habe mehrere Objekte die ich zweistufig durchnummerieren muss: 1-1, 1-2, 1-3, ... 2-1, 2-2, 2-2...
Auf diese möchte ich später Referenzieren können, und zwar so, dass im Haupttext dann ein eigener Text dargestellt wird, den ich in currentlabel setze.

Ich muss das auch nicht unbedingt in dem paragraph drin machen. Ich habe schon verschiedene Dinge mit \@currentlabel getestet, das wäre mir auch sehr recht, dort tritt aber das gleiche Verhalten auf:

Code • Öffne in Overleaf

\documentclass[
   a4paper,
]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{nameref}


\makeatletter
\newcommand{\myLabel}[1]{
  \def\@currentlabelname{#1
}
}
\makeatother

\newcounter{Testcounter}
\newenvironment{TestObjekt}[1]{
   \refstepcounter{Testcounter
}
   Ein Objekt Nr. \arabic{Testcounter} \\
   \myLabel{Zu Objekt Nr.-\arabic{Testcounter}}
   \label{#1}
}{}

\begin{document
}

Testtext, an dem die Referenz hängt: \nameref{y}
\\

\begin{TestObjekt}{x}
Ein Objekt.
\end{TestObjekt}

\begin{TestObjekt}{y}
Ein anderes Objekt.
\end{TestObjekt}

\end{document}
 


Der Output sieht so aus:
Code • Öffne in Overleaf

Testtext, an dem die Referenz hängt: Zu Objekt Nr.-0
Ein Objekt Nr. 1
Ein Objekt.
Ein Objekt Nr. 2
Ein anderes Objekt.
 

Dort, wo die 0 steht, sollte eigentlich die 2 hin.

Ich hoffe, mein Anliegen ist verständlicher geworden.

Vielen Dank
ascore5000
Private Nachricht senden Benutzer-Profile anzeigen

u_fischer
Forum-Meister
Forum-Meister


Beiträge: 3758
Anmeldedatum: 22.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2018, 16:01     Titel:
  Antworten mit Zitat      
nameref gibt sich große Mühe sein Argument nicht zu expandieren, sondern unverändert abzuspeichern. Du musst also vorher expandieren -- und ggfs. darauf achten, die Dinge zu schützen, nicht nicht expandiert werden dürfen:

Code • Öffne in Overleaf
\documentclass[
   a4paper,
]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{nameref}

\newcounter{Testcounter}
\newenvironment{Testueberschrift}[1]{%
   \refstepcounter{Testcounter}%
   \edef\next{%
   \noexpand\paragraph{Ueberschrift-Nr.  \arabic{Testcounter}}}%
   \next
   \label{#1}%
}{}


\begin{document
}

Testtext, an dem die Referenz hängt: \nameref{y}

\begin{Testueberschrift}{x}
Text unter einer Überschrift.
\end{Testueberschrift}

\begin{Testueberschrift}{y}
Text unter einer anderen Überschrift.
\end{Testueberschrift}

\end{document}

_________________

Ulrike Fischer
www.troubleshooting-tex.de
Private Nachricht senden Benutzer-Profile anzeigen

ascore5000
Forum-Newbie
Forum-Newbie

Beiträge: 3
Anmeldedatum: 10.03.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2018, 18:41     Titel:
  Antworten mit Zitat      
super sache - das zeigt genau das Verhalten, welches ich brauche!
Vielen Dank!

Den Begriff expandieren kannte ich noch nicht.

Wenn ich das richtig verstehe, wurde hier ein TeX-Makro mit dem Namen \next definiert, dass sofort expandiert.

Expandieren meint dann, nicht den Befehl selbst, sondern die Auswirkungen der Befehle für die Definition des Makros zu nutzen. So wie eine Referenzierung bzw. eine Wertübergabe von Variablen in anderen Programmiersprachen.

Das \noexpand dient dann dazu, den nächsten Befehl \paragraph vor dem direkten expandieren zu schüzten.

Ist das korrekt so?
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2018 goLaTeX.de