datatool和siunitx對小數及其轉換有不同的理解

datatool和siunitx對小數及其轉換有不同的理解

這是一個後續問題使用 datatool 結合 tabularray 將十進位轉換為區域設定失敗。或者這樣說:我可以解決這個問題很多次。

datatool核心問題是和對小數的不同理解siunitx。一旦我使用該命令,\DTLsumforkeys我就會得到,小數點標記,但siunitx使用dot.因此我不能同時使用兩者。當我嘗試使用一些轉換(例如DTLdecimaltolocaleDTLsetnumberchars)時,我也失敗了。

我想,當這個問題解決後,我也可以解決上面提到的問題。

我發現\sisetup{output-decimal-marker={,}}我可以得到,forsiunitx所以數字 bydatatoolsiunitx看起來相同,但逗號不應該是小數標記,它應該代表“千標記”。

\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={,}}

相關內容