TikZ で目次のグラフィカルな表現を作成する

TikZ で目次のグラフィカルな表現を作成する

TikZ を使用して本の内容をグラフィカルに表現するのに苦労しています。PowerPoint で作成した例を添付します。特に、相対的な配置と、絶対的な長さ/配置の宣言がない点に興味があります。

構造例

私は次のコードを試してみました:

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

答え1

簡単に試してみましょう ( のみを変更して、必要に応じてテキストとスケールを変更します\ut):

ここに画像の説明を入力してください

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

関連情報