Erstellen einer grafischen Darstellung eines Inhaltsverzeichnisses in TikZ

Erstellen einer grafischen Darstellung eines Inhaltsverzeichnisses in TikZ

Ich habe Probleme, mit TikZ eine grafische Darstellung des Inhalts eines Buches zu erstellen. Ein Beispiel, das ich in Powerpoint erstellt habe, ist beigefügt. Besonders interessiert mich die relative Positionierung und keine Angabe absoluter Längen/Positionen.

Beispielstruktur

Ich habe mit dem folgenden Code herumgespielt:

\documentclass[11pt]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{positioning,shapes,calc}

\begin{document}
\begin{figure}
\begin{tikzpicture}[every node/.style=draw,scale=1.25] 
\tikzset{part/.style={fill=gray!20,minimum width=1em,minimum height=1.4em,align=left}}
\draw[fill=gray,minimum width=10em,minimum height=6em,align=left,anchor=south west]   (0,0) rectangle (8,4) coordinate[pos=.5](O);
\node [above=.5em,part,xshift=1em] (part1) at (O){Part I};
\node[on grid,part,below=2em of part1] (part2){Part II};
\node[on grid,part,below=2em of part2] (part2){Part III};   
\end{tikzpicture}
\end{figure}
\end{document}

Antwort1

Ein kurzer Versuch (ändern Sie Text und Maßstab nach Bedarf, indem Sie nur ändern \ut):

Bildbeschreibung hier eingeben

\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}

verwandte Informationen