我目前正在写我的硕士论文,我需要 siunitx 作为我的 SI 单位。问题是,不知何故我的代码没有在数字和单位之间生成正常安装的空格。这是我的代码
\documentclass[11pt,a4paper,oneside,titlepage]{scrbook}
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{3}
%Codierung
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[locale = DE, quantity-product = {,},exponent-product = \cdot]{siunitx}
\sisetup{locale = DE, per-mode=reciprocal-positive-first}
\begin{document}
Example for SI unit: \SI{0.15}{\cubic\meter\per\gram}
\end{document}
得到的句子为:0.15m^3 g^-1
m^3 和 g^-1 之间的空间可以以某种方式起作用,但是计数和单位之间的空间却不起作用。如果有人能帮助我解决这个问题,那就太好了。
先感谢您。
答案1
您应该删除该quantity-product = {,}
选项。这会设置数字和单位之间的符号,\,
默认情况下设置为。在您的 MWE 中,它不执行任何操作,因为它应该设置为,\sisetup
而不是作为选项传递给包。
\documentclass[11pt,a4paper,oneside,titlepage]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[locale = DE]{siunitx}
\sisetup{exponent-product = \cdot,per-mode=reciprocal-positive-first}
\begin{document}
Example for SI unit: \SI{0.15}{\cubic\meter\per\gram}
Example for SI unit: \SI[quantity-product = {,}]{0.15}{\cubic\meter\per\gram}
\end{document}
答案2
\documentclass[11pt,a4paper,oneside,titlepage]{scrbook}
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{3}
%Codierung
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[locale = DE, quantity-product = {,},exponent-product = \cdot]{siunitx}
\sisetup{locale = DE, per-mode=reciprocal-positive-first}
\begin{document}
Example for SI unit: \SI{0.15}{\cubic\meter\per\gram}
Another Example for SI unit: \num{0.15}\,\si{\cubic\meter\per\gram}
\end{document}
答案3
根据设计(也许是有缺陷的,但已经这样了大约 30 年),可选参数中的括号\usepackage
基本上会被忽略,所以你从
\documentclass[11pt,a4paper,oneside,titlepage]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[
locale = DE,
quantity-product = {,},
exponent-product = \cdot,
]{siunitx}
\sisetup{locale = DE, per-mode=reciprocal-positive-first}
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{3}
\begin{document}
Example for SI unit: \SI{0.15}{\cubic\meter\per\gram}
\end{document}
(我重新组织了一下序言)与
\usepackage[
locale = DE,
quantity-product = ,,
exponent-product = \cdot,
]{siunitx}
因此quantity-product
接收空值,并且有一个被忽略的空选项。
另一方面,您不想设置quantity-product
为逗号,是吗?
\documentclass[11pt,a4paper,oneside,titlepage]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[
locale = DE,
quantity-product = \,,
exponent-product = \cdot,
]{siunitx}
\sisetup{locale = DE, per-mode=reciprocal-positive-first}
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{3}
\begin{document}
Example for SI unit: \SI{0.15}{\cubic\meter\per\gram}
\end{document}
效果很好。但是既然你无论如何都要使用\sisetup
,只需在那里设置所有选项,不要重复:
\usepackage{siunitx}
[...]
\sisetup{
locale = DE,
quantity-product = \,,
exponent-product = \cdot,
per-mode=reciprocal-positive-first,
}
我建议将设置与包加载分开。前言会变得更清晰,也更容易维护。
顺便说一下,quantity-product=\,
这是默认的,所以不需要设置它。