sjtug/SJTUBeamer

SJTUBeamermin 第二阶段的合并进度

LogCreative opened this issue · 13 comments

第一阶段:#24

SJTUBeamermin 内部的重构

  • vishape 与 colordef 的合并 #26
  • vi 图形的自由着色

API 合并

  • API 的调配确认 #28
  • API 整合
  • 额外功能的开发

文档

  • 用户文档
  • 开发文档

API 更改(1.3)

描述 默认 备注
cover maxplus 庙门照片主题 标题页与结尾页按照4:3标准模板实现
max 庙门背景主题 d 按照16:9标准模板实现
min 印记矩阵主题 按照 VI 参考实现
color red 红色主题 d 主题色
blue 蓝色主题 学术色
lum light 亮色主题 主要影响标题页和结束页,与暗色进行前景/背景对调
dark 暗色主题 d 标题页与结束页的配色主要采用暗色
lang cn 中文 d
en 英文 logo选择英文版本
nav miniframes 节次进度 d
sidebar 侧栏 (暂不实现,下一版重点实现)
infoline 当前章节与页数

目标结构

+------------------------------------------------+
+                    main.tex                    +
+------------------------------------------------+
+                   sjtubeamer                   +
+------------------------------------------------+
+    color    +   inner   +   outer  +    font   + 
+             +-----------+          +           +
+             +   cover   +          +           +
+------------------------------------+-----------+
+             sjtuvi                 +
+------------------------------------+
+              logo                  +
+------------------------------------+

打算 outer 再分出一个 cover。inner 实现一些内部元素上的基础设施,cover 主要实现标题页和结束页。
这样更方便开发者向整个框架添加自己实现的标题页/结束页模板 促进开发

SJTUBeamermin 删除接口

  • cjkCJKutf8 已经过时,纵使其兼容性较好,但是特性上要比 ctex 差。Windows 系统仍可使用 pdflatex 编译(主要是 Windows 上这个更快一些),非 Windows 系统强制使用 xelatex 编译。如果想自行采用其它中文方案/其它语种方案,直接设定为 en,自行载入宏包。
  • gbt:bibtex 还是 biblatex,应当由用户自行决定,或者是该幻灯片没有引用就不必引入该类宏包。引用的相关用法可以在文档中展示。
  • pattern:作用已经没有那么明显,初衷是为了加速编译,现在可以采用 draft 草稿开关直接关闭,并在编写宏时设定相关条件。

可以进一步修改,多提点意见
比较纠结的还是 ctex 该不该放进 theme 定义里,但是如果不引用中文包的话,字体基本没法设 该版暂不实现

skyzh commented

ctex 我觉得可以放进去(

执行中

beamer 没用 l3 语法,我也不用了(反正我也不会)

skyzh commented

en | 英文 |   | 不载入中文宏包,logo选择英文版本

en 其实也可以载入 ctex 宏包,ctex 提供了很多好用的宏,可能在排版上会更方便一点?

主要是 ctex 会把 \today 翻译成 年月日figure 翻译成图之类
除非直接用底层 xeCJK😳

好像能关掉 当然跟只用底层没区别了

有道理 都用上吧

代码风格

  • 我个人比较倾向于键值对的方案 lang=en,也是 beamer 倾向的一种方案,可以用其内部机制引导(基于 keyval)。
  • 使用 bool 值,如果需要加强程序鲁棒性,就需要在同类中一个选项选择后,将其余选项置否,否则很有可能会设置失败。当然如果处理的好的话,这个可以让用户的输入变得相对方便一些。当然这种处理的好也会导致一定的扩展性下降。⚠️菜鸡代码警告↓
    image
  • 或者是二选一的用 bool,多选的用 kv,可能造成一定的输入接口不统一。(我觉得也不错?好像我觉得这个行🥺)
  • 或者是其他更好的方案。

我感觉宏包使用 beamer 内置的更好,因为可以在设定之后传递参数。kvoptions 不太能在设定之后传参。pgfoptsmtheme 用的方法。(我喜欢原生

  • 我觉得 font theme 可以暂时不做,用户可以根据自己的需要选用 beamer 类或 ctexbeamer 类;
  • kvoptions 也支持 bool 选项。
  • 我觉得 font theme 可以暂时不做,用户可以根据自己的需要选用 beamer 类或 ctexbeamer 类;

好的👌

  • kvoptions 也支持 bool 选项。

怎么传参呢 这个方面有一点顾虑,以前的话我是用偏beamer方法的

\DeclareOptionBeamer{lang}{
    \def\beamer@sjtubeamermin@lang{#1}
    \PassOptionsToPackage{lang=#1}{beamerouterthemesjtubeamermin}
    \PassOptionsToPackage{lang=#1}{beamerinnerthemesjtubeamermin}
}
\def\beamer@sjtubeamermin@langcn{cn}%
\def\beamer@sjtubeamermin@langen{en}%

image
就这个底层没暴露出来

要不然我还是直接第三种 二选一用bool,多选用键值

要不然我先用我的菜鸡代码搞一阵吧 Code Review 时候再讨论 毕竟现在接口不多🥺

kvoptions 还有一个 \DeclareStringOption

有道理 我试试