我想使用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-math
给fontspec
。
\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 编译器来编译该文档。