在 mathspec 中用另一种字体替换单个字母

在 mathspec 中用另一种字体替换单个字母

我想将某个字体系列中的字母“f”替换为另一个字体系列中的字母“f”。我目前的尝试如下。

\documentclass{minimal}

\usepackage{graphicx}
\usepackage{physics} 
\usepackage{mathspec}
\defaultfontfeatures{Mapping=tex-text,}
\setmathsfont(Digits){Old Standard}
\setmathsfont(Latin)[Uppercase=Italic,Lowercase=Italic]{Old Standard}

\makeatletter
\DeclareSymbolFont{alphabets}{\encodingdefault}{pmn}{m}{it}
\SetSymbolFont{alphabets}{normal}{\encodingdefault}{pmn}{m}{it}
\SetSymbolFont{alphabets}{bold}{\encodingdefault}{pmn}{b}{it}
\DeclareMathSymbol{f}{\mathalpha}{alphabets}{"66}
\makeatother

\begin{document}
    Print $f$.
    
    \begin{align*}
        F(x)
             & = \sum_{d\mid n}f(d)
    \end{align*}\\[1cm]
\end{document}

但是,它不会生成“f”的数学/斜体版本,只有纯文本版本。我该如何将其变为斜体?

未回答此问题的相关问题:如何替换字母?XeLaTeX:mathtools、unicode-math 和 \text spoil \mathtt

在此处输入图片描述

答案1

我假设您想要 Minion Pro。要成功,您需要声明一个字体系列并为其分配一个 NFSS 名称。

\documentclass{article}
\usepackage{amsmath}
%\usepackage{graphicx}
%\usepackage{physics}
\usepackage{mathspec}
\defaultfontfeatures{Mapping=tex-text,}
\setmathsfont(Digits){Old Standard}
\setmathsfont(Latin)[Uppercase=Italic,Lowercase=Italic]{Old Standard}
\newfontfamily{\minion}{Minion Pro}[NFSSFamily=pmn]

\DeclareSymbolFont{alphabets}{\encodingdefault}{pmn}{m}{it}
\SetSymbolFont{alphabets}{bold}{T1}{pmn}{b}{it}
\DeclareMathSymbol{f}{\mathalpha}{alphabets}{"66}

\begin{document}

Print $f$.
\begin{equation*}
  F(x) = \sum_{d\mid n}"f(d)
\end{equation*}

\end{document}

在此处输入图片描述

如果没有这种方法,您会收到关于不存在的字体可以用其他字体替代的警告。

相关内容