datatool y siunitx tienen una comprensión diferente de los decimales y su conversión

datatool y siunitx tienen una comprensión diferente de los decimales y su conversión

Esta es una pregunta de seguimiento sobreLa conversión de decimal a configuración regional falla al usar la herramienta de datos en combinación con tabularray. O digámoslo de esta manera: podría hervir el problema muchas veces.

El problema central es la diferente comprensión de los decimales por datatooly siunitx. Tan pronto como uso el comando \DTLsumforkeysobtengo ,un marcador decimal, pero siunitxuso un archivo dot. Por lo tanto no puedo usar ambos juntos. Cuando intento utilizar algunas conversiones (por ejemplo DTLdecimaltolocale, DTLsetnumberchars), también fallo.

Supongo que cuando esto se resuelva, también podré resolver el problema en la pregunta mencionada anteriormente.

Descubrí que \sisetup{output-decimal-marker={,}}puedo obtener el ,for siunitxpara que los números se datatoolvean siunitxiguales, pero la coma no debe ser el marcador decimal, sino que debe representar el "marcador de miles".

\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}

ingrese la descripción de la imagen aquí

Respuesta1

Debe configurarlo ,para que se trate como un carácter de espaciado (por lo tanto, ignorado) en lugar de un marcador decimal.

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

información relacionada