Gemischte Dezimaleingabe mit siunitx

Aug 28 2020

Nimmt siunitx gemischte Dezimaleingaben wie 0,004319689898685966 und 0,004319689898685966 an? Es sieht so aus, aber soll es so funktionieren?

Ich verwende Python für meine Berechnungen mit einem "." Dezimalsymbol und manuell mit einem "," Dezimalsymbol eingeben.

Bild:

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}

Antworten

4 egreg Aug 28 2020 at 17:26

Da die Eingabedaten für \SImöglicherweise aus verschiedenen Quellen stammen, können verschiedene Stile verwendet werden. Insbesondere wird eine Dezimalstelle oder ein Dezimalkomma in der Eingabe konvertiert, um eine Markierung zu verwenden, mit der gesetzt wird output-decimal-marker.

Der Schlüssel decimalcommaist weiterhin zulässig, gibt jedoch eine Warnung aus

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

Es gibt verschiedene Optionen, um unterschiedlichen Eingabestilen zu entsprechen. Am Ende wird die Ausgabe jedoch immer gemäß den ausgewählten Optionen hinsichtlich der Dezimalmarkierung, der Gruppentrennungen usw. normalisiert.

Optionen können global (aber unter Berücksichtigung von TeX-Gruppen) mit \sisetupoder lokal mit einem optionalen Argument für festgelegt werden \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

Das siunitxPaket unterscheidet zwischen

  • input-decimal-markersStandardmäßig ,.werden also sowohl Komma als auch Punkt (auch als "Punkt" bezeichnet) als Dezimalmarkierung interpretiert

  • output-decimal-marker, standardmäßig .(Punkt).

Ein kompilierbares Beispiel:

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