tikz 전용 매크로
\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와 함께)
답변
에 따라 어떻게 현재의 코드가 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것이 더 적절할 것입니다.