-命令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$
相反,你会看到v
下v'
标中的 和 未正确对齐。用肉眼看,我选择了0.73
中的值scalebox
或多或少实现了我想要的效果。
有人能告诉我如何正确地做到这一点吗?scalebox
正如您所想象的,我几乎不想为每个公式选择一个值。因为这需要花费大量时间。此外,我希望对齐是完美的,而不仅仅是近似的。我该如何实现这一点?
我尝试了几种方法,但都无法解决。网站上有很多类似的问题。但我找不到解决方案。注意,我希望箭头D
不向上移动或类似的东西。
有关的。
数学方程。
\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}