Da geht einiges durcheinander. Deshalb erlaube ich mir, ein wenig weiter auszuholen.
Grundsätzlich werden Dokumentsprachen über ein Sprachpaket umgeschaltet. Die Basisklassen von KOMA-Script überlassen die Sprache komplett einem solchen Paket. Einige KOMA-Script-Pakete und die Briefklasse scrlttr2
definieren darüber hinaus noch einige zusätzliche, sprachabhängige Begriffe. Außerdem bietet KOMA-Script mit \newcaptionname
, \providecaptionname
und \renewcaptionname
die Möglichkeit, solche Begriffe unabhängig vom verwendeten Sprachpaket komfortabel zu definieren. KOMA-Script-Klassen (und -Pakete) nehmen aber selbst keine Sprachumschaltungen vor.
Optionen, die per optionalem Argument von \documentclass
angegeben werden, werden von LaTeX selbst auch an die Pakete weitergereicht und sind damit keine reine Klassenoptionen, sondern globale Optionen. AFAIR steht das auch in den Abschnitten »Frühe oder späte Optionenwahl« in der KOMA-Script-Anleitung. (Hinweis: Nicht alle Pakete können global angegebene key=value-Optionen verarbeiten. Das betrifft beispielsweise babel
, das zwar ein global angegebenes ngerman
versteht, aber eventuell kein global angegebenes main=ngerman
.)
Die KOMA-Script-Klasse scrbook
reagiert also selbst nicht auf Option ngerman
. Einige Pakete (darunter babel
) reagieren aber darauf. Schon deshalb ist es nicht möglich, die Sprache per \KOMAoption
umzuschalten. Die Verwendung von \KOMAoption
und \KOMAoptions
ist ohnehin nur für key=value-Optionen von KOMA-Script möglich. Auch da ist es für einige Optionen explizit nicht erlaubt (beispielsweise muss version
immer bereits beim Laden der Klasse angegeben werden). Für veraltete KOMA-Script-Optionen und Kompatibilitätsoptionen ist die Verwendung von \KOMAoption
und \KOMAoptions
ebenfalls nicht möglich. Gibt man solche Optionen bei \documentclass
an, so erhält man eine entsprechende Warnung bzw. Information in der log
-Datei.
babel
reagiert auf global angegebene einfache Sprachoptionen wie ngerman
. Es bietet darüber hinaus Befehle, um auch später noch zwischen allen geladenen Sprachen umzuschalten. Dafür, welche Sprachen es lädt, ist entscheidend, welche Sprachoptionen als globale Optionen oder direkt beim Laden von babel
angegeben sind.
Das Paket siunitx
wiederum reagiert nicht direkt auf Option ngerman
. Es regiert aber auf die von einem Sprachpaket eingestellte Sprache, wobei es nur wenige Sprachen von Haus aus unterstützt (siehe Abschnitt »Localisation« in der siunitx
-Anleitung). Es gibt auch nur wenige Begriffe, die bei siunitx
wirklich sprachhängig sind. Für deren Änderung sei ggf. auf das von siunitx
verwendete Paket translator
und dessen Anweisung \translate
verwiesen.
Über die Sprache stellt siunitx
aber nur sehr wenig um. Andere Dinge wie das Zahlenformat, die eher in den Bereich der typografischen Gepflogenheiten gehören, werden von Option locale
bestimmt. Das ist jedoch kein Bug, sondern eine beabsichtige Trennung zwischen Sprache und Typografie. In Abschnitt 7.16 der siunitx
-Anleitung wird aber auch gezeigt, wie man hier ggf. eine automatische Verknüpfung zwischen der mit babel
(oder polyglossia
) eingestellten Sprache und locale
herstellen kann. Beispielsweise würde
\documentclass[paper=a4,ngerman]{scrbook}
\usepackage[main=ngerman,english]{babel}
\usepackage{siunitx}
\addto\extrasngerman{\sisetup{locale = DE}}
\addto\extrasenglish{\sisetup{locale = US}}
\begin{document}
Deutsch: \SIrange{15.3}{20.4}{\meter}
US-English: \selectlanguage{english}\SIrange{15.3}{20.4}{\meter}
\end{document}
zwei verschiedene Darstellung in Abhängigkeit der Sprache mit sich bringen. Verwendet man dagegen im ganzen Dokument nur eine Darstellung, ist es zweckmäßiger, diese direkt beim Laden des Pakets mit anzugeben:
\documentclass[paper=a4,ngerman]{scrbook}
\usepackage{babel}
\usepackage[locale=DE]{siunitx}
\begin{document}
Deutsch: \SI{15.3}{\meter}
\end{document}
Es sei außerdem noch darauf hingewiesen, dass die Angabe der Sprache bei \documentclass
ein zweischneidiges Schwert ist. Für viele Pakete funktioniert das. Einige Pakete kennen aber nicht alle Sprache, beispielsweise nur german
aber kein ngerman
. Bei denen muss man dann ggf. wieder die passende Option beim Laden angeben. Darüber hinaus, hat babel
ggf. Probleme bei der Festlegung der Hauptsprache, wenn man Sprachen sowohl bei \documentclass
als auch beim Laden von babel
selbst angibt. Im mehrsprachigen Beispiel habe ich daher oben die Hauptsprache sicherheitshalber zusätzlich direkt beim Laden von babel
angegeben. Paketautoren wird ohnehin empfohlen (wie beispielsweise biblatex
) die zu verwendende Spracheinstellung dem verwendeten Sprachpaket zu überlassen und nicht bereits beim Laden fest vorzugeben. Leider gibt es noch immer Pakete (wie nomencl
), die dazu nicht in der Lage sind. siunitx
verlässt sich bei der Sprachauswahl übrigens auf translator
, das die Basis-Sprache ebenfalls per Option benötigt. Auf Sprachumschaltungen mit babel
's \selectlanguage
reagiert es jedoch ebenfalls, wie das erste Beispiel zeigt.
Achja: Im von dir gezeigten Beispiel funktioniert die Sprachumschaltung übrigens einwandfrei. Als Überschrift für das Inhaltsverzeichnis korrekt »Inhaltsverzeichnis« ausgegeben. Wenn das bei dir nicht der Fall ist, dann ist babel-ngerman
nicht installiert. Allerdings müsste babel
dann auch eine entsprechende Meldung ausgeben.
beantwortet
03 Nov '20, 08:21
gast3
(ausgesetzt)
Akzeptiert-Rate:
53%
Kann es sein, dass das Beispiel das Problem gar nicht zeigt, also kein vollständiges Minimalbeispiel im eigentlichen Sinne ist?