请查看随附的 MWE。它显示了三个矩形相对于坐标以不同的角度旋转。当不是加载定位库后,结果符合预期(见下面第二张图)。但是和这个精美的图书馆节点的西南点(如矩形所示)似乎被钉在画布上(参见下面的第一张图片)。
我当然不确定,但我无法相信这是预期的行为。
\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\fill[red] (8.4,0) circle (1pt) node[rectangle,draw,above right=10pt]
{Test};
\fill[red] (8.4,-2) circle (1pt) node[rotate=45,rectangle,draw,above right=10pt]
{Test};
\fill[red] (8.4,-4) circle (1pt) node[rotate=90,rectangle,draw,above right=10pt]
{Test};
\end{tikzpicture}
\end{document}
根据 percusse 的回答,出现了一个附加问题。我如何得到这个结果?
换句话说:我希望节点的西锚点(旋转 90°)出现在节点上方 10 pt 处。以下 MWE 无济于事。
\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\fill[red] (8.4,0) circle (1pt) node[rotate around={90:(0,0)},rectangle,draw,right=10pt]
{Test};
\fill[red] (8.4,-2) circle (1pt) node[rotate around={90:(0,0)},rectangle,draw,above=10pt]
{Test};
\end{tikzpicture}
\end{document}
这导致
答案1
是的,第二张图片是错误的。因为这是行为rotate around
(TikZ 手册 v3 第 25.3 节),因为旋转是分配给节点而不是图片,因此节点应该旋转,无论它位于何处。
那个精良的库修复了这个问题。结合above right
使用反锚点above->below
(right->left
或指南针名称)的事实,并且节点固定在该锚点上,这是预期的行为。
positioning
库重新定义了指南针样式,特别是这里
\tikzset{above right/.code=\tikz@lib@place@handle@{#1}{south west}{1}{1}{north east}{0.707106781}}
答案2
好的,这让我找到了答案。我在向宏添加锚点时测试了错误的顺序。通过以下示例,我最终将文本放在了我想要的位置!
\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\fill[red] (8.4,-2) circle (1pt) node[rotate around={90:(0,0)},rectangle,draw,above=10pt,anchor=west]
{Test};
\end{tikzpicture}
\end{document}
答案3
这是一个简单的解决方案。方法:
- 选择职位:
above=10pt
, - 选择锚点:
anchor=west
, - 围绕锚点旋转节点:
rotate=90
。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\fill[red] (8.4,0) circle (1pt) node[above=10pt,anchor=west,rotate=90,draw] {Test};
\end{tikzpicture}
\end{document}