如何使用 \SIrange{}{}{} 获取方括号?

如何使用 \SIrange{}{}{} 获取方括号?

我希望得到这样的结果:[-40 ; 80] °C

相反,我得到的是:

在此处输入图片描述

下面是一个 MWE。我试图包含所有必要的软件包siunitx,如其文档中所述;还有更多,也许它们与siunitx所需的软件包相冲突……

\documentclass[a4paper,12pt]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[italian]{babel}

\usepackage{amssymb, amsmath, amsfonts, xfrac, mathpazo} %all maths
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{enumerate}
\usepackage{outlines}
\usepackage{enumitem}
\setlist[enumerate,2]{label= \roman*)}
\setlist[enumerate,3]{label=\textbf{\alph*})}
\usepackage{siunitx}
 \sisetup{range-phrase = \ ;\ ,
          range-units  = brackets,
          list-units   = brackets}
\usepackage{listings} %useful for siunitex
\usepackage{cancel}
\usepackage{blindtext}
\usepackage{hyperref}
\hypersetup{pdfstartview=FitH} 
\usepackage[italian]{cleveref} 

\begin{document}
$\SIrange{-40}{80}{\celsius}$
\end{document}

答案1

的作者siunitx是英国人,所以“bracket”的意思和大西洋彼岸的意思不一样。默认情况下,括号是圆括号,但可以自定义。

\documentclass[a4paper,12pt]{scrartcl}

\usepackage{siunitx}
\sisetup{
  range-phrase = \ {;}\ ,
  range-units  = brackets,
  open-bracket = [,
  close-bracket= ],
}

\begin{document}
$\SIrange{-40}{80}{\celsius}$
\end{document}

这个{;}技巧使得两侧的空间对称。

在此处输入图片描述

如果您只想应用方括号\SIrange,那么您可以重新定义命令以在本地执行设置:

\documentclass[a4paper,12pt]{scrartcl}

\usepackage{siunitx}
\sisetup{
  range-phrase = \ {;}\ ,
  range-units  = brackets,
}

\ExplSyntaxOn
\RenewDocumentCommand \SIrange { O{} m m m } {
  \leavevmode
  \group_begin:
     \keys_set:nn { siunitx } { open-bracket = [,  close-bracket= ], #1}
     \__siunitx_range_unit:nnnn {#4} { open-bracket = [,  close-bracket= ], #1} {#2} {#3}
  \group_end:
}
\ExplSyntaxOff

\begin{document}
$\SIrange{-40}{80}{\celsius}$

\SIlist[list-units = brackets]{2;4;6;8}{\tesla}

\num[bracket-negative-numbers]{-15673}

\num{1 \pm 2i e3}
\end{document}

在此处输入图片描述

答案2

egreg 展示的版本非常优雅,但对您可能想要使用的其他括号也相当苛刻。从您的问题中不清楚,您是否也希望有以下行为:

% arara: pdflatex

\documentclass{scrartcl}
\usepackage{siunitx}
\sisetup{
  range-phrase = \ {;}\ ,
  range-units  = brackets,
  open-bracket = [,
  close-bracket= ],
}

\begin{document}\noindent
\SIrange{-40}{80}{\celsius}\\
\SIlist[list-units = brackets]{2;4;6;8}{\tesla} \\
\num[bracket-negative-numbers]{-15673} \\
\num{1 \pm 2i e3} \\
\end{document}

在此处输入图片描述

如果您确实只是想改变问题中显示的范围情况的行为,我建议重新定义此命令。

% arara: pdflatex

\documentclass{scrartcl}    
\usepackage{siunitx}
\renewcommand{\SIrange}[3]{\lbrack\num{#1}\ {;}\ \num{#2}\rbrack\,\si{#3}}

\begin{document}\noindent
$\SIrange{-40}{80}{\celsius}$\\
\SIrange{-40}{80}{\celsius}
\end{document}

这也产生了

在此处输入图片描述

但不涉及所有其他情况。

相关内容