mathtools:\dddot 导致术语上升

mathtools:\dddot 导致术语上升

点导数差异,我尝试过使用\hspace{0pt}

\makeatletter
\renewcommand{\dddot}[1]{%
  {\mathop{\kern\z@#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
   \hbox{\normalfont ...}\vss}}}}
\renewcommand{\ddddot}[1]{%
  {\mathop{\kern\z@#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
   \hbox{\normalfont....}\vss}}}}
\makeatother

加载后mathtools问题仍然存在。

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools}
\begin{document}
\[
\dot{\mathbf{r}}\times\ddot{\mathbf{r}}\times\dddot{\mathbf{r}}
\]
\end{document}

如果我使用的字体方案也有影响,则字体为:

\usepackage[utf8]{inputenx}
\renewcommand{\rmdefault}{ppl}                 
\linespread{1.05}                  
\usepackage[scaled]{helvet}
\usepackage{courier}              
\usepackage{eulervm}
\normalfont      
\usepackage[T1]{fontenc}           
\usepackage{textcomp} 

答案1

\dddot和的定义\ddddot需要进行一些修改:点需要稍微降低一点,并按比例缩小,以便它们的高度与\ddot和中的高度相同\dot。我还使用了\makebox0pt宽度,以便“隐藏”点增加的额外宽度,点之间的间隔也稍微缩小了一点。

我使用 TikZ 绘制了一些水平线来检查对齐情况:

\documentclass{article}
\usepackage{graphicx}
\usepackage{mathtools}
\usepackage[utf8]{inputenx}
\usepackage{tikz}


\renewcommand{\rmdefault}{ppl}                 
\linespread{1.05}                  
\usepackage[scaled]{helvet}
\usepackage{courier}              
\usepackage{eulervm}
\normalfont      
\usepackage[T1]{fontenc}           
\usepackage{textcomp} 

\newcommand\scaleddot{\scalebox{.89}{.}}

\makeatletter
\renewcommand{\dddot}[1]{%
  {\mathop{\kern\z@#1}\limits^{\makebox[0pt][c]{\vbox to-2.2\ex@{\kern-\tw@\ex@
   \hbox{\normalfont\scaleddot\kern-0.5pt\scaleddot\kern-0.5pt\scaleddot}\vss}}}}}
\renewcommand{\ddddot}[1]{%
  {\mathop{\kern\z@#1}\limits^{\makebox[0pt][c]{\vbox to-2.2\ex@{\kern-\tw@\ex@
   \hbox{\normalfont\scaleddot\kern-0.5pt\scaleddot\kern-0.5pt\scaleddot\kern-0.5pt\scaleddot}\vss}}}}}
\makeatother

\begin{document}
\Huge

\[
\dot{\mathbf{r}}\times\ddot{\mathbf{r}}\times\dddot{\mathbf{r}}\times\ddddot{\mathbf{r}}
\]

\[
\dot{r}\times\ddot{r}\times\dddot{r}\times\ddddot{r}
\]

\begin{tikzpicture}[remember picture,overlay]
\draw ([yshift=230.5pt]current page.west) -- +(\paperwidth,0pt);
\draw ([yshift=161.5pt]current page.west) -- +(\paperwidth,0pt);
\end{tikzpicture}

\end{document}

在此处输入图片描述

因为在这种情况下,mathtools被加载使用,所以可以使用\mathclap{...}而不是\makebox[0pt][c]{...};我选择了后者,因为这样一来,即使没有 ,重新定义也是有效的mathtools

答案2

包中amsmath使用数学重音符号表示\dot\ddot,但手动构造\dddot\ddddot作为数学运算符的上限,这有一些缺点:

  • 参数/符号被设置为数学运算符,导致单个符号围绕数学轴垂直居中。
  • 点是用字体设置的\normalfont,因此它们不会在较小的数学样式中缩放。
  • 边界框的上边框不同,包含重音,手动点或多或少被构造排除。

字体mathabx具有\dddot\ddddot作为数学重音符号。由于包mathabx确实更改了许多字体,因此以下示例仅定义重音符号所需的字体,并重新定义\dot使用\ddddot字体所需的mathabx字体:

\documentclass{article}
\usepackage{amsmath}

% from mathabx:
\DeclareFontFamily{U}{mathb}{\hyphenchar\font45}
\DeclareFontShape{U}{mathb}{m}{n}{
      <5> <6> <7> <8> <9> <10> gen * mathb
      <10.95> mathb10 <12> <14.4> <17.28> <20.74> <24.88> mathb12
      }{}
\DeclareSymbolFont{mathb}{U}{mathb}{m}{n}
\DeclareFontSubstitution{U}{mathb}{m}{n}

\let\dot\relax
\DeclareMathAccent{\dot}{0}{mathb}{"39}
\let\ddot\relax
\DeclareMathAccent{\ddot}{0}{mathb}{"3A}
\let\dddot\relax
\DeclareMathAccent{\dddot}{0}{mathb}{"3B}
\let\ddddot\relax
\DeclareMathAccent{\ddddot}{0}{mathb}{"3C}

\begin{document}
\[
  \dot{r}, \ddot{r}, \dddot{r}, \ddddot{r}
\]
\end{document}

结果

评论:

  • 该示例使用斜体r来表明重音(和上限)遵循符号的倾斜。

  • 字体中的点重音位置稍高一些mathabx

答案3

方法如下stackengine。我已将点之间的字距调整为 -1mu,但如果您发现它们的间距不对,可以更改。我还将点设置为高于对象 1pt... 这也可以自定义。

\documentclass{article}
%\usepackage[utf8]{inputenx}
%\renewcommand{\rmdefault}{ppl}                 
%\linespread{1.05}                  
%\usepackage[scaled]{helvet}
%\usepackage{courier}              
%\usepackage{eulervm}
%\normalfont      
%\usepackage[T1]{fontenc}           
%\usepackage{textcomp} 
\usepackage{mathtools}
\usepackage{stackengine}
\renewcommand\dot[1]{\stackMath\stackengine{1pt}{#1}{.}{O}{c}{F}{T}{S}}
\renewcommand\ddot[1]{\stackMath\stackengine{1pt}{#1}{.\mkern-1mu.}{O}{c}{F}{T}{S}}
\renewcommand\dddot[1]{\stackMath\stackengine{1pt}{#1}{.\mkern-1mu.\mkern-1mu.}{O}{c}{F}{T}{S}}
\begin{document}
\[
  \dot{\mathbf{r}}\times\ddot{\mathbf{r}}\times\dddot{\mathbf{r}}
\]
\[
  \dot{r}\times\ddot{r}\times\dddot{r}
\]
\[
  \frac{\dot{\mathbf{r}}\times\ddot{\mathbf{r}}\times\dddot{\mathbf{r}}}
       {\lvert \dot{\mathbf{r}} \times \ddot{\mathbf{r}} \rvert}
\]
\end{document}

在此处输入图片描述

回应芭芭拉的评论......

在此处输入图片描述

相关内容