如何阻止 Beamer 加载 amssymb 和 amsfonts?

如何阻止 Beamer 加载 amssymb 和 amsfonts?

我想在演示文稿中使用该mathdesign包和字体。但是当使用charterbeamer

\usepackage[charter,cal=cmcal]{mathdesign}

我收到以下警告(原文如此!):

Package 'amssymb' shouldn't be used in conjonction with package mdbch
Package 'amsfonts' shouldn't be used in conjonction with package mdbch

我已经发现该beamer包对此负责,因为它会加载amssymbamsfonts。但它真的需要它们吗?处理这个问题的正确方法是什么,或者我应该忽略警告吗?

答案1

一个简单的 hack 如下

\RequirePackage{scrlfile}
\makeatletter
\AfterPackage{beamerbasemodes}{\beamer@amssymbfalse}
\makeatother
\documentclass{beamer}
\usefonttheme{professionalfonts}

\usepackage[charter,cal=cmcal]{mathdesign}
\renewcommand{\sfdefault}{\rmdefault}

\begin{document}
\begin{frame}
What will the font be? $\twoheadrightarrow$

\end{frame}
\end{document}

解释:beamerbasemodes将条件设置为真,然后beamerbasefonts加载,检查条件是否为真,如果是,则加载amssymb

然而应该noamssymb也是选项,因为包beamer中有beamerarticle。在我看来,不提供它是一个错误。条件的存在是为了使用它,但beamer没有,只是将它设置为 true。

答案2

我知道,这只是一个技巧,但你可以尝试一下

\expandafter\gdef\csname [email protected]\endcsname{9999/12/31}
\expandafter\gdef\csname [email protected]\endcsname{9999/12/31}

\documentclass{beamer}

\global\expandafter\let\csname [email protected]\endcsname\relax
\global\expandafter\let\csname [email protected]\endcsname\relax

\usepackage[charter,cal=cmcal]{mathdesign}

前两行让 latex 相信已经加载了包。接下来的两行只是防止mathdesign假设包已经加载。

相关内容