노드에서 곡선으로의 tikz 버그

노드에서 곡선으로의 tikz 버그

이것은 잘 알려져 있을 수도 있지만 이전에 이것을 접한 적이 기억이 나지 않습니다. 다음은 최소한의 예입니다.

\documentclass[12pt,a4paper]{amsart}
\usepackage{tikz}
\begin{document}

\tikzset{vert/.style={circle,inner sep=1mm,draw}}
\tikzset{edge/.style={draw=#1,very thick}}
\begin{center}
\begin{tikzpicture}[scale=2.5]
\node[vert] (a) at (1.,1.3){};
\node[vert] (b) at (1.7,1.3){};
\draw[edge=blue,out=0,in=225] (a) to (b);
\end{tikzpicture}
\begin{tikzpicture}[scale=2.5,rotate=225]
\node[vert] (a) at (1.,1.3){};
\node[vert] (b) at (1.7,1.3){};
\draw[edge=blue,out=0,in=225] (a) to (b);
\end{tikzpicture}
\end{center}

\end{document}

회전된 그림에서는 선이 노드에 올바르게 연결되지 않았습니다.

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

정말 버그인가요, 아니면 제가 뭔가를 놓치고 있는 걸까요? 알려진 수정 사항이 있나요?

답변1

나는 이것이 버그가 아니라는 Shady Puck의 의견에 동의합니다. 그러나 무슨 일이 일어나고 있는지 설명하는 더 정확한 방법은 기본적으로 노드가 변환되지 않는다는 점을 상기하는 것입니다. 노드 앵커를 변환하려는 경우, 즉 노드 앵커에 변환을 적용하려면 이라고 말해야 합니다 transform shape. (귀하의 설정에서 아마도 원하는 결과와 일치하도록 스케일 변환을 실행 취소해야 합니다.)

\documentclass[12pt,a4paper]{amsart}
\usepackage{tikz}
\begin{document}

\tikzset{vert/.style={circle,inner sep=1mm,draw}}
\tikzset{edge/.style={draw=#1,very thick}}
\begin{center}
\begin{tikzpicture}[scale=2.5]
\node[vert] (a) at (1.,1.3){};
\node[vert] (b) at (1.7,1.3){};
\draw[edge=blue,out=0,in=225] (a) to (b);
\end{tikzpicture}
\begin{tikzpicture}[scale=2.5,rotate=225,transform shape]
\node[vert,scale=1/2.5] (a) at (1.,1.3){};
\node[vert,scale=1/2.5] (b) at (1.7,1.3){};
\draw[edge=blue,out=0,in=225] (a) to (b);
\end{tikzpicture}
\end{center}
\end{document}

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

답변2

이는 버그가 아닙니다. 동작은 쉽게 수정됩니다.

전체 그림에 대해 수정자를 지정할 때 Ti는 무엇입니까?케이Z는 이 수정자를 그림에 적용합니다.그리고각 개체를 개별적으로. 그러므로 우리 자신의 비례적인 개별 회전을 통해 일반 회전과 개별 회전을 상쇄하는 것이 필요합니다. 잠시 동안 표지판을 만지작거린 후 이 결과를 생성하는 코드를 얻었습니다.

\tikzset{vert/.style={circle,inner sep=1mm,draw}}
\tikzset{edge/.style={draw=#1,very thick}}
\begin{tikzpicture}[scale=2.5]
    \node[vert] (a) at (1.,1.3){};
    \node[vert] (b) at (1.7,1.3){};
    \draw[edge=blue,out=0,in=225] (a) to (b);
\end{tikzpicture}
\begin{tikzpicture}[scale=2.5,rotate=225]
    \node[vert,rotate=-225] (a) at (1.,1.3){};
    \node[vert,rotate=225] (b) at (1.7,1.3){};
    \draw[edge=blue,out=0,in=225] (a) to (b);
\end{tikzpicture}

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

관련 정보