datatool und siunitx haben ein unterschiedliches Verständnis von Dezimalzahlen und deren Konvertierung

datatool und siunitx haben ein unterschiedliches Verständnis von Dezimalzahlen und deren Konvertierung

Dies ist eine Folgefrage zuDie Konvertierung von Dezimalzahlen in Gebietsschemata schlägt mit Datatool in Kombination mit Tabularray fehlOder sagen wir es so: Ich könnte das Problem noch viel weiter auskochen.

Das Hauptproblem ist das unterschiedliche Verständnis von Dezimalzahlen durch datatoolund siunitx. Sobald ich den Befehl verwende, \DTLsumforkeyserhalte ich das ,für einen Dezimaltrenner, siunitxverwendet aber ein dot. Daher kann ich nicht beides zusammen verwenden. Wenn ich versuche, einige Konvertierungen zu verwenden (z. B. DTLdecimaltolocale, DTLsetnumberchars), schlage ich ebenfalls fehl.

Ich denke, wenn dies gelöst ist, kann ich auch das Problem bei der oben genannten Frage lösen.

Ich habe herausgefunden, dass ich mit das für \sisetup{output-decimal-marker={,}}erhalten kann, sodass die Zahlen gleich aussehen , aber das Komma sollte nicht das Dezimalzeichen sein, sondern das „Tausenderzeichen“ darstellen.,siunitxdatatoolsiunitx

\documentclass[parskip=full]{scrartcl}
\begin{filecontents}{test.csv}
category,fundingYear1,fundingYear2,fundingYear3,fundingYear4,fundingYear5,fundingYear6,fundingYear7
Staff,4111,4222,4333,4444,4555,4666,4777
Direct project costs,7,6,5,4,3,2,1
Instrumentation,6111,6222,6333,6444,6555,6666,6777
\end{filecontents}

\usepackage{datatool,siunitx}


\DTLloaddb{ScienceCommunication}{test.csv}

\begin{document}
\DTLsumforkeys{ScienceCommunication}{%
      fundingYear1,%
      fundingYear2,%
      fundingYear3,%
      fundingYear4,%
      fundingYear5,%
      fundingYear6,%
      fundingYear7%
    }{\ScienceCommunication}

datatool: \ScienceCommunication\\
siunitx: \num{\ScienceCommunication}

conversion with datatool:\\
- \verb|DTLdecimaltolocale|:
\DTLdecimaltolocale{\ScienceCommunication}{\ScienceCommunicationOne}
\ScienceCommunicationOne


- \verb|\DTLsetnumberchars{.}{,}|:
\DTLsetnumberchars{.}{,}
\ScienceCommunication

- \verb|\DTLsetnumberchars{,}{.}|:
\DTLsetnumberchars{,}{.}
\ScienceCommunication

\end{document}

Bildbeschreibung hier eingeben

Antwort1

Sie müssen festlegen, ,dass es als Leerzeichen (also ignoriert) und nicht als Dezimaltrennzeichen behandelt wird.

\sisetup{input-decimal-markers ={.}, input-ignore={,}}

verwandte Informationen