如何更改 siunitx 中加号或减号周围的间距

如何更改 siunitx 中加号或减号周围的间距

是否可以使用自定义在加号或减号符号之前和之后插入的空格siunitx

我的问题如下:在数学模式下使用时,在加号或减号符号前后会插入一个空格,这没问题。但在文本模式下使用时会缺少相同的空格,我觉得这不美观。我该如何改变这种行为?我认为我在文档中没有看到执行此操作的命令。

在此处输入图片描述

以下是 MWE:

\documentclass{article}
\usepackage{siunitx}
\sisetup{mode = match, separate-uncertainty = true}

\begin{document}
\qty{18.0+-0.2}{\kilo\gram} 

(18.0\:±\:0.2)%The spacing I would like to have around ±

$\qty{18.0+-0.2}{\kilo\gram}$%To compare with the math mode
\end{document}

答案1

问题是,在 v3 中,我更努力地使用“真实”文本模式符号,但它们在“类似数学”的情况下当然无法正确留出空间。我已经记录并发布并将很快发布。目前,您可以使用

\ExplSyntaxOn
\makeatletter
\cs_gset_protected:Npn \__siunitx_print_text_replace:n #1
  {
    \group_begin:
      \tl_if_head_eq_meaning:nNTF {#1} \mathchoice
        { \__siunitx_print_text_replace:Nnnnn #1 }
        {
          \tl_set:Nn \l__siunitx_print_tmp_tl {#1}
          \tl_if_empty:NF \l_siunitx_unit_font_tl
            { \exp_after:wN \cs_set_eq:NN \l_siunitx_unit_font_tl \use:n }
          \cs_set:Npn \mathord ##1
            {
              \str_case:nnF {##1}
                {
                  { \cdot }  { \exp_not:N \textperiodcentered }
                  { \pm }    { \exp_not:N \textpm }
                  { \times } { \exp_not:N \texttimes }
                }
                { ##1 }
            }
          \cs_set:Npn \pm { \: \exp_not:N \textpm \: }
          \tl_map_inline:nn
            { \mp \ge \le \gg \ll }
            { \cs_set:Npn ##1 { \exp_not:N \ensuremath { \exp_not:N ##1 } } }
          \cs_set:Npn \cdot { \: \exp_not:N \textperiodcentered \: }
          \cs_set:Npn \times { \: \exp_not:N \texttimes \: }
          \protected@edef \l__siunitx_print_tmp_tl { \l__siunitx_print_tmp_tl }
          \__siunitx_print_text_replace:N \l__siunitx_print_tmp_tl
          \__siunitx_print_text_replace_aux:n { \tl_use:N \l__siunitx_print_tmp_tl }
        }
    \group_end:
  }
\makeatother
\ExplSyntaxOff

这里的想法是,如果\mathord适用,我们会过滤掉\cdot/ \pm/\times并用文本模式版本替换。如果没有\mathord,定义会进行调整,以便明确添加空格以保持间距。

相关内容