
Это может быть общеизвестно, но я не помню, чтобы сталкивался с этим раньше. Вот минимальный пример:
\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}