Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 4
Näher auf translator eingegangen.

03 Nov '20, 15:00

gast3's gravatar image

gast3
(ausgesetzt)

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`](https://ctan.org/pkg/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]{scrbook} \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: \SI{15.3}{\meter} \SIrange{15.3}{20.4}{\meter} US-English: \selectlanguage{english}\SI{15.3}{\meter} \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 `siunitx` oder 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. sind. `siunitx` verlässt sich bei der Sprachauswahl übrigens auf [`translator`](https://ctan.org/pkg/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`](https://ctan.org/pkg/babel-ngerman) nicht installiert. Allerdings müsste `babel` dann auch eine entsprechende Meldung ausgeben.
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

03 Nov '20, 14:44

gast3's gravatar image

gast3
(ausgesetzt)

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`](https://ctan.org/pkg/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]{scrbook} \usepackage[main=ngerman,english]{babel} \usepackage{siunitx} \addto\extrasngerman{\sisetup{locale = DE}} \addto\extrasenglish{\sisetup{locale = US}} \begin{document} Deutsch: \SI{15.3}{\meter} US-English: \selectlanguage{english}\SI{15.3}{\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 direkt beim Laden von `babel` angegeben. Paketautoren wird ohnehin empfohlen (wie `siunitx` oder `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. 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`](https://ctan.org/pkg/babel-ngerman) nicht installiert. Allerdings müsste `babel` dann auch eine entsprechende Meldung ausgeben.
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

03 Nov '20, 08:23

gast3's gravatar image

gast3
(ausgesetzt)

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

03 Nov '20, 08:21

gast3's gravatar image

gast3
(ausgesetzt)

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×