放大我这个非常简单的代码,我从来没有注意到通常放在矩阵中的点有不同的间距。垂直点似乎彼此更近。
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\begin{document}
\[\begin{pmatrix}
\ldots & 2 & 3\\
a & b & \vdots\\
5 & \ddots & 7
\end{pmatrix}\]
\end{document}
我已经看到了这个老问题的代码a0poster 类中 vdot 的间距并且有一个可能的答案(peraphs),但是它是在 Plain TeX 中定义的。
但是是否可以使用一些补丁(或最初更改点的 LaTeX 代码)来使点具有相同的间距,并根据我的喜好改变它们的距离?
答案1
原始定义见于latex.ltx
和fontmath.ltx
% \ldots is \let to \dots
\DeclareRobustCommand{\dots}{\ifmmode\mathellipsis\else\textellipsis\fi}
\DeclareMathSymbol{\ldotp}{\mathpunct}{letters}{"3A}
\def\mathellipsis{\mathinner{\ldotp\ldotp\ldotp}}
\DeclareRobustCommand
\ddots{\mathinner{\mkern1mu\raise7\p@
\vbox{\kern7\p@\hbox{.}}\mkern2mu
\raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}}
\DeclareRobustCommand
\vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@
\kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
并且间距确实有很大差异:
\ldots
(更准确地说\mathellipsis
)有三个\mathpunct
原子,加上盒子的自然宽度(它比点本身大得多,见下文);\vdots
有4pt
;\ddots
有一种奇怪的混合,即用 表示的硬长度pt
和用 表示的灵活长度mu
。
我可以给出一个或多或少启发式的补丁;这是基于这样的观察:在 CM 中,从到10pt
包含12pt
句点的框的宽度大约为3pt
,而句点本身的宽度大约为1pt
。(我强调:大约)。当然,硬编码长度pt
会阻止任何字体大小的长度均匀。当然,您可以根据自己的喜好调整参数。
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath} % only for the matrix example
\makeatletter
\def\mathellipsis{\mathinner{{.}\kern2\p@{.}\kern2\p@{.}}}
\DeclareRobustCommand{\ddots}
{
\sbox0{.}
\mathinner{
\raise\dimexpr2.82\p@+.94\wd0\relax\copy0
\kern\dimexpr1.41\[email protected]\wd0\relax
\raise\dimexpr1.41\p@+.47\wd0\relax\copy0
\kern\dimexpr1.41\[email protected]\wd0\relax
\box0
}
}
\DeclareRobustCommand{\vdots}
{%
\sbox0{.}%
\vbox{%
\offinterlineskip
\kern2\p@ %<-- this makes the box somewhat higher (plain TeX and LaTeX have 4\p@)
\hbox{.}%
\kern\dimexpr2\p@+.666\wd0\relax
\hbox{.}%
\kern\dimexpr2\p@+.666\wd0\relax
\hbox{.}%
}%
}
\makeatother
\newcommand{\test}[1]{%
\begingroup
\mathsurround=0pt
\fboxrule=0.2pt
\fboxsep=-0.2pt
\fbox{$#1$}
\sbox0{$#1$}(\the\wd0$\times$\the\ht0)
\endgroup
}
\begin{document}
% original definition
$|\mathinner{\ldotp\ldotp\ldotp}|$
$|\ldots|$
\fboxrule=0.2pt
\fboxsep=-0.2pt
\mathsurround=0pt
12pt:
\fbox{$\vdots$}
\fbox{$\ldots$}
\fbox{$\ddots$}
11pt:
\small
\fbox{$\vdots$}
\fbox{$\ldots$}
\fbox{$\ddots$}
10pt:
\footnotesize
\fbox{$\vdots$}
\fbox{$\ldots$}
\fbox{$\ddots$}
\end{document}
当然,当使用其他字体时,这些值将变得完全无用。
这值得吗?我认为不值得。