francês: Adicione \usepackage{fontspec} ao preâmbulo do seu documento

francês: Adicione \usepackage{fontspec} ao preâmbulo do seu documento

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 fontspecque pararam de carregar xunicodepor 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 \ifBunicodecondicional é verdadeira quando o mecanismo usado é XeTeX ou LuaTeX; neste caso nada é feito se \DeclareUTFcharacterestiver definido, assumindo que este meio fontspecfoi carregado. Este é o teste errado a ser feito, porque apenas verifica se xunicodeestá 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 silencepacote para se livrar desse aviso espúrio até que babel-frenchseja atualizado para procurar, digamos, \setmainfont.


Atualizar

Com babel-frencha versão 3.2g, lançada em 30/01/2017, o problema deve ser corrigido. Nas notas do .dtxarquivo 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 fontspecdepois do babel.

informação relacionada