适配 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。
This commit is contained in:
BIN
Binary file not shown.
@@ -205,20 +205,38 @@
|
||||
{\def\insertpart{{\beameroucslide@partformatspacingb{LetterSpace=15.0}\beameroucslide@partformatcaps{\beameroucslide@partformatspacinga[120]{\expandafter\hyperlink\partlink}}}}}%
|
||||
{}%
|
||||
{\PackageError{beameroucslide}{Patching original part failed}\@ehc}
|
||||
\patchcmd{\beamer@@frametitle}
|
||||
{{%
|
||||
\gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space%
|
||||
\usebeamertemplate*{frametitle continuation}\fi}}%
|
||||
\gdef\beamer@frametitle{#2}%
|
||||
\gdef\beamer@shortframetitle{#1}%
|
||||
}}
|
||||
{{%
|
||||
\gdef\insertframetitle{{\beameroucslide@frametitleformatcaps{#2}\ifnum%
|
||||
\beamer@autobreakcount>0\relax{}\space%
|
||||
\usebeamertemplate*{frametitle continuation}\fi}}%
|
||||
\gdef\beamer@frametitle{#2}%
|
||||
\gdef\beamer@shortframetitle{#1}%
|
||||
}}
|
||||
{}
|
||||
{\PackageError{beameroucslide}{Patching original frame title failed}\@ehc}
|
||||
% beamer 3.69(TeX Live 2023)起 \beamer@@frametitle 的定义发生了变化:
|
||||
% 1. 内部增加了 \ifblank 判断;
|
||||
% 2. 用 \beamer@insertframetitlecontinuation 取代了 \usebeamertemplate*{frametitle continuation}。
|
||||
% 因此这里按 beamer 版本分别处理,保证在 TeX Live 2022 与 2023 下都能编译通过。
|
||||
\@ifundefined{beamer@insertframetitlecontinuation}
|
||||
{% 旧版 beamer(TeX Live 2022 及以前):沿用原有的补丁方式
|
||||
\patchcmd{\beamer@@frametitle}
|
||||
{{%
|
||||
\gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space%
|
||||
\usebeamertemplate*{frametitle continuation}\fi}}%
|
||||
\gdef\beamer@frametitle{#2}%
|
||||
\gdef\beamer@shortframetitle{#1}%
|
||||
}}
|
||||
{{%
|
||||
\gdef\insertframetitle{{\beameroucslide@frametitleformatcaps{#2}\ifnum%
|
||||
\beamer@autobreakcount>0\relax{}\space%
|
||||
\usebeamertemplate*{frametitle continuation}\fi}}%
|
||||
\gdef\beamer@frametitle{#2}%
|
||||
\gdef\beamer@shortframetitle{#1}%
|
||||
}}
|
||||
{}
|
||||
{\PackageError{beameroucslide}{Patching original frame title failed}\@ehc}%
|
||||
}
|
||||
{% 新版 beamer(TeX Live 2023 及以后):按新定义重写,并加入标题格式控制
|
||||
\long\def\beamer@@frametitle[#1]#2{%
|
||||
\ifblank{#2}{}{%
|
||||
\gdef\insertframetitle{{\beameroucslide@frametitleformatcaps{#2}%
|
||||
\ifnum\beamer@autobreakcount>0\relax{}\space%
|
||||
\beamer@insertframetitlecontinuation\fi}}%
|
||||
\gdef\beamer@frametitle{#2}%
|
||||
\gdef\beamer@shortframetitle{#1}%
|
||||
}%
|
||||
}%
|
||||
}
|
||||
\makeatother
|
||||
|
||||
Reference in New Issue
Block a user