Duplikat zu: Tikz: zu große Bildhöhe durch Kontrollpunkt


alt text

In folgendem Beispiel konstruiere ich einen Dreieckspunkt.

Die großen Kreise erzeugen viel Whitespace, auch dann, wenn man sie nicht anzeigt.

Gibt es eine einfache möglichkeit das zu verhindern. Für einen clip-Rahmen (\clip (*) rectangle (*);) müsste ich mir immer Koordinaten überlegen.

Öffne in Overleaf
\documentclass[margin=5mm, tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{intersections}

\begin{document}

\pgfmathsetmacro{\m}{2} % 
\pgfmathsetmacro{\a}{\m*2.1} % 
\pgfmathsetmacro{\b}{\m*2.5} % 
\pgfmathsetmacro{\c}{\m*sqrt((\a^2+\b^2)/5)} %

\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\begin{tikzpicture}[font=\footnotesize,
background rectangle/.style={draw=none, fill=black!1, rounded corners}, show background rectangle,
Punkt/.style 2 args={  label={[#1]:$#2$}   },  
]

% Koordinaten I
\begin{pgfonlayer}{foreground}
\coordinate[Punkt={below}{A}] (A) at (0,0); 
\coordinate[Punkt={below}{B}] (B) at (\c,0); 
\end{pgfonlayer}

\path[name path=kreisA] (A) circle[radius=\b];
\path[name path=kreisB, draw=none] (B) circle[radius=\a];

\path[name intersections={of=kreisA and kreisB, name=C}] ;

\draw (A) -- (B) -- (C-1) coordinate[Punkt={above}{C}] (C)--cycle;

% zum Anzeigen
\path[name path=kreisB, draw=red] (B) circle[radius=\a] node[red] {erzeugt Whitespace};

%% Strecken
%\begin{scope}[anchor=north]
%\foreach[count=\y from 0] \x in {a,b,c}
%\draw[|-|, yshift=-\y cm, transform canvas={shift=(A|-C), xshift=-\c cm}] (0,0) -- (\csname \x \endcsname,0) node[midway, above]{$\x$};
%\end{scope}
%
%
%% Punkte
%\foreach \P in {}
%\draw[fill=black!1] (\P) circle (1.5pt);

\end{tikzpicture}

\end{document}

gefragt 07 Mär, 16:18

cis's gravatar image

cis
9.0k18193308
Akzeptiert: 69%

geschlossen 08 Mär, 09:56

esdd's gravatar image

esdd
17.3k83954

Die Frage wurde aus folgenden Grund geschlossen: "Duplikat einer anderen Frage" durch esdd 08 Mär, 09:56


Setze die Option overlay für die Pfade, die keinen Beitrag zur Bounding Box leisten sollen:

Öffne in Overleaf
\documentclass[margin=5mm, tikz]{standalone}
\usetikzlibrary{calc}
\usetikzlibrary{intersections}
\begin{document}

\pgfmathsetmacro{\m}{2} % 
\pgfmathsetmacro{\a}{\m*2.1} % 
\pgfmathsetmacro{\b}{\m*2.5} % 
\pgfmathsetmacro{\c}{\m*sqrt((\a^2+\b^2)/5)} %

\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\begin{tikzpicture}[
font=\footnotesize,
Punkt/.style 2 args={  label={[#1]:$#2$}   },  
]

% Koordinaten I
\begin{pgfonlayer}{foreground}
\coordinate[Punkt={below}{A}] (A) at (0,0); 
\coordinate[Punkt={below}{B}] (B) at (\c,0); 
\end{pgfonlayer}

\path[name path=kreisA,overlay] (A) circle[radius=\b];
\path[name path=kreisB,overlay] (B) circle[radius=\a];
\path[name intersections={of=kreisA and kreisB, name=C}] ;
\draw (A) -- (B) -- (C-1) coordinate[Punkt={above}{C}] (C)--cycle;

% zum Anzeigen
\path[name path=kreisB, draw=red,overlay] (B) circle[radius=\a] node[red] {erzeugt keinen Whitespace};
\end{tikzpicture}
\end{document}

Ergebnis:

alt text

Man kann auch einen eigenen Stil für das Verstecken der Kreise und anderer Linien definieren. Das würde es ermöglichen, diese Linien durch Änderung an nur einer Stelle doch einfach anzuzeigen.

Permanenter link

beantwortet 08 Mär, 04:09

esdd's gravatar image

esdd
17.3k83954

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×651

Frage gestellt: 07 Mär, 16:18

Frage wurde angeschaut: 246 Mal

Zuletzt aktualisiert: 08 Mär, 09:56