
我對 tikz 和乳膠宏都很陌生,感謝您的幫助。我有兩個類似圖的簡單程式碼,如下所示:
\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}
有人可以幫助我將這兩個宏合併為一個宏,我可以將線條樣式(虛線與紅色,粗線)作為參數提供,即接受例如\tp{r}{d}{r}{r}
並輸出當前結果的代碼\tprdrr
?我想使用更多配置,例如\tp{r}{r}{r}{r}
,\t{d}{d}{d}{d}
等等,因此巨集將非常有用
答案1
使用該ifthen
套件允許您編寫更短的單字母參數。此處,r
forred, thick
和任何其他字母 for dashed
,thoughd
也足夠了。
\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}
答案2
作為在單一巨集中滿足您需求的應用程式。
\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}
當你看到很多重複時...這意味著它可以改進:)