我经常使用该siunitx
软件包,并且得到了许多具有高小数精度的数字。现在我希望能够将这些数字以全精度复制到文本、公式和表格中的相关位置,并在文档的序言中调整精度。
有没有办法通过预定义选项字符串将选项传递给命令?当字符串不用作命令选项时,我可以轻松地使其工作,但对于命令选项,它不起作用...
我的最小例子:
\documentclass[10pt,a4paper,twosided]{article}
\usepackage{siunitx}
\newcommand{\rndprc}{round-mode=places,round-precision=4}% command option string
\newcommand{\Tk}{\Theta}% this works...
\begin{document}
\paragraph{testing commands...}
\num[\rndprc]{12.34567890123}
This is working: $\Tk$
\end{document}
知道如何才能实现这一点吗?最好的情况是,有类似的东西\newcommand{\rndprc}[1]{round-mode=places,round-precision={#1}}
,这样我就可以输入精度。
答案1
.meta
宏不会被 key-val 解析器扩展。您可以定义一个键来一次性设置所需的选项,而不是宏。您还可以为键提供参数和默认值:
\documentclass[10pt,a4paper,twosided]{article}
\usepackage{siunitx}
\ExplSyntaxOn
\keys_define:nn { siunitx }
{
rndprc .meta:n =
{
round-mode = places,
round-precision = #1,
},
rndprc .default:n = 4,
}
\ExplSyntaxOff
\newcommand{\Tk}{\Theta}
\begin{document}
\paragraph{testing commands...}
\num[rndprc]{12.34567890123}
\num[rndprc=3]{12.34567890123}
This is working: $\Tk$
\end{document}
答案2
本地更改sisetup
:
\documentclass[10pt,a4paper,twosided]{article}
\usepackage{siunitx}
\newcommand{\rndprc}[1][4]{%
\sisetup{round-mode=places,round-precision=#1}% # command option string
}
\newcommand{\Tk}{\Theta}% # this works...
\begin{document}
\paragraph{testing commands...}
{\rndprc\num{12.34567890123}}
{\rndprc[3]\num{12.34567890123}}
This is working: $\Tk$
\end{document}