使用 siunitx 重复小数

使用 siunitx 重复小数

我正在使用 siunitx 并以逗号作为输出小数标记。(本地化)对于具有重复小数的数字的表示,我使用重叠。

是否有一种简单的方法来请求 siunitx 的输出小数标记的当前值来构建一个可以知道该值未来变化的幻影字符串?

其实没什么大不了的,我只是好奇而已。

\documentclass{minimal}
\usepackage{amsmath}
\usepackage{siunitx}
\sisetup{
    output-decimal-marker = {,},   %%% value might change
    group-separator = \text{\,}
}
\begin{document}
\begin{gather*}
    %%% \phantom{0,} is not aware of changes to output-decimal-marker !!!
    \rlap{$\phantom{0,}\dot{\phantom{9}}$}\num{0.9} = 1 \\
    \rlap{$\phantom{0,}\overline{\phantom{01}}$}\num{0.01} = \frac{1}{99}
\end{gather*}
\end{document}

答案1

siunitx 的 output-decimal-marker 属性似乎是私有的,无法正式获取。如果这样做,那么未来对 siunitx 内部的更改可能会导致代码无法正常工作。更好的方法是创建一个可以提供给 siunitx 并可以在文本甚至宏中使用的定义。(为了便于阅读,人们可能会放弃单个重复小数的点表示。)

\documentclass{minimal}
\usepackage{amsmath}
\usepackage{siunitx}
%\newcommand{\decSep}{\_}      %%% for testing purpose only
%\newcommand{\decSep}{\ldots}  %%% for testing purpose only
\newcommand{\decSep}{,}
\newcommand{\decNum}[3]{\rlap{\ensuremath{\phantom{#1\mathord{\decSep}#2}\overline{\phantom{#3}}}}\num{#1.#2#3}}
\newcommand{\decSI }[4]{\rlap{\ensuremath{\phantom{#1\mathord{\decSep}#2}\overline{\phantom{#3}}}}\SI{#1.#2#3}{#4}}
\sisetup{
    output-decimal-marker = \decSep,
    group-separator = \text{\,}
}

\begin{document}
\begin{gather*}
    \decNum{0}{}{9} = 1 \\
    \decNum{0}{}{01}= \frac{1}{99} \\
    \decNum{17}{57}{32} = \frac{6959}{396} \\
    \decSI{0}{}{3}{\volt} \\
    \decNum{12}{502}{} \\
    \decSI{12}{502}{}{\ampere}
\end{gather*}
\decNum{0}{}{9} \\
\decNum{0}{}{01} \\
\decNum{17}{57}{32} \\
\decSI{0}{}{3}{\volt} \\
\decNum{12}{502}{} \\
\decSI{12}{502}{}{\ampere}
\end{document}

截屏

相关内容