diff --git a/figs/fig16.png b/figs/fig16.png index 171f5c0..6130bda 100644 Binary files a/figs/fig16.png and b/figs/fig16.png differ diff --git a/slides.pdf b/slides.pdf index 737b6e8..e5da8f8 100644 Binary files a/slides.pdf and b/slides.pdf differ diff --git a/theme/beamerinnerthemeOUCSlide.sty b/theme/beamerinnerthemeOUCSlide.sty index 889bd3e..cf3cf73 100644 --- a/theme/beamerinnerthemeOUCSlide.sty +++ b/theme/beamerinnerthemeOUCSlide.sty @@ -564,17 +564,37 @@ %% ================== 8. 金字塔 ================== %% \flatpyramid[颜色列表]{顶层, 第二层, ...} (按书写顺序自上而下) +%% +%% 说明:这里**不用** tikz 的 trapezium 形状。原因是它在给定 minimum width +%% 时会同时撑开上边和下边,结果上下边等宽、整体平移 —— 画出来是「平行四边形」 +%% 而不是梯形。改为用显式坐标自绘:每一层的上/下宽度沿同一条斜线连续变化, +%% 因此整体是一个真正的金字塔。 \NewDocumentCommand \flatpyramid { O{oucblue} m }{{% - \flcheckitems{#2}\flcolcount{#1}% - \begin{tikzpicture} + \flcheckitems{#2}\flcolcount{#1}\flcount{#2}% + \begin{tikzpicture}[x=1cm, y=1cm] + %% ---- 形状参数(要改金字塔的胖瘦/高矮,只动这三个数)---- + \pgfmathsetmacro{\flpw}{0.75} % 顶层上边的「半宽」(cm);越大顶越平 + \pgfmathsetmacro{\flbw}{3.30} % 底层下边的「半宽」(cm);越大底越宽 + \pgfmathsetmacro{\fllyh}{0.55} % 每层高度 (cm) + \pgfmathsetmacro{\flgapy}{0.035}% 层间空隙 (cm),让各层分得清 + %% ---------------------------------------------------- + \pgfmathsetmacro{\flH}{\flcntval*\fllyh} \foreach \flx [count=\fli] in {#2} { \flpick{#1}{\fli}% - \pgfmathsetlengthmacro{\flw}{(1.6+(\fli-1)*1.6)*1cm} - \pgfmathsetlengthmacro{\flyy}{-(\fli-1)*15.5pt} - \node[trapezium, trapezium left angle=76, trapezium right angle=104, - draw=none, fill=\flcur, text=white, align=center, - inner sep=1pt, minimum height=15pt, minimum width=\flw] - at (0,\flyy) {\flx}; + \pgfmathsetmacro{\flt}{(\fli-1)*\fllyh} % 该层上沿相对高度 + \pgfmathsetmacro{\flb}{\fli*\fllyh} % 该层下沿相对高度 + %% 半宽沿斜线线性变化:顶端 \flpw → 底端 \flbw + \pgfmathsetmacro{\flwt}{\flpw+(\flbw-\flpw)*(\flt/\flH)} + \pgfmathsetmacro{\flwb}{\flpw+(\flbw-\flpw)*(\flb/\flH)} + \pgfmathsetmacro{\flya}{-\flt} % 上沿 y(向下为负) + \pgfmathsetmacro{\flyb}{-\flb+\flgapy} % 下沿 y(留出空隙) + %% 真正的梯形:上边窄、下边宽 + \fill[\flcur] + (-\flwt,\flya) -- (\flwt,\flya) + -- (\flwb,\flyb) -- (-\flwb,\flyb) -- cycle; + \pgfmathsetmacro{\flmid}{(\flya+\flyb)/2} + \node[text=white, font=\footnotesize, inner sep=1pt, align=center] + at (0,\flmid) {\flx}; }% \end{tikzpicture}% }}