34

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?

15

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}
| improve this answer | |
  • 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 '14 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. – Ian Thompson May 26 '14 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 '14 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. – Ian Thompson May 27 '14 at 7:41
  • 1
    @Matt --- try \protect\cev{x} – Ian Thompson Feb 13 at 11:25
18

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

| improve this answer | |
  • 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. – Qrrbrbirlbel May 17 '15 at 0:21
  • @Qrrbrbirlbel That's more difficult. – egreg May 17 '15 at 9:13
  • @user49915 I get picture (click), which doesn't show so big a difference with \cev{x} – egreg Dec 1 '18 at 15:09
  • @user49915 Maybe you want to try the different implementation I added, maybe fixing the amount of \mkern. – egreg Dec 1 '18 at 15:25
  • @user49915 On the other hand, \vec{\sigma} is very bad with newtxmath. – egreg Dec 1 '18 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.

| improve this answer | |
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

| improve this answer | |
4

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

| improve this answer | |
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}}}
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.