
Von der Antwort aufdiese Frage; Ich habe den folgenden Code verwendet, um ein weiteres Kreuz zu zeichnen.
\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{verbatim}
\usepackage{tikz}
\begin{document}
\begin{frame}[t]
\frametitle{}
\begin{tikzpicture}[line join=round, line cap=round]
\def\edge{
(.5,.5) to [out=90,in=-90] ++ (0,1.05) to [out=0,in=-90] ++ (.52,.52) to [out=90,in=0] ++ (-.52,.52) to [out=90,in=0] ++ (-.52,.52) to [out=180,in=90] ++ (-.52,-.52) to [out=-180,in=90] ++ (-.52,-.52) to [out=-90,in=180] ++ (.52,-.52) to [out=-90,in=90] ++ (0,-1.05)}
\draw[line width=.1cm,blue, fill=blue!40!white, opacity=.6] (.5,.5) foreach \i in {0,90,180,270}{[rotate=\i] -- \edge} -- cycle;
\end{tikzpicture}
\end{frame}
\end{document}
Mir ist aufgefallen, dass die Verwendung [line join=round, line cap=round]
ein erweitertes Zeilenende erzeugt. Das Weglassen dieser Option führt zu weniger ansprechenden Zeilenverbindungen.
Damit können line join=round
abgerundete Enden von Linien erzeugt werden, ohne dass verlängerte Teile entstehen.
Antwort1
Dies ist ein einfacher Rechenfehler in Ihrem Code. Tatsächlich beginnt der Pfad am Punkt, (.5,.5)
aber Ihre Halbkreise haben einen Radius von .52
, wasnicht zu Endedas erste Viertel des Kreuzes am Koordinatenpunkt (-.5,.5)
. Durch Ersetzen des Radius von .52
durch .5
ist das Problem gelöst. Beachten Sie, dass ich Ihren Code durch das Entfernen einiger unnötiger to
Operationen leicht vereinfacht habe.
\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{verbatim}
\usepackage{tikz}
\begin{document}
\begin{frame}[t]
\frametitle{}
\begin{tikzpicture}[line join=round, line cap=round]
\def\edge{
(.5,.5) -- ++ (0,1.05) to [out=0,in=-90] ++ (.5,.5) to [out=90,in=0] ++ (-.5,.5) to [out=90,in=0] ++ (-.5,.5) to [out=180,in=90] ++ (-.5,-.5) to [out=-180,in=90] ++ (-.5,-.5) to [out=-90,in=180] ++ (.5,-.5) -- ++ (0,-1.05)}
\draw[line width=.1cm,blue, fill=blue!40!white, opacity=.6] (.5,.5) foreach \i in {0,90,180,270}{[rotate=\i] -- \edge}--cycle;
\end{tikzpicture}
\end{frame}
\end{document}
Antwort2
Ihr Code für die \edge
kann gekürzt werdensehrviel, und diese Verkürzung behebt das Problem automatisch auch. Außerdem möchten Sie wahrscheinlich ein verwenden, transparency group
um zu vermeiden, dass die Grenze zwei Farben hat.
\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{verbatim}
\usepackage{tikz}
\begin{document}
\begin{frame}[t]
\frametitle{}
\begin{tikzpicture}[line join=round, line cap=round]
\def\edge{
(.5,.5) -- ++ (0,1.05)foreach \j in {0,90,180} {to [out=\j,in=\j,looseness=1.6] ++ (\j+90:1)}}
\begin{scope}[transparency group,opacity=.6]
\draw[line width=.1cm,blue, fill=blue!40!white] (.5,.5) foreach \i in {0,90,180,270}{[rotate=\i] -- \edge} -- cycle;
\end{scope}
\end{tikzpicture}
\end{frame}
\end{document}
Antwort3
Handgefertigte Verschiebungen sind böse! Ich bin sicher, dass es eine geeignetere (wartungsfreundlichere) Lösung mit Knotenbeschriftung geben muss, aber ich bin nicht vertraut genug damit, tikz
um eine solche Lösung zu zeichnen. In der Zwischenzeit können Sie Folgendes versuchen:
\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{verbatim}
\usepackage{tikz}
\begin{document}
\begin{frame}[t]
\frametitle{}
\begin{tikzpicture}[line join=round, line cap=round]
\def\edge{
(.5,.5) to [out=90,in=-90] ++ (0,1.05) to [out=0,in=-90] ++ (.5,.5) to [out=90,in=0] ++ (-.5,.5) to [out=90,in=0] ++ (-.5,.5) to [out=180,in=90] ++ (-.5,-.5) to [out=-180,in=90] ++ (-.5,-.5) to [out=-90,in=180] ++ (.5,-.5) to [out=-90,in=90] ++ (0,-1.05)}
\draw[line width=.1cm,blue, fill=blue!40!white, opacity=.6] (.5,.5) foreach \i in {0,90,180,270}{[rotate=\i] -- \edge} -- cycle;
\end{tikzpicture}
\end{frame}
\end{document}