10

This issue is not new on this site, but I’ve tried earlier solutions and neither works for me. Related questions:

My goal is to use newtxmath together with setting system OpenType fonts through fontspec. No matter in which order I load the package, the digits in math mode are rendered in Computer Modern, not Times.

% !TEX program = lualatex

\documentclass[12pt,a4paper]{article}

\usepackage{newtxmath}

\usepackage[no-math]{fontspec}

\setmainfont{Times New Roman}

\begin{document}
Text: 2, Math: \(x=\sqrt{2}\)
\end{document}

screenshot

Per the newtxmath documentation:

As far as I can tell, newtxmath works with both [XeLaTeX and LuaLaTeX], but requires a very specific loading order and choice of options. [...] the math options must all be loaded prior to loading and using fontspec.

Which I’ve done right in my opinion. My packages are all up-to-date as well.

I’ve tried to adapt this answer for the Times font, but couldn’t make it work.

4
  • 2
    Not sure the quoted passage from the user guide of the nextx package is (still) correct. For sure, \usepackage[no-math]{fontspec} followed by \usepackage{newtxtext,newtxmath} works fine.
    – Mico
    Commented Oct 1, 2017 at 18:12
  • @Mico: Thanks, your proposal does work, but I still want to set my main font via fontspec so I can use the Times OTF files I want (using Semibold in my case) instead of the newtxtext fonts.
    – lblb
    Commented Oct 1, 2017 at 18:29
  • 2
    Since newtx is based on TeX Gyre Termes, why not just use unicode-math and \setmathfont{TeX Gyre Termes Math}? Commented Oct 1, 2017 at 20:13
  • @HenriMenke: This is a good alternative, but I'm still curious about what is happening in my MWE and how to fix it ... and the \pi is disturbingly mirrored with the TeX Gyre Termes Math font.
    – lblb
    Commented Oct 1, 2017 at 20:20

2 Answers 2

11

newtxmath more or less assumes that the default encoding is T1 or OT1. But you can reset the operator font:

\documentclass[12pt,a4paper]{article}

\usepackage{newtxmath}
\DeclareSymbolFont{operators}{OT1}{ntxtlf}{m}{n}
\SetSymbolFont{operators}{bold}{OT1}{ntxtlf}{b}{n}
\usepackage[no-math]{fontspec}

\setmainfont{Times New Roman}

%
\begin{document}
Text: 2, Math: \(x=\sqrt{2}\)

\end{document}

enter image description here

An alternative is to give times the newtx-family name, so that newtxmath can use it.

\documentclass[12pt,a4paper]{article}

\usepackage[no-math]{fontspec}

\setmainfont{Times New Roman}[NFSSFamily=ntxtlf]

\usepackage{newtxmath}

%
\begin{document}
Text: 2, Math: \(x=\sqrt{2}\)

\end{document}

enter image description here

2
  • I've found that your second solution with [NFSSFamily=ntxtlf] disables OpenType superior figures (VerticalPosition=Superior in fontspec), so I'm using the first solution now.
    – lblb
    Commented Oct 3, 2017 at 9:57
  • I am trying this solution with Linux Libertine instead of Times New Roman, but the numbers are still coming differently.
    – Damitr
    Commented Apr 6, 2018 at 11:30
5

Remove the no-math option and use the trick in my answer to Math digits are rendered in CM when using libertine and newtxmath with XeLaTeX in TeX Live 2016, but augmented for taking care also of other glyphs.

\documentclass[12pt,a4paper]{article}

\usepackage{newtxmath}
\usepackage{fontspec}
\setmainfont{Times New Roman}

\DeclareSymbolFont{oldoperators}{OT1}{ntxtlf}{m}{n}
\SetSymbolFont{oldoperators}{bold}{OT1}{ntxtlf}{b}{n}

\AtBeginDocument{%
  \DeclareMathSymbol{0}{\mathalpha}{operators}{`0}%
  \DeclareMathSymbol{1}{\mathalpha}{operators}{`1}%
  \DeclareMathSymbol{2}{\mathalpha}{operators}{`2}%
  \DeclareMathSymbol{3}{\mathalpha}{operators}{`3}%
  \DeclareMathSymbol{4}{\mathalpha}{operators}{`4}%
  \DeclareMathSymbol{5}{\mathalpha}{operators}{`5}%
  \DeclareMathSymbol{6}{\mathalpha}{operators}{`6}%
  \DeclareMathSymbol{7}{\mathalpha}{operators}{`7}%
  \DeclareMathSymbol{8}{\mathalpha}{operators}{`8}%
  \DeclareMathSymbol{9}{\mathalpha}{operators}{`9}%
  \DeclareMathSymbol{\Gamma}{\mathalpha}{oldoperators}{"00}%
  \DeclareMathSymbol{\Delta}{\mathalpha}{oldoperators}{"01}%
  \DeclareMathSymbol{\Theta}{\mathalpha}{oldoperators}{"02}%
  \DeclareMathSymbol{\Lambda}{\mathalpha}{oldoperators}{"03}%
  \DeclareMathSymbol{\Xi}{\mathalpha}{oldoperators}{"04}%
  \DeclareMathSymbol{\Pi}{\mathalpha}{oldoperators}{"05}%
  \DeclareMathSymbol{\Sigma}{\mathalpha}{oldoperators}{"06}%
  \DeclareMathSymbol{\Upsilon}{\mathalpha}{oldoperators}{"07}%
  \DeclareMathSymbol{\Phi}{\mathalpha}{oldoperators}{"08}%
  \DeclareMathSymbol{\Psi}{\mathalpha}{oldoperators}{"09}%
  \DeclareMathSymbol{\Omega}{\mathalpha}{oldoperators}{"0A}%
  \DeclareMathSymbol{!}{\mathclose}{operators}{"21}%
  \DeclareMathSymbol{+}{\mathbin}{operators}{"2B}%
  \DeclareMathSymbol{:}{\mathrel}{operators}{"3A}%
  \DeclareMathSymbol{;}{\mathpunct}{operators}{"3B}%
  \DeclareMathSymbol{=}{\mathrel}{operators}{"3D}%
  \DeclareMathSymbol{?}{\mathclose}{operators}{"3F}%
  \DeclareMathDelimiter{(}{\mathopen} {operators}{"28}{largesymbols}{"00}%
  \DeclareMathDelimiter{)}{\mathclose}{operators}{"29}{largesymbols}{"01}%
  \DeclareMathDelimiter{[}{\mathopen} {operators}{"5B}{largesymbols}{"02}%
  \DeclareMathDelimiter{]}{\mathclose}{operators}{"5D}{largesymbols}{"03}%
  \DeclareMathAccent{\acute}{\mathalpha}{operators}{"B4}%
  \DeclareMathAccent{\grave}{\mathalpha}{operators}{"60}%
  \DeclareMathAccent{\ddot}{\mathalpha}{operators}{"A8}%
  \DeclareMathAccent{\tilde}{\mathalpha}{oldoperators}{"7E}%
  \DeclareMathAccent{\bar}{\mathalpha}{oldoperators}{"16}%
  \DeclareMathAccent{\breve}{\mathalpha}{oldoperators}{"15}%
  \DeclareMathAccent{\check}{\mathalpha}{oldoperators}{"14}%
  \DeclareMathAccent{\hat}{\mathalpha}{oldoperators}{"5E}%
  \DeclareMathAccent{\dot}{\mathalpha}{oldoperators}{"5F}%
  \DeclareMathAccent{\mathring}{\mathalpha}{oldoperators}{"17}%
  \DeclareMathSymbol{\mathdollar}{\mathord}{operators}{"24}%
}

\begin{document}

Text: 2, Math: \(x=\sqrt{2}+1234567890\)

!+:;=?()[]

${!}{+}{:}{;}{=}{?}{(}{)}{[}{]}$

\'a\`a\"a\~a\=a\u{a}\v{a}\^a\.a\r{a}

$
\acute{\mathrm{a}}
\grave{\mathrm{a}}
\ddot{\mathrm{a}}
\tilde{\mathrm{a}}
\bar{\mathrm{a}}
\breve{\mathrm{a}}
\check{\mathrm{a}}
\hat{\mathrm{a}}
\dot{\mathrm{a}}
\mathring{\mathrm{a}}
$

$\Gamma\Delta\Theta$

\end{document}

Some accents must be taken from newtx instead of Times New Roman, for technical limitations.

enter image description here

4
  • 1
    This solution now has the equal sign = (and possibly others) in CM, though.
    – lblb
    Commented Oct 2, 2017 at 14:54
  • @lblb I used the equals and plus sign from Times New Roman, because they are quite different in NewTX. There are small differences in tilde, bar, breve, hat, check and dot, for technical limitations in the font.
    – egreg
    Commented Oct 2, 2017 at 20:14
  • Please add the missing \makeatother. Is it even necessary there? I see no @ signs.
    – lblb
    Commented Nov 2, 2017 at 19:38
  • @lblb Thanks, probably \makeatletter was a remain from earlier code.
    – egreg
    Commented Nov 2, 2017 at 21:05

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .