间距、分隔符和 Libertinus Math

间距、分隔符和 Libertinus Math

安装 TeX Live 版本后,可能会审查该问题。

我希望有一个命令可以根据内容拉伸公共分隔符。\sin\left(众所周知,该标准的间距不好,包https://ctan.org/pkg/mathtoolshttps://ctan.org/pkg/mleftright以及提议的https://tex.stackexchange.com/a/136767/128553间距方面存在不同的问题。我认为这可能与漂亮的字体有关https://ctan.org/pkg/libertinus-fonts经过https://tex.stackexchange.com/users/729. 该项目需要LuaLaTeX

XeLaTeX使用和 时不会发生此问题。使用和 时Latin ModernLibertinus Math不会发生此问题。这两个引擎都可以在 MWE 中使用。LuaLaTeXLatin Modern

以下 MWE 显示了一些示例。

\documentclass[a1paper,DIV=50,12pt,landscape]{scrartcl}

%\usepackage{lua-visual-debug}
%\usepackage{amsmath,mathtools,mleftright,xparse}
%\usepackage{fontspec,unicode-math}

\usepackage{xparse}
\usepackage{fontspec}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{unicode-math}
\usepackage{mleftright}


\ifcase0
\setmainfont{LibertinusSerif-Regular.otf}
\setmathfont{LibertinusMath-Regular.otf}[Scale=MatchUppercase,math-style=ISO,bold-style=ISO]
\else
\setmainfont{lmroman12-regular}
\setmathfont{latinmodern-math}[Scale=MatchUppercase,math-style=ISO,bold-style=ISO]
\fi


\ExplSyntaxOn%see https://tex.stackexchange.com/a/136767/128553
\DeclareDocumentCommand{\KDeclarePairedDelimiter}{mm}
 {
  \__egreg_delimiter_clear_keys: % reset to the default
  \keys_set:nn { egreg/delimiters } { #2 }
  \use:x % we want to expand the values of the token variables set with the keys
   {
    \exp_not:n {\NewDocumentCommand{#1}{sO{}m} }
     {
      \exp_not:n { \IfBooleanTF{##1} }
       {
        \exp_not:N \egreg_paired_delimiter_expand:nnnn
         { \exp_not:V \l_egreg_delimiter_left_tl }
         { \exp_not:V \l_egreg_delimiter_right_tl }
         { \exp_not:n { ##3 } }
         { \exp_not:V \l_egreg_delimiter_subscript_tl }
       }
       {
        \exp_not:N \egreg_paired_delimiter_fixed:nnnnn 
         { \exp_not:n { ##2 } }
         { \exp_not:V \l_egreg_delimiter_left_tl }
         { \exp_not:V \l_egreg_delimiter_right_tl }
         { \exp_not:n { ##3 } }
         { \exp_not:V \l_egreg_delimiter_subscript_tl }
       }
     }
   }
 }

\keys_define:nn { egreg/delimiters }
 {
  left      .tl_set:N = \l_egreg_delimiter_left_tl,
  right     .tl_set:N = \l_egreg_delimiter_right_tl,
  subscript .tl_set:N = \l_egreg_delimiter_subscript_tl,
 }

\cs_new_protected:Npn \__egreg_delimiter_clear_keys:
 {
  \keys_set:nn { egreg/delimiters } { left=.,right=.,subscript={} }
 }

\cs_new_protected:Npn \egreg_paired_delimiter_expand:nnnn #1 #2 #3 #4
 {% Fix the spacing issue with \left and \right (D. Arsenau, P. Stephani and H. Oberdiek)
  \mathopen{}
  \mathclose\c_group_begin_token
   \left#1
   #3
   \group_insert_after:N \c_group_end_token
   \right#2
   \tl_if_empty:nF {#4} { \c_math_subscript_token {#4} }
 }
\cs_new_protected:Npn \egreg_paired_delimiter_fixed:nnnnn #1 #2 #3 #4 #5
 {
  \mathopen{#1#2}#4\mathclose{#1#3}
  \tl_if_empty:nF {#5} { \c_math_subscript_token {#5} }
 }
\ExplSyntaxOff


\DeclareMathOperator{\mtool}{mtl}
\DeclareMathOperator{\plain}{pl}
\DeclareMathOperator{\lr}{rl}
\DeclareMathOperator{\mlr}{mrl}
\DeclareMathOperator{\egl}{egl}
\newcommand{\argdot}{{\hspace{0.16667em}\cdot\hspace{0.16667em}}}

\KDeclarePairedDelimiter{\knorm}{left=\lVert,right=\rVert}
\KDeclarePairedDelimiter{\kabs}{left=\lvert,right=\rvert}
\KDeclarePairedDelimiter{\kbracket}{left=(,right=)}

\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\DeclarePairedDelimiter{\bracket}{(}{)}

\newcommand{\checkLetter}[1]{
    f\abs*{#1}
    \plain\lvert{}#1\rvert
        -\mtool\abs{#1}
        +\mtool\abs*{#1}
        \#\egl\kabs*{#1}
        \times\lr\left\lvert{}#1\right\rvert
        *\mlr\mleft\lvert{}#1\mright\rvert
    \quad \plain(#1)
        -\mtool\bracket{#1}
        +\mtool\bracket*{#1{}}
        \#\egl\kbracket*{#1{}}
        \times\lr\left(#1\right)
        *\mlr\mleft(#1\mright)
}
\newcommand{\checkLetterSingle}[1]{
    \checkLetter{#1}
        &=\checkLetter{\int #1}\allowdisplaybreaks\\
}


\begin{document}

\begin{align*}
%   {{\dot\Gamma_{r}}}_{1}^{2}\\
    \checkLetterSingle{\argdot}
    \checkLetterSingle{\argdot_{}^{}}
%   
    1\checkLetterSingle {f}
    1u\checkLetterSingle {f_{}}
    1a\checkLetterSingle {f^{}}
    1au\checkLetterSingle {f_{}^{}}
    1h\checkLetterSingle {f\hspace{1pt}}
%%
%   2\checkLetterSingle F
%   2h\checkLetterSingle {F\hspace{1pt}}
%   2a\checkLetterSingle {F^{}}
%   2u\checkLetterSingle {F_{}}
%   2au\checkLetterSingle {F_{}^{}}%    
%%
%   6\checkLetterSingle \omega
%   7\checkLetterSingle {f_\sum}
%   7a\checkLetterSingle {{f_\sum}^{}}
%   7u\checkLetterSingle {{f_\sum}_{}}
%   7au\checkLetterSingle {{f_\sum}_{}^{}}
\end{align*} 

\end{document}

整个图片的细节:(pl没有任何东西)、mtlmathtools)、egl(egreg 的提议)、rl\left)、和urlmleftright)。
在此处输入图片描述 这个问题可以通过尝试手动添加 hspace 来解决,但我不太喜欢这样做。我认为这是一种肮脏的解决方案,因为它既耗时又不一致。

拉丁现代语中这个问题不太突出或者根本不存在(我不知道这是否是故意的): 在此处输入图片描述

更多示例(请随意尝试代码): 在此处输入图片描述

https://tex.stackexchange.com/users/3929注意到这不是字距调整间距问题。谢谢。他不再是字体的维护者,请参阅https://github.com/alerque/libertinus/issues/328

相关内容