如何将文本包装在云内的矩形中?

如何将文本包装在云内的矩形中?

我使用以下解决方案中的代码怎样才能在云图内写出完美居中的文字?

\documentclass[border=0.2cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.symbols}
\begin{document}
\begin{tikzpicture}
   \node[text width=0.8cm,inner sep=0pt]
   [execute at begin node=\setlength{\baselineskip}{8pt},
       cloud,
       draw] (c) at (0,0)
   {\scriptsize{Lost\\Broker}};
\end{tikzpicture}
\end{document}

我想在云内绘制额外的对齐矩形。是否可以像下面这样用矩形将文本包裹在云内,如果可能的话用灰色填充内部?

在此处输入图片描述

答案1

使用 tikz 库的另一种方法fit:云节点适合矩形节点的大小

\documentclass[border=0.2cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.symbols, fit}
\begin{document}
\begin{tikzpicture}
   \node[text width=0.8cm, inner sep=1pt, fill=gray!50]
        [node font=\setlength{\baselineskip}{8pt}\scriptsize, draw] 
      (c) at (0,0)
      {Lost\\ Broker};
    \node[draw, cloud, inner sep=-1pt, fit=(c)] {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

更新:给云着色(填充):

\documentclass[border=0.2cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds, shapes.symbols, fit}

\begin{document}
\begin{tikzpicture}
  \node[text width=0.8cm, inner sep=1pt, fill=gray!50]
       [node font=\setlength{\baselineskip}{8pt}\scriptsize, draw] 
    (c) at (0,0) {Lost\\ Broker};
  \scoped[on background layer]
    \node[draw, cloud, inner sep=-1pt, fit=(c), fill=cyan!30] {};
\end{tikzpicture}
\end{document}

具有浅蓝色背景颜色的云

答案2

您可以使用这样的标签

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{shapes.symbols}
\begin{document}
\begin{tikzpicture}
\node[cloud, draw, text width=0.6cm, label={[draw, text width=0.8cm, inner sep=2pt, font=\scriptsize]center:{Lost\\Broker}}] {};
\end{tikzpicture}
\end{document}

云形内矩形内的文字

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{shapes.symbols}
\begin{document}
\begin{tikzpicture}
\node[cloud, fill=cyan, draw, text width=0.6cm, label={[draw, fill=pink, text width=0.8cm, inner sep=2pt, font=\scriptsize]center:{Lost\\Broker}}] {};
\end{tikzpicture}
\end{document}

青色和粉红色的云

答案3

您可以使用\fcolorbox。但这不允许换行,因此您可以将文本放在 内\parbox。您可能需要调整框宽度(9mm在 MWE 中)以获得正确的换行。

还要注意,这\scriptsize不是一个接受参数的命令,它是一个开关,它会改变字体大小,直到找到新的字体大小命令或直到组结束。因此,正确的语法\scriptsize Some text不是 \scriptsize{Some text}

\documentclass[border=0.2cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.symbols}
\begin{document}
\begin{tikzpicture}
   \node[inner sep=0pt,cloud,draw] (c) at (0,0)
   {\fcolorbox{black}{gray}{\parbox{9mm}{\scriptsize Lost Broker}}};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容