适配 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,7 +205,13 @@
|
|||||||
{\def\insertpart{{\beameroucslide@partformatspacingb{LetterSpace=15.0}\beameroucslide@partformatcaps{\beameroucslide@partformatspacinga[120]{\expandafter\hyperlink\partlink}}}}}%
|
{\def\insertpart{{\beameroucslide@partformatspacingb{LetterSpace=15.0}\beameroucslide@partformatcaps{\beameroucslide@partformatspacinga[120]{\expandafter\hyperlink\partlink}}}}}%
|
||||||
{}%
|
{}%
|
||||||
{\PackageError{beameroucslide}{Patching original part failed}\@ehc}
|
{\PackageError{beameroucslide}{Patching original part failed}\@ehc}
|
||||||
\patchcmd{\beamer@@frametitle}
|
% 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%
|
\gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space%
|
||||||
\usebeamertemplate*{frametitle continuation}\fi}}%
|
\usebeamertemplate*{frametitle continuation}\fi}}%
|
||||||
@@ -220,5 +226,17 @@
|
|||||||
\gdef\beamer@shortframetitle{#1}%
|
\gdef\beamer@shortframetitle{#1}%
|
||||||
}}
|
}}
|
||||||
{}
|
{}
|
||||||
{\PackageError{beameroucslide}{Patching original frame title failed}\@ehc}
|
{\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
|
\makeatother
|
||||||
|
|||||||
Reference in New Issue
Block a user