Ersetzung vom Wert der Eingabe (anstatt der direkten Eingabe)

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Lorz
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 73
Registriert: Mi 26. Feb 2020, 22:13
Wohnort: Bremen

Ersetzung vom Wert der Eingabe (anstatt der direkten Eingabe)

Beitrag von Lorz »

Hallo!

Ich hatte in viewtopic.php?f=22&t=25581 bereits ein Problem beschrieben. In viewtopic.php?f=6&t=10257&hilit=SVerweis habe ich nun einen Hinweis gefunden, wie ich keine csv benötige, indem ich mit
\documentclass{article}
\makeatletter
\@namedef{70,8}{10}
\makeatother
\begin{document}
	\csname70,8\endcsname
\end{document}
Ersetzung vornehme.

(die Lösung auf die andere Weise mit Einbinden der csv bzw. Zahlenbereiche interessiert mich aber auch, deshalb lasse ich den anderen Thread von mir erst mal bestehen)

Mein Problem ist nun noch, dass mein zu ersetzender Wert nicht direkt "70,8" ist, sondern er ergibt sich aus einer Rechnung a la
\documentclass{article}
\usepackage[nomessages]{fp} 
\begin{document}

\FPeval{\Punkte}{2+1.5 +2.5+3.5 +1+2 +2+5  +3+1 +4 +1.5+2.5 +2.5 +1.5  +2.5 +1+4.5+2+1.5 +2.5 +1.5}
 \FPeval{\result}{trunc((\Punkte)/72*100,0)}$\result$,\FPeval{\result}{trunc((((\Punkte)/72*100)-trunc((\Punkte)/72*100,0))*10,0)}$\result$

\end{document}
dies liefert die Ausgabe 70,8. Wenn ich jedoch
\documentclass{article}
\usepackage[nomessages]{fp}
\makeatletter
\@namedef{70,8}{10}
\makeatother
\begin{document}
	
\FPeval{\Punkte}{2+1.5 +2.5+3.5 +1+2 +2+5  +3+1 +4 +1.5+2.5 +2.5 +1.5  +2.5 +1+4.5+2+1.5 +2.5 +1.5}
	
\csname\FPeval{\result}{trunc((\Punkte)/72*100,0)}$\result$,\FPeval{\result}{trunc((((\Punkte)/72*100)-trunc((\Punkte)/72*100,0))*10,0)}$\result$\endcsname

\end{document}		
wird die 70,8 nicht in die 10 umgewandelt. Gibt es also eine Möglichkeit, nicht die direkt die Recheneingabe, sondern den (Ausgabe-)Wert von result in csname einzulesen?

Lorz
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 73
Registriert: Mi 26. Feb 2020, 22:13
Wohnort: Bremen

Re: Ersetzung vom Wert der Eingabe (anstatt der dirkten Eingabe)

Beitrag von Lorz »

Ich habe es jetzt selbst hinbekommen:
\documentclass{article}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage[nomessages]{fp}
\makeatletter
\@namedef{780}{10}
\makeatother
\begin{document}
	
\FPeval{\Punkte}{2+1.5 +2.5+3.5 +1+2 +2+5  +3+1 +4 +1.5+2.5 +2.5 +1.5  +2.5 +1+4.5+2+1.5 +2.5 +1.5}
\FPeval{\Promill}{trunc(trunc((\Punkte)/72*100,0)*10+trunc((((\Punkte)/72*100)-trunc((\Punkte)/72*100,0))*10,0),0)}

\newcounter{mycounter}
\setcounter{mycounter}{\Promill}
\csname\themycounter\endcsname

\end{document}

Lorz
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 73
Registriert: Mi 26. Feb 2020, 22:13
Wohnort: Bremen

Re: Ersetzung vom Wert der Eingabe (anstatt der dirkten Eingabe)

Beitrag von Lorz »

Gibt es die Möglichkeit in \@namedef nicht nur einen Einzelwert, sondern eine ganze Liste an Werte zuordnen zu lassen?
Also etwa a=[1,2,3,4,5] und \@namedef{a[n],n=1..nops(a)}{b} oder so?
Denn ich habe vor allen Prozentwerten von 0 bis 100 Punktzahlen zuzuordnen (0 bis 15 Punkte).

Antworten