Inkrementieren einer Variable

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

Markdown is OFF

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Inkrementieren einer Variable

Re: Inkrementieren einer Variable

von Jaffet » Mi 16. Sep 2020, 14:57

Hallo,

danke. Deine Hilfe hat super geklappt. Ich fände es gut, wenn man dieses Thema verschieben würde. Es passt besser in die Kategorie Tabellen und Grafiken. Ich habe leider beim Erstellen versehentlich die falsche Kategorie gewählt.

VG
Jaffet

Re: Inkrementieren einer Variable

von gast » Mi 2. Sep 2020, 08:03

Schleifendurchläufe finden mit einer lokalen Gruppe statt, so dass Definitionen und andere Statusänderungen im jeweiligen Schleifendurchlauf verborgen bleiben. Statt die Änderung mit \xdef global zu machen, empfehle ich in Fällen wie deinem jedoch, einfach den Wert direkt auszurechnen und zu verwenden:

Code: Alles auswählen

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \foreach \c in {1,2,...,5} {
    \draw (0,\c) -- (0,\c) node[left=4pt] 
      {$\pgfmathparse{0.3*\c}\scriptstyle \pgfmathprintnumber{\pgfmathresult}$};
  }
\end{tikzpicture}
\end{document}

Und bitte immer ein vollständiges Minimalbeispiel an Stelle von Code-Schnipseln angeben. Man kann daran fast immer einiges ablesen und es beschleunigt die Bearbeitung. Außerdem kannst du so selbst besser testen, dass es außer dem erwähnten Problem keine Fehler enthält.

Übrigens sollte man statt \pgfmathparse{\ergebnis+0.3}\edef\ergebnis{\pgfmathresult} besser direkt \pgfmathsetmacro{\ergebnis}{\ergebnis+0.3} verwenden. Ein korrektes Vorgehen mit Rettung des Werts über einen Schleifendurchlauf hinaus wäre IMHO damit:

Code: Alles auswählen

\documentclass{article}
\usepackage{tikz}
\newcommand*{\ergebnis}{}% Für die spätere Verwendung "reservieren".
\begin{document}
\begin{tikzpicture}
  \renewcommand*{\ergebnis}{0}%
  \foreach \c in {1,2,...,5} {
    \draw (0,\c) -- (0,\c) node[left=4pt] 
    {\pgfmathsetmacro{\ergebnis}{\ergebnis+0.3}
      \global\let\ergebnis\ergebnis
      \pgfmathparse{0.3*\c}\footnotesize \pgfmathprintnumber{\ergebnis}};
  }
\end{tikzpicture}
\end{document}

von Gast » Mi 2. Sep 2020, 00:52

Code: Alles auswählen

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \def\ergebnis{0}
    \foreach \c in {1,2,...,5}{
        \pgfmathparse{\ergebnis+0.3}
        \xdef\ergebnis{\pgfmathresult}% Abkürzung für \global\edef
	
        \draw (0,\c) -- (0,\c) node[left=4pt] 
            {$\scriptstyle \pgfmathprintnumber{\ergebnis}$}
        ;
    }
\end{tikzpicture}
\end{document}

Inkrementieren einer Variable

von Jaffet » Di 1. Sep 2020, 20:34

Hallo,

ich möchte die Variable \ergebnis in einer For-Schleife fünf Mal um 0.3 erhöhen. Bei mir will es einfach nicht klappen. Weiß jemand, warum die Variable bei jedem Durchlauf den Wert 0.4 enthält?

Code: Alles auswählen

	
	\def\ergebnis{0}
   	\foreach \c in {1,2,...,5}{
   		pgfmathparse{\ergebnis+0.3}
   		\edef\ergebnis{\pgfmathresult}
	
	\draw (0,\c) -- (0,\c) node[left=4pt] {$\scriptstyle \ergebnis$};
}

Nach oben