tikz 전용 매크로

Oct 07 2020

\newcommand완전히 새로운 tikz-environment를 포함 하는 매크로가 작성되었습니다 .

tikz-environment의 내용 만 포함하는 매크로를 어떻게 만들 수 있습니까?이 그림을 여러 번 갖고 싶다면 하나의 tikz-environment에 그려집니다.

매크로에서 tikz-environment의 선언을 간단히 제거 할 수 있다는 것을 알고 있지만 이렇게하면 tikz-environment 외부에서도 매크로를 사용할 수 있습니다.

예 :

다음과 유사한 매크로가 있습니다.

\newcommand{\myTikzMacro}{
  \begin{tikzpicture}
    \draw (0,0) rectangle (1,1);
    \draw (1,1) rectangle (2,0);
  \end{tikzpicture}

이제 다음과 같이 매크로를 여러 번 사용할 수 있습니다.

\myTikzMacro \\
\myTikzMacro \\

그러나 여러 tikz-environments가 사용됩니다. 이 매크로를 만들 수 없도록하려면 :

\newcommand{\myTikzMacro2}{
    \draw (0,0) rectangle (1,1);
    \draw (1,1) rectangle (2,0);

다음과 같이 사용하십시오.

\begin{tikzpicture}
  \myTikzMacro2
  \myTikzMacro2
\end{tikzpicture}

그러나 이것은 tikzpicture내가 너무 피하고 싶은 환경 밖에서 도 매크로를 사용할 수있게 해줍니다 .

tikzpicture 환경 내에서만 사용 가능 / 표시되는 매크로를 선언하는 방법이 있습니까? (pgfkeys와 함께)

답변

1 campa Oct 07 2020 at 21:23

에 따라 어떻게 현재의 코드가 tikzpicture 내에 있을지 어떨지를 확인할 수 있습니까? tikz매크로를 제공합니다

\tikzifinpicture{true branch}{false branch}

하나에 있는지 테스트하기 위해 tikzpicture; 그러나 그 정의에있는 주석은 그 정확성에 대해 약간의 의구심을 던지는 것처럼 보입니다. (중첩 된 그림에서는 실패 할 수 있다고 생각합니다.) 대부분의 간단한 경우에서 작동한다고 가정하면

\newcommand*{\myTikzPicture}
{\tikzifinpicture
    {%
     \draw (0,0) rectangle (1,1);
     \draw (1,1) rectangle (2,0);
    }%
    {%
     \GenericError{}{Unallowed command}
             {\string\myTikzPicture\space can be used only inside a tikz picture.}{}%
    }%
}

여기에 사용했습니다 \GenericError. 명령이 사용자 정의 패키지로 이동하는 경우 사용하는 \PackageError것이 더 적절할 것입니다.