\textls(来自 microtype)在数学模式下无法持续工作

\textls(来自 microtype)在数学模式下无法持续工作

在下面的代码中:

\documentclass{article}
\usepackage[letterspace= -150]{microtype}
\usepackage{amsmath}


\DeclareFontFamily{U}{BOONDOX-calo}{\skewchar\font=45 }
\DeclareFontShape{U}{BOONDOX-calo}{m}{n}{
  <-> s*[1.05] BOONDOX-r-calo}{}
\DeclareFontShape{U}{BOONDOX-calo}{b}{n}{
  <-> s*[1.05] BOONDOX-b-calo}{}
\DeclareMathAlphabet{\mathcalboondox}{U}{BOONDOX-calo}{m}{n}
\SetMathAlphabet{\mathcalboondox}{bold}{U}{BOONDOX-calo}{b}{n}
\DeclareMathAlphabet{\mathbcalboondox}{U}{BOONDOX-calo}{b}{n}
\usepackage[mathscr]{eucal}
\renewcommand{\cal}{\mathscr}
\newcommand{\scr}{\mathcalboondox}

\begin{document}

 Hilbert functor \textls{$\scr{Hilb}$}$_X: \textbf{\textsf{Scheme}}^\text{op} \to \textbf{\textsf{Set}}$ s.t. for $U \in \textbf{\textsf{Scheme}}$, we have $\textls{$\scr{Hilb}$}_X(U) = \text{Hom}(U, \text{Hilb}_X)$.

 $$\textls{$\scr{Hilb}$}$$
 $$\textls{$asdf$ asdf $asdf$}$$
\textls{$asdf$} \textls{\text{$asdf$}}
\end{document}

只有第一个“Hilb”在脚本字体中具有所需的字母间距。其他两个在数学模式下没有。我假设只有数学模式下存在一些问题,但我不知道是什么。我查看了微类型的 `\textls` 和数学模式存在问题Microtype 在数学模式下给出错误的字母间距,但他们的问题似乎是在尝试退出“lsstyle”环境后发生了一些不好的事情。即使https://ctan.math.illinois.edu/macros/latex/contrib/microtype/microtype.pdf只出现了 6 次“数学模式”字样,我认为我的问题没有得到解决。如果这很重要,那么就假设我在 Overleaf 中工作,因此 Overleaf 使用的编译器都是相关的。

编辑:我又做了一些实验(上面的“asdf”行),发现 \textls 似乎在数学模式下不起作用。一位评论者已经指出了这一点,但没有解释第一个“Hilb”的“正确”间距。即使 \textls 不是“旨在”处理数学模式,它显然曾经工作过,所以即使它“违反规则”,我想知道我是否可以让它再次工作。

在此处输入图片描述

编辑 2:如果我这样做,\usepackage[tracking=allmath, letterspace= -150]{microtype}那么包括数学模式内容在内的所有文本都会被设置为字母间距更小。因此,很明显,该microtype包有权更改数学模式下的字母间距……它只是不想这么做吗?

在此处输入图片描述

EDIT3:根据罗伯特的建议,我microtype使用选项verboseverbose=true旁边letterspace=...)加载并附加日志文件:https://notepad.ltd/jyxrxf4t

答案1

为此,我会避免使用数学字母。

\documentclass{article}
\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{fixcmex}
\usepackage{microtype}

\DeclareFontFamily{U}{BOONDOX-calo}{\skewchar\font=45 }
\DeclareFontShape{U}{BOONDOX-calo}{m}{n}{
  <-> s*[1.05] BOONDOX-r-calo}{}
\DeclareFontShape{U}{BOONDOX-calo}{b}{n}{
  <-> s*[1.05] BOONDOX-b-calo}{}
\DeclareRobustCommand{\scrvar}[1]{%
  \text{\textls[-100]{\usefont{U}{BOONDOX-calo}{m}{n}#1}}%
}


\DeclareMathAlphabet{\mathsfbf}{\encodingdefault}{\sfdefault}{b}{n}

\newcommand{\Hilbs}{\scrvar{Hilb}}
\newcommand{\Hilbr}{\mathrm{Hilb}}
\newcommand{\Scheme}{\mathsfbf{Scheme}}
\newcommand{\Set}{\mathsfbf{Set}}
\newcommand{\op}{^{\mathrm{op}}}
\DeclareMathOperator{\Hom}{Hom}

\begin{document}

Hilbert functor $\Hilbs_X\colon \Scheme\op \to \Set$ s.t.\@ for $U \in \Scheme$, 
we have $\Hilbs_X(U) = \Hom(U, \Hilbr_X)$.

\end{document}

在此处输入图片描述

相关内容