newtx 和 fontspec 的组合破坏了 siunitx

newtx 和 fontspec 的组合破坏了 siunitx

我尝试在 XeLaTeX 上使用newtxfontspec,直到使用时,它看起来都很好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或 ,因为有些字形与 相比形状非常不同(例如)。Timesfontspecnewtx\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}

在此处输入图片描述

相关内容