datatool と siunitx は小数とその変換について異なる理解を持っています

datatool と siunitx は小数とその変換について異なる理解を持っています

これはフォローアップの質問ですdatatool と tabularray を組み合わせて使用​​して小数をロケールに変換すると失敗するまたは、このように言いましょう。私はその問題をたくさん解決することができました。

datatool根本的な問題は、とによる小数の理解が異なることですsiunitx。 コマンドを使用するとすぐに、小数点記号として\DTLsumforkeysが表示されますが、が使用されます。したがって、両方を一緒に使用することはできません。一部の変換 (例: 、 )を使用しようとすると、同様に失敗します。,siunitxdotDTLdecimaltolocaleDTLsetnumberchars

これが解決されれば、上記の質問の問題も解決できると思います。

を使用すると、 と の数字が同じに見えるように\sisetup{output-decimal-marker={,}}なりますが、コンマは小数点記号ではなく、「千の位記号」を表す必要があることがわかりました。,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}

ここに画像の説明を入力してください

答え1

,小数点記号ではなく、スペース文字(したがって無視される)として扱われるように設定する必要があります。

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

関連情報