Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to have a double headed vector. I tried \overleftright, but the appearance is all but pretty. I would like to get the same kind of symbol, but with \vec appearance. Is it possible?

share|improve this question
add comment

1 Answer

up vote 8 down vote accepted

Built using stacks:

\documentclass{article}
\def\vecsign{\mathchar"017E}
\def\dvecsign{\smash{\stackon[-1.95pt]{\vecsign}{\rotatebox{180}{$\vecsign$}}}}
\def\dvec#1{\def\useanchorwidth{T}\stackon[-4.2pt]{#1}{\,\dvecsign}}
\usepackage{stackengine}
\stackMath
\usepackage{graphicx}
\begin{document}
$ \vec c \vec A  \dvec c \dvec A$
\end{document}

enter image description here

There remains a slight possibility for overlap, when, for example, having $\dvec d \dvec b$. That issue can be remedied by using a little kern to make a narrower \dvec, as follows. To recover the original, reset \shrinkage to 0mu.

\documentclass{article}
\def\shrinkage{2.1mu}
\def\vecsign{\mathchar"017E}
\def\dvecsign{\smash{\stackon[-1.95pt]{\mkern-\shrinkage\vecsign}{\rotatebox{180}{$\mkern-\shrinkage\vecsign$}}}}
\def\dvec#1{\def\useanchorwidth{T}\stackon[-4.2pt]{#1}{\,\dvecsign}}
\usepackage{stackengine}
\stackMath
\usepackage{graphicx}
\begin{document}
$ \vec c \vec A  \dvec c \dvec A$
$\dvec d \dvec b $
\end{document}

enter image description here

share|improve this answer
1  
Because of my font election, I had to change -1.95 for -2.60, but your answer is abusuletly brilliant and elegant. –  Alfredo Hernández Feb 25 at 18:29
    
@AlfredoHernández Note that I added a \smash to \dvecsign else it had too much dead space above it. –  Steven B. Segletes Feb 25 at 18:30
    
Just wondering, is this possible to accomplish via \newcommand instead of \def? –  Alfredo Hernández Feb 26 at 21:01
1  
Yes. For \shrinkage, \vecsign and \dvecsign, merely substituting \newcommand for \def will suffice. For the case of \dvec, substitute \newcommand\dvec[1] for \def\dvec#1. The differences between \def and \newcommand, outside of the syntax, is that \newcommand arguments can have \pars in them, whereas \def cannot, unless you define it \long. Also, \newcommand will only proceed, if the command name does not already exist, whereas \def will overwrite an existing macro. And, of course, \newcommand can take optional arguments conveniently. –  Steven B. Segletes Feb 26 at 21:06
    
Yeah, that's why I usually use \newcommand (just simple things, though). That worked nicely. –  Alfredo Hernández Feb 26 at 21:19
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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