macro para cambiar el color de la línea en tikz

macro para cambiar el color de la línea en tikz

Soy nuevo tanto en tikz como en macros en látex y agradezco tu ayuda. Tengo un código simple para dos diagramas similares de la siguiente manera:

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

¿Alguien puede ayudarme a combinar estos dos como una macro donde puedo introducir el estilo de línea (discontinua versus roja, gruesa) como argumento, es decir, un código que toma, por ejemplo, \tp{r}{d}{r}{r}y genera el resultado de mi actual \tprdrr? Quiero usar más configuraciones, por ejemplo \tp{r}{r}{r}{r}, \t{d}{d}{d}{d}etc., por lo que una macro sería muy útil.

Respuesta1

El uso del ifthenpaquete le permite escribir parámetros más cortos de una sola letra. Aquí, rfor red, thicky cualquier otra letra for dashed, aunque dtambién es suficiente.

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

ingrese la descripción de la imagen aquí

Respuesta2

Como una aplicación a tus necesidades en una sola macro.

ingrese la descripción de la imagen aquí

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

Pero cuando ves tantas repeticiones... significa que se puede mejorar :)

información relacionada