von MoeWe » Sa 1. Aug 2020, 14:53
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
\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.
\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
\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.
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](http://mirrors.ctan.org/macros/latex/contrib/siunitx/siunitx.pdf) 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
```
\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.
```
\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
```
\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 [m][/m]. 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.