francés: agregue \usepackage{fontspec} al preámbulo de su documento

francés: agregue \usepackage{fontspec} al preámbulo de su documento

Considere la entrada

\documentclass{article}
\usepackage{fontspec}
\usepackage[french,main=american]{babel}
% \usepackage{fontspec}%%% Doesn't matter where you use fontspec
\begin{document}
Nothing.
\end{document}

No importa cuál de las dos líneas, incluido el paquete fontspec, esté habilitada, la advertencia

Package frenchb.ldf Warning: Add \usepackage{fontspec} to the 
(frenchb.ldf)                preamble of your document, on input line 5.

se imprime en el registro al compilar con xelatex o lualatex.

El archivo de salida parece estar bien. ¿Es falsa la advertencia?

Versiones:

  • XeTeX 3.14159265-2.6-0.99996 (TeX Live 2016)
  • LuaTeX Versión 0.95.0 (TeX Live 2016)
  • LaTeX2e <2017/01/01> nivel de parche 1
  • Babel 23/04/2016 3.9r
  • Fuentespec 2017/01/24 v2.5d

Respuesta1

Esto es consecuencia de los cambios recientes fontspecque dejaron de cargar xunicodede forma predeterminada. El código relevante en frenchb.ldfes

\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

El \ifBunicodecondicional es verdadero cuando el motor utilizado es XeTeX o LuaTeX; en este caso no se hace nada si \DeclareUTFcharacterestá definido, suponiendo que este medio fontspechaya sido cargado. Esta es la prueba incorrecta, porque solo verifica si xunicodeestá cargado, no fontspec. Como este paquete ya no lo carga, la prueba devuelve falso, por lo que se emite la advertencia, porque no estás cargando luainputenc, por supuesto.

Puede utilizar el silencepaquete para deshacerse de esta advertencia falsa hasta que babel-frenchse actualice para buscar, por ejemplo, \setmainfont.


Actualizar

Con babel-frenchla versión 3.2g, lanzada el 30/01/2017, el problema debería solucionarse. En las notas del .dtxexpediente vemos

\changes{v3.2g}{2017/01/24}{fontspec defines TU encoding now and
  no longer loads xunicode.sty. Test changed.}

eso muestra que los mantenedores ya estaban al tanto del problema. Ahora la prueba es

\ifFBunicode
  \@ifpackageloaded{fontspec}{}%
     {\@ifpackageloaded{luainputenc}{}%
         {\PackageWarning{frenchb.ldf}%
             {Add \protect\usepackage{fontspec} to the\MessageBreak
              preamble of your document, reported}%
         }%
     }
\else
[...irrelevant part...]
\fi

por lo que la carga de fontspecse verifica específicamente.

Sin embargo, esto no permite (como antes) cargar fontspecdespués de babel.

información relacionada