我对该siunitx
软件包有两个问题。在阅读文档并搜索互联网均无果后,我希望有人能帮助我:
\documentclass[12pt,
]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[babel, german=quotes]{csquotes}
\usepackage{amsmath}
\usepackage{siunitx}
\sisetup{
mode = math,
detect-all,
exponent-product = \cdot,
number-unit-separator=\text{\,},
output-decimal-marker={\text{,}},
}
\usepackage{chemmacros}
\usechemmodule{all}
\chemsetup{greek = {fontspec}}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{Lucida Bright OT}
\setmathfont{Libertinus Math}
\begin{document}
\SI{5}{\ohm} $\Omega$
\end{document}
问题#1:
在\sisetup
部分中,我将模式明确设置为math
。这样做,我希望两个 omegas(Ohm 和 math-mode-Omega)看起来相同,即使用相同的字体(在本例中为 Libertinus Math)。为什么情况并非如此?
问题 #2:
如果我使用 LuaLaTeX 编译给定的 MWE,则不会显示 SI-Omega ( \ohm
)。如果我执行以下三项操作之一,则会\ohm
显示 (这意味着符号本身可用):
- 注释掉
detect-all
里面的行\sisetup
; - 更改为另一种主字体(我绝对不想这样做);
- 注释掉与 chemmacros 包相关的三行。
detect-all
对我来说,这似乎很奇怪,其他字体和线条都没有问题chemmacros
。
造成此问题的原因可能是什么,或者我做错了什么?
附言:我正在使用 TUG 的 Lucida 版本以及最新版本的 TeXLive 2017(所有软件包都是最新的)。
=====================更新=====================
昨天这里有一个答案,建议重新排序命令。不幸的是,这并没有解决问题。无论如何,我尝试了其他方法:切换到 Lucida 字体的 Type-1 形式会导致以下代码:
\documentclass[12pt,
]{scrreprt}
%\usepackage[T1]{fontenc} % for pdfLaTeX
\usepackage[ngerman]{babel}
\usepackage[babel, german=quotes]{csquotes}
\usepackage{amsmath}
\usepackage{siunitx}
\sisetup{
mode = math,
detect-all,
exponent-product = \cdot,
number-unit-separator=\text{\,},
output-decimal-marker={\text{,}},
}
\usepackage{chemmacros}
\usechemmodule{all}
\usepackage{lucimatx}
\begin{document}
\SI{5}{\ohm} $\Omega$
\end{document}
如果我使用LuaLaTeX
和编译此新代码\usepackage[T1]{fontenc}
,我会得到一个 Omega,但采用标准字体 (CMR)。使用和LaTeX
编译代码,我会得到正确字体 (Lucida) 的 \ohm-Omega。所以,也许问题在于编码问题而不是软件包问题?pdfLaTeX
\usepackage[T1]{fontenc}
答案1
我找到了一种解决方法,至少我会将此视为一种解决方法,因为符号\micro
无需任何改变即可工作。
通过增加
math-ohm = \ensuremath{\upOmega},
text-ohm = Ω,
到它\sisetup
按预期工作。尽管如此,我还是希望对一般问题有一个更基本的答案(特别是为什么符号有效\micro
?)。有趣的是,在发布初始帖子之前,我尝试过这个版本(因为手册中推荐它\siunitx
(对于XeTeX
))并且它没有工作......可能是一些打字错误。由于我使用 Lucida 作为文本字体以及数学字体,因此在我的特殊情况下任何差异都应该无关紧要。