TikZ의 제어 구조

TikZ의 제어 구조

저는 지금 막 TikZ를 배우고 있으며 몇 가지 제어 구조를 실험하고 있습니다. 누군가 아래 내 코드로 나를 도울 수 있습니까?

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{center}
\begin{tikzpicture}
    \draw[fill=black] (0,0)circle(0.05) node[above=1.5]{You};
    \foreach \(\x,\y) in {(-2,green),(-1,red),(0,black),(1,blue),(2,yellow)}
    {
        \filldraw[draw=\y] (0,0)--(\x,-1);
        \draw[fill=black] (-\x,-1)circle(0.05);
    }   
\end{tikzpicture}
\end{center}

\end{document}

문제가 내가 사용하려는 곳에서 발생한다는 것을 알고 있습니다.

\foreach \(\x,\y) in {(-2,green),(-1,red),(0,black),(1,blue),(2,yellow)}

TikZ가 이런 일을 처리할 수 있는 방법이 있나요?

답변1

네, 방법이 있습니다.

섹션 83/911 페이지에서PGF/TikZ 매뉴얼(v3.0.0):

여러 변수.두 개의 변수를 동시에 반복하고 싶은 경우가 종종 있습니다. 루프를 중첩할 수 있으므로 \foreach이는 일반적으로 간단합니다. 그러나 변수가 "동시에" 반복되기를 원하는 경우가 있습니다. 예를 들어 두 좌표를 연결하는 가장자리 목록이 제공되고 이러한 가장자리를 반복하려고 할 수 있습니다. 그렇게 하는 동안 가장자리의 소스와 대상을 서로 다른 두 변수로 설정하려고 합니다.

이를 달성하려면 다음 구문을 사용할 수 있습니다.⟨변수⟩단일 TEX 변수일 뿐만 아니라 대신 슬래시( )로 구분된 변수 목록일 수도 있습니다 /. 이 경우 목록 항목은 슬래시로 구분된 값 목록일 수도 있습니다.

가정하면⟨변수⟩목록 항목은 값 목록입니다.⟨명령⟩실행되면 각 변수는⟨변수⟩현재 목록 항목을 구성하는 목록의 한 부분으로 설정됩니다.

PGF/TikZ 문서는 매우 자세하며 전체 섹션에서 \foreach루프 사용 방법을 매우 잘 안내합니다. 처음 학습할 때 처음부터 끝까지 읽는 것은 권장하지 않지만(전체 문서는 1000페이지가 넘습니다), 새로운 것에 대해 아주 자세하게 배우고 싶다면 매우 좋습니다.

그래서 라인을 교체해야합니다

\foreach \(\x,\y) in {(-2,green),(-1,red),(0,black),(1,blue),(2,yellow)}

~와 함께

\foreach \x/\col in {-2/green, -1/red, 0/black, 1/blue, 2/yellow}

더 설명적이므로 두 번째 변수의 이름을 \col또는 \color/ 로 바꾸는 것이 좋습니다 . \colour(x,y) 좌표 쌍을 상당히 정기적으로 반복하는 것을 발견할 수 있으므로 혼동하지 않으려고 합니다.

귀하의 예는 다음과 같습니다.

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
    \draw [fill=black] (0,0) circle (0.05) node [above=1.5] {You};
    \foreach \x/\col in {-2/green, -1/red, 0/black, 1/blue, 2/yellow}
    {
      \filldraw [draw=\col] (0, 0) -- (\x, -1);
      \draw [fill=black] (-\x, -1) circle (0.05);
    }
\end{tikzpicture}

\end{document}

다음은 다음과 같이 컴파일됩니다.

여기에 이미지 설명을 입력하세요

답변2

글쎄요, 루프와 같은 Python을 지원하더라도 \(인라인 수학 환경이 열려 있기 때문에 여전히 문제가 발생할 수 \(\alpha\)있습니다 $\alpha$.

하지만 그렇지 않습니다.

따라서 당신은 사용해야합니다

\foreach \x/\y in {-2/green,-1/red,0/black,1/blue,2/yellow}

관련 정보