我希望得到这样的结果:[-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}
这也产生了
但不涉及所有其他情况。