
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 ifthen
paquete le permite escribir parámetros más cortos de una sola letra. Aquí, r
for red, thick
y cualquier otra letra for dashed
, aunque d
tambié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}
Respuesta2
Como una aplicación a tus necesidades en una sola macro.
\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 :)