tengo este ejemplo
\documentclass[hyperref=unicode]{beamer}
\usepackage[english,nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\babelfont{rm}{Amiri}
\babelfont{sf}{Amiri}
\begin{document}
\begin{frame}{}
\today
\end{frame}
\begin{frame}{}
\selectlanguage{english}
\today
\end{frame}
\end{document}
Compilado con lualatex
obtengo esta advertencia
Advertencia de especificación de fuente del paquete: idioma 'inglés' no disponible para la fuente 'Amiri'
¿Qué he hecho mal? o lo que me he perdido?
Respuesta1
Esto también me molestó durante mucho tiempo. Esto es lo que está pasando:
Estos son los scripts y lenguajes soportados porAmiri:
DFLT Default
arab Arabic
arab.ARA Arabic/Arabic
arab.KSH Arabic/Kashmiri
arab.SND Arabic/Sindhi
arab.URD Arabic/Urdu
latn Latin
latn.TRK Latin/Turkish
Cuando cargas árabe con \babelprovide[import=ar-DZ, main]{arabic}
luego babel
lees en babel-ar-DZ.ini
.
En este archivo encontrará (entre otras cosas):
tag.opentype = ARA
script.tag.opentype = arab
Entonces, cuando el árabe argelino sea el idioma en uso, babel
se cargaráAmiricon arab.ARA
escritura y lenguaje. Esto existe en la fuente, así que todo está bien.
Pero babel-en.ini
contiene esto:
tag.opentype = ENG
script.tag.opentype = latn
Entonces, cuando el inglés esté en uso, babel
intentaré cargarAmiricon latn.ENG
escritura y lenguaje. Excepto que esta combinación no existe en la fuente, por lo que se emite una advertencia babel
:
Language 'English' not available for font 'Amiri' with script 'Latin'.
Ahora todo lo que tenemos que hacer es indicar babel
que usemos Language=Default
with Script=Latin
para inglés mientras continuamos usando Language=Arabic
with Script=Arabic
para árabe argelino.
Para hacer esto, elimínelo english
de las babel
opciones principales y en su lugar cárguelo así:
\babelprovide[import,language=Default]{english}
Nota: babel
usa language
con minúscula l
en lugar de fontspec
cual usa Language
!
babel
ahora se cargaráAmiricon opciones compatibles para texto en inglés y no se emite ninguna advertencia.
MWE
\documentclass[hyperref=unicode]{beamer}
\usepackage[nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\babelprovide[import, language=Default]{english}
\babelfont{rm}{Amiri}
\babelfont{sf}{Amiri}
\begin{document}
\begin{frame}{}
\today
\end{frame}
\begin{frame}{}
\selectlanguage{english}
\today
\end{frame}
\end{document}
Respuesta2
Puede configurar el idioma por defecto:
\documentclass[hyperref=unicode]{beamer}
\usepackage[english,nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\babelfont{rm}[Language=Default]{Amiri}
\babelfont{sf}[Language=Default]{Amiri}
\begin{document}
\begin{frame}{}
\today
\end{frame}
\begin{frame}{}
\selectlanguage{english}
\today
\end{frame}
\end{document}
Respuesta3
Primero, puedes ignorar esta advertencia. Es inofensivo. (Sin embargo, estoy de acuerdo en que es una buena práctica suprimir las advertencias sin sentido para no pasar por alto las significativas).
La respuesta de David Purton es muy elegante, pero hay una situación en la que es posible que necesites algo más complejo: si estás cargando diferentes fuentes para el mismo idioma que requieren diferentes opciones. Por ejemplo, un \babelfont[chinese-traditional]{rm}
podría admitir Language=Chinese Traditional
y un \babelfont[chinese-traditional]{sf}
podría admitir CJKShape = Traditional
en su lugar. Más inmediatamente, algunas fuentes árabes (incluida Noto Sans Arabe) no son compatibles Language=Arabic
.
En este caso, debes pasar diferentes fontspec
opciones al \babelfont
comando:
\babelfont{rm}[Scale=1.0]{Amiri}
\babelfont[english]{rm}[Language=Default]{Amiri}
Sin embargo, una gran fuente multilingüe complementaria para Amiri de Khaled Hosny es otra de sus familias de fuentes, Libertinus. Basó Libertinus Serif en Linux Libertine y Libertinus Sans en Linux Biolinum. Le dejaré hablar sobre la inspiración de las letras latinas en Amiri, pero son muy similares. También hay una fuente matemática que puedes seleccionar con unicode-math
.
Si desea habilitar todas las funciones de fuente de estas fuentes, puede intentar lo siguiente:
\documentclass[hyperref=unicode]{beamer}
\usepackage[nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\babelprovide[import=en, language=Default]{english}
\babelfont{rm}[Scale=1.0,
Ligatures={Common, TeX},
UprightFeatures={Ligatures=Discretionary},
Numbers={OldStyle,Proportional}
]{Libertinus Serif}
\babelfont{sf}[Scale=MatchLowercase,
Ligatures=TeX,
UprightFeatures={Ligatures={Common, Discretionary}},
BoldFeatures={Ligatures=Common}
]{Libertinus Sans}
\babelfont[arabic]{rm}[Scale=MatchLowercase,
Ligatures={Common, TeX},
Contextuals={WordInitial,WordFinal,Inner}
]{Amiri}
Puede utilizar la función OpenType de superíndices con el realscripts
paquete.
Tenga en cuenta que, debido a un error, Babel 3.27 y versiones anteriores ignoran \defaultfontfeatures
los archivos \babelfont
. He solucionado el error aquí, pero se está implementando una solución en el árbol de lanzamiento.
En este punto, debido a que beamer
utiliza fuentes sans-serif de forma predeterminada, es necesario definir \babelfont[arabic]{sf}
. Puede copiar las líneas babelfont[arabic]{rm}
o cargar una fuente árabe sans-serif, por ejemplo:
\babelfont[arabic]{sf}[Scale=MatchLowercase,
Ligatures=Discretionary,
Language=Default
]{Noto Sans Arabic}
Respuesta4
No pasa nada, al contrario. Estas advertencias se muestran mediante fontspec
, no mediante babel
. Podrían ser irrelevantes para el inglés, pero no para muchos otros idiomas, incluido el árabe. Para eliminarlos por completo (sólo son realmente útiles cuando se está configurando el formato del documento), puede pasar la silent
opción a fontspec
:
\usepackage[english,nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\PassOptionsToPackage{silent}{fontspec}
\babelfont{rm}{Amiri}
\babelfont{sf}{Amiri}
O también:
\usepackage[english,nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\usepackage[silent]{fontspec}
\babelfont{rm}{Amiri}
\babelfont{sf}{Amiri}
Editar.Una tercera opción es pasar silent
como opción de clase.