我有两个变量:\vec{x}
另一个变量在某种程度上与第一个变量对偶。因此,我想用类似的东西来表示第二个变量,但在 x 上方有一个左箭头。我已经尝试过了,\stackrel{leftarrow}{x}
但看起来不一样(x 和箭头之间的间隙太大,箭头太大)。
有没有办法定义一个\cev
可以完成我想要的操作的命令?
答案1
这可能不是最好的方法,但两个\reflectbox
命令可以解决问题:
\documentclass{article}
\usepackage{graphicx}
\newcommand{\cev}[1]{\reflectbox{\ensuremath{\vec{\reflectbox{\ensuremath{#1}}}}}}
\begin{document}
\[
\vec{a} \quad \cev{a} \quad \vec{b} \quad \cev{b}
\]
\end{document}
答案2
该命令\cev
似乎对大多数字母都能产生良好的效果,并且在下标和上标中都能正常工作(除了非常小的漂移)。
\documentclass{article}
\usepackage{graphicx,accents}
\makeatletter
\DeclareRobustCommand{\cev}[1]{%
\mathpalette\do@cev{#1}%
}
\newcommand{\do@cev}[2]{%
\fix@cev{#1}{+}%
\reflectbox{$\m@th#1\vec{\reflectbox{$\fix@cev{#1}{-}\m@th#1#2\fix@cev{#1}{+}$}}$}%
\fix@cev{#1}{-}%
}
\newcommand{\fix@cev}[2]{%
\ifx#1\displaystyle
\mkern#23mu
\else
\ifx#1\textstyle
\mkern#23mu
\else
\ifx#1\scriptstyle
\mkern#22mu
\else
\mkern#22mu
\fi
\fi
\fi
}
\makeatother
\begin{document}
$Xx$
$X\cev{x}_{\cev{x}_{\cev{x}}}$ $\cev{a}\cev{b}\cev{m}\cev{X}$
$X\vec{x}_{\vec{x}_{\vec{x}}}$ $\vec{a}\vec{b}\vec{m}\vec{X}$
$\cev{\imath}$
$\vec{\imath}$
\end{document}
不同的实现:
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\DeclareRobustCommand{\cev}[1]{%
{\mathpalette\do@cev{#1}}%
}
\newcommand{\do@cev}[2]{%
\vbox{\offinterlineskip
\sbox\z@{$\m@th#1 x$}%
\ialign{##\cr
\hidewidth\reflectbox{$\m@th#1\vec{}\mkern4mu$}\hidewidth\cr
\noalign{\kern-\ht\z@}
$\m@th#1#2$\cr
}%
}%
}
\makeatother
\begin{document}
$Xx$
$X\cev{x}_{\cev{x}_{\cev{x}}}$ $\cev{a}\cev{b}\cev{m}\cev{X}$
$X\vec{x}_{\vec{x}_{\vec{x}}}$ $\vec{a}\vec{b}\vec{m}\vec{X}$
$\cev{\imath}$
$\vec{\imath}$
$\cev{\sigma}\cev{x}$
$\vec{\sigma}\vec{x}$
\end{document}
答案3
可扩展性\overleftarrow
可能会解决问题。问题是箭头比 使用的箭头大\vec
,如 所示\[\overleftarrow{a}\overrightarrow{a}\vec{a}\]
。要获得一致的箭头,您应该重新定义 $\vec$ :
\documentclass{minimal}
\renewcommand\vec[1]{\overrightarrow{#1}}
\newcommand\cev[1]{\overleftarrow{#1}}
\begin{document}
\[\cev{a}\vec{a}\]
\end{document}
编辑后添加:
另一个解决方案是使用\overset
中的命令amsmath
,与 一起使用\leftarrow
。但是,箭头仍然比命令中的箭头大\vec
。
\documentclass{minimal}
\usepackage{amsmath}
\begin{document}
\[\overset{\leftarrow}{v}\overset{\rightarrow}{v}\vec{v}\]
\end{document}
*编辑后添加 *\shortleftarrow
从包中 使用stmaryrd
可以稍微改善上述构造。
答案4
我对 Frederic 的解决方案有几点补充:
\usepackage{stmaryrd}
\overset{\shortleftarrow}{a} \quad \vec{a} \quad \overset{{}_{\shortleftarrow}}{a}
基本上,下标中的箭头使其变小,并减少了它与变量之间的垂直空间。不幸的是,嵌套似乎不起作用。