有效数字

有效数字
\documentclass[12pt,a4paper]{article}
\usepackage{siunitx,booktabs}
\usepackage{expl3}
\ExplSyntaxOn
%
\NewDocumentCommand{\calcSId}{o m m}
                                     {\SI[#1]{\fp_to_decimal:n{#2}}{#3}}
\NewDocumentCommand{\calcSIdcfr}{m m m}
        {\SI[round-mode = figures, round-precision = #1, round-integer-to-decimal]{\fp_to_decimal:n{#2}}{#3}}
\DeclareDocumentCommand{\myformat}{m m}
                                {\fp_to_decimal:n{round((#1), #2)}}
%
\fp_set:Nn \mamol {30.07}
\fp_set:Nn \massetano {52.02}
\fp_set:Nn \nmoli {\massetano / \mamol}
%
\ExplSyntaxOff 
\begin{document}

\[ n = \calcSId{\nmoli}{\mole} \]

\[ n = \calcSId[round-mode = figures, round-precision = 4, round-integer-to-decimal]{\nmoli}{\mole} \]

\[ n = \calcSId{\myformat{\nmoli}{4}}{\mole}  \]

\[ n =  \calcSIdcfr{4}{\nmoli}{\mole} \]

\end{document}

我希望只有一个\calcSId这样的命令,不带可选参数,将打印完整的计算数字。 相同的命令,指定数字的数量,然后应该打印数字,如\calcSIdcfr

我不知道如何[round-mode = figures, round-precision = #1, round-integer-to-decimal]自动“插入”(或其他选项),而无需每次都打印它或使用单独的命令\calcSIdcfr

有什么建议吗,或者这是不可能的?

答案1

#1您可以使用以下方式确定可选参数中某个值的存在情况\IfValueTF{#1}{<true>}{<false>}

在此处输入图片描述

\documentclass{article}

\usepackage{siunitx}

\ExplSyntaxOn
\NewDocumentCommand{\calcSId}{o m m}
  {\IfValueTF{#1}
     {\SI[round-mode = figures, round-precision = #1, round-integer-to-decimal]{\fp_to_decimal:n{#2}}{#3}}
     {\SI{\fp_to_decimal:n{#2}}{#3}}
  }
\NewDocumentCommand{\calcSIdcfr}{m m m}
  {\SI[round-mode = figures, round-precision = #1, round-integer-to-decimal]{\fp_to_decimal:n{#2}}{#3}}
\DeclareDocumentCommand{\myformat}{m m}
  {\fp_to_decimal:n{round((#1), #2)}}

\fp_set:Nn \mamol {30.07}
\fp_set:Nn \massetano {52.02}
\fp_set:Nn \nmoli {\massetano / \mamol}
\ExplSyntaxOff

\begin{document}

\[ n = \calcSId{\nmoli}{\mole} \]

\[ n = \calcSId[4]{\nmoli}{\mole} \]

\[ n = \calcSId{\myformat{\nmoli}{4}}{\mole}  \]

\[ n = \calcSIdcfr{4}{\nmoli}{\mole} \]

\end{document}

相关内容