
這可能是眾所周知的,但我不記得以前遇到過這種情況。這是一個最小的例子:
\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
這不是一個錯誤——這種行為很容易修復。
當你為整個圖片指定一個修飾符時,TikZ 所做的就是將此修改器應用於圖片和每個對象單獨。因此,有必要用我們自己的比例個性化旋轉來抵消這種個體旋轉與一般旋轉的差異。在擺弄了標誌一秒鐘後,我得到了這段程式碼來產生這個結果。
\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}