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, 12:02

ErnstZ's gravatar image

ErnstZ
61172833
Akzeptiert-Rate: 62%

bearbeitet 26 Jan '15, 12:25

cgnieder's gravatar image

cgnieder
22.1k243463


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, 20:20

cgnieder's gravatar image

cgnieder
22.1k243463
Akzeptiert-Rate: 60%

Vielen Dank @Clemens!

(26 Jan '15, 23:22) ErnstZ
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×34
×17

gestellte Frage: 26 Jan '15, 12:02

Frage wurde gesehen: 14,267 Mal

zuletzt geändert: 26 Jan '15, 23:22