tikz에서 선 색상을 변경하는 매크로

tikz에서 선 색상을 변경하는 매크로

저는 라텍스의 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더 짧은 단일 문자 매개변수를 작성할 수 있습니다. 여기서는 rfor red, thick및 에 대한 다른 문자 dashed로도 d충분합니다.

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

하지만 그렇게 많은 반복을 보면... 개선될 수 있다는 의미입니다. :)

관련 정보