在 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}
但你却必须忍受这个虚假警告。