Bei folgendem Beispiel musste ich die Elemente so eingeben

\foreach \x in {0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0}

die Eingabe

\foreach \x in {0.1,0.2,...,1.0}

führte zu einem seltsamen Ergebnis (siehe Bild).

Wie kann ich das beheben?

alt text

Open in Online-Editor
\documentclass[]{scrartcl}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[
%font=\footnotesize, 
>=latex, 
scale=0.65,
x=10cm, y=10cm, 
]

%KoSy
%Gitternetzlinien
%\draw[very thin,color=gray] (-2,-4) grid (3,4);
%Achsen
\draw[->] (-0.05,0) -- (1.075,0) node[right, below] {Re};
\draw[->] (0,-0.05) -- (0,1.075) node[above, left] {Im};
%Achsenbeschriftung
%Zahlen auf x-Achse
\foreach \x in {0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} {
\if\x0\else
  \draw (\x,2pt) -- (\x, -2pt) node[below, font=\footnotesize] {$\x$};
\fi}

%Zahlen auf y-Achse
\foreach \y in {0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} {
\if\y0\else
  \draw (2pt,\y) -- (-2pt,\y) node[left, font=\footnotesize]{$\y$};
\fi}

%Ursprung
\node[below left] {$0$};

%Funktionen
\def\a{0.3482759645}
\def\b{0.6517240354}

\coordinate(O) at (0,0);
\coordinate(Z) at (\a,\b);
\coordinate(W) at (\b,\a);
\coordinate(ZplusW) at (\a+\b,\b+\a);
\coordinate(absZi) at (0,\a^2+\b^2);

%z=a+ib
\draw[red, thick, ->] (O) -- (Z) node[sloped, above, midway, text=black, font=\sffamily]{(a1)} node[left]{$z$};
\end{tikzpicture}

\end{document}

gefragt 12 Nov '15, 23:45

cis's gravatar image

cis
9.4k23240444
Akzeptiert-Rate: 29%

bearbeitet 13 Nov '15, 01:14


Das ist ein Rundungsproblem, das in der pgf/tikz-Anleitung bei der Erklärung zu \foreach in Abschnitt 83 (derzeit Seite 902) sogar ausdrücklich erwähnt ist. Man kann das Problem aber mit \pgfmathprintnumber lösen:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[
%font=\footnotesize, 
>=latex, 
scale=0.65,
x=10cm, y=10cm, 
]

%KoSy
%Gitternetzlinien
%\draw[very thin,color=gray] (-2,-4) grid (3,4);
%Achsen
\draw[->] (-0.05,0) -- (1.075,0) node[right, below] {Re};
\draw[->] (0,-0.05) -- (0,1.075) node[above, left] {Im};
%Achsenbeschriftung
%Zahlen auf x-Achse
\foreach \x in {0.1,0.2,...,1} {
  \pgfkeys{/pgf/number format/.cd,fixed,fixed zerofill,precision=1}
  \draw (\x,2pt) -- (\x, -2pt) node[below, font=\footnotesize] {$\pgfmathprintnumber{\x}$};
}

%Zahlen auf y-Achse
\foreach \y in {0.1,0.2,...,1.0} {
  \pgfkeys{/pgf/number format/.cd,fixed,fixed zerofill,precision=1}
  \draw (2pt,\y) -- (-2pt,\y) node[left, font=\footnotesize]{$\pgfmathprintnumber{\y}$};
}

%Ursprung
\node[below left] {$0$};

%Funktionen
\def\a{0.3482759645}
\def\b{0.6517240354}

\coordinate(O) at (0,0);
\coordinate(Z) at (\a,\b);
\coordinate(W) at (\b,\a);
\coordinate(ZplusW) at (\a+\b,\b+\a);
\coordinate(absZi) at (0,\a^2+\b^2);

%z=a+ib
\draw[red, thick, ->] (O) -- (Z) node[sloped, above, midway, text=black, font=\sffamily]{(a1)} node[left]{$z$};
\end{tikzpicture}

\end{document}

Korrekte Abbildung

Ohne die Einstellung einer festen Anzahl an Nachkommastellen einschließlich Füllung mit Nullstellen via \pgfkeys würde übrigens die 1 ohne Nachkommastelle ausgegeben. Wenn es für alle ausgegebenen Zahlen gelten soll, kann man das auch einmal global machen.

Ich habe in dem Beispiel außerdem die Fallunterscheidung, ob \x bzw. \y Null ist entfernt, da der Wertebereich jeweils von 0,1 bis 1 geht und somit Null nicht im Wertebereich liegt und daher der getestete Sonderfall nie auftreten kann.

Permanenter link

beantwortet 13 Nov '15, 07:57

saputello's gravatar image

saputello
10.8k103863
Akzeptiert-Rate: 51%

bearbeitet 13 Nov '15, 08:03

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×685
×21

gestellte Frage: 12 Nov '15, 23:45

Frage wurde gesehen: 5,393 Mal

zuletzt geändert: 13 Nov '15, 08:03