使用 \newcommand 时发生冲突

使用 \newcommand 时发生冲突

我刚刚意识到,我之前在序言中定义新命令时犯了一个大错误

\renewcommand{\v}{\mathbf{v}}

现在,我想使用 输入捷克语\v{s},但是我不能。

你有什么建议吗?

答案1

理想情况下,您不应使用单字母名称定义宏,因为这样会产生歧义。更糟糕的是,您重新定义了现有的单字母宏名称。如果无法查看文档并撤销该用法,则可以通过在重新定义之前保存原始副本来弥补这一缺陷。这样,原始副本便可以在保存的备用名称下使用。

\documentclass{article}
\let\altv\v
\renewcommand{\v}{\mathbf{v}}
\begin{document}
$\v + B = C$

ab\altv ecde
\end{document}

在此处输入图片描述

答案2

不要再犯了!;-)使用前先数到一百万\renewcommand,然后再考虑。

对于您已经输入的文档,最好的办法是将所有\v引用向量更改为其他内容,例如\vecv

使用相同的命令来做不同的事情也是可能的,但我不推荐这样做。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\let\ORIGINALv\v
\DeclareRobustCommand{\v}{%
  \ifmmode\mathbf{v}\else\expandafter\ORIGINALv\fi
}

\begin{document}

\section{\v{c}č}

Háček or h\'{a}\v{c}ek

$\v+x=y$

\end{document}

在此处输入图片描述

相关内容