Рассмотрим входные данные
\documentclass{article}
\usepackage{fontspec}
\usepackage[french,main=american]{babel}
% \usepackage{fontspec}%%% Doesn't matter where you use fontspec
\begin{document}
Nothing.
\end{document}
Независимо от того, какая из двух строк, включая пакет fontspec, включена, предупреждение
Package frenchb.ldf Warning: Add \usepackage{fontspec} to the
(frenchb.ldf) preamble of your document, on input line 5.
выводится в журнал при компиляции с помощью xelatex или lualatex.
Выходной файл, кажется, в порядке. Предупреждение ложное?
Версии:
- XeTeX 3.14159265-2.6-0.99996 (TeX Live 2016)
- LuaTeX версии 0.95.0 (TeX Live 2016)
- LaTeX2e <2017/01/01> патч уровня 1
- Вавилон 2016/04/23 3.9r
- Шрифтспецификация 2017/01/24 v2.5d
решение1
Это следствие недавних изменений, fontspec
которые прекратили загрузку xunicode
по умолчанию. Соответствующий код frenchb.ldf
в
\ifFBunicode
\ifdefined\DeclareUTFcharacter
\else
\@ifpackageloaded{luainputenc}{}%
{\PackageWarning{frenchb.ldf}%
{Add \protect\usepackage{fontspec} to the\MessageBreak
preamble of your document,}%
}%
\fi
\else
[...irrelevant part...]
\fi
Условие \ifBunicode
истинно, когда используемый движок — XeTeX или LuaTeX; в этом случае ничего не делается, если \DeclareUTFcharacter
определено, предполагая, что это означает, fontspec
что было загружено. Это неправильный тест, потому что он просто проверяет, xunicode
загружено ли , а не fontspec
. Поскольку этот пакет больше его не загружает, тест возвращает false, поэтому выдается предупреждение, потому что вы не загружаете luainputenc
, конечно.
Вы можете использовать silence
пакет, чтобы избавиться от этого ложного предупреждения, пока babel-french
он не будет обновлен для поиска, скажем, \setmainfont
.
Обновлять
С babel-french
версией 3.2g, выпущенной 2017/01/30, проблема должна быть исправлена. В примечаниях файла .dtx
мы видим
\changes{v3.2g}{2017/01/24}{fontspec defines TU encoding now and
no longer loads xunicode.sty. Test changed.}
это показывает, что сопровождающие уже знали о проблеме. Теперь тест
\ifFBunicode
\@ifpackageloaded{fontspec}{}%
{\@ifpackageloaded{luainputenc}{}%
{\PackageWarning{frenchb.ldf}%
{Add \protect\usepackage{fontspec} to the\MessageBreak
preamble of your document, reported}%
}%
}
\else
[...irrelevant part...]
\fi
поэтому загрузка fontspec
проверяется специально.
Однако это не позволяет (как это было раньше) загружать файлы fontspec
после babel
.