Ich schreibe gerade ein ziemlich langes Dokument auf Englisch. Darin werden relativ viele Zahlen verwendet, weshalb ich vorsichtshalber das siunitx-Paket verwende. Meine Lektorin hat nun den ersten Lauf gemacht und an einer Stelle angemerkt, dass im Englischen doch ein 1000er-Trennkomma verwendet wird. In meinem erzeugten pdf gibt es an der Stelle ein schmales Leerzeichen. Also in die Doku zu siunitx geschaut und gefunden, dass man auch die Locale setzen kann. Jedoch brachte das bei mir keinen Unterschied. Die Frage ist nun, wie ich mittels siunitx für mein Dokument global korrekt einstelle, dass Englisch verwendet werden soll und entsprechend auch das 1000er-Trennkomma, ohne, dass ich jede Zahl im Dokument einzeln anpassen muss.

Folgendes passiert bei mir:

Open in writeLaTeX
\documentclass{scrartcl}

\usepackage[british]{babel}
\usepackage{siunitx}
\sisetup{locale = UK}

\begin{document}
\num{40000}     % Leerzeichen

\num{40.000}    % Punkt

\num{40,000}    % auch Punkt
\end{document}

Das scheint hier auf den ersten Blick alles überhaupt nicht korrekt zu sein, da ich oben UK eingestellt habe, aber unten bei der 2. und 3. Zahl jeweils Punkte erzeugt werden. Also was bringt das Setzen der locale dann überhaupt?

gefragt 26 Jan '15, 06:02

ErnstZ's gravatar image

ErnstZ
541425
Akzeptiert: 83%

bearbeitet 26 Jan '15, 06:25

Clemens's gravatar image

Clemens
19.0k112960


Die locale-Option von siunitx beeinflusst die Gruppierungsdarstellung überhaupt nicht. Ein kurzer Auszug aus siunitx.sty (v2.6e, 21. Januar 2015):

Open in writeLaTeX
\keys_define:nn { siunitx } {
  locale .choice:,
  locale /
    DE   .meta:n =
      {
        exponent-product      = \ensuremath { \cdot } ,
        inter-unit-product    = \,                    ,
        output-decimal-marker = { , }
      },
  ...
  locale /
    UK   .meta:n =
      {
        exponent-product      = \ensuremath { \times } ,
        inter-unit-product    = \,                     ,
        output-decimal-marker = .
      },
  locale /
    US   .meta:n = { locale = UK },
  ...
}

Es werden also lediglich exponent-product, inter-unit-product und output-decimal-marker angepasst. Das erklärt, wieso durch Ändern der locale bei den drei Beispielen keine Veränderung zu sehen ist. Die Eingabe \num{40,000} und \num{40.000} ist übrigens beide Male »Vierzig Komma Null Null Null«, da sowohl Punkt als auch Komma die Voreinstellung von input-decimal-markers sind, also bei der Eingabe als Dezimalzeichen interpretiert werden.

Um die gewünschte Ausgabe zu erhalten, muss man daher

Open in writeLaTeX
\sisetup{
  locale = UK ,
  group-separator = {,}
}

wählen.


Übrigens: in einem mehrsprachigen Dokument mit siunitx sollte man

  • die Sprachen als Klassenoption geben oder
  • Das Paket translator mit den Sprachen als Paketoption explizit laden.

Sonst passiert u.U. nämlich folgendes:

Open in writeLaTeX
\documentclass{scrartcl}

\usepackage[ngerman,british]{babel}
\usepackage{siunitx}
\sisetup{
  locale = UK ,
  group-separator = {,}
}

\begin{document}
\numlist{40000 ; 40.000 ; 40,000}

\selectlanguage{ngerman}
\sisetup{
  locale = DE ,
  group-separator = \,
}
\numlist{40000 ; 40.000 ; 40,000}
\end{document}

alt text

Man beachte das nichterfolgte Übersetzen von »and«.

Zum Vergleich:

Open in writeLaTeX
\documentclass[ngerman,british]{scrartcl}

\usepackage{babel}
\usepackage{siunitx}
\sisetup{
  locale = UK ,
  group-separator = {,}
}

\begin{document}
\numlist{40000 ; 40.000 ; 40,000}

\selectlanguage{ngerman}
\sisetup{
  locale = DE ,
  group-separator = \,
}
\numlist{40000 ; 40.000 ; 40,000}
\end{document}

alt text

Permanenter link

beantwortet 26 Jan '15, 14:20

Clemens's gravatar image

Clemens
19.0k112960

Vielen Dank @Clemens!

(26 Jan '15, 17:22) ErnstZ
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×24
×8

Frage gestellt: 26 Jan '15, 06:02

Frage wurde angeschaut: 2,807 Mal

Zuletzt aktualisiert: 26 Jan '15, 17:22