tikz/pgf:positioning.lib 与 rotate 结合使用是否正确?

tikz/pgf:positioning.lib 与 rotate 结合使用是否正确?

请查看随附的 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->belowright->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}

相关内容