如何在不使用 MnSymbol 的情况下重新创建 MnSymbol 的 \udotdot 命令?

如何在不使用 MnSymbol 的情况下重新创建 MnSymbol 的 \udotdot 命令?

MnSymbol 有一个\udotdot命令(\udotdot在综合乳胶符号列表文档中搜索),但我不想导入 MnSymbol,因为它会产生各种副作用(例如,它会创建\vec与其他定义冲突的定义\vec,并且它特别适用于 Adob​​e Minion Pro)。

如何创建自己的\udotdot符号以用于计算机现代或具体数学?

答案1

下面的示例使用普通点来生成符号:

  • \mathpalette增加了对不同数学风格的支持。
  • 假设点位于基线上,并具有正确的字符边界框(包括对称的侧边距)。点本身具有相同的宽度和高度。
  • 两个点\udotdot以数学轴为中心的正方形的对角。
  • 点的中心位于等号的上下边界上。

实现示例:

\documentclass{article}
%\usepackage{MnSymbol}

\makeatletter
\providecommand*{\udotdot}{%
  \mathbin{\mathpalette\@udotdot{}}%
}
\providecommand*{\@udotdot}[2]{%
  % #1: math style
  % #2: unused
  % Box 0: dot
  \sbox0{$#1.\m@th$}%
  % Remove side bearings
  \setbox2=\hbox to \ht0{\hss\copy0\hss}
  % Side bearing
  \dimen2=.5\dimexpr\wd0-\wd2\relax
  % Box 2: equal sign
  \sbox4{$#1=\m@th$}%
  % Box 4: math axis
  \sbox6{$#1\vcenter{}$}%
  \dimen@=\dimexpr(\ht4-\ht6)*2 + \ht0\relax
  \kern\dimen2 % side bearing
  \vcenter to \dimen@{%
    \hbox to \dimen@{\hfill\copy2}%
    \nointerlineskip
    \vfill
    \hbox to \dimen@{\copy2\hfill}%
  }%
  \kern\dimen2 % side bearing
}
\makeatother

\begin{document}
\[ a \udotdot b \]
\[={\udotdot}\scriptstyle{\udotdot}\scriptscriptstyle{\udotdot}=\]
\end{document}

结果

答案2

您可以导入单个 MnSymbol 符号,或者创建一个大致匹配的:

在此处输入图片描述

\documentclass{article}
\usepackage{graphicx,amsmath}
\newcommand{\udotdot}{\mathbin{\text{\rotatebox[origin=c]{45}{${\cdot}{\cdot}$}}}}
\begin{document}

$a \cdots e \cdot a \mathbin{\cdot\cdot} e \mathbin{{\cdot}{\cdot}} a \udotdot e$

$a \udotdot e_{a \udotdot e_{a \udotdot e}}$

\end{document}​

相关内容