Seite 1 von 1
Counter im Befehl auf Eingabe setzen
Verfasst: So 8. Jan 2017, 17:41
von mathe42
Hallo,
Ich möchte gerne ein Befehl definieren, in dem mit verschiedenen countern gearbeitet wird. Dafür möchte ich einen Counter auf den übergebenen wert setzen. (Nach dem Motto:)
\newcomand{\test}[1]{
\newcounter{c}
\setcounter{#1}
...
}
Wie geht das?
Gruß
Mathe42
Verfasst: So 8. Jan 2017, 17:58
von ChristianHupfer
Man sollte
nicht in einem
- Makro 'verstecken', insbesondere kann man den Befehl pro Zählername nur einziges Mal verwenden (wenn man den Trick nicht kennt

)
Bitte definiere genau, was Du mit deinem Makro erreichen willst.
Verfasst: So 8. Jan 2017, 18:41
von Gast
\setcounter hat übrigens zwei Argumente. Als erstes Argument ist der Name des Zählers anzugeben. Der Wert ist erst als zweites Argument anzugeben.
Verfasst: So 8. Jan 2017, 22:48
von mathe42
Also im Grunde möchte ich eine Mathematische Funktion als Befehl darstellen (Also imgrunde will ich f(x) mit verschiedenen x Berechnen...)
Als vereinfachtes Beispiel:
\newcounter{foo}
\newcomand{\function}[1]{
%Setzte foo auf #1
\setcounter{foo}{#1}
\addtocounter{foo}{\value{foo}}
\thefoo
}
Wäre jetzt f(x)=2*x
(in Wirklichkeit ist das Problem deutlich komplexer)
EDIT:
Hier mal ein kleines Beispiel wie ich das jetzt umgesetzt habe (eine der einfachen Dinge). Wenn ich mein Ziel ansehe ist das leider nix...
\documentclass{report}
\newcounter{r}
\setcounter{r}{0}
\newcounter{m}
\setcounter{m}{0}
\newcommand{\Rest}{
\ifnum\value{r}<\value{m}
\ther
\else
\addtocounter{r}{-\value{m}}
\Rest
\fi
}
\begin{document}
\setcounter{m}{2}
\setcounter{r}{6}
\Rest
\end{document}
Mich würde also dennoch eine Möglichkeit das umzusetzen Interessieren...
Verfasst: Mo 9. Jan 2017, 08:11
von Gast
Funktionen berechnen und deren Wert ausgeben, geht beispielsweise mit den mathematischen Fähigkeiten von
pgf bzw.
pgfplots sehr schön. Als Tabelle ausgeben wäre dann beispielsweise mit
pgfplotstable möglich. Dabei stehen einem auch Schleifenkonstrukte zur Verfügung.
Zu deinem Beispiel: Du kannst m und r natürlich über Argumente von \Rest setzen, wobei es ggf. sinnvoll ist dann für die Rekursion eine interne Anweisung zu verwenden, also etwas wie:
\makeatletter
\newcommand*{\Rest}[2]{\setcounter{r}{#1}\setcounter{m}{#2}\@Rest}
\newcommand{\@Rest}{%
\ifnum\value{r}<\value{m}
\ther
\else
\addtocounter{r}{-\value{m}}%
\expandafter\@Rest
\fi
}\makeatother
Man könnte für die Schleife aber auch einfach \@whilenum aus dem LaTeX-Kern verwenden und so die Rekursion verstecken.
Ob das alles
für dein Ziel nix ist, kann ich natürlich nicht beurteilen, da ich dazu zu wenig Informationen über das Ziel habe.
Verfasst: Mo 9. Jan 2017, 16:31
von mathe42
Danke für die Antwort ich hab das jetzt hinbekommen
