答案1
这是一个宏\rstack[<width>]{<height list>}{<color>}{<top label>}
。<width>
是可选的。默认值为 3cm。<height list>
应该是以逗号分隔的矩形高度列表,从后到前(这是绘制它们的顺序)。
因此\rstack{1.5,5,4,2,1}{red}{$\mathbf{x}_k$}
产生左边的堆栈并\rstack[2cm]{4,3,1,2}{blue}{}
产生右边的堆栈。
以下是代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shadows}
\newcommand{\rstack}[4][3cm]{\tikz[baseline]{
\foreach \k[count=\n] in {#2}{\xdef\numrecs{\n}}
\foreach \k[count=\n, evaluate=\n as \c using \n/\numrecs*100] in {#2}{
\node[shift={(-\n/4,-\n/4)}, draw, thick, fill=#3!\c, drop shadow, inner sep=0, minimum height=\k cm, minimum width=#1, anchor=north east](r\n) at (0,0){};
}
\node at (r\numrecs){#4};
}}
\begin{document}
\rstack{1.5,5,4,2,1}{red}{$\mathbf{x}_k$}\qquad\rstack[2cm]{4,3,1,2}{blue}{}
\end{document}