Forum:  Textsatz mit LaTeX
Thema: TikZ Fehler?
Themen-Übersicht
viertel
Senior
Dabei seit: 04.03.2003
Mitteilungen: 27783
Herkunft: Hessen
Themenstart: 2021-01-24 03:58
\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Ich habe mal angefangen, mit TikZ zu „spielen“.
Und habe prompt ein Problem:

Warum stehen die horizontalen Linien über die Dreiecksseiten hinaus? Ihre Enden sollten eigentlich auf den Dreiecksseiten liegen🤔 Und $A_3B_3$ liegt gar oberhalb der Spitze, obwohl es knapp darunter liegen sollte.
$A_1$ sollte eigentlich da liegen, wo die blaue Linie die Seite $AC$ schneidet.
Bei mir lokal (Texmaker) passiert das Gleiche😖
Ein Ganzzahlproblem ist es nicht, denn die vertikalen roten Linien haben ganzzahlige Koordinaten.
Und die Spitze $C$ liegt korrekt auf der Höhe $17 \cdot 0.4=6.8$.
Latex
\begin{tikzpicture}[scale=0.8] % ,show background rectangle
\def\c{17}      % Grundseite c
%\def\H{0.4*\c}  % Höhe H
\pgfmathsetmacro{\H}{0.4*\c}  % Höhe H
\def\Cx{0.6*\c} % Höhenfußpunkt
\draw[fill=lightgray!20] 
	(0,0) node[below left] (A) {$A$} -- 
	(\c,0) node[below right] (B) {$B$} -- 
	(\Cx,\H) node[above] (C) {$C$} -- 
	cycle;
\draw[dashed] (C) -- (\Cx,0) node[below] {$R$};
\def\ta{0.65}
\def\tb{0.35}
\def\tc{0.99}
\draw ($ (A)!\ta!(C) $) node[left,fill=red,inner sep=2pt,label=left:{$A_1$}] (A1) {}
	-- ($ (B)!\ta!(C) $) node[right] (B1) {$B_1$};
\draw ($ (A)!\tb!(C) $) node[left] (A2) {$A_2$}
	-- ($ (B)!\tb!(C) $) node[right] (B2) {$B_2$};
\draw ($ (A)!\tc!(C) $) node[left] (A3) {$A_3$}
	-- ($ (B)!\tc!(C) $) node[right] (B3) {$B_3 \quad H=\H$};
\draw (0,-1) -- +(0,6);
\draw[blue] (6.63,-1) -- +(0,6);
\draw[red] (6,-1) -- +(0,6) node[above left] {$(6 \mid 5)$};
\draw[red] (7,-1) -- +(0,6) node[above right] {$(7 \mid 5)$};
\draw[green] (9,6.8) -- +(2,0);
\end{tikzpicture}

<math>
\begin{tikzpicture}[scale=0.8] % ,show background rectangle
\def\c{17}      % Grundseite c
%\def\H{0.4*\c}  % Hhe H
\pgfmathsetmacro{\H}{0.4*\c}  % Hhe H
\def\Cx{0.6*\c} % Hhenfupunkt
\draw[fill=lightgray!20]
(0,0) node[below left] (A) {$A$} --
(\c,0) node[below right] (B) {$B$} --
(\Cx,\H) node[above] (C) {$C$} --
cycle;
\draw[dashed] (C) -- (\Cx,0) node[below] {$R$};
\def\ta{0.65}
\def\tb{0.35}
\def\tc{0.99}
\draw ($ (A)!\ta!(C) $) node[left,fill=red,inner sep=2pt,label=left:{$A_1$}] (A1) {}
-- ($ (B)!\ta!(C) $) node[right] (B1) {$B_1$};
\draw ($ (A)!\tb!(C) $) node[left] (A2) {$A_2$}
-- ($ (B)!\tb!(C) $) node[right] (B2) {$B_2$};
\draw ($ (A)!\tc!(C) $) node[left] (A3) {$A_3$}
-- ($ (B)!\tc!(C) $) node[right] (B3) {$B_3 \quad H=\H$};
\draw (0,-1) -- +(0,6);
\draw[blue] (6.63,-1) -- +(0,6);
\draw[red] (6,-1) -- +(0,6) node[above left] {$(6 \mid 5)$};
\draw[red] (7,-1) -- +(0,6) node[above right] {$(7 \mid 5)$};
\draw[green] (9,6.8) -- +(2,0);
\end{tikzpicture}
</math>
Was geht da schief? Ich bin gespannt…

Gruß vom ¼
\(\endgroup\)

Triceratops
Aktiv
Dabei seit: 28.04.2016
Mitteilungen: 5565
Herkunft: Berlin
Beitrag No.1, eingetragen 2021-01-24 05:37

Das liegt daran, dass du Nodes abseits der eigentlichen Koordinaten positioniert hast. Und die Punkte auf den Seiten werden mit diesen Nodes berechnet. Das Problem gibt es also nicht, wenn du die Nodes direkt auf die Koordinaten legst und lediglich ihre Beschriftungen anders platzierst.

<math>
\begin{tikzpicture}[scale=0.8]
\def\c{17}
\pgfmathsetmacro{\H}{0.4*\c}
\def\Cx{0.6*\c}
\def\ta{0.65}
\draw[fill=lightgray!20]
(0,0) node[label=left: $A$] (A)  --
(\c,0) node[label=right: $B$] (B) --
(\Cx,\H) node[label=above: $C$] (C) --
cycle;
\draw ($ (A)!\ta!(C) $) node[left,fill=red,inner sep=2pt] (A1) {}
-- ($ (B)!\ta!(C) $) node[right] (B1) {};
\end{tikzpicture}
</math>
 
LaTeX
\begin{tikzpicture}[scale=0.8]
\def\c{17}
\pgfmathsetmacro{\H}{0.4*\c}
\def\Cx{0.6*\c}
\def\ta{0.65}
\draw[fill=lightgray!20] 
	(0,0) node[label=left: $A$] (A)  -- 
	(\c,0) node[label=right: $B$] (B) -- 
	(\Cx,\H) node[label=above: $C$] (C) -- 
	cycle;
\draw ($ (A)!\ta!(C) $) node[left,fill=red,inner sep=2pt] (A1) {}
	-- ($ (B)!\ta!(C) $) node[right] (B1) {};
\end{tikzpicture}


viertel
Senior
Dabei seit: 04.03.2003
Mitteilungen: 27783
Herkunft: Hessen
Beitrag No.2, vom Themenstarter, eingetragen 2021-01-24 16:05
\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Noch krasser wird dieser Anfänger-/Denkfehler*) sichtbar, wenn der node $A$ [above left] statt [below left] positioniert wird. Die roten Pfeile**) zeigen, wo (A) wirklich liegt. Und damit auch $A_1$, was dann sogar zu einer schiefen Verbindung $A_1 - B_1$ führt.
der grüne Pfeil zeigt auf die Soll-Position von $A_1$😎

*) Danke für die Aufklärung. Bisher dachte ich, [below left] etc. wäre nur für die Positionierung des Labels. Aber damit wird der komplette node verschoben.
**) Wie kann ich die bis zur wahren Position von (A) verlängern?
LaTeX
\begin{tikzpicture}[scale=0.8] % ,show background rectangle
\def\c{17}      % Grundseite c
\pgfmathsetmacro{\H}{0.4*\c}  % Höhe H
\def\Cx{0.6*\c} % Höhenfußpunkt
\draw[fill=lightgray!20] 
	(0,0)    node[above left]  (A) {$A$} -- 
	(\c,0)   node[below right] (B) {$B$} -- 
 	(\Cx,\H) node[above]       (C) {$C$} -- 
	cycle;
\def\ta{0.65}
\draw ($ (A)!\ta!(C) $) node[left,fill=red,inner sep=2pt,label=left:{$A_1$}] (A1) {}
	-- ($ (B)!\ta!(C) $) node[right] (B1) {$B_1$};
\draw[->,red] (-1,1) -- (A);
\draw[->,red] (C) -- (A);
\end{tikzpicture}
<math>
\begin{tikzpicture}[scale=0.8] % ,show background rectangle
\def\c{17}      % Grundseite c
\pgfmathsetmacro{\H}{0.4*\c}  % Hhe H
\def\Cx{0.6*\c} % Hhenfupunkt
\draw[fill=lightgray!20]
(0,0) node[above left] (A) {$A$} --
(\c,0) node[below right] (B) {$B$} --
(\Cx,\H) node[above] (C) {$C$} --
cycle;
\def\ta{0.65}
\draw ($ (A)!\ta!(C) $) node[left,fill=red,inner sep=2pt,label=left:{$A_1$}] (A1) {}
-- ($ (B)!\ta!(C) $) node[right] (B1) {$B_1$};
\draw[->,red] (-1,1) -- (A);
\draw[->,red] (C) -- (A);
\draw[->,green] (7.63, 3.42) -- (6.63, 4.42);
\end{tikzpicture}
</math>
\(\endgroup\)

Triceratops
Aktiv
Dabei seit: 28.04.2016
Mitteilungen: 5565
Herkunft: Berlin
Beitrag No.3, eingetragen 2021-01-24 16:27

2021-01-24 16:05 - viertel in Beitrag No. 2 schreibt:
**) Wie kann ich die bis zur wahren Position von (A) verlängern?
LaTeX
\draw (C.center) -- (A.center);


Wario
Aktiv
Dabei seit: 01.05.2020
Mitteilungen: 375
Beitrag No.4, eingetragen 2021-01-24 16:56

(0a) Immer vollständige, lauffähige Minimalbeispiele angeben (sonst muss der Helfer das alles selbst ergänzen).

(0b) Möglichst alles beseitigen, was mit dem Problem nichts zu tun hat.

(1a) Möglichst mit Koordinaten arbeiten (s.u.).

(1b) Alles schön in Bearbeitungsblöcke aufteilen:
1. Koordinaten, 2. Konstruktionen, 3. Annotationen, ....

(1c) Nicht alles an Ort und Stelle in den Code schreiben, sondern mehrfach Verwendetes als globalen style definieren.

(2) Das Problem hier ist, dass nodes verwendet werden, obwohl coordinates gewünscht sind.
nodes haben Längenmaße, coordinates sind nur Positionen.

<math>
\begin{tikzpicture}[scale=0.8,
mypointstyle/.style={fill=red, inner sep=2pt},
background rectangle/.style={draw=none, fill=black!1, rounded corners}, show background rectangle,
]

\pgfmathsetmacro\c{17}      % Grundseite c
\pgfmathsetmacro{\H}{0.4*\c}  % Hhe H
\pgfmathsetmacro\Cx{0.6*\c} % Hhenfupunkt

\pgfmathsetmacro\ta{0.65}
\pgfmathsetmacro\tb{0.35}
\pgfmathsetmacro\tc{0.99}

% Koordinaten
\coordinate[label=left:$A$] (A) at (0,0);
\coordinate[label=right:$B$] (B) at (\c,0);
\coordinate[label=$C$] (C) at (\Cx,\H);

\coordinate[label={[below=1mm]:$R$}] (R) at (\Cx,0);
\coordinate[label=135:$A_1$] (A1) at ($(A)!\ta!(C)$);
\coordinate[label=45:$B_1$] (B1) at ($(B)!\ta!(C)$);

% Dreieck:
\draw[fill=lightgray!20] (A) -- (B) -- (C) --cycle;

% Hhe
\draw[dashed] (C) -- (R);

% Horizontale
\draw[] (A1) -- (B1);

% Punkte
\foreach \P in {A1, B1} \node[mypointstyle] at (\P) {};

\foreach \P in {R} \fill[] (\P) circle[radius=3.25pt];
\end{tikzpicture}
</math>

LaTeX
%\documentclass[]{article}
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
 
\begin{document}
 
\begin{tikzpicture}[scale=0.8,
mypointstyle/.style={fill=red, inner sep=2pt}, 
]
 
\pgfmathsetmacro\c{17}      % Grundseite c
\pgfmathsetmacro{\H}{0.4*\c}  % Höhe H
\pgfmathsetmacro\Cx{0.6*\c} % Höhenfußpunkt
 
\pgfmathsetmacro\ta{0.65}
\pgfmathsetmacro\tb{0.35}
\pgfmathsetmacro\tc{0.99}
 
% Koordinaten
\coordinate[label=left:$A$] (A) at (0,0);
\coordinate[label=right:$B$] (B) at (\c,0);
\coordinate[label=$C$] (C) at (\Cx,\H);
 
\coordinate[label={[below=1mm]:$R$}] (R) at (\Cx,0);
\coordinate[label=135:$A_1$] (A1) at ($(A)!\ta!(C)$);
\coordinate[label=45:$B_1$] (B1) at ($(B)!\ta!(C)$);
 
% Dreieck: 
\draw[fill=lightgray!20] (A) -- (B) -- (C) --cycle;
 
% Höhe
\draw[dashed] (C) -- (R);
 
% Horizontale
\draw[] (A1) -- (B1); 
 
% Punkte 
\foreach \P in {A1, B1} \node[mypointstyle] at (\P) {};
 
\foreach \P in {R} \fill[] (\P) circle[radius=3.25pt];
 
% Für das Problem unwichtig:
 
%\draw ($(A)!\ta!(C)$)
%% node[left,fill=red,inner sep=2pt,label=left:{$A_1$}] (A1) {}
%	-- ($ (B)!\ta!(C) $) %node[right] (B1) {$B_1$}
 
%%\draw[red] ($ (A)!\ta!(C) $) node[left,fill=red,inner sep=2pt] (A1) {}
%	-- ($ (B)!\ta!(C) $) node[right] (B1) {};
 
%\draw ($ (A)!\tb!(C) $) node[left] (A2) {$A_2$}
%	-- ($ (B)!\tb!(C) $) node[right] (B2) {$B_2$};
%\draw ($ (A)!\tc!(C) $) node[left] (A3) {$A_3$}
%	-- ($ (B)!\tc!(C) $) node[right] (B3) {$B_3 \quad H=\H$};
%\draw (0,-1) -- +(0,6);
%\draw[blue] (6.63,-1) -- +(0,6);
%\draw[red] (6,-1) -- +(0,6) node[above left] {$(6 \mid 5)$};
%\draw[red] (7,-1) -- +(0,6) node[above right] {$(7 \mid 5)$};
%\draw[green] (9,6.8) -- +(2,0);
\end{tikzpicture}
 
\end{document}



[Die Antwort wurde nach Beitrag No.2 begonnen.]


viertel
Senior
Dabei seit: 04.03.2003
Mitteilungen: 27783
Herkunft: Hessen
Beitrag No.5, vom Themenstarter, eingetragen 2021-01-24 17:27
\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Mei Liebche,

wie viele TikZ Grafiken hast du bisher von mir gesehen? Genau, nix. Ich bin Anfänger. Aber nicht auf dem Matheplaneten, siehe meinen Zähler. Ich kenne also schon ein paar grundsätzliche Regeln😎

2021-01-24 16:56 - Wario in Beitrag No. 4 schreibt:
(0a) Immer vollständige, lauffähige Minimalbeispiele angeben (sonst muss der Helfer das alles selbst ergänzen).
\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Das Beispiel ist vollständig lauffähig – auf dem Matheplaneten.

\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)Wario schreibt:
(0b) Möglichst alles beseitigen, was mit dem Problem nichts zu tun hat.
\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Das waren alles Experimente, um mit TikZ vertraut zu werden. Überflüssig wäre z.B. das komplette $\LaTeX$ Dokument, das ich bisher erstellt habe, wenn ich das hier mit reingestellt hätte.
Die Hilfslinien waren für mich/euch, um zu erkennen, wo die Punkte tatsächlich hätten sein sollen.
Und auch die zweite und dritte horizontale Linie, insbesondere $A_3-B_3$, waren für mich, um den Effekt einschätzen zu können.

\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)Wario schreibt:
(1a) Möglichst mit Koordinaten arbeiten (s.u.).
\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Ok, nehme ich auf.

\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)Wario schreibt:
(1b) Alles schön in Bearbeitungsblöcke aufteilen:
1. Koordinaten, 2. Konstruktionen, 3. Annotationen, ....
\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Ist bei dem Minibeispiel machbar, aber schaffst es auch so.

\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)Wario schreibt:
(1c) Nicht alles an Ort und Stelle in den Code schreiben, sondern mehrfach Verwendetes als globalen style definieren.
\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Wenn ich so lange mit TikZ arbeite wie du, dann weiß ich das auch alles.
Aber ich nehme das mit den Styles als Lernpunkt auf.
Ich hab's halt noch nicht geschafft, die 1300 Seiten Doku durchzuarbeiten😛

\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)Wario schreibt:
(2) Das Problem hier ist, dass nodes verwendet werden, obwohl coordinates gewünscht sind.
nodes haben Längenmaße, coordinates sind nur Positionen.
\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Wie gesagt: Anfänger-/Denkfehler😁
Aber lernwillig und -fähig🤗😎
\(\endgroup\)

Wario
Aktiv
Dabei seit: 01.05.2020
Mitteilungen: 375
Beitrag No.6, eingetragen 2021-01-24 18:19

2021-01-24 17:27 - viertel in Beitrag No. 5 schreibt:
Das Beispiel ist vollständig lauffähig – auf dem Matheplaneten.

Der Helfer probiert normalerweise nicht, den Code auf dem MP zu übersetzen (spezielles LaTeX), sondern in seinem Editor (normales LaTeX).




Dieses Forumbeitrag kommt von Matroids Matheplanet
https://https://matheplanet.de

Die URL für dieses Forum-Thema ist:
https://https://matheplanet.de/default3.html?topic=251919=409
Druckdatum: 2021-04-23 15:42