# Template Element Composition 变更提案 ## Why 当前模板系统是"全有或全无"的:幻灯片要么使用模板(template),要么完全自定义(elements),无法同时使用两者。这导致多个模板中需要重复定义相同的头部 logo、标题栏、底部页码等元素。当需要修改这些共享元素时,必须同步更新多个模板文件,维护成本高且容易遗漏。 例如在 `complex_presentation.yaml` 中,`title-slide`、`content-slide` 和 `two-column-slide` 都各自定义了右上角的 5G logo,位置完全相同但需要重复编写。 ## What Changes - 支持幻灯片同时使用 `template` 和 `elements` 字段,实现模板与自定义元素的混合模式 - 自定义元素能够访问模板中定义的变量,实现主题色、布局参数的统一控制 - 元素合并采用简单追加策略:模板元素在前,自定义元素在后(z轴顺序) - 完全向后兼容:不写 `elements` 时行为与之前完全一致 ## Capabilities ### Modified Capabilities - `template-system`: 新增"模板与自定义元素混合使用"需求,修改现有"系统必须支持自定义幻灯片"需求,允许 `template` 和 `elements` 同时存在 ## Impact ### 受影响的代码 - `core/template.py` - Template.render() 方法需要调整,可能新增 merge_elements() 方法 - `loaders/yaml_loader.py` - 幻灯片解析逻辑需要处理混合模式 - `core/presentation.py` (或其他处理幻灯片的模块) - 调用模板渲染的流程需要修改 ### 受影响的文档 - `README.md` - 新增"混合模式模板"使用说明和示例 - `README_DEV.md` - 更新开发文档,说明元素合并策略 ### 向后兼容性 - 完全兼容:只使用 template、只使用 elements、两者都不用的现有用法保持不变 - 新功能为增量增强,不破坏任何现有用法