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 fontspec
que dejaron de cargar xunicode
de forma predeterminada. El código relevante en frenchb.ldf
es
\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 \ifBunicode
condicional es verdadero cuando el motor utilizado es XeTeX o LuaTeX; en este caso no se hace nada si \DeclareUTFcharacter
está definido, suponiendo que este medio fontspec
haya sido cargado. Esta es la prueba incorrecta, porque solo verifica si xunicode
está 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 silence
paquete para deshacerse de esta advertencia falsa hasta que babel-french
se actualice para buscar, por ejemplo, \setmainfont
.
Actualizar
Con babel-french
la versión 3.2g, lanzada el 30/01/2017, el problema debería solucionarse. En las notas del .dtx
expediente 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 fontspec
se verifica específicamente.
Sin embargo, esto no permite (como antes) cargar fontspec
después de babel
.