
저는 라텍스의 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
for 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}
하지만 그렇게 많은 반복을 보면... 개선될 수 있다는 의미입니다. :)