“旧”数学字体命令(\mathrm 等)和 unicode-math(“range”选项)

“旧”数学字体命令(\mathrm 等)和 unicode-math(“range”选项)

我正在尝试使用 的unicode-math功能 ( \setmathfont[range=…]) 在数学模式下使用非数学字体。例如:

\documentclass{scrartcl}

\usepackage{unicode-math}

\setmainfont{FreeSans}
\setsansfont{FreeSans}

\setmathfont{Latin Modern Math}
\setmathfont{FreeSans}[range=up/{greek,Greek,latin,Latin,num}]
\setmathfont{FreeSans Oblique}[range=it/{greek,Greek,latin,Latin,num}]
\setmathfont{FreeSans Bold}[range=bfup/{greek,Greek,latin,Latin,num}]

\begin{document}

abc123

\textit{abc123}

\textbf{abc123}

\bigskip

\begin{tabular}{ll}
    math        & $abc123$ \\
    mathit      & $\mathit{abc123}$ \\
    mathrm      & $\mathrm{abc123}$ \\
    mathup      & $\mathup{abc123}$ \\
    mathbf      & $\mathbf{abc123}$ \\
    mathbfup    & $\mathbfup{abc123}$
\end{tabular}

\end{document}

对于此文档,我希望所有文本都使用 FreeSans,并且带有mathrmmathup以及mathbf和 的行mathbfup相同。但是,我的结果是这样的:

测试结果文件

因此,我对正在发生的事情有两个疑问:

  1. 为什么\mathit\mathup不同于\mathbfup\mathbfup可以正常工作,生成 FreeSans Bold 文本。另一方面,其他两个则生成默认的拉丁现代数学。
  2. 我如何让所有这些命令都使用 FreeSans,就像\mathbfup它一样?我知道unicode-math的命令\setmathfontface⟨command⟩{⟨font name⟩}[⟨font features⟩],但据我所知,它不允许我指定像 这样的范围。而且自己的命令range=up/{greek,Greek,latin,Latin,num}不应该像一样“开箱即用”吗?unicode-math\mathup

版本信息:TeX Live 2017、LuaTeX v1.0.4、unicode-math 2017/01/27 v0.8d。

答案1

如果您确实想要改变\mathbf和类似:这可以通过(重新)声明数学字母轻松完成。

如果您想要调整\symXX通常将字符映射到数学平面上的字形的命令,问题就开始了。这里的实现相当不完善。如果您将字体设置为最后一个“数学字体”,它或多或少可以工作,但这会破坏各种数学字体尺寸。如果您通过将真正的数学字体设置为最后一个字体来重置它们,那么字体symXX就会损坏。另请参阅此问题https://github.com/wspr/unicode-math/issues/331

\documentclass{scrartcl}

\usepackage{unicode-math}

\setmainfont{FreeSans}[NFSSFamily=FreeSans]
\setsansfont{FreeSans}

\setmathfont{Latin Modern Math}



\setmathfont{FreeSans}[range=up/{greek,Greek,latin,Latin,num}]
\setmathfont{FreeSans Bold}[range=bfup/{greek,Greek,latin,Latin,num}]
\setmathfont{FreeSans Oblique}[range=it/{greek,Greek,latin,Latin}]

% better a real math font at the end, but breaks the ranges above:
\setmathfont{Latin Modern Math}[range=\int]

 %Or with `\setmathfontface`, see documentation
\DeclareMathAlphabet{\mathrm}{TU}{FreeSans}{m}{n}
\DeclareMathAlphabet{\mathbf}{TU}{FreeSans}{bx}{n}
\DeclareMathAlphabet{\mathit}{TU}{FreeSans}{m}{it}
\let\mathbfup\mathbf


\begin{document}

abc123 αβ

\textit{abc123 αβ}

\textbf{abc123 αβ}

\bigskip

\begin{tabular}{ll}
    math        & $abc123$ \\
    mathrm      & $\mathrm{abc123αβ}$ \\
    mathup      & $\mathup{abc123αβ}$ \\
    mathbf      & $\mathbf{abc123αβ}$ \\
    mathbfup    & $\mathbfup{abc123αβ}$\\
    symup       & $\symup{aα} \mupalpha $\\
    symit       & $\symit{a}\symit{α}\symit{β} \mita  \mitalpha  \mitvarTheta $\\
    symbf       & $\symbf{a}\symbf{b}\symbf{c}\symbf{α}\symbf{β} \mbfa \mbfb \mbfc \mbfvarTheta \mbfalpha \mbfbeta$ \\
\end{tabular}

\end{document}

在此处输入图片描述

相关内容