![在 LuaLaTeX 中模仿 mathspec 实践](https://linux22.com/image/336976/%E5%9C%A8%20LuaLaTeX%20%E4%B8%AD%E6%A8%A1%E4%BB%BF%20mathspec%20%E5%AE%9E%E8%B7%B5.png)
在发现 的神奇之处后microtype
,我决定将 切换到LuaLaTeX
来XeLaTeX
处理大型文档。不幸的是,我在模仿mathspec
之前引擎的做法时遇到了一些困难;所需的字体是 Alegreya。以下是我正在尝试修复的问题:
音乐临时变音记号 (
$\flat \sharp \natural$
) 应该全部是标准的 Computer Modern 字形。我澄清这一点是因为,如 MWE 中所示,我也在使用该lilyglyphs
包。所有上标和下标数字都应为 Alegreya(使用旧式数字)。使用数学模式中的
amsmath
's很容易做到这一点\text
,但我经常使用它,所以我想将其设为默认设置。数学模式中的字母(
$x$
例如)应为 Alegreya 斜体。
我尝试了一些unicode-math
修复方法,但似乎无法得到我想要的结果。
梅威瑟:
%LuaLaTeX
\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage[osf]{Alegreya}
\usepackage{amsmath} %% \text in math mode
%\usepackage{unicode-math}
%\setmathfont[]{Alegreya} %% option range=0048-0057 ?
\let\origflat\flat %% this is included just in case; I use lilyglyphs but not its sharp, flat, or natural
\let\origsharp\sharp
\let\orignatural\natural
\usepackage{lilyglyphs}
\let\flat\origflat
\let\sharp\origsharp
\let\natural\orignatural
\begin{document}
$x$ and $y$ %% should be Alegreya italic
$\flat \sharp \natural$ % should all be standard CM
$^5_3$ %% should be Alegreya, old-style numbers
\end{document}
答案1
要使文本字体处于数学模式,您可能需要使用mathastext
包。要将此包与 LuaLaTeX 一起使用,您还必须fontspec
使用no-math
选项加载。由于由我们fontspec
内部加载Alegreya
\PassOptionsToPackage{no-math}{fontspec}
\usepackage[osf]{Alegreya}
\usepackage[italic]{mathastext}
我们无需保存和恢复\flat
、\natural
和的定义\sharp
,只需取消定义它们,然后使用其原始数学代码和 Computer Modern 系列重新声明它们。我们在加载后执行此操作lilyglyphs
。
\usepackage{lilyglyphs}
\let\flat\undefined \let\natural\undefined \let\sharp\undefined
\DeclareMathSymbol\flat \mathord{letters}{"5B}
\DeclareMathSymbol\natural\mathord{letters}{"5C}
\DeclareMathSymbol\sharp \mathord{letters}{"5D}
此外,\usepackage[T1]{fontenc}
是多余的,因为fontspec
包无论如何都会切换到TU
编码。此外,\usepackage{amsmath}
在本示例中是不需要的。
\documentclass{article}
\PassOptionsToPackage{no-math}{fontspec}
\usepackage[osf]{Alegreya}
\usepackage[italic]{mathastext}
\usepackage{lilyglyphs}
\let\flat\undefined \let\natural\undefined \let\sharp\undefined
\DeclareMathSymbol\flat \mathord{letters}{"5B}
\DeclareMathSymbol\natural\mathord{letters}{"5C}
\DeclareMathSymbol\sharp \mathord{letters}{"5D}
\begin{document}
$x$ and $y$ % should be Alegreya italic
$\flat \sharp \natural$ % should all be standard CM
$^5_3$ % should be Alegreya, old-style numbers
\end{document}