我只是想\sisetup
根据output-complex-root=\ensuremath{\imath}
表 16进行扩展希尼奇\imath
包。但编译后的输出文件中缺少该符号路拉泰克斯. 查看我的 MNWE:
\documentclass{scrbook}
\usepackage{amsmath}
\usepackage{unicode-math}
% \usepackage{lualatex-math}
\usepackage{siunitx}
\sisetup{
math-micro=\text{µ},text-micro=µ,
input-complex-roots = i,
output-complex-root=\ensuremath{\imath}
}
\begin{document}
\num{1+2i} or \(\num{1+2i}\) test: \(\imath\)
output
\SI{10}{\micro\m}
\SI[mode=text]{10}{\micro\m} % just for reference
\end{document}
虽然包lualatex-数学可以正常工作。我发现了一个类似的问题(这里),但不幸的是它没有帮助。
答案1
加载直立数学字母表
使用unicode-math
,您可以定义一个直立数学符号字母表,它与数学模式中的文本符号不同。下面是一个示例,它以 ISO 样式设置了虚数单位 i,来自直立斜体字体,但保留了主文本字体中的 µ 符号。
在数学模式中使用\text
符号是我以前犯过的一个错误——但这样粗体或斜体格式就会从周围的文本中渗透出来!在这里,你想使用\mathrm
,但另一种选择是\text{\normalfont µ}
。
\documentclass{scrbook}
\usepackage{amsmath}
\usepackage[math-style=ISO]{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range=up]{Latin Modern Roman Unslanted}
\usepackage{siunitx}
\sisetup{
math-micro=\mathrm{µ},text-micro=µ,
input-complex-roots = i,
output-complex-root=\ensuremath{\symup{i}}
}
\begin{document}
\num{1+2i} or \(\num{1+2i}\) test: \(\imath\)
output
\SI{10}{\micro\m}
\SI[mode=text]{10}{\micro\m} % just for reference
\end{document}
请注意\mathrm
,、\mathup
等\operatorname
使用默认文本字体,而\symup
使用花哨的直立数学符号字体。
我常用的例子是欧拉恒等式,它由 Hermann Zapf 的《新欧拉》中的常数组成,其余文本则包含在他的 Palatino 中(克隆):
\documentclass[varwidth, preview]{standalone}
\usepackage{mathtools}
\usepackage[math-style=ISO]{unicode-math}
\setmainfont{TeX Gyre Pagella}
\defaultfontfeatures{Scale=MatchLowercase}
\setmathfont{Asana Math}
\setmathfont[range={up/{Latin,latin,Greek,greek},
bfup/{Latin,latin,Greek,greek}},
script-features={}, sscript-features={}
]{Neo Euler}
\newcommand\upe{\symup{e}}
\newcommand\upi{\symup{i}}
\begin{document}
\begin{align*}
\upe^{\upi x} &= \cos{x} + \upi \sin{x} \\
\upe^{\upi \uppi} + 1 &= 0
\end{align*}
\end{document}
使用无点ı
但这并没有回答你问的字面问题,即如何使用无点 ı。由于问题是将siunitx
字体切换为\mathrm
,只需将其改回即可。以下方法有效:
output-complex-root=\ensuremath{\mathnormal\imath}
如果您使用上述技术加载带有直立无点 ı 的数学字体,\symup\imath
同样可以正常工作。
更改 \mathrm
Ulrike Fischer 的答案很有效,但如果您采用这种方法,我建议您\setmathrm
这样做\setmathfontface\mathrm
。
答案2
siunitx 用于\mathrm
数字的排版,由于这通常是文本字体,因此它没有数学符号。您可以映射\mathrm
到数学字体:
\documentclass{scrbook}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfontface\mathrm{Latin Modern Math}
\usepackage{siunitx}
\sisetup{
math-micro=\text{µ},text-micro=µ,
output-complex-root=\ensuremath{\imath},
}
\begin{document}
\num{1+2i} or \(\num{1+2i}\) test: $\imath$
\SI{10}{\micro\m}
\SI[mode=text]{10}{\micro\m} % just for reference
\end{document}