Ändern Sie die Farbe des gesamten mit der Eingabe importierten Tikz-Bildes

Ändern Sie die Farbe des gesamten mit der Eingabe importierten Tikz-Bildes

Ich habe ein kleines Bild, das ich in einem anderen Tikz-Bild wiederverwenden möchte.

Nehmen wir an, die Datei img.tex enthält:

\begin{tikzpicture}
    \draw (0,0) circle (1);
\end{tikzpicture} 

und ich möchte, dass es an mehreren Stellen in einem anderen Bild erscheint

\newcommand\mycuteimage[1]{\scalebox{#1}{\input{img}}}

\begin{tikzpicture}
    \draw (0,0) grid (10, 1);
    \foreach \x in {2,5,9}
    {
        \node at (\x - 0.5, 0.5) {\mycuteimage{0.1}};
    }
\end{tikzpicture}

Kann ich die Farbe des eingefügten Bildes irgendwie einstellen, also beispielsweise mal rot, mal blau?

Beispiel:

\mycuteimage[blue]{0.1}

Ich habe versucht,

{\color{blue} \mycuteimage{0.1}}

aber es ändert nur die Farbe der Linien, für die ich keine Farbe angegeben habe, d. h. wenn einige Elemente im Originalbild rot waren, bleiben sie rot.

Antwort1

Ihr Vorschlag enthält tikzpictureVerschachtelungen, die vermieden werden sollten.kZ hat picfür solche Zwecke s.

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\tikzset{pics/.cd,
my cute pic/.style={code={
    \draw (0,0) circle (1);
}}}

\begin{tikzpicture}
    \draw (0,0) grid (10, 1);
    \edef\LstColors{{"red","green","blue"}}
    \foreach \X [count=\Y starting from 0]in {2,5,9}
    {
        \pgfmathsetmacro{\mycolor}{\LstColors[\Y]}
        \pic at (\X - 0.5, 0.5) [scale=0.1,color=\mycolor]{my cute pic};
    }
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

picsnehmen auch Parameter an.

verwandte Informationen