如何制作以下结构的图表,其中每个元素都是一个带有文本和可能的子元素的框。
这是所需结构的示例。框的大小和对齐方式是任意的。
我希望图表能够自动对齐各个框,以便每个框之间都有一点空间。
盒子的顺序并不重要,重要的是哪个盒子在哪个盒子里面。
很高兴有以下特点:
- 如果框包含其他框,则文本应该是可选的
- 可以指定每个框的背景颜色。
我更喜欢 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}