Beamer:软件包 iflang 警告:\language(模式)(iflang)与 \languagename 设置不匹配

Beamer:软件包 iflang 警告:\language(模式)(iflang)与 \languagename 设置不匹配

在 beamer 演示文稿中加载 iflang 包时,我收到警告 软件包 iflang 警告:\language(模式)(iflang)与 \languagename 设置不匹配

\documentclass{beamer}
\usepackage[english]{babel}
\usepackage{iflang}

\begin{document}
    content...
\end{document}

无论我是否加载 babel 包或将语言作为类选项传递,都会出现此警告。

如果我将文档类别从 beamer 更改为 article,我会不是无论我是否加载 babel 包或将语言作为类选项传递,都会收到此警告。

A问题关于这个警告的问题之前已经有人问过,但是在 article 类的上下文中(我没有收到这个警告),而不是在 pdflatex 的上下文中(因为使用了 polyglossia 包)。我尝试了三种方法回答但我无法避开其中任何一个的警告。

beamer 文档第 2.6 节与其他包和类的兼容性不是提到 iflang 包。

我正在使用 beamer 2013/12/02 3.33 和 pdfTeX,版本 3.14159265-2.6-1.40.15(TeX Live 2015/dev/Debian)(预加载格式=pdflatex 2017.4.22)。

此警告会造成任何危害吗?如何使用 beamer 类来避免此问题?

答案1

这是 中的一个错误iflang,它依赖于\uselanguage定义来区分基于language.dat(本质上是基于各种引擎相关的风格的 LaTeX)或etex.src(本质上是基于纯 TeX 的格式)的格式。

如果\uselanguage定义了,iflang则假定后一种格式。但是,beamer 定义\uselanguage,因此包执行的最终测试失败,并且很可能其他测试也失败。

我做了一个测试,将iflang.sty(v. 1.6,发布于 2016/05/16)的第 196 行从

\expandafter\ifx\csname uselanguage\endcsname\relax

进入

\expandafter\ifx\csname et@xpatterns\endcsname\relax

测试按预期进行。该宏\et@xpatterns很可能仅在 中定义etex.src

作为一种(希望是暂时的)解决方法,您可以手动修复错误的设置:

\documentclass{beamer}
\usepackage[english]{babel}
\usepackage{iflang}

\makeatletter
\def\IfLang@prefix{l@}
\makeatother

\begin{document}
    content...
\end{document}

但你却必须忍受这个虚假警告。

相关内容