Tikzpicture skalieren und verschieben

Tabellen und Grafiken erstellen und anordnen


Noob
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Do 5. Sep 2024, 12:22

Tikzpicture skalieren und verschieben

Beitrag von Noob »

Guten Tag,
ich hätte eine Frage zu Tikzpicture:
Könnte ich mir ein Tikzpicture irgendwie "definieren", sodass ich das fertige Bild/die fertige Grafik beliebig oft, beliebig skaliert und an beliebigen Stellen in meinem Dokument einfügen?

Ich versuch's mal mit einem Minimalbeispiel zu verdeutlichen:
\usepackage{\usepackage{tikz} %Graphiken, Bilder erstellen
\usepackage{tikz-cd}

\begin{document}
Zunächst zeichne ich mir einmal mein Bild (Hier der Einfachheit halber etwas ganz Einfaches):
\begin{tikzpicture}
	\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}

Nachdem ich nun mein Bild habe, möchte ich es ab und zu irgendwo einfügen z.B. hier \begin{tikzpicture}
	\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} einfügen, wobei ich z.B. die Position so verändern möchte, dass der Smiley mittig im Text sitzt oder auch irgendwo mitten in der Seite liegt (Wie es mir halt gerade passt) und je nachdem auch mal doppelte oder auch nur halbe Größe hat.
Wenn ich jetzt kein einfaches Bildchen mit wenig Code hätte, dann wird es schnell unübersichtlich, wenn ich hier \begin{tikzpicture}
	\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} und hier \begin{tikzpicture}
	\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} und hier \begin{tikzpicture}
	\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} lauter Bilder einfüge.
\end{document}
Deshalb suche ich nach einer Möglichkeit mir eine Art Befehl zu definieren, bei dem ich die Optionen "Größe", "Position", "Überlappung" und "Drehung" auf der Seite frei wählen kann, aber ansonsten etwas kurze, wie z.B. \bild[Position, Skalierung, Überlappung, Drehung] habe.

Viele Grüße,
Noob
Zuletzt geändert von Noob am Mi 2. Okt 2024, 08:14, insgesamt 1-mal geändert.

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2658
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Tikzpicture skalieren und verschieben

Beitrag von Stefan Kottwitz »

Du kannst ein klassisches LaTeX-Makro dafür mit \newcommand machen, und für Skalierungs-Optionen Parameter (wie mit #1, #2, ...) verwenden.

Stefan

Noob
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Do 5. Sep 2024, 12:22

Re: Tikzpicture skalieren und verschieben

Beitrag von 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:
\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:
\smiley{}{}{}{}{}
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

Antworten