Ich habe dieses Beispiel
\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}
Zusammengestellt mit lualatex
Ich erhalte diese Warnung
Paket Fontspec Warnung: Sprache „Englisch“ für Schriftart „Amiri“ nicht verfügbar
Was habe ich falsch gemacht? Oder was habe ich übersehen?
Antwort1
Das hat mich auch lange Zeit gestört. Folgendes ist los:
Dies sind die Skripts und Sprachen, die unterstützt werden vonAmiri:
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
Wenn Sie Arabisch mit laden, wird \babelprovide[import=ar-DZ, main]{arabic}
es babel
eingelesen babel-ar-DZ.ini
.
In dieser Datei finden Sie (unter anderem):
tag.opentype = ARA
script.tag.opentype = arab
Wenn also Algerisches Arabisch die verwendete Sprache ist, babel
wird geladenAmirimit arab.ARA
Schrift und Sprache. Das ist in der Schriftart vorhanden, also ist alles gut.
Enthält aber babel-en.ini
Folgendes:
tag.opentype = ENG
script.tag.opentype = latn
Wenn also Englisch verwendet wird, babel
wird versucht,Amirimit latn.ENG
Schrift und Sprache. Allerdings existiert diese Kombination nicht im Font, daher erfolgt eine Warnung durch babel
:
Language 'English' not available for font 'Amiri' with script 'Latin'.
Jetzt müssen wir nur noch angeben, dass with für Englisch babel
verwendet werden soll , während wir weiterhin with für Algerisches Arabisch verwenden .Language=Default
Script=Latin
Language=Arabic
Script=Arabic
Entfernen Sie es hierzu english
aus den Hauptoptionen babel
und laden Sie es stattdessen folgendermaßen:
\babelprovide[import,language=Default]{english}
Notiz: babel
verwendet language
mit einem Kleinbuchstaben l
, im Gegensatz zu dem, das ! fontspec
verwendet .Language
babel
wird jetzt geladenAmirimit unterstützten Optionen für englischen Text und es wird keine Warnung ausgegeben.
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}
Antwort2
Sie können die Sprache als Standard festlegen:
\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}
Antwort3
Erstens können Sie diese Warnung ignorieren. Sie ist harmlos. (Ich stimme jedoch zu, dass es eine gute Praxis ist, bedeutungslose Warnungen zu unterdrücken, damit Sie keine bedeutungsvollen übersehen.)
Die Antwort von David Purton ist sehr elegant, aber es gibt eine Situation, in der Sie möglicherweise etwas Komplexeres benötigen: Wenn Sie verschiedene Schriftarten für dieselbe Sprache laden, die unterschiedliche Optionen erfordern. Beispielsweise \babelfont[chinese-traditional]{rm}
könnte a stattdessen Language=Chinese Traditional
und a \babelfont[chinese-traditional]{sf}
unterstützen CJKShape = Traditional
. Kurz gesagt: Einige arabische Schriftarten (einschließlich Noto Sans Arabic) unterstützen nicht Language=Arabic
.
In diesem Fall müssen Sie fontspec
dem \babelfont
Befehl andere Optionen übergeben:
\babelfont{rm}[Scale=1.0]{Amiri}
\babelfont[english]{rm}[Language=Default]{Amiri}
Eine großartige mehrsprachige Begleitschriftart für Khaled Hosnys Amiri ist jedoch eine andere seiner Schriftfamilien, Libertinus. Er hat Libertinus Serif auf Linux Libertine und Libertinus Sans auf Linux Biolinum aufgebaut. Ich überlasse ihm die Inspiration für die lateinischen Buchstaben in Amiri, aber sie ähneln einander sehr. Es gibt auch eine mathematische Schriftart, die Sie mit auswählen können unicode-math
.
Wenn Sie alle Schriftfunktionen dieser Schriftarten aktivieren möchten, können Sie Folgendes versuchen:
\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}
realscripts
Sie können die OpenType-Funktion für hochgestellte Zeichen mit dem Paket verwenden .
Beachten Sie, dass Babel 3.27 und darunter aufgrund eines Fehlers \defaultfontfeatures
in ignoriert \babelfont
. Ich habe den Fehler hier umgangen, aber ein Fix ist auf dem Weg in den Release-Baum.
beamer
Da standardmäßig serifenlose Schriftarten verwendet werden, müssen Sie an dieser Stelle definieren \babelfont[arabic]{sf}
. Sie können entweder die Zeilen für kopieren babelfont[arabic]{rm}
oder eine serifenlose arabische Schriftart laden, z. B.:
\babelfont[arabic]{sf}[Scale=MatchLowercase,
Ligatures=Discretionary,
Language=Default
]{Noto Sans Arabic}
Antwort4
Im Gegenteil, es ist nichts Schlimmes. Diese Warnungen werden von angezeigt fontspec
, nicht von babel
. Sie könnten für Englisch irrelevant sein, aber nicht für viele andere Sprachen, einschließlich Arabisch. Um sie ganz zu entfernen (sie sind nur wirklich nützlich, wenn das Dokumentformat eingerichtet wird), können Sie die silent
Option an übergeben fontspec
:
\usepackage[english,nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\PassOptionsToPackage{silent}{fontspec}
\babelfont{rm}{Amiri}
\babelfont{sf}{Amiri}
Oder auch:
\usepackage[english,nil,bidi=basic-r]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\usepackage[silent]{fontspec}
\babelfont{rm}{Amiri}
\babelfont{sf}{Amiri}
Bearbeiten.Eine dritte Möglichkeit besteht darin, es silent
als Klassenoption zu übergeben.