数学模式中下标的特定对齐与 overleftarrow 联合。如何避免幻象空间的摆弄?

数学模式中下标的特定对齐与 overleftarrow 联合。如何避免幻象空间的摆弄?

-命令oveleft/rightarrow不是最佳的,因为它将公式中的索引向右移动太多,例如:

$\overleftarrow{D}_v$

因此,我使用以下宏,它是我之前从本网站上的一些答案中改编而来的。(抱歉,我无法归功于代码的作者,因为我忘记在哪里读到的。)

\usepackage{stackengine}
\newcommand\constantoverleftarrow[1]{\stackengine{0pt}{$\overleftarrow{\hphantom{D}\vphantom{#1}}$}{$#1$}{O}{l}{F}{F}{L}}

命令

$\constantoverleftarrow{D_v}$

然后给出所需的结果。到目前为止一切顺利。现在,我想按照以下代码对齐下标:

$\constantoverleftarrow{D_{v'\vphantom{\scalebox{0.73}{$\int$}}}}x_{v,v'}^d$

如果你使用

$\constantoverleftarrow{D_{v'}}x_{v,v'}^d$

相反,你会看到vv'标中的 和 未正确对齐。用肉眼看,我选择了0.73中的值scalebox或多或少实现了我想要的效果。

有人能告诉我如何正确地做到这一点吗?scalebox正如您所想象的,我几乎不想为每个公式选择一个值。因为这需要花费大量时间。此外,我希望对齐是完美的,而不仅仅是近似的。我该如何实现这一点?

我尝试了几种方法,但都无法解决。网站上有很多类似的问题。但我找不到解决方案。注意,我希望箭头D不向上移动或类似的东西。

有关的。

165499174122354871

数学方程。

\documentclass[12pt]{amsart}
\usepackage{stackengine}
\newcommand\constantoverleftarrow[1]{\stackengine{0pt}{$\overleftarrow{\hphantom{D}\vphantom{#1}}$}{$#1$}{O}{l}{F}{F}{L}}
\begin{document}
\[
\constantoverleftarrow{D_{v'}}x_{v,v'}^d
\]
\end{document}

这个 MWE 确实重新记录了错误。你看,索引没有对齐。只有当你添加积分时才会出现这种情况。这个问题是由d上标中的 引起的,正如我现在在玩的时候注意到的。很抱歉,我d在最初的帖子中忘记了 。

可能的解决方案以获得正确的结果。

\documentclass[12pt]{amsart}
\usepackage{stackengine}
\newcommand\constantoverleftarrow[1]{\stackengine{0pt}{$\overleftarrow{\hphantom{D}\vphantom{D}}$}{$#1$}{O}{l}{F}{F}{L}}
\newcommand{\nhphantom}[1]{\setbox0=\hbox{#1}\hspace{-\the\wd0}}
\begin{document}
%This is not perfect because the space between $D$ and the subscript $v'$ is not exactly like in $D_{v'}$ but almost and slightly smaller. The indices are however aligned. The best I can do.
\[
\constantoverleftarrow{D\nhphantom{$\displaystyle x_{}^{}$}\phantom{x}_{\vphantom{,}v'}^{\vphantom{d}}}x_{v,v'}^d
\]
\end{document}

答案1

由于没有提供 MWE,因此不清楚问题是什么。但这里有一个尝试……一些东西。

\documentclass{article}
\usepackage{stackengine,graphicx}
\newcommand\constantoverleftarrow[1]{\cola#1\endcola}
\def\cola#1#2\endcola{\stackengine{0pt}{}{$\overleftarrow{#1}$}{O}{l}{F}{T}{L}%
  \phantom{#1}#2}
\begin{document}
$\overleftarrow{D}_v$

$\constantoverleftarrow{D_v}$

$\constantoverleftarrow{D_{v'}}x_{v,v'}$
\end{document}

在此处输入图片描述

答案2

我建议使用较小的箭头(例如https://tex.stackexchange.com/a/248297/4427

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcommand{\overleftsmallarrow}{\mathpalette{\overarrowsmall@\leftarrowfill@}}
\newcommand{\overrightsmallarrow}{\mathpalette{\overarrowsmall@\rightarrowfill@}}
\newcommand{\overleftrightsmallarrow}{\mathpalette{\overarrowsmall@\leftrightarrowfill@}}
\newcommand{\overarrowsmall@}[3]{%
  \vbox{%
    \ialign{%
      ##\crcr
      #1{\smaller@style{#2}}\crcr
      \noalign{\nointerlineskip\vskip0.4pt}%
      $\m@th\hfil#2#3\hfil$\crcr
    }%
  }%
}
\def\smaller@style#1{%
  \ifx#1\displaystyle\scriptstyle\else
    \ifx#1\textstyle\scriptstyle\else
      \scriptscriptstyle
    \fi
  \fi
}
\makeatother

\begin{document}

$\overrightsmallarrow{D}_v$ $\overleftsmallarrow{D}_v$ $\overleftrightsmallarrow{D}_v$

$D_v$ $D_v$ $D_v$
\end{document}

在此处输入图片描述

答案3

请注意,\oveleftarrow是居中的,而下标和上标则不是。

请注意,这取决于数学风格。这可以通过付出更多努力来解决。请参阅这里

\documentclass{article}
\usepackage{mathtools}

\newcommand{\combine}[3]% #1=centered preop, #2=operand, #3=postop
{\bgroup
  \sbox0{$#1{\phantom{#2}}$}%
  \sbox1{$#2$}%
  \usebox0\hspace{-0.5\wd0}\hspace{-0.5\wd1}\usebox1\hspace{-\wd1}\phantom{#2}#3
\egroup}

\begin{document}
$\overleftarrow{D} D_v \combine{\overleftarrow}{D}{_v}$

\end{document}

演示

相关内容