Inserimento decimale misto con siunitx

Aug 28 2020

Siunitx accetta input decimali misti come 0,004319689898685966 e 0,004319689898685966? Sembra, ma è destinato a funzionare in questo modo?

Sto usando Python per i miei calcoli con un "." simbolo decimale e digita manualmente con un simbolo decimale ",".

Immagine:

MWE:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\sisetup{range-phrase=-,
            detect-all,
            decimalsymbol=comma,
            round-mode=places,
            round-precision=4,
            range-units=single,
            per-mode=fraction,}

\begin{document}

\begin{itemize}
\item \SI{0,004319689898685966}{\meter \squared}
\item \SI{0.004319689898685966}{\meter \squared}
\end{itemize}
\end{document}

Risposte

4 egreg Aug 28 2020 at 17:26

Poiché i dati di input per \SIpotrebbero provenire da varie fonti, è possibile utilizzare vari stili per esso; in particolare un punto decimale o una virgola decimale nell'input viene convertito per utilizzare un marcatore impostato con output-decimal-marker.

La chiave decimalcommaè ancora consentita, ma emette un avviso

Package siunitx Warning: Version 1 option 'decimalsymbol' detected.

Esistono varie opzioni per conformarsi a diversi stili di input, ma alla fine l'output è sempre normalizzato in base alle opzioni scelte per quanto riguarda il marcatore decimale, le separazioni di gruppo e così via.

Le opzioni possono essere impostate globalmente (ma rispettando i gruppi TeX) con \sisetupo localmente con un argomento opzionale a \SI.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\sisetup{
  range-phrase=-,
  detect-all,
  output-decimal-marker={,},
  round-mode=places,
  round-precision=4,
  range-units=single,
  per-mode=fraction,
}

\begin{document}

\begin{itemize}
\item \SI{0,004319689898685966}{\meter \squared}
\item \SI{0.004319689898685966}{\meter \squared}
\item \SI[output-decimal-marker=.]{0.004319689898685966}{\meter \squared}
\sisetup{output-decimal-marker=\ensuremath{{\cdot}}}
\item \SI{0.004319689898685966}{\meter \squared}
\end{itemize}
\end{document}

3 Mico Aug 28 2020 at 17:25

Il siunitxpacchetto distingue tra

  • input-decimal-markers, con l'impostazione predefinita ,., ovvero, sia la virgola che il punto (ovvero "punto") vengono interpretati come marcatori decimali e

  • output-decimal-marker, il cui valore predefinito è .(punto).

Un esempio compilabile:

\documentclass{article}
\usepackage{siunitx}
\begin{document}
\num{0.333} and \num{0,333}

\sisetup{output-decimal-marker={,}} % change the default

\num{0.333} and \num{0,333}
\end{document}