旋转自定义多部分形状的一部分

旋转自定义多部分形状的一部分

我想创建一个最终看起来像这样的自定义节点形状:

在此处输入图片描述

使用多个节点绘制呈现上述内容的 TikZ 图片很容易。但是,我希望它是一个单个节点,这样我就可以使用该forest包绘制由这些节点组成的树。而且,我很好奇 ;-)

阅读 PGF 手册后,我的印象是这可以通过包含五个部分的自定义形状来实现:(1)文本:“乱数假文…”,(2)标签:“全部”,(3)身份证号:“12345”,(4)你好:“你好世界”,(5)价值:“4/5”。

我从文本开始(“Lorem ipsum…”) 和标签 (“全部”) 部分,已经遇到了问题。以下代码是我的尝试。

\documentclass[tikz,margin=2mm]{standalone}

\newsavebox{\pgfnodepartlabelbox}

\makeatletter
\pgfdeclareshape{mynode}{
    \nodeparts{text,label}

    \savedanchor{\northeast}{
        \pgf@y=1.\ht\pgfnodeparttextbox
        \advance\pgf@y by -0.\dp\pgfnodeparttextbox
        \pgf@x=1.\wd\pgfnodeparttextbox
        \advance\pgf@x by \wd\pgfnodepartlabelbox
    }

    \savedanchor{\southwest}{
        \pgf@y=-.0\ht\pgfnodeparttextbox
        \advance\pgf@y by -1.0\dp\pgfnodeparttextbox
        \pgf@x=.0\wd\pgfnodeparttextbox
    }

    \savedanchor{\joint}{
        \pgf@y=0pt
        \pgf@x=1.\wd\pgfnodeparttextbox
    }
    
    \anchor{label}{\joint}
    
    \foreach \anchor in {center} {%
        \inheritanchor[from=rectangle]{\anchor}%
    }

    \inheritbackgroundpath[from=rectangle]
}
\makeatother

\begin{document}
\begin{tikzpicture}
    \node [mynode, draw=red, text width=4cm, align=justify]
        at (0,0) {
            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
            \nodepart{label}
            foo
        };
\end{tikzpicture}
\end{document}

以上代码输出:

不旋转标签部分的实际输出

但我希望它输出(颜色和间距现在并不重要,我想我可以处理这些):

带有旋转标签部分的期望输出

我的问题是:

  1. 使用自定义多部分形状来解决我的问题是否是一个好主意?还是应该以某种方式将其他部分作为选项传递?
  2. 如何旋转单个节点部分?“foo”在我的尝试中没有旋转。
  3. 如何定义单个节点部分的文本宽度?“foo”部分是我的尝试有4厘米的宽度像“Lorem ipsum…”部分,但我只想要“Lorem ipsum…”为4cm。

相关内容