lualatex 中的字体包给出了cm样式的图

lualatex 中的字体包给出了cm样式的图

我想使用FiraSans字体作为主文本字体,并使用newtx作为我的 pgfplots 图中数学字体。由于数据文件包含很多点,我使用lualatex作为编译器,因为它可以动态调整内存,这里是 mwe

\RequirePackage{luatex85}
\documentclass[tikz,12pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage[sfdefault,scaled=.85]{FiraSans}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amsthm}
\usepackage[cmintegrals]{newtxsf}
\begin{document}

test
\[
a^2+b^2=c^2
\]
\end{document}

但字体包好像效果不太好。 在此处输入图片描述 文字和图片还是cm的样式,用起来pdflatex没问题,用的时候出现两个警告信息lualatex

LaTeX Font Warning: Font shape `T1/FiraSans(0)/m/n' undefined(Font) 
LaTeX Font Warning: Some font shapes were not available, defaults substituted.

我怎样才能将字体包与 一起使用lualatex

答案1

您应该newtxsf在之前加载FiraSans并传递no-mathfontspec

\RequirePackage{luatex85}
\documentclass[tikz,12pt]{standalone}
\usepackage{amsmath,amsthm}

\usepackage[cmintegrals]{newtxsf}
\PassOptionsToPackage{no-math}{fontspec}
\usepackage[sfdefault,scaled=.85]{FiraSans}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}

test $a^2+b^2=c^2$

\end{document}

在此处输入图片描述

\PassOptionsToPackage{no-math}{fontspec}如果将该选项添加为全局选项,则不需要:

\documentclass[tikz,12pt,no-math]{standalone}

答案2

此答案解决了字体警告的问题,文本使用 FiraSans 字体而不是 Computer Modern。但是,它无法解决数学样式中的图形字体错误的问题。

字体编码T1适用于最多有 256 个插槽的字体,因此软件包fontspec使用不同的字体编码。如果软件包检测到能够使用 OpenType 字体(LuaTeX、XeTeX)的 TeX 编译器,则FiraSans使用它。fontspec

作为解决方案,\usepackage[T1]{fontenc}可以包装在:

\usepackage{ifluatex, ifxetex}
\newif\ifWithOpenTypeFonts
\ifluatex
  \WithOpenTypeFontstrue
\else
  \ifxetex
    \WithOpenTypeFontstrue
  \fi
\fi
\ifWithOpenTypeFonts
  % \usepackage{fontspec}
\else
  \usepackage[T1]{fontenc}
\fi

然后可以使用不同的 TeX 编译器来编译该文档。

相关内容