39

I have two variables: \vec{x} and another one which is somehow dual to the first. Therefore I would like to symbolize the second with something similar but a leftarrow on top of the x. I already tried \stackrel{leftarrow}{x} but it looks to different (too big gap between x and the arrow, and too big arrow).

Is there a way to define a \cev command which does what I want?

2

6 Answers 6

18

This may not be the best way, but two \reflectbox commands will do the trick:

\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}
7
  • Thanks, but this causes problems with subscripts: Example On the right hand side the t is marked using \cev{t_{\mathring{r}}} and s is marked using \cev{s}_{\mathring{r}} I'd like to have the arrow centered over the whole symbol (including subscript) as it is in the case of t on the left.
    – C-Otto
    May 26, 2014 at 7:26
  • In your example, the arrow over the t on the left does not appear to be centred over the whole symbol including the superscript to me. On the other hand, \cev{t_{\mathring{r}}} seems to give exactly what you want. May 26, 2014 at 11:25
  • \cev{t_{\mathring{r}}} is shown on the right. And \cev{t_r} is shown on the left, where the arrow is a bit more centered than in the case of \cev{t}_r. I'm happy with the looks on the left side, but the right side obviously is wrong.
    – C-Otto
    May 26, 2014 at 15:09
  • This could be a problem with the font you are using; the result of \cev{t_{\mathring{r}}} on my machine looks nothing like yours! Please post a new question with a complete example code that reproduces the problem. May 27, 2014 at 7:41
  • 1
    @Matt --- try \protect\cev{x} Feb 13, 2020 at 11:25
20

A \cev command that seems to give good results on most letters and works correctly (apart a very small drift) in subscripts and superscripts.

\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}

enter image description here

A different implementation:

\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}

enter image description here

5
  • 4
    Can the arrow be rotated instead of reflected to have the correct slanting? Now, the \cev arrow slants to the left, while the \vec arrow (as well as the italic letter) slants to the right. May 17, 2015 at 0:21
  • @Qrrbrbirlbel That's more difficult.
    – egreg
    May 17, 2015 at 9:13
  • @user49915 I get picture (click), which doesn't show so big a difference with \cev{x}
    – egreg
    Dec 1, 2018 at 15:09
  • @user49915 Maybe you want to try the different implementation I added, maybe fixing the amount of \mkern.
    – egreg
    Dec 1, 2018 at 15:25
  • @user49915 On the other hand, \vec{\sigma} is very bad with newtxmath.
    – egreg
    Dec 1, 2018 at 15:28
11

The extensible \overleftarrow might do the trick. The problem is that the arrow is bigger than the one used for \vec, as shown by \[\overleftarrow{a}\overrightarrow{a}\vec{a}\] . To have consistent arrows, you should redefine $\vec$ :

\documentclass{minimal}
\renewcommand\vec[1]{\overrightarrow{#1}}
\newcommand\cev[1]{\overleftarrow{#1}}

\begin{document}
\[\cev{a}\vec{a}\]
\end{document}

Edited to add:

Another solution is the \overset command from amsmath, used with \leftarrow. However, the arrow is still bigger than the one from the \vec command.

\documentclass{minimal}
\usepackage{amsmath}
\begin{document}
\[\overset{\leftarrow}{v}\overset{\rightarrow}{v}\vec{v}\]
\end{document}

*Edited to add * Using \shortleftarrow from the stmaryrd package slightly improves the above construction.

6

The \vec is an accent (and its own symbol; hence all \leftarrow and similar constructs look different), and the default Computer Modern font doesn't have a symbol which would be its mirror.

In addition to rotating/mirroring the vec accent symbol, as shown by Ian, you could make use of one provided by, say, STIX/XITS (if you use XeTeX). Then you could define:

\def\cev{\XeTeXmathaccent"0"1"20D6}
% The first number ("0) denotes the math type (0=Ord,1=Op,2=Bin,3=Rel,etc.)
% The second number ("1) denotes the math family (0=Roman,1=Italic,etc.)
% The last number ("20D6) denotes the actual glyph slot
$\cev a \qquad \vec a$

Which could look like: cevvec

5

I have a little to add to Frederic's solution:

\usepackage{stmaryrd}

\overset{\shortleftarrow}{a} \quad \vec{a} \quad \overset{{}_{\shortleftarrow}}{a}

Basically, the arrow in the subscript makes it smaller and reduces the vertical space between it and the variable. Unfortunately, nesting doesn't seem to work.

enter image description here

0

Eberhard Mattes provided in the 90s an extra font called emsy containing the missing arrow. The file is downloadable here

https://www.pcorner.com/list/EMTEX

Anyway, it's not easy to use since you have to put the .mf and .tfm files in the correct directory. Once this is done, you may define

\newcommand{\cev}[1]{\mathaccent"7A00{\mkern1mu{#1}}}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .