Komma als Dezimaltrennzeichen, Punkt als Tausendertrennzeichen

Formelsatz für Mathematik, Naturwissenschaften und Technik


KristinF
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Sa 1. Aug 2020, 14:06

Komma als Dezimaltrennzeichen, Punkt als Tausendertrennzeichen

Beitrag von KristinF »

Hallo,

ich komme durch meine Suche das erste Mal nicht zum gewünschten Ergebnis, weshalb ich nun doch einmal nachfragen muss.

Ich möchte das Komma als Dezimaltrennzeichen und den Punkt als Tausendertrennzeichen in SI-Einheiten benutzen (gewünschte Ausgabe z. B.: 1.000,0 m). Wenn ich siunitx auf DE einstelle, wird der Punkt auch als Komma interpretiert, lasse ich ihn weg, werden Zahlen >1.000 ohne jegliches Trennsymbol, auch nicht mit Leerzeichen, geschrieben: 1000 m.
Gibt es dafür eine Lösung oder ist es in Latex nicht so gedacht, SI-Einheiten so zu verwenden?
Ich würde auch ungern alles auf \num{} \si{} oder so umstellen müssen.
Vielleicht hat ja jemand die Lösung dafür?

Hier mal mein Minimalbeispiel. Ich hoffe, es ist ausreichend. Ich bin nicht gerade ein Profi in Latex und schreibe gerade auch meinen ersten Forums-Beitrag. :D

\documentclass[ngerman]{article}
\begin{document}
\usepackage[ngerman]{babel}
\usepackage{siunitx}
\sisetup{per-mode = symbol, locale = DE}
\end{document}

Viele Grüße
Kristin


MoeWe
Forum-Guru
Forum-Guru
Beiträge: 266
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Komma als Dezimaltrennzeichen, Punkt als Tausendertrennzeichen

Beitrag von MoeWe »

Bin mir nicht ganz sicher, ob ich die Frage korrekt verstehe, aber prinzipiell gibt es hier zwei Ebenen: Die Eingabe der Zahlen im Quellcode und die Ausgabe im Dokument. Für die Eingabe tut locale=DE soweit ich weiß nichts zur Sache. Das ist nur für die Ausgabe wichtig.

Eingegeben werden Dezimalzahlen mit Punkt oder Komma als Dezimaltrenner. Eigentlich gibt es keine Tausendertrenner in der Eingabe, aber siunitx erlaubt beliebige Leerzeichen. Die siunitx-Dokumentation erklärt dies wie folgt (S. 5 in v2.8b, 2020/02/25)

The formatter removes both ‘soft’ () and ‘hard’ spaces (\, and ~), automatically identifies exponents (by default marked using e, E, d or D) and adds the appropriate spacing of large numbers. With the standard settings a leading zero is added before a decimal marker, if needed: both . and , are recognised as decimal markers.

Also sind

Code: Alles auswählen

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{siunitx}

\sisetup{locale=DE}

\begin{document}
\num{1000.1}
\num{1000,1}
\num{1 000.1}
\num{1 000,1}
\end{document}

alle gleichwertig (ob mit oder ohne \sisetup{locale=DE}).

Bei der Ausgabe sorgt locale=DE dafür, dass der Dezimaltrenner ein Komma wird. Standardmäßig gibt siunitx keinen Tausenderseparator aus. Stattdessen werden Ziffern gruppiert, wenn es mehr als fünf sind. Vgl.

Code: Alles auswählen

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{siunitx}

\sisetup{locale=DE}

\begin{document}
\num{1000}

\num{10000}

\num{100000}
\end{document}

Wenn Du gerne einen Punkt als Tausenderseparator hättest, dann kannst Du group-separator umstellen, dann solltest Du aber unbedingt group-digits=integer, setzen, damit der Dezimalteil nicht auch mit Punkten garniert wird

Code: Alles auswählen

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{siunitx}

\sisetup{
  locale=DE,
  group-separator = {.},
  group-digits=integer,
}

\begin{document}
\num{1000}

\num{10000}

\num{100000}
\end{document}

Eventuell möchtest Du auch noch group-minimum-digits = 4, hinzufügen, damit schon "1000" zu "1.000" wird und nicht erst ab "10000" ("10.000") gruppiert wird.

PS: Der gezeigte Code ist kein Minimalbeispiel. Das kannst Du ganz leicht selbst überprüfen, wenn Du den Code in einem neuen leeren Dokument zu kompilieren versuchst. Außerdem wäre es sinnvoll, nicht nur den Präambelcode zu zeigen, sondern auch zu zeigen, welche Befehle Du wie zu nutzen gedenkst.


esdd
Forum-Meister
Forum-Meister
Beiträge: 2483
Registriert: So 7. Feb 2010, 16:36

Re: Komma als Dezimaltrennzeichen, Punkt als Tausendertrennzeichen

Beitrag von esdd »

Du musst noch group-separator und group-minimum-digits anpassen, um einen Punkt statt dem kleinen Abstand zu erhalten und das schon bei Zahlen mit 4 Ziffern vor dem Komma und nicht erst ab 5 Ziffern:

Code: Alles auswählen

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{siunitx}
\sisetup{per-mode = symbol, locale = DE,
  group-separator=.,% <- ergänzt, default ist \, (also ein kleiner Abstand)
  group-minimum-digits=4% <- ergänzt, default ist 5 (also Gruppierung erst ab 5 Ziffern)
}
\begin{document}
\SI{1000}{\metre} und \SI{10000}{\metre}
\end{document}

Stamm-Gast

Anleitung gibt Aufschluss

Beitrag von Stamm-Gast »

All das ist in der Anleitung von »siunitx« dokumentiert. Das Stichwort lautet 'group-separator' (Voreinstellung '\,').

Code: Alles auswählen

\documentclass[11pt,a4paper,ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}

\usepackage[detect-all,locale=DE]{siunitx}
\sisetup{
  group-separator={.},
  per-mode=symbol
}

\usepackage{lmodern}
\usepackage[babel]{microtype}

\begin{document}
  \SI{1000.00}{\m} \quad \SI{10000.00}{\m}
\end{document}

Anmerkung(en):

  • Pakete werden im Vorspann (Prämbel) geladen.

  • Zur Markierung von Quell-Code ist der '</>'-Knopf in der Liste über dem Eingabe-Fenster gedacht.


KristinF
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Sa 1. Aug 2020, 14:06

Re: Komma als Dezimaltrennzeichen, Punkt als Tausendertrennzeichen

Beitrag von KristinF »

Oh, wie toll! Ich danke euch für eure schnelle Hilfe! Hat prima geklappt und ist genau das, was ich gesucht habe. Vielen Dank! :)

Ich hatte zwar in die Dokumentation geschaut, aber den Teil einfach nicht gefunden/überlesen. Sorry. :?
Und das mit dem korrekten Minimalbeispiel schau ich mir für die nächste Frage auf jeden Fall an. (Hatte die \begin{document}-Zeile hier versehentlich vor die Pakete kopiert, was natürlich Quatsch ist. :D)

Viele Grüße
Kristin


Antworten