Commit Graph
48 Commits
Author SHA1 Message Date
laoyang a95ca1abfc 合并 2026 分支:金字塔改为真正的梯形(修复平行四边形问题) 2026-10-13 15:34:27 +08:00
laoyang 2a5b05fdf2 修复金字塔组件:画出来是平行四边形,改为真正的梯形金字塔
问题(用户反馈):\flatpyramid 显示成「平行四边形」而不是梯形。

根因:tikz 的 trapezium 形状在给定 minimum width 时,会同时把上边和下边
撑到同一宽度,整体只是平移 —— 于是上下边等宽,就是一个平行四边形。
实测顶层顶点:上边宽 60.2pt、下边宽 60.2pt(完全相等)。

修复:不再使用 trapezium 形状,改为按显式坐标自绘梯形。
每一层的上边宽 = 上一层下边宽(斜边连续),各层中心对齐。
实测修复后(TeX Live 2026):
  层   上边宽   下边宽
  ①    42.5     78.7
  ②    78.7    114.8
  ③   114.8    150.9
  ④   150.9    187.1
形状参数已提到代码顶部并加注释(\flpw 顶半宽 / \flbw 底半宽 / \fllyh 层高),
需要调整金字塔胖瘦或高矮时改这三个值即可。

已验证:TeX Live 2026 下 0 错误 0 溢出;跨版本渲染逐像素一致。
2026-10-13 15:34:04 +08:00
laoyang 08afe5b644 修复金字塔组件:画出来是平行四边形,改为真正的梯形金字塔
问题(用户反馈):\flatpyramid 显示成「平行四边形」而不是梯形。

根因:tikz 的 trapezium 形状在给定 minimum width 时,会同时把上边和下边
撑到同一宽度,整体只是平移 —— 于是上下边等宽,就是一个平行四边形。
实测顶层顶点:上边宽 60.2pt、下边宽 60.2pt(完全相等),整体平移 3.7pt。

修复:不再使用 trapezium 形状,改为按显式坐标自绘梯形。
每一层的上边宽 = 上一层下边宽(斜边连续),各层中心对齐。
实测修复后(TL2026):
  层   上边宽   下边宽
  ①    42.5     78.7
  ②    78.7    114.8
  ③   114.8    150.9
  ④   150.9    187.1

形状参数已提到代码顶部并加注释(\flpw 顶半宽 / \flbw 底半宽 / \fllyh 层高),
需要调整胖瘦或高矮时改这三个值即可。figs/fig16.png 一并更新(含金字塔)。

已验证:0 错误 0 溢出;跨版本渲染逐像素一致。
2026-10-13 15:28:37 +08:00
laoyang 23c3aea510 合并 2026 分支:扁平简约图示组件(9 个纯 TikZ 元素) 2026-10-13 15:13:10 +08:00
laoyang 46ecc7efbf 同步「扁平简约图示组件」到本分支,并在 TeX Live 2026 下重新编译
内容与 main 一致(详见 main 上的提交说明):
- theme/beamerinnerthemeOUCSlide.sty 新增 9 个纯 TikZ 扁平图示组件
  (latflow latstack latcycle lathub latsteps
    lattime latquad latpyramid latcompare),
  颜色列表写在方括号里,支持多色循环取色,并有误用花括号的明确报错。
- slides.tex 新增 5 页演示;README 新增「图示组件(扁平风格)」一节 + figs/fig16.png。
- 设计基调为圆角色块 + 实心纯色 + 白字 + 细箭头,无渐变、无阴影、无立体。

本分支已用 TeX Live 2026 连编三遍验证:0 错误、0 溢出。
2026-10-13 15:12:07 +08:00
laoyang e60e1d768b 新增「扁平简约图示组件」:9 个纯 TikZ 绘图元素
设计基调:圆角色块 + 实心纯色 + 白字 + 细箭头。
**无渐变、无阴影、无立体**(已量化验证:PDF 中 shading 对象数为 0)。
不依赖 smartdiagram 等外部绘图宏包,全部用 TikZ 自绘。

九个组件(颜色列表写在方括号里,可写一个或多个):
  \flatflow[颜色]{条目1, 条目2, ...}          横向箭头流程,自动等分满宽
  \flatstack[颜色]{...}                       纵向流程
  \flatcycle[颜色]{...}                       循环图(弧线箭头)
  \flathub[颜色]{中心}{环绕1, 环绕2, ...}      中心辐射
  \flatsteps[颜色]{...}                       阶梯递进
  \flattime[颜色]{年份列表}{事件列表}           时间轴(上下交替)
  \flatquad[颜色]{左上}{右上}{左下}{右下}       四象限
  \flatpyramid[颜色]{顶层, ..., 底层}          金字塔
  \flatcompare[左色][右色]{左标题}{左内容}{右标题}{右内容}   左右对比

颜色支持列表循环:\flatflow[oucblue,oucred]{...} 两个块不同色;
\flatflow[oucred,oucblue]{六个块} 则按红蓝红蓝循环取色。

防错:颜色是可选参数,若误写成花括号,会报
「图示组件的颜色要写在方括号里」的明确错误(不会静默出错)。

实现中踩到的三个本机 expl3/pgf 坑(均已写进代码注释):
 - 长度做乘除一律用 \pgfmathsetlength,且表达式里只能是「长度」或「纯数字」,
   绝不能出现计数器(否则静默算成 0pt)。
 - \foreach 每轮迭代会开组,内层 \def 出组即失效,需用 \global\def。
 - \ifstrequal 在本机恒为假,字符串比较必须用 \ifx。

另修正一处定义顺序问题:组件必须放在 \ExplSyntaxOff 之后,
否则 `@` 不是字母类别,\fl@... / fl@i@... 这类名字会被解析错。

已验证:TL2022~2026 全部 0 错误 0 溢出;跨版本渲染逐像素一致;
slides.tex 新增 5 页演示,README 新增「图示组件(扁平风格)」一节。
2026-10-13 15:06:04 +08:00
laoyang 5532dd2fc7 合并 2026 分支:新增苍松绿/暮山紫/琥珀橙三色,并同步要点框自动排布 2026-10-13 08:47:44 +08:00
laoyang f6f673169d 新增三个深色颜色(苍松绿 / 暮山紫 / 琥珀橙)并同步要点框自动排布
一、新增颜色(放在 beamercolorthemeOUCSlide.sty)
  oucpine   苍松绿  RGB(30, 86, 64)    白字对比度 8.54
  oucdusk   暮山紫  RGB(92, 58, 118)   白字对比度 9.04
  oucamber  琥珀橙  RGB(196, 82, 16)   白字对比度 4.60
三个都是较深的颜色,与白色文字有足够对比度(WCAG >= 4.5),
可直接作色块底色;各自同样带 10 个色阶(如 oucpine10 ~ oucpine90)。
命名取自中文传统色:「苍松」「暮山紫」「琥珀」。
琥珀橙是高饱和深橘,与低饱和的暗褐「文脉棕」在饱和度上明显区分(0.98 vs 0.61)。

二、要点框自动排布 pointboxgrid(此前仅在 main 上,现同步到本分支)
每行最多 4 个,超过则均匀分成多行(5→3+2;6→3+3;7→4+3;8→4+4;9→3+3+3…),
用法见 README 的「要点框自动排布」一节。

三、验证
本分支已用 TeX Live 2026 重新编译验证:0 错误、0 溢出;
颜色样例页与要点框排布页均正常,三个新颜色在 PDF 中实际生效。
2026-10-13 08:46:29 +08:00
laoyang e38b39310f 新增要点框自动排布环境 pointboxgrid(每行最多 4 个)
把任意多个要点自动排成网格,规则:行数 = ceil(N/4),尽量均匀且上行不少于下行
(1~4 一行;5→3+2;6→3+3;7→4+3;8→4+4;9→3+3+3;10→4+3+3;11→4+4+3;12→4+4+4)。

用法:
  \begin{pointboxgrid}{高度}
    \pointitem{标题}{颜色}{内容}
    ...
  \end{pointboxgrid}
另提供 \pointboxsetup{每行最多几个}{横向间距}{纵向间距}(默认 4 / 8pt / 6pt)。

实现要点(本机 expl3 的坑,已在代码注释中说明):
 - 比较一律用 \ifnum:\int_compare:nNnT 在本机 TeX Live 下会把所有 ##1
   都判成“小于等于”,导致行内个数分配失效。
 - 列宽走 \fp_eval:n + \dim_to_fp:n:expl3 的维度乘法(*)在此环境下静默算出 0pt。
 - 要点内容存进带索引的宏、再用 \tl_use:c 取用,避开不可靠的 \exp_after:wN 展开。
 - 必须 \begin{columns}[onlytextwidth],否则默认 columns 的左右边距会让 4 列各溢出约 10pt。

另外:总高超过正文可用高度时给出 oucslide Warning
(总高 ≈ 69 + 行数×高度 + (行数−1)×25 pt;正文可用高度取 243pt)。

已验证:1~12 个排布全部符合规则;TL2022/2023/2024/2025/2026 均 0 错误 0 溢出;
原有内容不受影响(纯新增 174 行)。
2026-10-13 08:32:02 +08:00
laoyang b200e44687 合并 2026 分支:修复目录页圆形序号在圈内偏上的问题(main 指向最新年份分支) 2026-10-12 17:32:04 +08:00
laoyang 2c15d8a2d2 修复目录页圆形序号在圈内偏上的问题,并在 TeX Live 2026 下重新编译
原因:徽标里用了 \strut,它把内容盒撑成「0.7 倍行距上高 + 0.3 倍行距下深」,
而数字没有下伸部,这段虚构的下深把数字整体推高,在圈里明显偏上
(实测偏上 1.7pt,大字号时可达 4pt)。去掉 \strut 后数字墨迹与圆心对齐。

顺带修正一个顺序错误:徽标直径原本在字号算出之前计算,读到的字号恒为 0,
导致圆圈大小与字号脱钩(永远退化到 1.15em)。现已移到字号之后计算。

圆的垂直位置不受影响。本分支已用 TeX Live 2026 重新编译验证:
0 错误、0 溢出、23 页,目录页 4 个跳转链接正常,徽标垂直偏差 ≤ 0.71pt。
2026-10-12 17:27:58 +08:00
laoyang 1a6b88cf47 合并 2026 分支:目录页自适应方框样式(main 始终指向最新年份分支) 2026-10-12 11:29:39 +08:00
laoyang c0ffa15682 目录页改为自适应方框样式,并在 TeX Live 2026 下编译验证
把每一个一级标题放进独立的方框,方框高度与字号随章节数目自动计算,
方框自动均分铺满整页;文字左对齐,左侧只留少量缩进。

新增 \settocstyle{box|solid|bar} 三种方框样式(未知值告警并回退 box),
新增 \toctheme{red|blue} 两种配色(默认海大红,与各章节标题页同色)。

本分支已用 TeX Live 2026 亲自编译验证:0 错误、0 溢出、23 页,
目录页 4 个跳转链接正常,且与本仓库其他分支渲染一致。
2026-10-12 11:29:20 +08:00
laoyang 9da5a6d75b README 增加“分支与编译器版本”说明
把仓库按 TeX Live 年份组织分支的约定写进 README:
分支名是哪一年,就表示该分支可用那一年的 TeX Live 直接编译通过。
新增内容包括各分支与 TeX Live / beamer 版本对应表、分支选择方法、
这样划分的原因(beamer 3.69 起 frametitle 内部宏变更导致补丁失效,
现已加入版本自动判别),以及后续新年份的维护约定。
2026-09-21 08:15:07 +08:00
laoyang 4242969f2e 用 TeX Live 2026 重新编译并验证:beamer 3.77 下无需改动源码即可通过
- XeTeX 3.141592653-2.6-0.999998 (TeX Live 2026),beamer 2026/01/22 v3.77
- xelatex 连续三遍编译,0 错误,输出 23 页
- 与 TL2025 构建做像素级比对:23/23 页完全一致
- 仅两条无害的 Courier 字体形状警告(TU/pcr),历代版本均存在
- TL2026 的 xdvipdfmx 亦正常跨页去重,PDF 为 2.4MB
2026-09-21 02:47:10 +08:00
laoyang 8d8ddabe31 用 TeX Live 2025 重新编译并验证:beamer 3.72 下无需改动源码即可通过
- XeTeX 3.141592653-2.6-0.999997 (TeX Live 2025),beamer 2025/02/04 v3.72
- xelatex 连续三遍编译,0 错误,输出 23 页
- 与 TL2024 构建做像素级比对:23/23 页完全一致
- 仅两条无害的 Courier 字体形状警告(TU/pcr),历代版本均存在
- 注:TL2025 的 xdvipdfmx 恢复了跨页图像去重,PDF 回到 2.4MB(TL2024 为 9.7MB)
2026-09-21 02:45:34 +08:00
laoyang e3f2384e99 用 TeX Live 2024 重新编译并验证:beamer 3.71 下无需改动源码即可通过 2026-09-20 10:35:03 +08:00
laoyang 4bdc1b83ab 修复 allcaps 选项因缺少 textcase 宏包而报未定义命令的问题
title/subtitle/part/frametitle 的 allcaps 选项都引用 \MakeTextUppercase,该命令由
textcase 宏包提供,而本模板并未加载它,因此选择 allcaps 时会报
Undefined control sequence(默认 regular 选项不受影响)。

现改为在 \MakeTextUppercase 未定义时退回到 LaTeX 内核的 \MakeUppercase
(新版内核的大小写转换语义与 textcase 一致),无需额外加载宏包。

验证(xelatex 两遍编译,23 页):
  默认选项 + TL2022 / TL2023 → 通过,0 错误
  全部 allcaps + TL2022 / TL2023 → 通过,0 错误
2026-09-20 07:15:40 +08:00
laoyang d69eeb3f11 修正上一步修复中的写法问题:版本判断移到文件顶层
上一步把 \patchcmd 嵌套在 \@ifundefined 的参数里,而 \patchcmd 的搜索串
会被用于定义上下文,嵌套后 #1/#2 令牌被改写,导致在 TeX Live 2022 下补丁
匹配失败(Patching original frame title failed)。

现改为顶层 \ifcsname beamer@insertframetitlecontinuation\endcsname
\else ... \fi 的结构,两个分支都在顶层:
  - 新版 beamer(TL2023):按新定义重写 \beamer@@frametitle;
  - 旧版 beamer(TL2022):保留原有 \patchcmd。

验证矩阵(xelatex 编译 slides.tex):
  2022 分支 + TL2022 : 通过,23 页,0 错误
  2022 分支 + TL2023 : 失败(Patching original frame title failed)——故需要 2023 分支
  2023 分支 + TL2022 : 通过,23 页,0 错误
  2023 分支 + TL2023 : 通过,23 页,0 错误
另做像素级回归:TL2023 下修正前后全部 23 页渲染与文本完全一致。
2026-09-20 07:00:21 +08:00
laoyang e4ba88242c 适配 TeX Live 2023:修复 beamer 3.69 下 frametitle 补丁失败的问题
beamer 3.69 起 \beamer@@frametitle 的定义发生变化:
1. 内部新增 \ifblank 判断;
2. 用 \beamer@insertframetitlecontinuation 取代了
   \usebeamertemplate*{frametitle continuation};
因此原有针对旧定义文本的 \patchcmd 匹配失败,报错
"Package beameroucslide Error: Patching original frame title failed"。

现按 beamer 版本分别处理:以 \beamer@insertframetitlecontinuation
是否存在作为版本判别依据,旧版仍走原有补丁路径,新版按新定义重写
并保留 frametitle 的字母大小写格式控制,从而同时兼容
TeX Live 2022 与 TeX Live 2023。已用 TeX Live 2023 用 xelatex
连续编译三遍通过(23 页),并更新编译产物 slides.pdf。
2026-09-20 06:44:11 +08:00
laoyang 999d801896 建立 2022 分支基线:本版本可在 TeX Live 2022 下编译通过 2026-09-20 06:40:40 +08:00
laoyang 4aaf14bc63 vcolorbox边框太细,在一些分辨率较低的显示器上无法显示,因此,调整为和其他的信息提示框相同。 2022-05-23 14:48:58 +08:00
laoyang 5710554e34 修改了一些说明中LaTex的描述。 2022-05-14 17:21:41 +08:00
laoyang c36d035ebf 修改了幻灯片首页标题。 2022-05-14 17:12:22 +08:00
laoyang 28ac9b2952 重新编译了新的PDF。 2022-05-14 17:09:46 +08:00
laoyang 64a629cb9d 修改了说明文件 2022-05-14 13:44:35 +08:00
laoyang 9b63f1b2bd 修改了说明文件中的错别字。 2022-05-14 13:38:35 +08:00
laoyang fbd40e3bdc 更改了说明文件中的文字 2022-05-14 13:34:36 +08:00
laoyang a4133efb57 说明文件中代码库增加了阿里云。 2022-05-13 17:40:23 +08:00
laoyang c0e263f304 修改所有链接在新窗口打开页面 2022-05-13 17:09:13 +08:00
laoyang cb79393f92 修改在新页面打开链接 2022-05-13 17:01:17 +08:00
laoyang 168deb2911 修改链接在新页面打开 2022-05-13 17:00:20 +08:00
laoyang e6ffce221c 修改了一个错别字。 2022-05-13 16:53:10 +08:00
laoyang 3fb345984c 修复了首页主标题和副标题在同一行的问题 2022-05-13 16:35:03 +08:00
laoyang e37418815c 增加了对headbox和textbox的说明 2022-05-13 11:11:18 +08:00
laoyang 67c91b55a5 增加了一些注释,删除了一些注释掉的代码 2022-05-13 11:02:11 +08:00
laoyang c734d7f512 更改背景图片为海大蓝标准色 2022-05-13 10:04:33 +08:00
laoyang 31078e73e0 新增标题框和文本框 2022-05-12 20:37:26 +08:00
laoyang 0644b11453 增加了一些示例图片 2022-05-12 17:46:52 +08:00
laoyang 6a64c75776 修改了说明文件。 2022-05-12 17:46:35 +08:00
laoyang bbc4a0f201 增加了一些示例图片 2022-05-12 16:52:37 +08:00
laoyang 0845b85205 增加了说明内容 2022-05-12 16:52:16 +08:00
laoyang 01215267ba 增加了frame标题和副标题的说明。 2022-05-12 16:29:05 +08:00
laoyang bcdfd29739 增加了git库的地址说明 2022-05-12 15:02:15 +08:00
laoyang 42140d9827 添加了编译好的PDF文件,供预览 2022-05-12 13:46:29 +08:00
laoyang fbf696ef5a 添加版权信息 2022-05-12 13:26:05 +08:00
laoyang 05607d8255 初始化 2022-05-12 12:58:31 +08:00
杨永全 bf99ef7b8f Initial commit 2022-05-12 04:56:24 +00:00