我想要一个如下所示的图形或表格:
我在这个帖子上发现了类似的结构:在 TikZ 中创建目录的图形表示
我可能会引用那里的代码:
\documentclass[border=2pt,tikz]{standalone}
\usetikzlibrary{calc,positioning,backgrounds,fit}
\renewcommand{\rmdefault}{ptm}
\begin{document}
\newcommand{\ut}{4mm}
\begin{tikzpicture}[bk/.style args={#1}{draw,fill=gray!20,minimum height=2.7*\ut,minimum width=#1*\ut,align=center}, part/.style={inner sep=0pt,outer sep=0pt,font={\Large\bfseries}, white,align=left, xshift=-8*\ut}, node distance=.5*\ut]
\node[bk=30](c1){Chapter 1\\\textit{Chapter 1 Title}};
\node[bk=9.75,below=of c1.south west, anchor=north west](c2){Chapter 2\\\textit{Chapter 2 Title}};
\node[bk=19.75,below=of c1.south east, anchor=north east](c3){Chapter 3\\\textit{Chapter 3 Title}};
\node[part,left=of {$(c1.west)!.5!(c2.west)$},anchor=west](P1){Part I\\\textit{Part I Title}};
\begin{scope}[on background layer]
\node[rectangle,fill=gray!70,fit=(c1)(c2)(P1),inner sep=10pt] {};
\end{scope}
\node[bk=30,below=of c2.south west,anchor=north west,yshift=-2em](c1){Chapter 4\\\textit{Chapter 4 Title}};
\node[bk=30,below=of c1.south west, anchor=north west](c2){Chapter 5\\\textit{Chapter 5 Title}};
\node[bk=30,below=of c2.south east, anchor=north east](c3){Chapter 6\\\textit{Chapter 6 Title}};
\node[part,left=of {$(c1.west)!.5!(c3.west)$},anchor=west](P2){Part II\\\textit{Part II Title}};
\begin{scope}[shift={(0,-10*\ut)},on background layer]
\node[rectangle,fill=gray!70,fit=(c1)(c3)(P2),inner sep=10pt] {};
\end{scope}
\node[bk=30,below=of c3.south,anchor=north,yshift=-2em](c1){Chapter 7\\\textit{Chapter 7 Title}};
\node[bk=9.75,below=of c1.south west, anchor=north west](c2){Chapter 8\\\textit{Chapter 8 Title}};
\node[bk=9.75,below=of c1.south east, anchor=north east](c3){Chapter 10\\\textit{Chapter 10 Title}};
\node[bk=9.5,left=of c3.west, anchor=east](c4){Chapter 9\\ \textit{Chapter 9 Title}};
\node[part,left=of {$(c1.west)!.5!(c2.west)$},anchor=west](P3){Part III\\\textit{Part III Title}};
\begin{scope}[shift={(0,-24*\ut)},on background layer]
\node[rectangle,fill=gray!70,fit=(c1)(c2)(P3),inner sep=10pt] {};
\end{scope}
\end{tikzpicture}
\end{document}
我该如何修改此代码以使其看起来像我想要的结构?提前致谢。
答案1
如果你想手写所有内容,这里有一个选项tcolorbox
\documentclass{article}
\usepackage[most]{tcolorbox}
\tcbset{every box/.style={fontupper=\sffamily,
colframe=black, notitle, sharp corners}}
\newtcolorbox{project}{colback=black!40}
\newtcolorbox{subproject}{colback=black!30}
\newtcolorbox{subsubproject}{colback=black!10}
\begin{document}
\begin{project}
Project P1: Long Name of Project 1.
\end{project}
\begin{project}
Project P2: Long Name of Project 2.
\begin{subproject}
Subproject S1: Long Name of subproject 1.
\begin{subsubproject}
Subsubproject 1: Long Name of subsubproject 1.
\end{subsubproject}
\begin{subsubproject}
Subsubproject 2: Long Name of subsubproject 3.
\end{subsubproject}
\end{subproject}
\begin{subproject}
Subproject S2: Long Name of subproject 2.
\begin{subsubproject}
Subsubproject 3: Long Name of subsubproject 3.
\end{subsubproject}
\begin{subsubproject}
Subsubproject 4: Long Name of subsubproject 4.
\end{subsubproject}
\end{subproject}
\begin{subproject}
Subproject S3: Long Name of subproject 3.
\begin{subsubproject}
Subsubproject 5: Long Name of subsubproject 5.
\end{subsubproject}
\end{subproject}
\end{project}
\begin{project}
Project P3: Long Name of Project 3.
\end{project}
\end{document}