是否可以使用自定义在加号或减号符号之前和之后插入的空格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
,定义会进行调整,以便明确添加空格以保持间距。