问题的答案在 XeLaTeX 中切换回 Computer Modern\mathrm
提供了一种在 XeLaTex 中切换回默认字体的方法。但是,如果我在公式中使用以下方法,则那里的解决方案不起作用:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
%\newfontfamily\lmodern{Latin Modern Roman} % If font exists on your system
% Optical sizes need to be set up manually using the [SizeFeatures] option
% or select the font using the regular font selection methods
\newcommand{\lmr}{\fontfamily{lmr}\selectfont} % Latin Modern Roman
\newcommand{\lmss}{\fontfamily{lmss}\selectfont} % Latin Modern Sans
\newcommand{\lmtt}{\fontfamily{lmtt}\selectfont} % Latin Modern Mono
\begin{document}
\[\mathrm{e}^{\mathrm{i}\pi}+1=0\]
{\lmr\[\mathrm{e}^{\mathrm{i}\pi}+1=0\]}
\end{document}
可以看到,字母 e 和 i 仍然不是默认字体。使用其他字体会使公式看起来更糟糕,例如 Consolas。
我该怎么做才能解决这个问题?
答案1
如果您想将 Latin Modern 保留为默认文本和数学字体,请不要执行\setmainfont
指令。相反,如果您确实想将主文本字体切换为 Linux Libertine O,您可能应该加载unicode-math
包并执行\setmathfont{Libertinus Math}
。另一方面,如果您想将 Libertine 用于文本模式材料,而将 Latin Modern 用于数学模式材料,您可能需要用\setmathfont{Libertinus Math}
替换\setmathfont{Latin Modern Math}[Scale=MatchLowercase]
。
%% execute this test file under XeLaTeX or LuaLaTeX
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Linux Libertine O}
\begin{document}
\setmathfont{Libertinus Math}
$\mathrm{e}^{\mathrm{i}\pi}+1=0$
\setmathfont{Latin Modern Math}[Scale=MatchLowercase] % or Scale=MatchUppercase
$\mathrm{e}^{\mathrm{i}\pi}+1=0$
\end{document}
附录:正如@cabohah 在评论中指出的那样,\setmainfont{Linux Libertine O}
可能无法与某些 TeX 发行版/操作系统组合配合使用。如果这对您来说是个问题,最好加载libertine
、libertinus
或libertinus-otf
包,而不是执行\setmainfont
和\setmathfont
指令。