Tikz:一个节点上具有相同宽度的几个标签

Tikz:一个节点上具有相同宽度的几个标签

我想将几个带注释的标签附加到(正方形) 节点(此处节点有文本“32”)。

然而,标签(它们有draw)应该无缝地放在一起,并且都应该有相同宽度作为节点(32)

如何获得适合标签的字体大小?(标签文本应具有相同的字体大小。)

或者说做到这一点的最好方法是什么?

在此处输入图片描述

\documentclass[margin=5pt]{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[font=\footnotesize\sffamily, very thin,
NumStyle/.style={minimum size=4mm, inner sep=0pt, draw},
LabelStyle/.style={minimum width=4mm, draw, font=\sffamily\tiny, inner xsep=0.5pt, inner ysep=1pt},
]

\node[NumStyle, fill=red, text=white,
label={[LabelStyle, 
scale=0.7%   try ?
]below:{1. Place}},
label={[LabelStyle, fill=yellow, name=P]above:{even (1/9)}},
label={[LabelStyle, fill=purple, yshift=2.7mm]{high (3/9)}},
]{32};
\end{tikzpicture}
\end{document}
    

答案1

以下是一种方法:

  • 忽略字体
  • 使用part fill列表选项
  • 手册中有更多nodes直接使用的示例
  • 通过 textwidth 可以轻松使框变宽

结果

\documentclass[10pt,border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}

\begin{document}

\begin{tikzpicture}

    \node [rectangle split, rectangle split parts=4,draw,
           rectangle split part fill=
           {red!80!blue,yellow,red,white}]
    {
        high (3/9)
        \nodepart{two} 
            even (1/9)
        \nodepart{three}
            \textbf{\textcolor{white}{\LARGE{32}}}
        \nodepart{four}
            1. Place
    };
\end{tikzpicture}

\end{document}

答案2

这是另一种方法:

  • 定义最小宽度、高度(对于矩形)和正方形的尺寸
  • 用绝对坐标定位,用手/脑做一些计算
  • calc可以通过使用库等实现自动化。

结果

\documentclass[10pt,border=3mm]{standalone}
\usepackage{tikz}
%\usetikzlibrary{shapes.multipart}

\begin{document}

 \begin{tikzpicture}
    [rc/.style={draw,minimum height=1cm,minimum width=3cm},
     sq/.style={draw,minimum size=2cm}]
     
     \node [rc,fill=red!80!blue]    at (0,0) {high (3/9)};
     \node [rc,fill=yellow]         at (0,-1) {even (1/9)};
     \node [sq,fill=red]            at (0,-2.5) {\textbf{\textcolor{white}{\LARGE{32}}}};
     \node [rc]                     at (0,-4) {1. Place};
 \end{tikzpicture}

\end{document}

相关内容