在下面的代码中:
\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
使用选项verbose
(verbose=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}