There's a problem I don't get to understand. And it's the fact that if there are multiple atoms inside a \vec
it gets recolocated. I comment a little bit here.
Disclaimer: this is not fully correct (because, for instance, the prime gets recolocated), but the fact that sometimes \vec{{}<something>}
looks better than \vec{<something>}
annoys me.
A possible solution is:
\let\originalvec\vec
\renewcommand*\vec[1]{\originalvec{\kern0pt #1}}
If that's not enough, you can mix it with egreg's answer
\newcommand*\pvec[1]{\vec{#1}\mkern1mu\vphantom{#1}}
Full compilable example
\documentclass{scrartcl}
\let\originalvec\vec
\renewcommand\vec[1]{\originalvec{\kern0pt #1}}
\newcommand*\pvec[1]{\vec{#1}\mkern2mu\vphantom{#1}}
\begin{document}
$\vec p + \pvec p' = \pvec p''$
$\vec h = \vec r \times \vec v = \vec r \times \pvec r'$
\end{document}

\renewcommand\vec\mathbf
in the pre-amble, and\vec{p}'
in the document. – Niel de Beaudrap Jun 19 '13 at 16:15\vec{p}^{\, \prime}
, but it still doesn't look right. Maybe I'm overthinking this... Possibly decreasing the size of the prime would be an option, while increasing the spacing. – Bernd Jun 19 '13 at 16:19\vec{p}^{\,\prime}
looks alright myself; but I suppose it depends on precisely what you want to achieve with it. Do beware overthinking it though. – Niel de Beaudrap Jun 19 '13 at 16:26