datatool과 siunitx는 소수와 그 변환에 대해 서로 다르게 이해합니다.

datatool과 siunitx는 소수와 그 변환에 대해 서로 다르게 이해합니다.

에 대한 후속 질문입니다.tabularray와 함께 datatool을 사용하면 10진수를 로케일로 변환하는 데 실패합니다.. 아니면 이렇게 말해보자: 나는 문제를 많이 해결할 수 있었다.

핵심 문제는 datatool과 의 소수에 대한 서로 다른 이해이다 siunitx. 명령을 사용하자마자 소수점 표시를 \DTLsumforkeys얻지 만 . 그러므로 둘 다 함께 사용할 수는 없습니다. 일부 변환(예: , ) 을 사용하려고 하면 실패합니다.,siunitxdotDTLdecimaltolocaleDTLsetnumberchars

이 문제가 해결되면 위에서 언급한 문제도 해결할 수 있지 않을까 싶습니다.

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

관련 정보