我使用 TeXLive 2020。这个简单的代码
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Fira Math}
\begin{document}
\[
A = \begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1p}\\
a_{21} & a_{22} & \cdots & a_{2p}\\
\vdots & \vdots & \ddots & \vdots\\
a_{n1} & a_{n2} & \cdots & a_{np}
\end{pmatrix}
\]
\end{document}
导致这一点:
你知道我该如何告诉 XeTeX 从其他地方“导入那些 \vdots”吗?提前谢谢。
答案1
是的,Fira Math 中缺少字形。
您可以使用其他无衬线数学字体。
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Fira Math}
\setmathfont{TeX Gyre DejaVu Math}[range={\vdots,\ddots}]
\setmathfont{Fira Math}[range=]
\begin{document}
\[
A = \begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1p}\\
a_{21} & a_{22} & \cdots & a_{2p}\\
\vdots & \vdots & \ddots & \vdots\\
a_{n1} & a_{n2} & \cdots & a_{np}
\end{pmatrix}
\]
\end{document}
虽然不完美,但对于演示来说还过得去。
答案2
我想到了一个与上一个答案不同的解决方案,所以我决定分享它,尽管我认为它不太优雅。
该graphicx
包提供了命令\rotatebox
,允许人们旋转对象。由于\cdots
已经定义,我们可以使用它来定义其他两个命令。这是一个 MWE:
\documentclass{article}
\usepackage{graphicx}
\usepackage{unicode-math}
\setmathfont{Fira Math}
\AtBeginDocument{
\renewcommand{\vdots}{\rotatebox[origin=c]{90}{\(\cdots\)}}
\renewcommand{\ddots}{\rotatebox[origin=c]{135}{\(\cdots\)}}
}
\begin{document}
\[
A = \begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1p}\\
a_{21} & a_{22} & \cdots & a_{2p}\\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{np}
\end{pmatrix}
\]
\end{document}
结果是
要重新定义命令\vdots
,\ddots
我们需要使用,\AtBeginDocument
因为unicode-math
在文档开头定义了字形。因此,如果我们只使用\renewcommand
而不使用\AtBeginDocument
,unicode-math
则会覆盖文档开头的自定义定义。