Counter in newcommand expandieren

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

Counter in newcommand expandieren

Beitrag von godi »

Hallo,

ich würde gerne den Wert eines Counters speichern und zu einem späteren Zeitpunkt ausgeben. Jedoch gelingt es mir nicht, den Counter zu expandieren, also den aktuellen Wert zu speichern.

Ich habe schon einiges ausprobiert, bin aber noch nicht auf eine Lösung gekommen. Hier mal mein Beispiel:
\documentclass{scrartcl} 


\newcounter{myCT}

\newcommand \counterNR{}
\makeatletter
\newcommand \addCounterNR{
	\edef\myCTVal{\themyCT} % Hier sollte der aktuelle Wert des Zählers gelesen werden.
	\g@addto@macro\counterNR{\myCTVal ;} % Aktuellen Wert speichern
}
\makeatother

\begin{document}

\addCounterNR
\addtocounter{myCT}{3}
\addCounterNR
\stepcounter{myCT}
\addCounterNR

Teste Ausgabe:
\counterNR

\end{document}
Hat jemand eine Idee wie ich dies Lösen könnte?

godi

rais
Forum-Guru
Forum-Guru
Beiträge: 411
Registriert: Di 21. Sep 2010, 00:37

Re: Counter in newcommand expandieren

Beitrag von rais »

godi hat geschrieben: ich würde gerne den Wert eines Counters speichern und zu einem späteren Zeitpunkt ausgeben. Jedoch gelingt es mir nicht, den Counter zu expandieren, also den aktuellen Wert zu speichern.
Beim \edef wird zwar \themyCT expandiert, beim \g@addto@macro schreibst Du aber nur `\myCTVal ;' zu \counterNR hinzu, nicht dessen Inhalt...
\documentclass{scrartcl}


\newcounter{myCT}

\newcommand \counterNR{}
\makeatletter
\newcommand \addCounterNR{%
   \xdef\counterNR{\counterNR \themyCT ;}% Aktuellen Wert speichern
}
\makeatother

\begin{document}

\addCounterNR
\addtocounter{myCT}{3}
\addCounterNR
\stepcounter{myCT}
\addCounterNR

Teste Ausgabe:
\counterNR

\end{document}
(\xdef: \global\edef)

VG
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

Besserwisser

Beitrag von Besserwisser »

\theZählername ist für das Speichern des Werts eines Zählers denkbar ungeeignet. Das kann ja auch gerne mal eine römische Zahl oder eine Zahl mit anschließendem Punkt oder etwas ganz anderes zurückgeben. Also besser \the\value{Zählername} verwenden. Das ist immer eine arabische Zahl. Am einfachsten speichert man aber einen Zählerwert in einem Zähler:
\newcounter{pagewas}
\setcounter{pagewas}{\value{page}}
…
\setcounter{page}{\value{pagewas}}

godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

Beitrag von godi »

Danke für eure Antworten und die Hinweise. Mein Vorhaben funktioniert nun.

Normalerweise würde ich den Zählerwert in einen Zähler speichern.
Jedoch bräuchte ich in meinem Fall eine dynamische Anzahl an Zähler (sicher 50 oder mehr). Weiters wird der Wert nicht in meinem Dokument ausgegeben sondern in ein Textfile geschrieben, also muss ich sowieso den Zählwert irgendwie exportieren. Somit fällt in diesem Fall das Speichern in einem Zähler weg.

Besserwisser

Beitrag von Besserwisser »

godi hat geschrieben:Jedoch bräuchte ich in meinem Fall eine dynamische Anzahl an Zähler (sicher 50 oder mehr).
Das ist mit aktuellen LaTeX überhaupt kein Problem. Du kannst hunderte von Zähler anlegen.
godi hat geschrieben:Weiters wird der Wert nicht in meinem Dokument ausgegeben sondern in ein Textfile geschrieben, also muss ich sowieso den Zählwert irgendwie exportieren.
Du kannst per \write oder \protected@write problemlos \arabic{Zählername} in eine Datei schreiben.

Antworten