LaTeX 中的阶梯金字塔

LaTeX 中的阶梯金字塔

如何在 LaTeX 中生成阶梯金字塔?

我猜我会使用图形模块来使图表条居中......

我希望能够选择金字塔每一“行”的长度,并在其旁边显示该数字,如下所示: 小样

感谢所有建议

答案1

我建议你使用 TikZ 和\foreach循环

\documentclass{article}

\usepackage{tikz}
\usepackage{xcolor}

\definecolor{barcolor}{named}{gray}
\definecolor{barborder}{named}{red}

\newcommand{\barheight}{0.5cm}

\newcommand{\pyramid}[1]{%
    \begin{tikzpicture}[x=0.25cm]
        \foreach \b [count=\n] in {#1} {
            \draw [barborder,fill=barcolor]
                (-0.5*\b,{(\n-1)*\barheight}) rectangle (0.5*\b,\n*\barheight);
            \node at (-0.5*\b,\n*\barheight-0.5*\barheight) [left] {\b};
        }
    \end{tikzpicture}
}


\begin{document}
    \pyramid{28,26,17,7}
\end{document}

结果

使用/注意事项

  • 使用\pyramid{<values>}逗号分隔值, 并按降序排序。

  • 设置颜色barcolorbarborderxcolor

  • 更改x=0.25cm为垂直缩放图像。

  • 更改\newcommand{\barheight}{0.5cm}设置条形的高度。

  • 您可能需要在节点中添加这样的字体设置

    \node at (...) [left,font=\small] {\b};
    
  • 也可以将数字排列在一起。

    \newcommand{\Pyramid}[1]{%
       \begin{tikzpicture}[x=0.25cm]
        \foreach \b [count=\n] in {#1} {
                    % Store the first value in the list
            \ifnum\n=1\relax\xdef\firstbarwidth{\b}\fi
            \draw [barborder,fill=barcolor]
                (-0.5*\b,{(\n-1)*\barheight}) rectangle (0.5*\b,\n*\barheight);
            \node at (-0.5*\firstbarwidth,\n*\barheight-0.5*\barheight) [left] {\b};
        }
       \end{tikzpicture}
    }
    

    结果 2

    (我将宏名改为\Pyramid,大写P,以便您可以在一个文档中比较它们。)

答案2

极简主义的非 TikZ 解决方案,带有一点颜色和阴影。调整以适应口味。

在此处输入图片描述

\documentclass{article}
\usepackage{xcolor}
\newcounter{ctr}
\newcounter{ctra}
\setcounter{ctra}{7}
\newlength\rwidth
\setlength\rwidth{50pt}
\fboxsep0pt
\fboxrule0pt
\begin{document}
\begin{center}
\loop
\ifnum\thectr<4
\fbox{\thectra}\colorbox{gray}{\color{olive}\rule{\the\rwidth}{30pt} }\\[-1.0pt]
\stepcounter{ctr}
\addtocounter{ctra}{7}
  \setlength\rwidth{\dimexpr\the\rwidth+30pt\relax}
\repeat
\end{center}
\end{document}

相关内容