Ich würde gerne so etwas tikzen:
Mit:
% https://tex.stackexchange.com/q/245944
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\standaloneenv{tikzpicture}
\begin{document}
\usetikzlibrary{calc,shapes.geometric}
\begin{tikzpicture}
\coordinate (hole) at (1ex, 3ex);
\node[trapezium, trapezium left angle=120, trapezium right angle=60, minimum width=4ex, minimum height=4ex, rotate=30] (layer) {};
\path[draw, even odd rule]
{(layer.top left corner) -- (layer.bottom left corner) -- (layer.bottom right corner) -- (layer.top right corner) -- cycle}
{($(layer.bottom left corner)+(hole)$) ellipse [draw, x radius=1.0ex,y radius=0.8ex, rotate=0]};
\draw[-] ($(layer.bottom left corner)+(hole)$) -- +(0ex, 4ex);
\draw[->] ($(layer.bottom left corner)+(hole)+(0ex,-3ex)$) -- +(0ex,-2ex);
\end{tikzpicture}
\end{document}
Ich kann produzieren:
Allerdings wirkt diese Lösung grob (Neuzeichnen des Trapezes, Teilen des Pfeils in zwei Hälften, …) und etwas leblos.
Wie kann ich „ even odd rule
mit“ trapezium
ohne das Extra verwenden \path
und einen Pfeil durch das even odd rule
Loch ziehen, ohne die Größe des Abstands zwischen den Pfeilen zu erraten?
Antwort1
Hierbei wird die Gerade-Ungerade-Regel auf ein angewendet \clip
. Beachten Sie, dass Sie bei 3D-Objekten immer noch Vordergrund und Hintergrund trennen müssen.
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\standaloneenv{tikzpicture}
\begin{document}
\usetikzlibrary{calc,shapes.geometric}
\begin{tikzpicture}
\coordinate (hole) at (1ex, 3ex);
\node[trapezium, trapezium left angle=120, trapezium right angle=60, minimum width=4ex, minimum height=4ex, rotate=30] (layer) {};
\path[draw]
(layer.top left corner) -- (layer.bottom left corner) -- (layer.bottom right corner) -- (layer.top right corner) -- cycle
($(layer.bottom left corner)+(hole)$) coordinate(C) ellipse [draw, x radius=1.0ex,y radius=0.8ex, rotate=0];
\path[->] (C) ++(0ex, 4ex) -- ++(0ex,-8ex);% grow bounding box
\begin{scope}[even odd rule]
\clip (current bounding box.south west) rectangle (current bounding box.north east)
(layer.top left corner) -- (layer.bottom left corner) -- (layer.bottom right corner) -- cycle;
\draw[->] (C) ++(0ex, 4ex) -- ++(0ex,-8ex);
\end{scope}
\end{tikzpicture}
\end{document}