TikZ: "."가 포함된 노드 이름

TikZ: "."가 포함된 노드 이름

TikZ에서는 일부 노드(x)에 대해 예를 들어 (x.west)를 사용하여 노드 x의 앵커를 참조할 수 있습니다. "."으로 좌표를 직접 정의하려고 하면 이름으로는 작동하지 않습니다.

\coordinate (x.test) at (4,0);

(x.text)가 이 좌표를 참조하도록 좌표를 정의하는 방법이 있습니까?

답변1

.예, 이름에 를 사용하여 좌표(또는 일반적으로 노드)의 이름을 지정할 수 있습니다 . 하지만 당신은 즐거운 시간을 보내지 못할 것입니다.

다음 솔루션 중 마지막 솔루션(노드 cs를 명시적으로 사용)만 유효하고 안정적인 솔루션이라고 생각합니다.

  1. 짜증난다.
  2. .이제 문자이고 매크로 이름 내에서 사용할 수 있으므로 엉망이 될 수 있습니다 ( .실제로 절약할 수 있는 활성화를 만드는 대안이 있습니다).
  3. 작성하는 것이 더 많을 뿐 아니라 다른 사람들에게도 모호하지 않습니다.
\documentclass{article}
\usepackage{tikz}
\tikzset{no anchors/.code={\catcode`\.=11\relax}}
\begin{document}
\begin{tikzpicture}
\coordinate (x.test) at (4,0);

% 1. Hide the dot from TikZ parser.
\node[shift=(up:2)] (no dot) at ({{{{x.test}}}}) {no dot};
% 2. “Disguise” the dot as a different character
\draw {[no anchors] (x.test) } -- (no dot.south);
% 3. Explicitly use the node cs.
\draw (0,4) -- (node cs: name = x.test);
\end{tikzpicture}
\end{document}

앵커를 추가하려는 경우기존의당신이 사용할 수있는 노드 append after command또는 사진나는 내 다른 대답에서 그랬다(그러나 x-test그것을 사용하여 살 수 있다면 훨씬 쉽습니다).

위에서 했던 것처럼 일반 노드에 새 앵커를 추가할 수도 있습니다.동일한 전술을 사용한 또 다른 답변.

노드를 배치하는 데 이러한 앵커를 사용하려면 더 많은 작업이 수행되지만 이는 매우 간단하게 해결될 수 있다고 생각합니다.

하지만 그러기 위해서는 실제 사용 사례를 확인해야 합니다.

답변2

당신은 묻고 있습니다

(x.text)가 이 좌표를 참조하도록 좌표를 정의하는 방법이 있습니까?

기술적으로는 있습니다. 앵커를 coordinate갖도록 모양을 재정의할 수 있습니다(로컬적으로 희망함) test.

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\makeatletter
\pgfdeclareshape{coordinate}
{
\savedanchor\centerpoint{%
\pgf@x=.5\wd\pgfnodeparttextbox%
\pgf@y=.5\ht\pgfnodeparttextbox%
\advance\pgf@y by -.5\dp\pgfnodeparttextbox%
}
\anchor{center}{\centerpoint}
\anchor{test}{\centerpoint}
\anchorborder{\centerpoint}
}
\makeatother
\coordinate (x) at (4,0);
\draw (x.test) -- ++ (1,1);
\end{tikzpicture}
\end{document}

그러나 나는 이와 유사한 구성을 사용하는 것을 전혀 권장하지 않습니다. 오히려 점, 쉼표, 괄호, 대괄호, 중괄호(그렇게 해석됨) ~, 일반 달러 기호, 일반 #s, 일반 파이프, 일반 문자를 사용할 수 없다는 사실을 받아들이는 것이 훨씬 낫다고 주장하고 싶습니다. %, 앰퍼샌드 및 아마도 몇 가지가 더 작동하지 않습니다. (로드하는 패키지에 따라 이 목록은 더 길어질 수 있습니다.) 개인적으로 저는 공백과 밑줄 등이 작동한다는 사실에 정말 놀랐습니다. 이러한 특수 문자를 사용하면 Ti를 처리하는 데 매우 편리합니다.케이Z. 허용하려면 .모호성이 있거나 사용자가 (node.north)북쪽 앵커를 참조하는 데 사용하는 것을 금지해야 합니다.

관련 정보