使用 `siunitx` 包自动将波浪符号 (~) 作为前缀数字

使用 `siunitx` 包自动将波浪符号 (~) 作为前缀数字

我正在尝试找出是否有办法以与处理数字前的 < 和 > 运算符相同的方式原siunitx生处理 ~ 符号 ( \sim),因为我希望能够使用 ~ 作为近似的简写。例如:

\documentclass[12pt,a4paper]{report}
\usepackage{siunitx}
\begin{document}

% Values output the same, with spacing after the < and before the % symbol
\SI{< 10}{\percent} \\
\SI{<10}{\percent} \\

% When writing in math mode a space in placed after the ~ symbol, but not before the % symbol
$\sim10\%$ \\

\end{document}

理想情况下,我希望能够编写类似\SI{~ 10}{\percent}或 的内容\SI{\tilde}{10}{\percent},其中{\tilde}使用命令定义自定义值DeclareSIUnit\tilde{~}。但我似乎无法在文档中找到类似前缀符号的内容。有没有其他人遇到过这个问题的解决方案?

答案1

使用\SI{\sim 10}{\percent}应该可以;也许你想要\approx

\documentclass[12pt,a4paper]{report}
\usepackage{siunitx}
\begin{document}

\SI{< 10}{\percent}   

\SI{<10}{\percent}   

\SI{\sim 10}{\percent}

\SI{\approx 10}{\percent}

\end{document}

在此处输入图片描述

答案2

我也没有看到新“前缀”的接口,因此以下示例修补了 的内部结构siunitx。此外,我在使用~前缀时遇到了麻烦,可能是因为重新扫描,其中 的 catcode~设置为 9,忽略了字符。因此,该示例改用\~<>用作 的符号\approx

\documentclass[12pt,a4paper]{report}
\usepackage{siunitx}

\ExplSyntaxOn
\exp_args:NNo \cs_set:Nn \__siunitx_number_in_sign_replace:N
 {
  \__siunitx_number_in_sign_replace:N { #1 }
  \tl_replace_all:Nnn #1 { \~ } { \sim }
  \tl_replace_all:Nnn #1 { <> } { \approx }
 }
\tl_put_right:Nn \l__siunitx_input_protect_tl    { \~ }
\tl_put_right:Nn \l__siunitx_input_comparator_tl { \~ }
\ExplSyntaxOff

\begin{document}
  \noindent
  \SI{<10}{\percent}\\
  \SI{\~10}{\percent}\\
  \SI{<>10}{\percent}
\end{document}

结果

相关内容