添加

添加

我读到过一篇文章,其中fontspec默认使用 Latin Modern,因此我认为使用 LuaLaTeX 时不再需要加载该包。但今天我注意到,字距调整似乎在 amsmath 的命令lmodern中不起作用:\operatorname

\documentclass{scrartcl}

\usepackage{fontspec}
%\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{microtype}

\begin{document}
$\operatorname{Wait}, \text{Wait}$ 
\end{document}

这将在我的计算机上产生以下输出:

字距调整错误

当明确加载时lmodern(删除第 4 行的注释符号),将应用字距调整\operatorname,并且两个单词看起来相同。

虽然我已经找到了解决方案,但我想了解这里发生了什么。特别是,在将 latin modern 与 LuaLaTeX 一起使用时还需要考虑其他事项吗?

答案1

您应该fontspec使用该no-math选项加载。是的,您还应该加载lmodern使用 Latin Modern(旧版)数学字体。如果没有它,数学字体将是通常的 Computer Modern 字体。

\documentclass{scrartcl}

\usepackage{amsmath}
\usepackage{lmodern}
\usepackage[no-math]{fontspec}
\usepackage{microtype}

\begin{document}
$\operatorname{Waitfi}, \mathrm{Waitfi}$
\end{document}

我还添加了连字符,只是为了显示它有效。

在此处输入图片描述

这是输出pdffonts

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
VQXSIW+LMRoman10-Regular             Type 1            Custom           yes yes no       4  0
HQUSZE+LMMathItalic10-Regular        Type 1            Custom           yes yes no       5  0
JFRMQG+LMRoman10-Regular             CID Type 0C       Identity-H       yes yes yes      6  0

答案2

我认为这是因这里描述的问题引起的OpenType 数学系列中不使用连字?。数学模式中不使用开放式字体的连字符和字距调整。您可以按照 egreg 的建议切换到“经典”数学字体。使用 luatex,您还可以在基本模式下加载运算符字体:

\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{fontspec}

\setmainfont{Latin Modern Roman}[Renderer=Basic]
\newfontfamily\latinmathoperators{Latin Modern Roman}[Renderer=Basic]
%
\makeatletter
\AtBeginDocument{%
\latinmathoperators
\DeclareSymbolFont{operators}{EU2}\f@family\mddefault\updefault
\SetSymbolFont{operators}{normal}{EU2}\f@family\mddefault\updefault
\normalfont}
\makeatother


\begin{document}
Waitffi
$\operatorname{WAitffi} \mathrm{WAitffi}\text{WAitffi}$
\end{document}

在此处输入图片描述

添加

使用 unicode-math 您还可以定义使用基本模式的特定字体:

\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfontface\mathrmoperator{Latin Modern Roman}[Renderer=Basic]
\setoperatorfont\mathrmoperator

\begin{document}
$\operatorname{Waitffi}   = a_{\operatorname{Waitffi}}$

$\mathrmoperator{Waitffi} = a_{\mathrmoperator{Waitffi}}$

$\mathrm{Waitffi}         = a_{\mathrm{Waitffi}}$
\end{document}

不要在此类命令的参数中使用数学符号,例如\delta\int。由于 Latin Modern Roman 不是数学字体,因此它们会丢失。

在此处输入图片描述

相关内容