我尝试在 XeLaTeX 上使用newtx
和fontspec
,直到使用时,它看起来都很好siunitx
。问题是等无法打印负号\num
。我该如何解决这个问题?
以下是 MWE:
\documentclass{article}
\usepackage[no-math]{fontspec}
\usepackage{zxjatype} % For printing Japanese. Requires fontspec.
\usepackage[ipaex]{zxjafont} % Set Japanese font.
\usepackage{newtxtext,newtxmath}
\usepackage{siunitx}
\sisetup{
detect-family=true,
detect-weight=true,
detect-mode=true,
detect-inline-family=math,
detect-inline-weight=math,
detect-display-math=true,
output-quotient=\ensuremath{/},
}
\begin{document}
\textminus % OK
\num{-1e-1} % negative sign is not printed
\end{document}
zxjatype
虽然没有和也可以重现我的问题zxjafont
,但我还是将它们包含在上面的例子中,因为它们也可能影响我的问题。
背景
我想用 Python 库创建一个图并包含在我的 pLaTeX(日语 LaTeX)文档中matplotlib
,该库允许您使用 XeLaTeX 而不是 pLaTeX 排版文本。由于 XeLaTeX 也可以排版日语文本,因此我决定使用 XeLaTeX 在 中排版日语matolotlib
。由于我的主要文档是用 pLaTeX 编写的,它对日语的支持更好但不支持fontspec
,因此我想newtxtext
在两个引擎上使用。我不想在 上使用TeX Gyre Termes
或 ,因为有些字形与 相比形状非常不同(例如)。Times
fontspec
newtx
\textmu
答案1
那么你可以重置减号:
\documentclass{article}
\usepackage[no-math]{fontspec}
\usepackage{newtxtext,newtxmath}
\usepackage{siunitx}
\sisetup{
detect-family=true,
detect-weight=true,
detect-mode=true,
detect-inline-family=math,
detect-inline-weight=math,
detect-display-math=true,
output-quotient=\ensuremath{/},
}
\ExplSyntaxOn
\AtBeginDocument{
\tl_set:Nn \c__siunitx_minus_tl
{ \textminus }
}
\ExplSyntaxOff
\begin{document}
\num{-1e-1} % negative sign is not printed
\end{document}
但我认为用 T1 编码作为 xelatex 的主要编码是一个相当糟糕的主意。很可能更多的符号会“消失”。
答案2
你不应该使用newtx
,而应该使用类似 Times 的文本字体
\documentclass{article}
\usepackage{newtxmath}
\usepackage[no-math]{fontspec}
\usepackage{zxjatype} % For printing Japanese. Requires fontspec.
\usepackage[ipaex]{zxjafont} % Set Japanese font.
\setmainfont{TeX Gyre Termes}
\usepackage{siunitx}
% see http://tex.stackexchange.com/a/279466/4427
\DeclareSymbolFont{operators}{\encodingdefault}{\familydefault}{m}{n}
\sisetup{
detect-family=true,
detect-weight=true,
detect-mode=true,
detect-inline-family=math,
detect-inline-weight=math,
detect-display-math=true,
output-quotient=\ensuremath{/},
}
\begin{document}
\textminus % OK
\num{-1e-1}
$\sin(\pi/3)\approx 0.866$
\end{document}