如何绘制一个带有文本框的图表并自动布局?

如何绘制一个带有文本框的图表并自动布局?

如何制作以下结构的图表,其中每个元素都是一个带有文本和可能的子元素的框。

这是所需结构的示例。框的大小和对齐方式是任意的。 例子

我希望图表能够自动对齐各个框,以便每个框之间都有一点空间。

盒子的顺序并不重要,重要的是哪个盒子在哪个盒子里面。

很高兴有以下特点:

  • 如果框包含其他框,则文本应该是可选的
  • 可以指定每个框的背景颜色。

我更喜欢 TikZ 解决方案,但如果它们不依赖于外部程序并且结构更容易跟踪,其他方法也很好。

答案1

问题的描述仍然有些模糊,但也许这样的内容可能会有所帮助:

\documentclass{article}
\usepackage{tikz}

\newcommand\TBox[3][]{%
  \tikz\node[draw,ultra thick,text width=#2,align=left,#1] {#3};}

\begin{document}

\TBox{5cm}{%
  \TBox[fill=brown]{3cm}{\TBox[fill=red!30]{1cm}{B}\hfill\TBox[fill=cyan!30]{1cm}{C}} \\[1ex]
  \TBox[fill=green!30]{1cm}{D}\quad\TBox[fill=yellow!30]{1cm}{E}}

\end{document}

在此处输入图片描述

\Tbox有三个参数:(第一个)可选参数可用于将选项传递给\node框的矩形;第二个参数指定文本宽度,第三个参数用于内容。

经过注释之后,这可以更接近期望的结果;现在\TBox有一个可选参数(将选项传递给节点)和一个强制参数(框的内容):

\documentclass{article}
\usepackage{tikz}

\newcommand\TBox[2][]{%
  \tikz\node[draw,ultra thick,align=left,#1] {#2};\hskip2pt}

\begin{document}

\TBox{%
  \TBox[fill=brown]{Some test text \\ \TBox[fill=red!30]{Some}\TBox[fill=cyan!30]{A}} \\
  \TBox[fill=green!30]{B}\TBox[fill=yellow!30]{Text}}

\end{document}

在此处输入图片描述

相关内容