使用两条线时旋转节点并使用相对定位

使用两条线时旋转节点并使用相对定位

我正在尝试做一些与此非常相似的事情:

在 TikZ 中旋转节点文本并使用相对定位?

除非我想旋转多个节点,最终一个节点“浮动”在另一个节点之上:

错误定位的例子

理想情况下,我希望它们能够彼此对齐。

以下是示例代码:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes.misc, positioning}

\begin{document}

\begin{tikzpicture}
    \tikzstyle{every node}=[font=\scriptsize]

    \node(node1) [draw, rounded rectangle, align=center, rotate=90, fill=gray ]{Small text};
    \node(node2) [draw,  rounded rectangle, right = of node1, align=center, rotate=90, fill=red, anchor=north] {longer text \\ on two lines};
\end{tikzpicture}
\end{document}

答案1

尝试这个:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes.misc, positioning}

\begin{document}

\begin{tikzpicture}[every node/.append style={font=\scriptsize}]

    \node(node1) [draw, rounded rectangle, align=center, rotate=90,fill=gray ]{Small text};
    \node(node2) [draw,  rounded rectangle, right = of node1.south, align=center, rotate=90, fill=red, anchor=north] {longer text \\ on two lines};
\end{tikzpicture}
\end{document}

在此处输入图片描述

解释:定位使用适当的锚点来测量距离。因此,如果您说right of,它会将节点放置在锚点右侧一定距离处east。但是,这些旋转没有被考虑在内,因此旋转后锚点east位于节点的(现在)上端,这就是为什么红色节点被放置在east灰色节点锚点右侧一定距离处,即上端。在这个答案中,TiZ 被告知要使用南锚点,即旋转后节点的右端。处理中存在轻微的不对称,因为你可能会天真地认为 TiZ 也会使用west红色节点的锚点,但它没有。我猜测它使用\pgfpointshapeborder它,但我没有检查这一点。

编辑:我做的唯一修改是将其替换\tikzstyle{every node}=[font=\scriptsize][every node/.append style={font=\scriptsize}]。请参阅这次讨论\tikzstyle进行关于的讨论\tikzset

答案2

为了使nodes与 对齐baseline,只需围绕 锚点旋转到 即可west。因此,移除北边的锚点% anchor=north并移动到该锚点的右侧right = of node1.west

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.misc, positioning
}

\begin{document}

\begin{tikzpicture}
    \tikzstyle{every node}=[font=\scriptsize]
    \node(node1) [draw, rounded rectangle, align=center, rotate=90, fill=gray ]{Small text};
    \node(node2) [draw,  rounded rectangle, right = of node1.west, align=center, rotate=90, fill=red,% anchor=north
    ] {longer text \\ on two lines};
\end{tikzpicture}
\end{document}

权

相关内容