ошибка 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}

введите описание изображения здесь

Связанный контент