关于 LuaLaTeX 中使用斜体校正的故事unicode-math
似乎是老的 一。但是,这个问题似乎还没有解决。以下是unicode-math
并且没有
注意第二个黄色框F,表示字距调整。使用Libertinus 字体,然后F并且 > 确实重叠:
我猜这是因为 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
看起来这两个命令\luatexcatcodetable
都CatcodeTableLaTeX
不再存在了。添加
\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}