Considere a entrada
\documentclass{article}
\usepackage{fontspec}
\usepackage[french,main=american]{babel}
% \usepackage{fontspec}%%% Doesn't matter where you use fontspec
\begin{document}
Nothing.
\end{document}
Não importa qual das duas linhas incluindo o pacote fontspec está habilitada, o aviso
Package frenchb.ldf Warning: Add \usepackage{fontspec} to the
(frenchb.ldf) preamble of your document, on input line 5.
é impresso no log ao compilar com xelatex ou lualatex.
O arquivo de saída parece estar ok. O aviso é falso?
Versões:
- XeTeX 3.14159265-2.6-0.99996 (TeX Live 2016)
- LuaTeX versão 0.95.0 (TeX Live 2016)
- LaTeX2e <2017/01/01> patch nível 1
- Babel 2016/04/23 3.9r
- Fontspec 2017/01/24 v2.5d
Responder1
Isso é uma consequência das mudanças recentes fontspec
que pararam de carregar xunicode
por padrão. O código relevante em 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
A \ifBunicode
condicional é verdadeira quando o mecanismo usado é XeTeX ou LuaTeX; neste caso nada é feito se \DeclareUTFcharacter
estiver definido, assumindo que este meio fontspec
foi carregado. Este é o teste errado a ser feito, porque apenas verifica se xunicode
está carregado, não fontspec
. Como este pacote não o carrega mais, o teste retorna falso, então o aviso é emitido, porque você não está carregando luainputenc
, é claro.
Você pode usar o silence
pacote para se livrar desse aviso espúrio até que babel-french
seja atualizado para procurar, digamos, \setmainfont
.
Atualizar
Com babel-french
a versão 3.2g, lançada em 30/01/2017, o problema deve ser corrigido. Nas notas do .dtx
arquivo vemos
\changes{v3.2g}{2017/01/24}{fontspec defines TU encoding now and
no longer loads xunicode.sty. Test changed.}
isso mostra que os mantenedores já estavam cientes do problema. Agora o teste é
\ifFBunicode
\@ifpackageloaded{fontspec}{}%
{\@ifpackageloaded{luainputenc}{}%
{\PackageWarning{frenchb.ldf}%
{Add \protect\usepackage{fontspec} to the\MessageBreak
preamble of your document, reported}%
}%
}
\else
[...irrelevant part...]
\fi
então o carregamento de fontspec
é verificado especificamente.
No entanto, isso não permite (como era antes) carregar fontspec
depois do babel
.