
Isso pode ser bem conhecido, mas não me lembro de ter encontrado isso antes. Aqui está um exemplo mínimo:
\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}
Na imagem girada, a linha não está anexada corretamente aos nós:
Isso é realmente um bug ou estou faltando alguma coisa? alguma correção conhecida?
Responder1
Concordo com Shady Puck que isso não é um bug. No entanto, uma maneira possivelmente mais precisa de explicar o que está acontecendo é lembrar que, por padrão, os nós não são transformados. Se você quiser transformá-los, ou seja, submeter as âncoras dos nós às transformações, você precisa dizer transform shape
. (Na sua configuração, é necessário desfazer a transformação da escala para corresponder ao resultado presumivelmente desejado.)
\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}
Responder2
Não é um bug – o comportamento é facilmente corrigido.
Quando você especifica um modificador para toda a imagem, o que TikZ faz é aplicar este modificador à imagemecada objeto individualmente. Portanto, é necessário compensar esta rotação individual da geral com as nossas próprias rotações proporcionais e individualizadas. Depois de mexer nos sinais por um segundo, consegui esse código para produzir esse resultado.
\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}