Tikzpicture skalieren und verschieben

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Tikzpicture skalieren und verschieben

Re: Tikzpicture skalieren und verschieben

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:
\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

Re: Tikzpicture skalieren und verschieben

von Stefan Kottwitz » Di 1. Okt 2024, 17:26

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

Stefan

Tikzpicture skalieren und verschieben

von Noob » Di 1. Okt 2024, 16:01

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

Nach oben