使用 kpfonts-otf 时 `\vdots` 的位置看起来很奇怪

使用 kpfonts-otf 时 `\vdots` 的位置看起来很奇怪

考虑以下代码:

\documentclass{article}

% \usepackage{kpfonts}
\usepackage{kpfonts-otf}

\begin{document}

\[
    \begin{pmatrix}
        \mu_1\\
        \vdots\\
        \mu_n
    \end{pmatrix}
\]

\end{document}

看起来\vdots不太平衡:

在此处输入图片描述

使用正常版本的kpfonts结果看起来不错:

在此处输入图片描述

有没有什么办法可以在 LaTeX 中解决这个问题?

答案1

让我们尝试以下操作:

\documentclass{article}

\NewCommandCopy\originalvdots\vdots
\usepackage{kpfonts-otf}

\begin{document}

\[
    \begin{pmatrix}
        \mu_1\\
        \vdots\\
        \mu_n
    \end{pmatrix}
    \begin{pmatrix}
        \mu_1\\
        \originalvdots\\
        \mu_n
    \end{pmatrix}
\]

\end{document}

在此处输入图片描述

\originalvdots命令使用了 Computer Modern 中的时期,但这是一个不太重要的细节。

通过一些测量……

\documentclass{article}

\NewCommandCopy\originalvdots\vdots
% \usepackage{kpfonts}
\usepackage{kpfonts-otf}

\AtBeginDocument{%
  \NewCommandCopy\unicodevdots\vdots
  \RenewDocumentCommand{\vdots}{}{\mathrel{\loweredvdots}}%
}

\makeatletter
\newcommand{\loweredvdots}{\mathpalette\loweredvdots@\relax}
\newcommand{\loweredvdots@}[2]{%
  \begingroup
  \sbox\z@{$\m@th#1\unicodevdots$}%
  \vrule width \z@ height 2.25\ht\z@ depth 0.012\ht\z@
  \raisebox{0.25\height}{\usebox\z@}%
  \endgroup
}
\makeatother

\begin{document}

\[
    \begin{pmatrix}
        \mu_1\\
        \vdots\\
        \mu_n
    \end{pmatrix}
    \begin{pmatrix}
        \mu_1\\
        \originalvdots\\
        \mu_n
    \end{pmatrix}
\]

\end{document}

在此处输入图片描述

答案2

在 OpTeX 中,这个问题不存在。\vdots即使初始化了带有 KP 字体和 otf-math 的 Unicode 数学,原始数学仍保持不变。控制序列\unicodevdots已准备好访问 Unicode vdots 字符。比较:

\fontfam[kp]
$$
  \pmatrix{\mu_1\cr \vdots\cr \mu_n}, \quad \pmatrix{\mu_1\cr \unicodevdots\cr \mu_n}
$$
\bye

当然,\let\vdots=\unicodevdots如果你喜欢Unicode字符,你可以说出来。有关更多信息,请参阅文档 optex-math 的 2.6 节。

相关内容