
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 ifthen
Pakets ermöglicht es Ihnen, kürzere einstellige Parameter zu schreiben. Hier reicht r
für red, thick
und jeder andere Buchstabe für dashed
, obwohl d
auch 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}
Antwort2
Als Anwendung für Ihre Anforderungen in einem einzigen Makro.
\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 :)