如何使用 unicode-math 和 \left\right 在 LuaLaTex 中进行斜体校正?

如何使用 unicode-math 和 \left\right 在 LuaLaTex 中进行斜体校正?

关于 LuaLaTeX 中使用斜体校正的故事unicode-math似乎是老的 。但是,这个问题似乎还没有解决。以下是unicode-math

不带斜体校正

并且没有

斜体修正

注意第二个黄色框F,表示字距调整。使用Libertinus 字体,然后F并且 > 确实重叠:

使用 libertinus 修正缺失的斜体

我猜这是因为 Libertinus 定义了F变得与众不同。

以下是用于生成最后几张截图的代码:

%! TEX program = lualatex
\documentclass{article}

\usepackage{lua-visual-debug}

\usepackage{unicode-math}
\setmathfont{Libertinus Math}

% enable italic correction
\everymath\expandafter{\the \everymath \luatexcatcodetable\CatcodeTableLaTeX}
\everydisplay\expandafter{\th[enter image description here][4]e \everydisplay \luatexcatcodetable\CatcodeTableLaTeX}

\newcommand{\luatexcatcodetable}{}
\newcommand{\CatcodeTableLaTeX}{}

\newcommand*{\norm}[1]{{\ensuremath{\left\|{#1}\right\|}}}
\newcommand*{\inner}[1]{{\ensuremath{\left\langle{#1}\right\rangle}}}

\begin{document}
   \[
       \inner{f, f}       \hspace{2em}
       \norm{f}_2^2       \hspace{2em}
       \inner{g, g}       \hspace{2em}
       \norm{g}_2^2       \hspace{2em}
   \]
\end{document}

此外,删除\left\right会使其看起来应该如下:

修正自由数学

不幸的是曾经推荐的解决方法

\everymath\expandafter{\the\everymath\luatexcatcodetable\CatcodeTableLaTeX}
\everydisplay\expandafter{\the\everydisplay\luatexcatcodetable\CatcodeTableLaTeX}

出现以下错误:

! Undefined control sequence.
<inserted text> \@displaytrue \luatexcatcodetable 
                              \CatcodeTableLaTeX

看起来这两个命令\luatexcatcodetableCatcodeTableLaTeX不再存在了。添加

\newcommand{\luatexcatcodetable}{}
\newcommand{\CatcodeTableLaTeX}{}

使我的代码编译(请注意,我不必使用\renewcommand!),但显然这对斜体校正没有影响。现在知道如何进行斜体校正吗?

答案1

这个答案我找到了解决方案,可以将其添加\mathitalicsmode=1到序言中。如果我理解正确的话,这将在数学模式下启用斜体校正。要获得所需的结果,还必须删除周围的括号{ ... },否则不会应用斜体校正(除非有一个字符{f},那么它似乎有效。为什么?)因此,以下代码示例可以正常工作:

%! TEX program = lualatex
\documentclass{article}

\usepackage{lua-visual-debug}

\usepackage{unicode-math}
\setmathfont{Libertinus Math}

\mathitalicsmode=1

\begin{document}
   \[
       \left\langle f,f \right\rangle
   \]
\end{document}

相关内容