von Noob » Mi 2. Okt 2024, 08:45
Ah, okay.
Vielen Dank für die schnelle Antwort.
Ich hab mir jetzt mal Ihre verlinkte Seite durchgelesen, und mit dieser Basis mich herangetastet:
\newcommand{\smiley}[5]{ %Fünf Argumente: Overlay, x-shift, y-shift, rotate, scale
\begin{tikzpicture}[#1, #2, #3, #4, #5]
\fill (0.1,0) circle (0.08);
\fill (0.4,0) circle (0.08);
\draw[ultra thick] (-0.1,-0.3) to [bend right=30] (0.6,-0.3);
\end{tikzpicture}
}
Das ist jetzt ein Befehl, der mir meinen Smiley Verschieben, Skalieren, Drehen und überlappend ausgeben \smiley{overlay}{xshift=1cm}{yshift=-0.5cm}{rotate=45}{scale=0.75} kann.
Wichtig hierbei ist, dass man x-/y-shift vor rotate und scale plaziert, weil sonst auch der shift rotiert und skaliert wird (wie ich durch austesten erfahren habe).
Nun hab ich das "Problem", dass der ganze Befehl doch etwas länger ist, weil ich alle Befehle angeben (und wenn auch nur in leeren Klammern) und in einzelnen Klammern setzen muss, sodass mein kürzester Befehl (ohne irgendwelche Verschiebungen, Skalierungen, etc. immer noch wie folgt ausssieht:
Ich hab gelesen, dass man auch irgendwie optionale Parameter mitgeben kann, indem man statt #1, ~#1 (usw.) schreibt, und statt den geschweiften Klammern dann eckige nimmt:
\newcommand{\smiley}[5]{ %Fünf Argumente: Overlay, x-shift, y-shift, rotate, scale
\begin{tikzpicture}[~#1, ~#2, ~#3, ~#4, ~#5]
\fill (0.1,0) circle (0.08);
\fill (0.4,0) circle (0.08);
\draw[ultra thick] (-0.1,-0.3) to [bend right=30] (0.6,-0.3);
\end{tikzpicture}
}
Hier einmal mein Test-Smiley: \smiley[overlay][xshift=3cm][scale=2]
Das ganze wirft mir aber mehrere Fehler (auf Wunsch könnte ich die noch angeben), worauf ich schließe, dass ich die Funktionsweise von optionalen Parametern noch nicht ganz verstanden habe. - Es wäre also schön, wenn mich da jemand aufklären könnte.
Viele Grüße,
Noob
Ah, okay.
Vielen Dank für die schnelle Antwort.
Ich hab mir jetzt mal Ihre verlinkte Seite durchgelesen, und mit dieser Basis mich herangetastet:
[code]
\newcommand{\smiley}[5]{ %Fünf Argumente: Overlay, x-shift, y-shift, rotate, scale
\begin{tikzpicture}[#1, #2, #3, #4, #5]
\fill (0.1,0) circle (0.08);
\fill (0.4,0) circle (0.08);
\draw[ultra thick] (-0.1,-0.3) to [bend right=30] (0.6,-0.3);
\end{tikzpicture}
}
Das ist jetzt ein Befehl, der mir meinen Smiley Verschieben, Skalieren, Drehen und überlappend ausgeben \smiley{overlay}{xshift=1cm}{yshift=-0.5cm}{rotate=45}{scale=0.75} kann.
Wichtig hierbei ist, dass man x-/y-shift vor rotate und scale plaziert, weil sonst auch der shift rotiert und skaliert wird (wie ich durch austesten erfahren habe).
[/code]
Nun hab ich das "Problem", dass der ganze Befehl doch etwas länger ist, weil ich alle Befehle angeben (und wenn auch nur in leeren Klammern) und in einzelnen Klammern setzen muss, sodass mein kürzester Befehl (ohne irgendwelche Verschiebungen, Skalierungen, etc. immer noch wie folgt ausssieht:
[code]
\smiley{}{}{}{}{}
[/code]
Ich hab gelesen, dass man auch irgendwie optionale Parameter mitgeben kann, indem man statt #1, ~#1 (usw.) schreibt, und statt den geschweiften Klammern dann eckige nimmt:
[code]
\newcommand{\smiley}[5]{ %Fünf Argumente: Overlay, x-shift, y-shift, rotate, scale
\begin{tikzpicture}[~#1, ~#2, ~#3, ~#4, ~#5]
\fill (0.1,0) circle (0.08);
\fill (0.4,0) circle (0.08);
\draw[ultra thick] (-0.1,-0.3) to [bend right=30] (0.6,-0.3);
\end{tikzpicture}
}
Hier einmal mein Test-Smiley: \smiley[overlay][xshift=3cm][scale=2]
[/code]
Das ganze wirft mir aber mehrere Fehler (auf Wunsch könnte ich die noch angeben), worauf ich schließe, dass ich die Funktionsweise von optionalen Parametern noch nicht ganz verstanden habe. - Es wäre also schön, wenn mich da jemand aufklären könnte.
Viele Grüße,
Noob