\usepackage{siunitx} 的间距问题

\usepackage{siunitx} 的间距问题

我目前正在写我的硕士论文,我需要 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

方程中带有 siunitx 的单位间距

在此处输入图片描述

\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=\,这是默认的,所以不需要设置它。

相关内容