Makro zum Ändern der Linienfarbe in Tikz

Makro zum Ändern der Linienfarbe in Tikz

Ich bin neu bei Tikz und Makros in Latex und schätze Ihre Hilfe. Ich habe einen einfachen Code für zwei ähnliche Diagramme wie folgt:

\documentclass{article}
\usepackage{tikz}

\newcommand\tpdrrr{
\tikz{
\draw [dashed] (-1.5,.5) arc (90:-90:.5); % q1 right inner arc
\draw [red,thick] (-1.5,.5) arc (90:270:.5); % q2 left inner arc
\draw  [red,thick]  (-1.5,-.5) -- (-1.5,-1); % q3 vertical top
\draw  [red,thick] (-1.5,.5) -- (-1.5,0); % q4 inner vertical

}
}

\newcommand\tprdrr{
\tikz{
\draw [red,thick] (-1.5,.5) arc (90:-90:.5); % q1 right inner arc
\draw [dashed] (-1.5,.5) arc (90:270:.5); % q2 left inner arc
\draw  [red,thick]  (-1.5,-.5) -- (-1.5,-1); % q3 vertical top
\draw  [red,thick] (-1.5,.5) -- (-1.5,0); % q4 inner vertical

}
}

\begin{document}

\[\tprdrr + \tpdrrr \]

\end{document}

Kann mir jemand helfen, diese beiden in einem Makro zu kombinieren, in das ich den Linienstil (gestrichelt vs. rot, dick) als Argument eingeben kann, also einen Code, der zB aufnimmt \tp{r}{d}{r}{r}und das Ergebnis meines aktuellen ausgibt \tprdrr? Ich möchte mehr Konfigurationen verwenden, zB \tp{r}{r}{r}{r}, \t{d}{d}{d}{d}, usw., also wäre ein Makro sehr nützlich

Antwort1

Die Verwendung des ifthenPakets ermöglicht es Ihnen, kürzere einstellige Parameter zu schreiben. Hier reicht rfür red, thickund jeder andere Buchstabe für dashed, obwohl dauch aus.

\documentclass{article}
\usepackage{tikz}

\usepackage{ifthen}
\newcommand{\tp}[4]{
\tikz{%
\ifthenelse{\equal{#1}{r}}
    {\draw [red,thick] (-1.5,.5) arc (90:-90:.5); }
    {\draw [dashed] (-1.5,.5) arc (90:-90:.5); }

\ifthenelse{\equal{#2}{r}}
    {\draw [red,thick] (-1.5,.5) arc (90:270:.5);  }
    {\draw [dashed] (-1.5,.5) arc (90:270:.5);  }
    
\ifthenelse{\equal{#3}{r}}
    {\draw [red,thick] (-1.5,-.5) -- (-1.5,-1);   }
    {\draw [dashed] (-1.5,-.5) -- (-1.5,-1);   }
    
  \ifthenelse{\equal{#4}{r}}
    {\draw [red,thick] (-1.5,.5) -- (-1.5,0);   }
    {\draw [dashed] (-1.5,.5) -- (-1.5,0);   }  
     
}
}
\begin{document}


\tp{r}{d}{r}{r} + \tp{d}{r}{r}{r} + \tp{r}{r}{r}{r} + \tp{d}{d}{d}{d}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Als Anwendung für Ihre Anforderungen in einem einzigen Makro.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{tikz}

\newcommand{\tp}[4]{
\tikz{%
    \draw [#1] (-1.5,.5) arc (90:-90:.5); 
    \draw [#2] (-1.5,.5) arc (90:270:.5); 
    \draw [#3] (-1.5,-.5) -- (-1.5,-1); 
    \draw [#4] (-1.5,.5) -- (-1.5,0); 
}
}

\begin{document}

\[
    \tp{red,thick}{dashed}{red,thick}{red,thick} % <= tprdrr
\]

\[
    \tp{dashed}{red,thick}{red,thick}{red,thick} % <= \tpdrrr
\]

\[
    \tp{red,thick}{red,thick}{red,thick}{red,thick} % <=  all parts are red and thick
\]

\[
    \tp{dashed}{dashed}{dashed}{dashed} % <=  all parts are dashed
\]

\end{document}

Wenn Sie jedoch so viele Wiederholungen sehen, bedeutet dies, dass es verbessert werden kann :)

verwandte Informationen