# Redefining a command and special character

I am trying to redefine \v command (wedge above character) to do what \vec does in mathmode and preserve \v in a command called, say \hac. This code works perfect

\documentclass{article}
\let\hac\v%
\renewcommand{\v}[1]{\ensuremath{\vec{#1}}}%
\begin{document}
line 1: š č ř

line 2: \hac{s} \hac{c} \hac{r} \v{s} \v{c} \v{r}
\end{document}

(line 1 does not print ''š č ř'' as it does not recognize the characters). However, when I add

\usepackage[cp1250]{inputenc}%

into the preamble, the first line prints ''s c r'' with a \vec over them. I do not understand where this behaviour is coming from and how to fix it. (Line 2 is always correct, first ''s c r'' is with a wedge and the second is with a \vec). Can anyone please explain?

Alternative way to achieve what I am trying to achieve is to find out syntax of the \v command. I did this using \showcmd in show2e package, finding ''> \v=macro: ->\OT1-cmd \v \OT1\v . \v '', but do not understand the syntax.

Thank you, J

• š is defined in cp1250 encoding to be \v s so if you redefine \v you redefine š. Jul 28, 2014 at 14:03
• Welcome to TeX.SX! You have discovered why redefining commands, especially those for accents, is dangerous. ;-) Jul 28, 2014 at 14:03

• \TextOrMath does different things depending on the current mode. So, \TextOrMath{textmode}{mathmode} would print textmode in text mode, and math mode in math mode. Any arguments afterwards get passed on, so with the above definitions, \v a would expand to \textv a which is equal to the original \v a which becomes ǎ, whereas $\v a$ would expand to $\vec a$ which becomes a⃗. Sep 3, 2020 at 18:09