1. 没有unicode-math

1. 没有unicode-math

如何获取文本模式在一个直立数学字体unicode-math程序包已加载

1. 没有unicode-math

代码:

\documentclass{article}

\begin{document}
  affinity\par
  $\mathrm{affinity}$\par
\end{document}

输出:

字距调整和连字文本模式

2. 使用unicode-math

代码:

\documentclass{article}
\usepackage{unicode-math}

\begin{document}
  affinity\par
  $\mathrm{affinity}$\par
\end{document}

输出:

字距调整和连字数学模式.我希望文本模式这里。

答案1

unicode-math 中数学字母命令的使用有些问题,有在 github 上开放问题其中提到\mathit但是\mathrm一样的。

您可以重新定义\mathrm使用罗马文本字体,如下所示:

在此处输入图片描述

\documentclass{article}
\usepackage{unicode-math}

\setmathfont{Latin Modern Math}
\setmathfont[range=\mathup]{Latin Modern Roman}
\begin{document}
  affinity\par
  $\mathrm{affinity}$\par
\end{document}

不包含 mathit 的工作版本

\documentclass{article}
\usepackage{unicode-math}

\setmathfont{Latin Modern Math}
\setmathfont[range=\mathup]{Latin Modern Roman}
%\setmathfont[range=\mathit]{lmroman12-italic}% affects normal math as well.
\DeclareMathAlphabet\xxmathit{EU2}{lmr}{m}{it}% EU1 for xetex EU2 for luatex
\def\xmathit#1{\xxmathit{\mathup{#1}}}% right font but ff ligature broken
\begin{document}
\showoutput
  1 affinity\par
  2 \textit{affinity}\par
  3 $affinity$\par
  4 $\mathrm{affinity}$\par
  5 $\xmathit{affinity}$\par
\end{document}

答案2

为了跟进大卫卡莱尔 (David Carlisle) 对该unicode-math软件包的回答的评论中的讨论:

在 LaTeX 中,数学模式有两种字体:

  • 一个字母(变量),通常称为数学字体(最好叫数学字母字体(英文):
  • 一个,通常称为数学文本字体(最好叫数学字字体),

以及文本模式下的一种文本字体,通常称为文本字体

文本字体数学文本字体可能不同:

\documentclass{article}
\renewcommand{\familydefault}{ppl} % sets Palatino as text font
\begin{document}
    $\mathnormal{affinity}$\par    % math letter font
    $\mathit{affinity}$\par        % math word font
    $\textit{affinity}$\par        % text font
\end{document}

这里\mathnormal\mathit导致\textit了使用三种不同的字体:分别是Latin Modern Math、Latin Modern和Palatino。

加载包后unicode-math,输出会有所不同:

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Palatino}             % sets Palatino as text font
\setmathfont{Latin Modern Math}    % sets Latin Modern Math as math letter font
\begin{document}
    $\mathnormal{affinity}$\par    % math letter font
    $\mathit{affinity}$\par        % math word font
    $\textit{affinity}$\par        % text font
\end{document}

在这里,包重新定义\mathnormal为无,\mathit数学字母字体(代替数学字字体在经典 LaTeX 中)。因此默认情况下,该unicode-math包会破坏 LaTeX 的标准行为。这就是为什么 David Carlisle 开设了一个问题在 Github 上,正如他在回答中所说(还有另一个有趣的 Github 问题涉及同样的问题这里)。

正如 David Carlisle 在 Github 问题中所建议的那样,我首先想到的是\mathwxx为数学引入新的数学字体命令单词包中的字体unicode-math,以保持向后兼容性:

但最后,我想知道这些新的数学字体命令是否\mathwxx需要,甚至它们是否有意义:事实上,我们什么时候需要使用直立数学字体到底是什么?数学字母字体仅适用于变量,因此它们应该始终斜体, 绝不直立。我们只需要一个直立的数学字体来表示非变量,也就是数学单词字体,所以我们最好用数学公式来代替Unicode 范围的字体\mathup\mathbf数学单词字体:

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Palatino}
\setmathfont{Latin Modern Math}
\setmathfont[range=\mathup]{Latin Modern Roman} % sets a math word font instead of the default math letter font
\setmathfont[range=\mathbfup]{lmroman12-bold}   % sets a math word font instead of the default math letter font
\let\mathnormal\mathit                          % redefines \mathnormal as before the unicode-math package
\begin{document}
    \noindent
    \texttt{\backslash mathup}: $\mathup{affinity}$\\
    \texttt{\backslash mathbf}: $\mathbf{affinity}$\\
    \texttt{\backslash mathit} or \texttt{\backslash mathnormal}: $\mathit{affinity}$ (default)\\
    \texttt{\backslash mathbfit}: $\mathbfit{affinity}$\\
\end{document}

因此,通过该设置,我们获得了标准的 LaTeX 行为。

相关内容